#wip: Basic GUI structure and starting the server developt.
This commit is contained in:
		
							parent
							
								
									f09499b641
								
							
						
					
					
						commit
						dda74c1116
					
				
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
/Data
 | 
			
		||||
/Public/data
 | 
			
		||||
*[Ss]ecrets*
 | 
			
		||||
.sass-cache
 | 
			
		||||
							
								
								
									
										186
									
								
								JSON/Sizerboard.languages_iso.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								JSON/Sizerboard.languages_iso.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,186 @@
 | 
			
		||||
{
 | 
			
		||||
    "aa" : "afar",
 | 
			
		||||
    "ab" : "abjasio",
 | 
			
		||||
    "ae" : "avéstico",
 | 
			
		||||
    "af" : "afrikáans",
 | 
			
		||||
    "ak" : "akano",
 | 
			
		||||
    "am" : "amhárico",
 | 
			
		||||
    "an" : "aragonés",
 | 
			
		||||
    "ar" : "alarabiyah",
 | 
			
		||||
    "as" : "asamés",
 | 
			
		||||
    "av" : "avar",
 | 
			
		||||
    "ay" : "aimara",
 | 
			
		||||
    "az" : "azerbaycanca",
 | 
			
		||||
    "ba" : "baskir",
 | 
			
		||||
    "be" : "bielorruso",
 | 
			
		||||
    "bg" : "búlgaro",
 | 
			
		||||
    "bh" : "bhoyapurí",
 | 
			
		||||
    "bi" : "bislama",
 | 
			
		||||
    "bm" : "bambara",
 | 
			
		||||
    "bn" : "bengalí",
 | 
			
		||||
    "bo" : "tibetano",
 | 
			
		||||
    "br" : "bretón",
 | 
			
		||||
    "bs" : "bosnio",
 | 
			
		||||
    "ca" : "catalan",
 | 
			
		||||
    "ce" : "checheno",
 | 
			
		||||
    "ch" : "chamorro",
 | 
			
		||||
    "co" : "corso",
 | 
			
		||||
    "cr" : "cree",
 | 
			
		||||
    "cs" : "cestina",
 | 
			
		||||
    "cu" : "eslavo eclesiástico antiguo",
 | 
			
		||||
    "cv" : "chuvasio",
 | 
			
		||||
    "cy" : "galés",
 | 
			
		||||
    "da" : "dansk",
 | 
			
		||||
    "de" : "alemán",
 | 
			
		||||
    "dv" : "maldivo",
 | 
			
		||||
    "dz" : "dzongkha",
 | 
			
		||||
    "ee" : "ewé",
 | 
			
		||||
    "el" : "ellinika",
 | 
			
		||||
    "en" : "english",
 | 
			
		||||
    "eo" : "esperanto",
 | 
			
		||||
    "es" : "espanol",
 | 
			
		||||
    "et" : "estonio",
 | 
			
		||||
    "eu" : "euskera",
 | 
			
		||||
    "fa" : "farsi",
 | 
			
		||||
    "ff" : "fula",
 | 
			
		||||
    "fi" : "suomi",
 | 
			
		||||
    "fj" : "fiyiano",
 | 
			
		||||
    "fo" : "feroés",
 | 
			
		||||
    "fr" : "francais",
 | 
			
		||||
    "fy" : "frisón",
 | 
			
		||||
    "ga" : "gaeilge",
 | 
			
		||||
    "gd" : "gaélico escocés",
 | 
			
		||||
    "gl" : "gallego",
 | 
			
		||||
    "gn" : "guaraní",
 | 
			
		||||
    "gu" : "guyaratí",
 | 
			
		||||
    "gv" : "manés",
 | 
			
		||||
    "ha" : "hausa",
 | 
			
		||||
    "he" : "ivrit",
 | 
			
		||||
    "hi" : "hindi",
 | 
			
		||||
    "ho" : "hiri motu",
 | 
			
		||||
    "hr" : "croata",
 | 
			
		||||
    "ht" : "haitiano",
 | 
			
		||||
    "hu" : "magyar",
 | 
			
		||||
    "hy" : "armenio",
 | 
			
		||||
    "hz" : "herero",
 | 
			
		||||
    "ia" : "interlingua",
 | 
			
		||||
    "id" : "indonesia",
 | 
			
		||||
    "ie" : "occidental",
 | 
			
		||||
    "ig" : "igbo",
 | 
			
		||||
    "ii" : "yi de Sichuán",
 | 
			
		||||
    "ik" : "iñupiaq",
 | 
			
		||||
    "io" : "ido",
 | 
			
		||||
    "is" : "islandés",
 | 
			
		||||
    "it" : "italiano",
 | 
			
		||||
    "iu" : "inuktitut",
 | 
			
		||||
    "ja" : "nihongo",
 | 
			
		||||
    "jv" : "javanés",
 | 
			
		||||
    "ka" : "georgiano",
 | 
			
		||||
    "kg" : "kongo",
 | 
			
		||||
    "ki" : "kikuyu",
 | 
			
		||||
    "kj" : "kuanyama",
 | 
			
		||||
    "kk" : "kazajo",
 | 
			
		||||
    "kl" : "groenlandés",
 | 
			
		||||
    "km" : "camboyano",
 | 
			
		||||
    "kn" : "canarés",
 | 
			
		||||
    "ko" : "hangugeo",
 | 
			
		||||
    "kr" : "kanuri",
 | 
			
		||||
    "ks" : "cachemiro",
 | 
			
		||||
    "ku" : "kurdo",
 | 
			
		||||
    "kv" : "komi",
 | 
			
		||||
    "kw" : "córnico",
 | 
			
		||||
    "ky" : "kirguís",
 | 
			
		||||
    "la" : "latín",
 | 
			
		||||
    "lb" : "luxemburgués",
 | 
			
		||||
    "lg" : "luganda",
 | 
			
		||||
    "li" : "limburgués",
 | 
			
		||||
    "ln" : "lingala",
 | 
			
		||||
    "lo" : "lao",
 | 
			
		||||
    "lt" : "lituano",
 | 
			
		||||
    "lu" : "luba-katanga",
 | 
			
		||||
    "lv" : "letón",
 | 
			
		||||
    "mg" : "malgache",
 | 
			
		||||
    "mh" : "marshalés",
 | 
			
		||||
    "mi" : "maorí",
 | 
			
		||||
    "mk" : "macedonio",
 | 
			
		||||
    "ml" : "malayalam",
 | 
			
		||||
    "mn" : "mongol",
 | 
			
		||||
    "mr" : "maratí",
 | 
			
		||||
    "ms" : "malayo",
 | 
			
		||||
    "mt" : "maltés",
 | 
			
		||||
    "my" : "birmano",
 | 
			
		||||
    "na" : "nauruano",
 | 
			
		||||
    "nb" : "noruego bokmål",
 | 
			
		||||
    "nd" : "ndebele del norte",
 | 
			
		||||
    "ne" : "nepalí",
 | 
			
		||||
    "ng" : "ndonga",
 | 
			
		||||
    "nl" : "nederlands",
 | 
			
		||||
    "nn" : "nynorsk",
 | 
			
		||||
    "no" : "noruego",
 | 
			
		||||
    "nr" : "ndebele del sur",
 | 
			
		||||
    "nv" : "navajo",
 | 
			
		||||
    "ny" : "chichewa",
 | 
			
		||||
    "oc" : "occitano",
 | 
			
		||||
    "oj" : "ojibwa",
 | 
			
		||||
    "om" : "oromo",
 | 
			
		||||
    "or" : "oriya",
 | 
			
		||||
    "os" : "osético",
 | 
			
		||||
    "pa" : "panyabí",
 | 
			
		||||
    "pi" : "pali",
 | 
			
		||||
    "pl" : "polski",
 | 
			
		||||
    "ps" : "pastú",
 | 
			
		||||
    "pt" : "portugues",
 | 
			
		||||
    "qc" : "quechua",
 | 
			
		||||
    "rm" : "romanche",
 | 
			
		||||
    "rn" : "kirundi",
 | 
			
		||||
    "ro" : "rumano",
 | 
			
		||||
    "ru" : "russkiy",
 | 
			
		||||
    "rw" : "ruandés",
 | 
			
		||||
    "sa" : "sánscrito",
 | 
			
		||||
    "sc" : "sardo",
 | 
			
		||||
    "sd" : "sindhi",
 | 
			
		||||
    "se" : "sami septentrional",
 | 
			
		||||
    "sg" : "sango",
 | 
			
		||||
    "si" : "cingalés",
 | 
			
		||||
    "sk" : "eslovaco",
 | 
			
		||||
    "sl" : "slovencina",
 | 
			
		||||
    "sm" : "samoano",
 | 
			
		||||
    "sn" : "shona",
 | 
			
		||||
    "so" : "somalí",
 | 
			
		||||
    "sq" : "albanés",
 | 
			
		||||
    "sr" : "serbio",
 | 
			
		||||
    "ss" : "suazi",
 | 
			
		||||
    "st" : "sesotho",
 | 
			
		||||
    "su" : "sundanés",
 | 
			
		||||
    "sv" : "svenska",
 | 
			
		||||
    "sw" : "suajili",
 | 
			
		||||
    "ta" : "tamil",
 | 
			
		||||
    "te" : "télugu",
 | 
			
		||||
    "tg" : "tayiko",
 | 
			
		||||
    "th" : "thai",
 | 
			
		||||
    "ti" : "tigriña",
 | 
			
		||||
    "tk" : "turcomano",
 | 
			
		||||
    "tl" : "tagalo",
 | 
			
		||||
    "tn" : "setsuana",
 | 
			
		||||
    "to" : "tongano",
 | 
			
		||||
    "tr" : "turkce",
 | 
			
		||||
    "ts" : "tsonga",
 | 
			
		||||
    "tt" : "tártaro",
 | 
			
		||||
    "tw" : "twi",
 | 
			
		||||
    "ty" : "tahitiano",
 | 
			
		||||
    "ug" : "uigur",
 | 
			
		||||
    "uk" : "ukrainska",
 | 
			
		||||
    "ur" : "urdu",
 | 
			
		||||
    "uz" : "uzbeko",
 | 
			
		||||
    "ve" : "venda",
 | 
			
		||||
    "vi" : "vietnamita",
 | 
			
		||||
    "vo" : "volapük",
 | 
			
		||||
    "wa" : "valón",
 | 
			
		||||
    "wo" : "wolof",
 | 
			
		||||
    "xh" : "xhosa",
 | 
			
		||||
    "yi" : "yídish",
 | 
			
		||||
    "yo" : "yoruba",
 | 
			
		||||
    "za" : "chuan",
 | 
			
		||||
    "zh" : "zhongwen",
 | 
			
		||||
    "zu" : "zulú"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										143
									
								
								PHP/Sizerboard.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								PHP/Sizerboard.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,143 @@
 | 
			
		||||
<?php 
 | 
			
		||||
 | 
			
		||||
    class Sizerboard{
 | 
			
		||||
 | 
			
		||||
        private static $default_settings = [];
 | 
			
		||||
        private $inputs = null;
 | 
			
		||||
        private $custom_settings = [];
 | 
			
		||||
        private $slash;
 | 
			
		||||
        private static $root_paths = ["", __DIR__, __DIR__ . "/.."];
 | 
			
		||||
        const root_project_path = __DIR__ . "/..";
 | 
			
		||||
 | 
			
		||||
        public function __construct($inputs = null){
 | 
			
		||||
            $this->slash = strpos(__DIR__, '/') === null ? '\\' : '/';
 | 
			
		||||
 | 
			
		||||
            $this->inputs = $inputs;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public function nulls($nulls = null){
 | 
			
		||||
            return is_bool($nulls) ? $nulls : $this->settings("nulls", null, false, false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public function default_value($default = null, $nulls = null){
 | 
			
		||||
            return $default !== null || $this->nulls($nulls) ? $default : $this->settings("default_value", null, null, true);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static function is_dictionary($value){
 | 
			
		||||
            return is_array($value) && array_values($value) != $value;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public function settings($keys, $inputs = null, $default = null, $nulls = null){
 | 
			
		||||
 | 
			
		||||
            $keys = array_filter(array_unique(array_map(fn($key) => is_string($key) && ($key = trim($key)) ? $key : null, $keys)), fn($key) => $key);
 | 
			
		||||
 | 
			
		||||
            if(count($keys)){
 | 
			
		||||
 | 
			
		||||
                $nulls = $this->nulls($nulls);
 | 
			
		||||
 | 
			
		||||
                foreach(array_merge(
 | 
			
		||||
                    is_array($inputs) ? (self::is_dictionary($inputs) ? [$inputs] : $inputs) : [], 
 | 
			
		||||
                    [$this->inputs, $this->custom_settings, self::$default_settings]
 | 
			
		||||
                ) as $subinputs)
 | 
			
		||||
                    if(self::is_dictionary($subinputs))
 | 
			
		||||
                        foreach($keys as $key)
 | 
			
		||||
                            if(isset($subinputs[$key]) && ($nulls || $subinputs[$key] !== null))
 | 
			
		||||
                                return $subinputs[$key];
 | 
			
		||||
            };
 | 
			
		||||
            return $this->default_value($default, $nulls);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static function string_variables($string, $variables = null, $default = null){
 | 
			
		||||
 | 
			
		||||
            $variables = array_filter(is_array($variables) ? (self::is_dictionary($variables) ? [$variables] : $variables) : [], fn($item) => self::is_dictionary($item));
 | 
			
		||||
 | 
			
		||||
            return preg_replace_callback('/\{([^\{\}]+)\}/', function($values) use($variables){
 | 
			
		||||
                foreach($variables as $subset)
 | 
			
		||||
                    if(isset($subset[$values[1]]))
 | 
			
		||||
                        return $subset[$values[1]];
 | 
			
		||||
                return $default ?? $values[0];
 | 
			
		||||
            }, $string);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static function check($conditions, $shift = 0){
 | 
			
		||||
 | 
			
		||||
            $error = 0;
 | 
			
		||||
            $k = 0;
 | 
			
		||||
            $i = -1;
 | 
			
		||||
 | 
			
		||||
            if(is_array($conditions) && !self::is_dictionary($conditions))
 | 
			
		||||
                foreach($conditions as $condition){
 | 
			
		||||
                    $ignore = false;
 | 
			
		||||
                    $i ++;
 | 
			
		||||
                    if(is_array($condition)){
 | 
			
		||||
                        if(($l = count($condition)) == 2)
 | 
			
		||||
                            list($condition, $ignore) = $condition;
 | 
			
		||||
                        else 
 | 
			
		||||
                            list($suberror, $sub_k) = self::check($condition);
 | 
			
		||||
                    };
 | 
			
		||||
                    if(is_callable($condition) ? $condition() : (is_bool($condition) ? $condition : false)){
 | 
			
		||||
                        $ignore || 
 | 
			
		||||
                        ($error |= 1 << ($shift + $k + $i));
 | 
			
		||||
                        break;
 | 
			
		||||
                    };
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
            return [$error, $k + $shift + $i];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public function fix_path($path){
 | 
			
		||||
 | 
			
		||||
            $error = self::check([
 | 
			
		||||
                fn() => $path === null, 
 | 
			
		||||
                fn() => !is_string($path), 
 | 
			
		||||
                [fn() => !$path, true]
 | 
			
		||||
            ], 1)[0];
 | 
			
		||||
            $results = null;
 | 
			
		||||
 | 
			
		||||
            $error || 
 | 
			
		||||
            ($results = preg_replace('/[\/\\\\]+/', $this->slash, self::string_variables($path, [
 | 
			
		||||
                "project_path" => self::root_project_path
 | 
			
		||||
            ])));
 | 
			
		||||
 | 
			
		||||
            return [$results, $error];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public function get_absolute_path($path){
 | 
			
		||||
 | 
			
		||||
            $error = self::check([
 | 
			
		||||
                fn() => $path === null, 
 | 
			
		||||
                fn() => !is_string($path), 
 | 
			
		||||
                [fn() => !$path, true]
 | 
			
		||||
            ], 1)[0];
 | 
			
		||||
            $absolute_path = null;
 | 
			
		||||
 | 
			
		||||
            if(!$error){
 | 
			
		||||
                foreach($this->root_paths as $root)
 | 
			
		||||
                    if(file_exists($full_path = $this->fix_path($root . '/' . $path)[0])){
 | 
			
		||||
                        $absolute_path = $full_path;
 | 
			
		||||
                        break;
 | 
			
		||||
                    };
 | 
			
		||||
                $absolute_path === null && 
 | 
			
		||||
                ($error |= 1 << 4);
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            return [$absolute_path, $error];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public function load_file($path){
 | 
			
		||||
 | 
			
		||||
            list($path, $error) = $this->absolute_path($path);
 | 
			
		||||
            $data = null;
 | 
			
		||||
 | 
			
		||||
            if(!$error)
 | 
			
		||||
                try{
 | 
			
		||||
                    $data = file_get_contents($path);
 | 
			
		||||
                }catch(\Exception $exception){
 | 
			
		||||
                    $error |= 1 << 0;
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
            return [$data, $error];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
							
								
								
									
										6
									
								
								Public/.htaccess
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								Public/.htaccess
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
Header set Access-Control-Allow-Origin "*"
 | 
			
		||||
RewriteEngine	On
 | 
			
		||||
RewriteBase	/
 | 
			
		||||
RewriteCond	%{REQUEST_FILENAME} !-f
 | 
			
		||||
RewriteCond	%{REQUEST_FILENAME} !-d
 | 
			
		||||
RewriteRule	^(.*)$ index.php?q=$1 [L,QSA]
 | 
			
		||||
							
								
								
									
										12
									
								
								Public/css/Sizerboard.icons.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Public/css/Sizerboard.icons.css
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
.sizerboard [data-icon=home]::before{content : "\f015"; font-family : "FA5FS";}
 | 
			
		||||
.sizerboard [data-icon=documentation]::before{content : "\f05a"; font-family : "FA5FS";}
 | 
			
		||||
.sizerboard [data-icon=git]::before{content : "\f841"; font-family : "FA5FB";}
 | 
			
		||||
.sizerboard [data-icon=search]::before{content : "\f002"; font-family : "FA5FS";}
 | 
			
		||||
.sizerboard [data-icon=add]::before{content : "\f067"; font-family : "FA5FS";}
 | 
			
		||||
.sizerboard [data-icon=html]::before{content : "\f121"; font-family : "FA5FS";}
 | 
			
		||||
.sizerboard [data-icon=canvas]::before{content : "\f1c5"; font-family : "FA5FR";}
 | 
			
		||||
.sizerboard [data-icon=svg]::before{content : "\f279"; font-family : "FA5FS";}
 | 
			
		||||
.sizerboard [data-icon=text]::before{content : "\f1c9"; font-family : "FA5FR";}
 | 
			
		||||
.sizerboard [data-icon=upload]::before{content : "\f093"; font-family : "FA5FS";}
 | 
			
		||||
.sizerboard [data-icon=save]::before{content : "\f0c7"; font-family : "FA5FS";}
 | 
			
		||||
.sizerboard [data-icon=download]::before{content : "\f019"; font-family : "FA5FS";}
 | 
			
		||||
							
								
								
									
										103
									
								
								Public/ecma/Sizerboard.Base.ecma.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								Public/ecma/Sizerboard.Base.ecma.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,103 @@
 | 
			
		||||
Sizerboard.Base = function(sizerboard, inputs){
 | 
			
		||||
 | 
			
		||||
    const self = this, 
 | 
			
		||||
          screen_cache = {x : 0, y : 0}, 
 | 
			
		||||
          texts_cache = {}
 | 
			
		||||
    let started = false, 
 | 
			
		||||
        thread = null;
 | 
			
		||||
 | 
			
		||||
    const construct = () => {
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("info", "sizerboard_base_building");
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("ok", "sizerboard_base_built");
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    const changes_thread_method = () => {
 | 
			
		||||
 | 
			
		||||
        if(screen_cache.x != sizerboard.item_self.offsetWidth || screen_cache.y != sizerboard.item_self.offsetHeight){
 | 
			
		||||
 | 
			
		||||
            screen_cache.x = sizerboard.item_self.offsetWidth;
 | 
			
		||||
            screen_cache.y = sizerboard.item_self.offsetHeight;
 | 
			
		||||
 | 
			
		||||
            sizerboard.item_self.style.fontSize = (screen_cache[screen_cache.x < screen_cache.y ? "x" : "y"] / Number(sizerboard.item_self.getAttribute("data-cells"))) + "px";
 | 
			
		||||
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        ["projects_menu", "draw_box"].forEach(key => {
 | 
			
		||||
 | 
			
		||||
            const text_box = sizerboard.item_self.querySelector("p[data-i18n=" + key + "_text]");
 | 
			
		||||
            let y;
 | 
			
		||||
 | 
			
		||||
            if(text_box && (
 | 
			
		||||
                !texts_cache[key] || 
 | 
			
		||||
                text_box.innerText != texts_cache[key].text || 
 | 
			
		||||
                (y = text_box.offsetHeight / Number(sizerboard.item_self.style.fontSize.slice(0, -2))) != texts_cache[key].y
 | 
			
		||||
            )){
 | 
			
		||||
 | 
			
		||||
                (texts_cache[key] || (texts_cache[key] = {})).text = text_box.innerText;
 | 
			
		||||
                texts_cache[key].y = y;
 | 
			
		||||
 | 
			
		||||
                text_box.parentNode.querySelector("p+ul").style.top = y + "em";
 | 
			
		||||
                text_box.parentNode.querySelector("p+ul+*").style.top = (1.4 + y) + "em";
 | 
			
		||||
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.start = callback => {
 | 
			
		||||
 | 
			
		||||
        const end = status => typeof callback == "function" && callback(status);
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("info", "sizerboard_base_starting");
 | 
			
		||||
 | 
			
		||||
        if(started){
 | 
			
		||||
            sizerboard.print("warn", "sizerboard_base_already_started");
 | 
			
		||||
            end(false);
 | 
			
		||||
            return false;
 | 
			
		||||
        };
 | 
			
		||||
        started = true;
 | 
			
		||||
 | 
			
		||||
        sizerboard.preload(sizerboard.settings("position"), (position, error, asynchronous) => {
 | 
			
		||||
            if(error)
 | 
			
		||||
                return;
 | 
			
		||||
 | 
			
		||||
            const classes = sizerboard.settings("class"), 
 | 
			
		||||
                  hash = sizerboard.hash();
 | 
			
		||||
 | 
			
		||||
            position.innerHTML = sizerboard.views.get("base_view", {
 | 
			
		||||
                application : sizerboard.settings(["application_name", "application"]), 
 | 
			
		||||
                git : sizerboard.settings(["application_git", "git"]), 
 | 
			
		||||
                url : sizerboard.settings(["application_url", "url"]), 
 | 
			
		||||
                hash : hash, 
 | 
			
		||||
                classes : classes ? " " + classes : "", 
 | 
			
		||||
                cells : sizerboard.settings("cells"), 
 | 
			
		||||
                main_menu_items : sizerboard.views.get_multiple_items("main_menu_item", sizerboard.settings("main_menu_items"))[0], 
 | 
			
		||||
                preloader : sizerboard.build_preloader((view, error, asynchronous) => {
 | 
			
		||||
                    if(error)
 | 
			
		||||
                        return;
 | 
			
		||||
 | 
			
		||||
                    const self_error = sizerboard.set_self(view, hash);
 | 
			
		||||
 | 
			
		||||
                    if(self_error)
 | 
			
		||||
                        return;
 | 
			
		||||
 | 
			
		||||
                    thread = sizerboard.thread_add(changes_thread_method);
 | 
			
		||||
 | 
			
		||||
                    sizerboard.print("ok", "sizerboard_base_started");
 | 
			
		||||
                    end(true);
 | 
			
		||||
 | 
			
		||||
                }), 
 | 
			
		||||
                projects : sizerboard.views.get_multiple_items("project_option", [])[0]
 | 
			
		||||
            })[0];
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
        return true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    construct();
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										48
									
								
								Public/ecma/Sizerboard.DrawBox.ecma.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								Public/ecma/Sizerboard.DrawBox.ecma.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,48 @@
 | 
			
		||||
Sizerboard.DrawBox = function(sizerboard, inputs){
 | 
			
		||||
 | 
			
		||||
    const self = this;
 | 
			
		||||
    let started = false;
 | 
			
		||||
 | 
			
		||||
    const construct = () => {
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("info", "sizerboard_draw_box_building");
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("ok", "sizerboard_draw_box_built");
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.start = callback => {
 | 
			
		||||
 | 
			
		||||
        const end = status => typeof callback == "function" && callback(status);
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("info", "sizerboard_draw_box_starting");
 | 
			
		||||
 | 
			
		||||
        if(started){
 | 
			
		||||
            sizerboard.print("warn", "sizerboard_draw_box_already_started");
 | 
			
		||||
            end(false);
 | 
			
		||||
            return false;
 | 
			
		||||
        };
 | 
			
		||||
        started = true;
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("ok", "sizerboard_draw_box_started");
 | 
			
		||||
        end(true);
 | 
			
		||||
        
 | 
			
		||||
        return true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.show = (item, event, key) => {
 | 
			
		||||
        if(item.hasAttribute("disabled"))
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
        sizerboard.item_self.querySelector(".draw-box").setAttribute("data-mode", key);
 | 
			
		||||
        sizerboard.item_self.querySelectorAll(".draw-box .fields>[data-visible=true]").forEach(section => section.setAttribute("data-visible", false));
 | 
			
		||||
        item.parentNode.parentNode.querySelectorAll("[disabled]").forEach(button => button.removeAttribute("disabled"));
 | 
			
		||||
 | 
			
		||||
        sizerboard.item_self.querySelector(".draw-box .fields>." + key).setAttribute("data-visible", true);
 | 
			
		||||
        item.setAttribute("disabled", true);
 | 
			
		||||
        
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    construct();
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										90
									
								
								Public/ecma/Sizerboard.Projects.ecma.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								Public/ecma/Sizerboard.Projects.ecma.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,90 @@
 | 
			
		||||
Sizerboard.Projects = function(sizerboard, inputs){
 | 
			
		||||
 | 
			
		||||
    const self = this;
 | 
			
		||||
    let started = false, 
 | 
			
		||||
        cache = "", 
 | 
			
		||||
        autosearch_thread;
 | 
			
		||||
 | 
			
		||||
    const construct = () => {
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("info", "sizerboard_projects_building");
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("ok", "sizerboard_projects_built");
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.start = callback => {
 | 
			
		||||
 | 
			
		||||
        const end = status => typeof callback == "function" && callback(status);
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("info", "sizerboard_projects_starting");
 | 
			
		||||
 | 
			
		||||
        if(started){
 | 
			
		||||
            sizerboard.print("warn", "sizerboard_projects_already_started");
 | 
			
		||||
            end(false);
 | 
			
		||||
            return false;
 | 
			
		||||
        };
 | 
			
		||||
        started = true;
 | 
			
		||||
 | 
			
		||||
        sizerboard.preload("#projects_menu_search", (item, error, asynchronous) => (
 | 
			
		||||
            error || 
 | 
			
		||||
            (autosearch_thread = sizerboard.thread_add(autosearch_thread_method))
 | 
			
		||||
        ));
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("ok", "sizerboard_projects_started");
 | 
			
		||||
        end(true);
 | 
			
		||||
        
 | 
			
		||||
        return true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    const autosearch_thread_method = () => {
 | 
			
		||||
        
 | 
			
		||||
        const text = sizerboard.item_self.querySelector(".projects-menu .search-box [name=search]").value;
 | 
			
		||||
 | 
			
		||||
        if(text != cache){
 | 
			
		||||
            cache = text;
 | 
			
		||||
            sizerboard.item_self.querySelectorAll(".projects-menu nav li").forEach(item => item.setAttribute("data-visible", !cache || item.innerText.includes(cache)));
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.search = (item, event) => {};
 | 
			
		||||
 | 
			
		||||
    this.add = (item, event) => {
 | 
			
		||||
 | 
			
		||||
        let name = item.parentNode.parentNode.querySelector("[type=text]").value, 
 | 
			
		||||
            error = (
 | 
			
		||||
                name === undefined ? 1 << 0 : 
 | 
			
		||||
                name === null ? 1 << 1 : 
 | 
			
		||||
                typeof name != "string" ? 1 << 2 : 
 | 
			
		||||
                !name ? 1 << 3 : 
 | 
			
		||||
                !(name = name.trim()) ? 1 << 4 : 
 | 
			
		||||
                /[^a-z0-9_\- ]/i.test(name) ? 1 << 5 : 
 | 
			
		||||
                sizerboard.item_self.querySelector(".projects-menu nav li[data-name=" + name + "]") ? 1 << 6 : 
 | 
			
		||||
                ["null"].includes(name) ? 1 << 7 : 
 | 
			
		||||
            0) << 1;
 | 
			
		||||
 | 
			
		||||
        error || 
 | 
			
		||||
        (sizerboard.item_self.querySelector(".projects-menu nav>ul").innerHTML += sizerboard.views.get("project_option", {
 | 
			
		||||
            name : name, 
 | 
			
		||||
            i : sizerboard.item_self.querySelectorAll(".projects-menu nav li").length
 | 
			
		||||
        })[0]);
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.get_in_gui = (item, event) => {
 | 
			
		||||
 | 
			
		||||
        sizerboard.item_self.querySelectorAll(".projects-menu nav li[data-selected=true]").forEach(item => {
 | 
			
		||||
            item.hasAttribute("disabled") && item.removeAttribute("disabled");
 | 
			
		||||
            item.setAttribute("data-selected", false);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        sizerboard.item_self.querySelector(".draw-box").setAttribute("data-selected", item.getAttribute("data-name"));
 | 
			
		||||
        item.setAttribute("data-selected", true);
 | 
			
		||||
        item.setAttribute("disabled", true);
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    construct();
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										186
									
								
								Public/ecma/Sizerboard.Views.ecma.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								Public/ecma/Sizerboard.Views.ecma.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,186 @@
 | 
			
		||||
Sizerboard.Views = function(sizerboard, inputs){
 | 
			
		||||
 | 
			
		||||
    const self = this, 
 | 
			
		||||
          views = {};
 | 
			
		||||
    let started = false, 
 | 
			
		||||
        default_overwrite = false;
 | 
			
		||||
 | 
			
		||||
    const construct = () => {
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("info", "sizerboard_views_building");
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("ok", "sizerboard_views_built");
 | 
			
		||||
    
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.start = callback => {
 | 
			
		||||
 | 
			
		||||
        const end = status => typeof callback == "function" && callback(status);
 | 
			
		||||
 | 
			
		||||
        sizerboard.print("info", "sizerboard_views_starting");
 | 
			
		||||
 | 
			
		||||
        if(started){
 | 
			
		||||
            sizerboard.print("warn", "sizerboard_views_already_started");
 | 
			
		||||
            end(false);
 | 
			
		||||
            return false;
 | 
			
		||||
        };
 | 
			
		||||
        started = true;
 | 
			
		||||
 | 
			
		||||
        default_overwrite = sizerboard.settings(["views_overwrite", "overwrite"]);
 | 
			
		||||
 | 
			
		||||
        sizerboard.execute_array_items(["default_views_files", "views_files"], (key, callback) => {
 | 
			
		||||
            self.add(sizerboard.settings(key), true, callback);
 | 
			
		||||
        }, () => {
 | 
			
		||||
            sizerboard.print("ok", "sizerboard_views_started");
 | 
			
		||||
            end(true);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    const add_json = (data, overwrite, callback) => {
 | 
			
		||||
 | 
			
		||||
        let json;
 | 
			
		||||
 | 
			
		||||
        try{
 | 
			
		||||
            json = JSON.parse(data);
 | 
			
		||||
        }catch(exception){};
 | 
			
		||||
 | 
			
		||||
        if(json)
 | 
			
		||||
            add(json instanceof Array ? json : [json], overwrite, callback, 0);
 | 
			
		||||
        else 
 | 
			
		||||
            callback();
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    const add = (inputs, overwrite, callback, i) => {
 | 
			
		||||
 | 
			
		||||
        if(!inputs || (i || (i = 0)) >= inputs.length){
 | 
			
		||||
            typeof callback == "function" && callback();
 | 
			
		||||
            return;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        const end = () => add(inputs, overwrite, callback, i + 1);
 | 
			
		||||
 | 
			
		||||
        if(!inputs[i]){
 | 
			
		||||
            end();
 | 
			
		||||
            return;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        switch(typeof inputs[i]){
 | 
			
		||||
            case "string":
 | 
			
		||||
                if(/^(\[(.+|[\r\n]+)\]|\{(.+|[\r\n]+)\})$/.test(inputs[i].trim()))
 | 
			
		||||
                    add_json(inputs[i], overwrite, end);
 | 
			
		||||
                else if(/^[^\s][^\r\n]+[^\s]$/.test(inputs[i]))
 | 
			
		||||
                    sizerboard.load_file(inputs[i], response => add([response], overwrite, end, 0));
 | 
			
		||||
                else{
 | 
			
		||||
 | 
			
		||||
                    let matches;
 | 
			
		||||
 | 
			
		||||
                    while(matches = inputs[i].match(/\<\!\-{2} *\[{2}([^\[\]]+)\]{2} *\-{2}\>/)){
 | 
			
		||||
 | 
			
		||||
                        const key = matches[1].trim();
 | 
			
		||||
 | 
			
		||||
                        inputs[i] = inputs[i].substring(matches.index + matches[0].length);
 | 
			
		||||
 | 
			
		||||
                        if(matches = inputs[i].match(new RegExp("\\<\\!\\-{2} *\\[{2} *" + key + " *\\]{2} *\\-{2}\\>"))){
 | 
			
		||||
                            (overwrite || views[key] === undefined) && (views[key] = inputs[i].substring(0, matches.index));
 | 
			
		||||
                            inputs[i] = inputs[i].substring(matches.index + matches[0].length);
 | 
			
		||||
                        };
 | 
			
		||||
 | 
			
		||||
                    };
 | 
			
		||||
 | 
			
		||||
                    end();
 | 
			
		||||
 | 
			
		||||
                };
 | 
			
		||||
            break;
 | 
			
		||||
            case "object":
 | 
			
		||||
                if(inputs[i] instanceof Array)
 | 
			
		||||
                    add(inputs[i], overwrite, end, 0);
 | 
			
		||||
                else{
 | 
			
		||||
                    for(const key in inputs[i])
 | 
			
		||||
                        typeof inputs[i] == "string" && (overwrite || views[key] === undefined) && (views[key] = inputs[i]);
 | 
			
		||||
                    end();
 | 
			
		||||
                };
 | 
			
		||||
            break;
 | 
			
		||||
            default:
 | 
			
		||||
                end();
 | 
			
		||||
            break;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.add = (inputs, overwrite, callback) => add(
 | 
			
		||||
        typeof inputs == "object" && inputs instanceof Array ? inputs : [inputs], 
 | 
			
		||||
        typeof overwrite == "boolean" ? overwrite : default_overwrite, 
 | 
			
		||||
        callback, 
 | 
			
		||||
        0
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    this.validate = key => (
 | 
			
		||||
        key === undefined ? 1 << 0 : 
 | 
			
		||||
        key === null ? 1 << 1 : 
 | 
			
		||||
        typeof key != "string" ? 1 << 2 : 
 | 
			
		||||
        !key ? 1 << 3 : 
 | 
			
		||||
        !(key = key.trim()) ? 1 << 4 : 
 | 
			
		||||
        views[key] === undefined ? 1 << 5 : 
 | 
			
		||||
    0);
 | 
			
		||||
 | 
			
		||||
    const set_variables = (view, variables, _default) => view.replace(/(object_name)/g, "{$1}").replace(/\{([^\{\}]+)\}|\{{2}([^\{\}]+)\}{2}/g, (all, key, i18n) => {
 | 
			
		||||
        if(key){
 | 
			
		||||
            for(let i = 0, l = variables.length; i < l; i ++)
 | 
			
		||||
                if(variables[i][key] !== undefined)
 | 
			
		||||
                    return variables[i][key];
 | 
			
		||||
        }else{
 | 
			
		||||
 | 
			
		||||
            for(let i = 0, l = variables.length; i < l; i ++)
 | 
			
		||||
                if(variables[i][i18n] !== undefined){
 | 
			
		||||
                    i18n = variables[i][i18n];
 | 
			
		||||
                    break;
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
            const text = sizerboard.i18n(i18n, variables, _default === undefined ? null : _default);
 | 
			
		||||
 | 
			
		||||
            return text !== null ? text : i18n;
 | 
			
		||||
        };
 | 
			
		||||
        return all;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    const get_variables_array = variables => (
 | 
			
		||||
        variables && typeof variables == "object" ? variables instanceof Array ? variables : [variables] : []
 | 
			
		||||
    ).filter(subset => subset && typeof subset == "object");
 | 
			
		||||
 | 
			
		||||
    this.get = (key, variables, _default) => {
 | 
			
		||||
 | 
			
		||||
        let error = self.validate(key) << 1, 
 | 
			
		||||
            view = _default;
 | 
			
		||||
 | 
			
		||||
        !error && (view = set_variables(views[key], get_variables_array(variables).concat([{
 | 
			
		||||
            object_name : sizerboard.object_name
 | 
			
		||||
        }]), _default));
 | 
			
		||||
 | 
			
		||||
        return [view, error];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    this.get_multiple_items = (key, items, variables, _default) => {
 | 
			
		||||
        
 | 
			
		||||
        let error = (
 | 
			
		||||
                (self.validate(key) << 0) | 
 | 
			
		||||
                ((
 | 
			
		||||
                    items === undefined ? 1 << 0 : 
 | 
			
		||||
                    items === null ? 1 << 1 : 
 | 
			
		||||
                    typeof items != "object" ? 1 << 2 : 
 | 
			
		||||
                    !(items instanceof Array) ? 1 << 3 : 
 | 
			
		||||
                    items.some(item => !item || typeof item != "object") ? 1 << 4 : 
 | 
			
		||||
                0) << 7) | 
 | 
			
		||||
            0), 
 | 
			
		||||
            results = null;
 | 
			
		||||
 | 
			
		||||
        !error && (results = items.map(item => set_variables(views[key], get_variables_array(variables).concat([item]), _default)).join(""));
 | 
			
		||||
 | 
			
		||||
        return [results, error];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    construct();
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
@ -7,19 +7,88 @@ Sizerboard = function(inputs){
 | 
			
		||||
			  default_text : "", 
 | 
			
		||||
			  autostart : true, 
 | 
			
		||||
			  default_language : "english", 
 | 
			
		||||
			  timeout : 2000
 | 
			
		||||
			  timeout : 2000, 
 | 
			
		||||
			  print_format : "[{type}] {yyyy}{mm}{dd} {hh}{ii}{ss} [{line}]{file}({method}): {message}", 
 | 
			
		||||
			  gui_mode : "light", 
 | 
			
		||||
			  frames_per_second : 24, 
 | 
			
		||||
			  position : "body", 
 | 
			
		||||
			  default_settings_files : [
 | 
			
		||||
			  	  "/json/Sizerboard.settings.json", 
 | 
			
		||||
			  	  "/json/Sizerboard.settings.secrets.json"
 | 
			
		||||
			  ], 
 | 
			
		||||
			  object_name : "sizerboard"
 | 
			
		||||
		  }, 
 | 
			
		||||
		  settings = {}, 
 | 
			
		||||
		  sentences = {};
 | 
			
		||||
		  sentences = {}, 
 | 
			
		||||
		  print_types = [
 | 
			
		||||
			  ["unkn", "unknown"], 
 | 
			
		||||
			  ["info", "information"], 
 | 
			
		||||
			  [" ok ", "ok", "yes", "y"], 
 | 
			
		||||
			  ["erro", "error", "wrong"], 
 | 
			
		||||
			  ["warn", "warning"], 
 | 
			
		||||
			  ["exce", "except", "exception"], 
 | 
			
		||||
			  ["note", "test", "tests", "notes", "data"]
 | 
			
		||||
		  ], 
 | 
			
		||||
		  print_styles = {
 | 
			
		||||
			  unkn : {
 | 
			
		||||
				  dark : "color : #AAA;", 
 | 
			
		||||
				  light : "color : #666;"
 | 
			
		||||
			  }, 
 | 
			
		||||
			  info : {
 | 
			
		||||
				  dark : "color : #99F;", 
 | 
			
		||||
				  light : "color : #009;"
 | 
			
		||||
			  }, 
 | 
			
		||||
			  ok : {
 | 
			
		||||
				  dark : "color : #9F9;", 
 | 
			
		||||
				  light : "color : #090;"
 | 
			
		||||
			  }, 
 | 
			
		||||
			  note : {
 | 
			
		||||
				  dark : "color : #222;", 
 | 
			
		||||
				  light : "color : #EFEFEF;"
 | 
			
		||||
			  }
 | 
			
		||||
		  }, 
 | 
			
		||||
		  threads = [], 
 | 
			
		||||
		  hashes = [];
 | 
			
		||||
	let started = false, 
 | 
			
		||||
		language, default_language, 
 | 
			
		||||
		allow_settings_nulls, default_text, default_value, 
 | 
			
		||||
		ajax_timeout;
 | 
			
		||||
		ajax_timeout, 
 | 
			
		||||
		print_format = "[{type}] {yyyy}{mm}{dd} {hh}{ii}{ss} [{line}]{file}({method}): {message}", 
 | 
			
		||||
		gui_mode = "light", 
 | 
			
		||||
		threads_interval, 
 | 
			
		||||
		frames_per_second = 24, 
 | 
			
		||||
		preload_timeout = 2000, 
 | 
			
		||||
		hashes_alphabet, hashes_length;
 | 
			
		||||
 | 
			
		||||
    const re_trace_block = new RegExp("^(" + [
 | 
			
		||||
        /\s*at\s+(([^\s]+)\s+\()?(([^\(\)\:]+\:)?[^\(\)\:]+)(\:([0-9]+)\:[0-9]+)?\)?/.source, // Webkit
 | 
			
		||||
        /([^\@]+)\@([^:]+\:[^\:]+)\:([0-9]+)\:[0-9]+/.source, // Gecko
 | 
			
		||||
    ].join("|") + ")$");
 | 
			
		||||
 | 
			
		||||
	let object_name = this.object_name;
 | 
			
		||||
	let item_self = this.item_self = document;
 | 
			
		||||
	let hash_self = this.hash_self;
 | 
			
		||||
 | 
			
		||||
	let base = this.base;
 | 
			
		||||
	let views = this.views;
 | 
			
		||||
	let projects = this.projects;
 | 
			
		||||
	let draw_box = this.draw_box;
 | 
			
		||||
	
 | 
			
		||||
	const construct = () => {
 | 
			
		||||
 | 
			
		||||
		basic_values();
 | 
			
		||||
 | 
			
		||||
		self.print("info", "sizerboard_building");
 | 
			
		||||
 | 
			
		||||
		object_name = self.object_name = self.settings("object_name");
 | 
			
		||||
 | 
			
		||||
		base = self.base = new Sizerboard.Base(self, inputs);
 | 
			
		||||
		views = self.views = new Sizerboard.Views(self, inputs);
 | 
			
		||||
		projects = self.projects = new Sizerboard.Projects(self, inputs);
 | 
			
		||||
		draw_box = self.draw_box = new Sizerboard.DrawBox(self, inputs);
 | 
			
		||||
 | 
			
		||||
		self.print("ok", "sizerboard_built");
 | 
			
		||||
 | 
			
		||||
		self.settings("autostart") && self.start();
 | 
			
		||||
 | 
			
		||||
	};
 | 
			
		||||
@ -32,26 +101,52 @@ Sizerboard = function(inputs){
 | 
			
		||||
		language = self.settings(["language", "default_language"]);
 | 
			
		||||
		default_language = self.settings(["default_language", "language"]);
 | 
			
		||||
		ajax_timeout = self.settings(["ajax_timeout", "timeout"]);
 | 
			
		||||
		print_format = self.settings("print_format");
 | 
			
		||||
		gui_mode = self.settings("gui_mode");
 | 
			
		||||
 | 
			
		||||
	};
 | 
			
		||||
	
 | 
			
		||||
	this.start = callback => {
 | 
			
		||||
		
 | 
			
		||||
		const end = status => typeof callback == "function" && callback(status);
 | 
			
		||||
 | 
			
		||||
		self.print("info", "sizerboard_starting");
 | 
			
		||||
		
 | 
			
		||||
		if(started){
 | 
			
		||||
			self.print("warn", "sizerboard_already_started");
 | 
			
		||||
			end(false);
 | 
			
		||||
			return false;
 | 
			
		||||
		};
 | 
			
		||||
		started = true;
 | 
			
		||||
 | 
			
		||||
		basic_values();
 | 
			
		||||
 | 
			
		||||
		self.print("info", "settings_loading");
 | 
			
		||||
		self.execute_array_items(["default_settings_files", "settings_files"], (key, callback) => {
 | 
			
		||||
			self.settings_add(self.settings(key), true, callback);
 | 
			
		||||
			basic_values();
 | 
			
		||||
		}, () => {
 | 
			
		||||
			self.print("ok", "settings_loaded");
 | 
			
		||||
 | 
			
		||||
			frames_per_second = self.settings("frames_per_second");
 | 
			
		||||
			preload_timeout = self.settings(["preload_timeout", "timeout"]);
 | 
			
		||||
			hashes_alphabet = self.settings(["hashes_alphabet", "alphabet"]);
 | 
			
		||||
			hashes_length = self.settings(["hashes_length", "length"]);
 | 
			
		||||
 | 
			
		||||
			threads_interval = setInterval(threads_method, 1000 / frames_per_second);
 | 
			
		||||
 | 
			
		||||
			self.print("info", "i18n_loading");
 | 
			
		||||
			self.execute_array_items(["default_i18n_files", "i18n_files"], (key, callback) => {
 | 
			
		||||
				self.i18n_add(self.settings(key), true, callback);
 | 
			
		||||
			}, () => {
 | 
			
		||||
				end(true);
 | 
			
		||||
				self.print("ok", "i18n_loaded");
 | 
			
		||||
 | 
			
		||||
				self.execute_array_items([views, base, projects, draw_box], (item, callback) => {
 | 
			
		||||
					item.start(callback);
 | 
			
		||||
				}, () => {
 | 
			
		||||
					self.print("ok", "sizerboard_started");
 | 
			
		||||
					end(true);
 | 
			
		||||
				});
 | 
			
		||||
			});
 | 
			
		||||
		});
 | 
			
		||||
		
 | 
			
		||||
@ -61,15 +156,17 @@ Sizerboard = function(inputs){
 | 
			
		||||
	this.nulls = nulls => typeof nulls == "boolean" ? nulls : allow_settings_nulls;
 | 
			
		||||
	
 | 
			
		||||
	this.default_value = (_default, nulls) => _default !== undefined && (_default !== null || self.nulls(nulls)) ? _default : default_value;
 | 
			
		||||
 | 
			
		||||
	this.set_keys = keys => (typeof keys == "object" && keys instanceof Array ? keys : [keys]).filter(key => typeof key == "string" && key.trim()).map(key => key.trim());
 | 
			
		||||
	
 | 
			
		||||
	this.settings = (keys, inputs, _default, nulls) => {
 | 
			
		||||
	this.settings = (keys, own_inputs, _default, nulls) => {
 | 
			
		||||
		
 | 
			
		||||
		const m = (keys = (typeof inputs == "object" && inputs instanceof Array ? inputs : [inputs]).filter(subinputs => typeof subinpunts == "string" && subinputs.trim()).map(subinputs => subinputs.trim())).length;
 | 
			
		||||
		const m = (keys = self.set_keys(keys)).length;
 | 
			
		||||
		
 | 
			
		||||
		if(m){
 | 
			
		||||
			
 | 
			
		||||
			const l = (inputs = (
 | 
			
		||||
				inputs == "object" ? inputs instanceof Array ? inputs : [inputs] : []
 | 
			
		||||
			const l = (own_inputs = (
 | 
			
		||||
				own_inputs == "object" ? own_inputs instanceof Array ? own_inputs : [own_inputs] : []
 | 
			
		||||
			).concat(
 | 
			
		||||
				[inputs, settings, default_settings]
 | 
			
		||||
			)).length;
 | 
			
		||||
@ -77,10 +174,10 @@ Sizerboard = function(inputs){
 | 
			
		||||
			nulls = self.nulls(nulls);
 | 
			
		||||
			
 | 
			
		||||
			for(let i = 0; i < l; i ++)
 | 
			
		||||
				if(typeof inputs[i] == "object")
 | 
			
		||||
				if(own_inputs[i] && typeof own_inputs[i] == "object")
 | 
			
		||||
					for(let j = 0; j < m; j ++)
 | 
			
		||||
						if(inputs[i][keys[j]] !== undefined && (nulls || inputs[i][keys[j]] !== null))
 | 
			
		||||
							return inputs[i][keys[j]];
 | 
			
		||||
						if(own_inputs[i][keys[j]] !== undefined && (nulls || own_inputs[i][keys[j]] !== null))
 | 
			
		||||
							return own_inputs[i][keys[j]];
 | 
			
		||||
		};
 | 
			
		||||
		return self.default_value(_default, nulls);
 | 
			
		||||
	};
 | 
			
		||||
@ -93,7 +190,7 @@ Sizerboard = function(inputs){
 | 
			
		||||
			  timeout = ajax_timeout, 
 | 
			
		||||
			  date = Date.now();
 | 
			
		||||
			  
 | 
			
		||||
		ajax.send("get", url, true);
 | 
			
		||||
		ajax.open("get", url, true);
 | 
			
		||||
		ajax.timeout = timeout;
 | 
			
		||||
		ajax.onreadystatechange = () => {
 | 
			
		||||
			if(ended)
 | 
			
		||||
@ -111,17 +208,32 @@ Sizerboard = function(inputs){
 | 
			
		||||
		
 | 
			
		||||
		return ajax;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	this.execute_json = (data, yes, no) => {
 | 
			
		||||
 | 
			
		||||
		let json;
 | 
			
		||||
 | 
			
		||||
		try{
 | 
			
		||||
			json = JSON.parse(data);
 | 
			
		||||
		}catch(exception){};
 | 
			
		||||
 | 
			
		||||
		if(json)
 | 
			
		||||
			typeof yes == "function" && yes(json);
 | 
			
		||||
		else 
 | 
			
		||||
			typeof no == "function" && no();
 | 
			
		||||
 | 
			
		||||
	};
 | 
			
		||||
	
 | 
			
		||||
	this.execute_array_dictionaries = (inputs, partial_callback, full_callback, i) => {
 | 
			
		||||
		
 | 
			
		||||
		if(typeof inputs != "object" || inputs instanceof Array || (i || (i = 0)) >= inputs.length){
 | 
			
		||||
		if(!inputs || typeof inputs != "object" || !(inputs instanceof Array) || (i || (i = 0)) >= inputs.length){
 | 
			
		||||
			typeof full_callback == "function" && full_callback();
 | 
			
		||||
			return;
 | 
			
		||||
		};
 | 
			
		||||
		
 | 
			
		||||
		const end = () => {
 | 
			
		||||
			inputs[i] && typeof partial_callback == "function" && partial_callback(inputs[i]);
 | 
			
		||||
			execute_array_dictionaries(inputs, partial_callback, full_callback, i + 1);
 | 
			
		||||
			inputs[i] && typeof inputs[i] == "object" && typeof partial_callback == "function" && partial_callback(inputs[i]);
 | 
			
		||||
			self.execute_array_dictionaries(inputs, partial_callback, full_callback, i + 1);
 | 
			
		||||
		};
 | 
			
		||||
		
 | 
			
		||||
		if(!inputs[i]){
 | 
			
		||||
@ -130,25 +242,16 @@ Sizerboard = function(inputs){
 | 
			
		||||
		};
 | 
			
		||||
		
 | 
			
		||||
		if(typeof inputs[i] == "object"){
 | 
			
		||||
			if(inputs[i] instanceof Array){
 | 
			
		||||
			if(inputs[i] instanceof Array)
 | 
			
		||||
				self.execute_array_dictionaries(inputs[i], partial_callback, end, 0);
 | 
			
		||||
				return;
 | 
			
		||||
			};
 | 
			
		||||
			else 
 | 
			
		||||
				end();
 | 
			
		||||
		}else if(typeof inputs[i] == "string"){
 | 
			
		||||
			
 | 
			
		||||
			let json;
 | 
			
		||||
			
 | 
			
		||||
			if(/^(\{(.|[\r\n])*\}|\[(.|[\r\n])*)\])$/.test(inputs[i].trim())){
 | 
			
		||||
				try{
 | 
			
		||||
					json = JSON.parse(inputs[i]);
 | 
			
		||||
				}catch(exception){};
 | 
			
		||||
				json && self.execute_array_dictionaries(json instanceof Array ? json : [json], partial_callback, end, 0);
 | 
			
		||||
			}else 
 | 
			
		||||
			if(/^(\{(.|[\r\n])*\}|\[(.|[\r\n])*\])$/.test(inputs[i].trim()))
 | 
			
		||||
				self.execute_json(inputs[i], json => self.execute_array_dictionaries(json instanceof Array ? json : [json], partial_callback, end, 0), end);
 | 
			
		||||
			else 
 | 
			
		||||
				self.load_file(inputs[i], data => {
 | 
			
		||||
					try{
 | 
			
		||||
						json = JSON.parse(data);
 | 
			
		||||
					}catch(exception){};
 | 
			
		||||
					json && self.execute_array_dictionaries(json instanceof Array ? json : [json], partial_callback, end, 0);
 | 
			
		||||
					self.execute_json(data, json => self.execute_array_dictionaries(json instanceof Array ? json : [json], partial_callback, end, 0), end);
 | 
			
		||||
				});
 | 
			
		||||
		}else 
 | 
			
		||||
			end();
 | 
			
		||||
@ -158,12 +261,12 @@ Sizerboard = function(inputs){
 | 
			
		||||
	this.execute_array_items = (items, action, callback, i) => {
 | 
			
		||||
		(typeof items != "object" || !(items instanceof Array)) && (items = [items]);
 | 
			
		||||
		
 | 
			
		||||
		if(!items || i >= items.length){
 | 
			
		||||
		if(!items || (i || (i = 0)) >= items.length){
 | 
			
		||||
			typeof callback == "function" && callback();
 | 
			
		||||
			return;
 | 
			
		||||
		};
 | 
			
		||||
		
 | 
			
		||||
		const end = () => execute_array_items(items, action, callback, i + 1);
 | 
			
		||||
		const end = () => self.execute_array_items(items, action, callback, i + 1);
 | 
			
		||||
		
 | 
			
		||||
		if(typeof action == "function")
 | 
			
		||||
			action(items[i], end);
 | 
			
		||||
@ -176,8 +279,9 @@ Sizerboard = function(inputs){
 | 
			
		||||
		typeof overwrite != "boolean" && (overwrite = settings_overwrite);
 | 
			
		||||
		self.execute_array_dictionaries(inputs, data => {
 | 
			
		||||
			for(const key in data)
 | 
			
		||||
				if(overwrite || settings[key] === undefined)
 | 
			
		||||
					settings[key] = data[key];
 | 
			
		||||
				(overwrite || settings[key] === undefined) && 
 | 
			
		||||
				!/^Sizerboard.*_(start|end)$/.test(key) && 
 | 
			
		||||
				(settings[key] = data[key]);
 | 
			
		||||
		}, callback);
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
@ -189,6 +293,7 @@ Sizerboard = function(inputs){
 | 
			
		||||
				if(typeof data[language] == "object")
 | 
			
		||||
					for(const key in data[language])
 | 
			
		||||
						(overwrite || sentences[language][key] === undefined) && 
 | 
			
		||||
						!/^Sizerboard.*_(start|end)$/.test(key) && 
 | 
			
		||||
						(sentences[language][key] = data[language][key]);
 | 
			
		||||
			};
 | 
			
		||||
		}, callback);
 | 
			
		||||
@ -200,7 +305,7 @@ Sizerboard = function(inputs){
 | 
			
		||||
			typeof variables == "object" && variables instanceof Array ? variables : [variables]
 | 
			
		||||
		).filter(variables => typeof variables == "object")).length;
 | 
			
		||||
 | 
			
		||||
		return string.replace(/\{([^\{\}]+)\}/g, (all, key) => {
 | 
			
		||||
		return ("" + string).replace(/\{([^\{\}]+)\}/g, (all, key) => {
 | 
			
		||||
			for(let i = 0; i < l; i ++)
 | 
			
		||||
				if(variables[i][key] !== undefined)
 | 
			
		||||
					return variables[i][key];
 | 
			
		||||
@ -212,24 +317,285 @@ Sizerboard = function(inputs){
 | 
			
		||||
 | 
			
		||||
	const i18n = (keys, _default) => {
 | 
			
		||||
 | 
			
		||||
		const j = (keys = (typeof keys == "object" && keys instanceof Array ? keys : [keys]).filter(key => typeof key == "string").map(key => key.trim()).filter(key => key));
 | 
			
		||||
		const m = (keys = self.set_keys(keys)).length;
 | 
			
		||||
 | 
			
		||||
		if(j){
 | 
			
		||||
		if(m){
 | 
			
		||||
			
 | 
			
		||||
			const languages = [language, default_language].concat(Object.keys(sentences)), 
 | 
			
		||||
			const languages = [language, default_language].concat(Object.keys(sentences)).filter((language, i, array) => array.indexOf(language) == i), 
 | 
			
		||||
				  l = languages.length;
 | 
			
		||||
 | 
			
		||||
			for(let i = 0; i < l; i ++)
 | 
			
		||||
				if(languages[i] && typeof languages[i] == "object")
 | 
			
		||||
					for(let j = 0; j < l; j ++)
 | 
			
		||||
						if(languages[i][keys[j]] !== undefined)
 | 
			
		||||
							return languages[i][keys[j]];
 | 
			
		||||
				if(sentences[languages[i]])
 | 
			
		||||
					for(let j = 0; j < m; j ++)
 | 
			
		||||
						if(sentences[languages[i]][keys[j]] !== undefined)
 | 
			
		||||
							return sentences[languages[i]][keys[j]];
 | 
			
		||||
			return keys[0];
 | 
			
		||||
		};
 | 
			
		||||
		return self.default_text(_default);
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	this.i18n = (keys, variables, _default) => self.string_variables(i18n(keys, _default), variables, _default);
 | 
			
		||||
	this.i18n = (keys, variables, _default) => {
 | 
			
		||||
		
 | 
			
		||||
		const text = i18n(keys, _default);
 | 
			
		||||
		
 | 
			
		||||
		return self.string_variables(typeof text == "object" ? text.join("") : text, variables, _default);
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	this.get_print_type = type => {
 | 
			
		||||
 | 
			
		||||
		const l = print_types.length;
 | 
			
		||||
 | 
			
		||||
		type = type.toLowerCase();
 | 
			
		||||
 | 
			
		||||
		for(let i = 0; i < l; i ++)
 | 
			
		||||
			if(print_types[i].includes(type))
 | 
			
		||||
				return print_types[i][0].toUpperCase();
 | 
			
		||||
		return print_types[0][0];
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
    this.get_trace = i => (new Error()).stack.replace(/^Error\s*?[\r\n]+/, "").trim().split(/[\r\n]+/).slice(1 + (i || 0)).map(line => {
 | 
			
		||||
 | 
			
		||||
        const matches = line.match(re_trace_block);
 | 
			
		||||
 | 
			
		||||
        return matches ? {
 | 
			
		||||
            file : matches[4] || matches[9], 
 | 
			
		||||
            method : matches[3] || matches[8] || "", 
 | 
			
		||||
            line : Number(matches[7] || matches[10])
 | 
			
		||||
        } : null;
 | 
			
		||||
    }).filter(line => line);
 | 
			
		||||
 | 
			
		||||
	this.print = (type, message, variables, i) => {
 | 
			
		||||
 | 
			
		||||
		const date = new Date(), 
 | 
			
		||||
			  own = {
 | 
			
		||||
  				  ...((
 | 
			
		||||
				  	  variables ? typeof variables == "object" ? [variables] : variables instanceof Array ? variables : [] : []
 | 
			
		||||
  				  ).reduce((results, set) => typeof set == "object" ? {...results, ...set} : results, {})), 
 | 
			
		||||
				  ...self.get_trace(i || 1)[0], 
 | 
			
		||||
  				  raw_type : type, 
 | 
			
		||||
  				  type : self.get_print_type(type)
 | 
			
		||||
  			  };
 | 
			
		||||
 | 
			
		||||
		["year", "month", "day", "hours", "minutes", "seconds"].forEach(key => {
 | 
			
		||||
 | 
			
		||||
			const k = key != "minutes" ? key[0] : "i";
 | 
			
		||||
 | 
			
		||||
			own[k + k] = ("00" + (own[k] = (own[key] = date["get" + (
 | 
			
		||||
				key == "year" ? "FullYear" : 
 | 
			
		||||
				key == "day" ? "Date" : 
 | 
			
		||||
				key[0].toUpperCase() + key.substring(1)
 | 
			
		||||
			)]()) % 100)).slice(-2);
 | 
			
		||||
 | 
			
		||||
		});
 | 
			
		||||
		own.yyyy = own.year;
 | 
			
		||||
 | 
			
		||||
		const final_message = self.string_variables(print_format, {
 | 
			
		||||
			...own, 
 | 
			
		||||
			message : self.i18n(message, own)
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		switch(own.type){
 | 
			
		||||
			case "INFO":
 | 
			
		||||
				console.log("%c" + final_message, print_styles.info[gui_mode]);
 | 
			
		||||
			break;
 | 
			
		||||
			case " OK ":
 | 
			
		||||
				console.log("%c" + final_message, print_styles.ok[gui_mode]);
 | 
			
		||||
			break;
 | 
			
		||||
			case "ERRO":
 | 
			
		||||
			case "EXCE":
 | 
			
		||||
				console.error(final_message);
 | 
			
		||||
			break;
 | 
			
		||||
			case "WARN":
 | 
			
		||||
				console.warn(final_message);
 | 
			
		||||
			break;
 | 
			
		||||
			case "NOTE":
 | 
			
		||||
				console.log("%c" + final_message, print_styles.note[gui_mode]);
 | 
			
		||||
			break;
 | 
			
		||||
			case "UNKN":
 | 
			
		||||
			default:
 | 
			
		||||
				console.log("%c" + final_message, print_styles.unkn[gui_mode]);
 | 
			
		||||
			break;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	const threads_method = () => threads.forEach(thread => {
 | 
			
		||||
		if(thread)
 | 
			
		||||
			try{
 | 
			
		||||
				thread();
 | 
			
		||||
			}catch(exception){};
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	this.thread_add = callback => {
 | 
			
		||||
 | 
			
		||||
		let error = (
 | 
			
		||||
				callback === undefined ? 1 << 0 : 
 | 
			
		||||
				callback === null ? 1 << 1 : 
 | 
			
		||||
				typeof callback != "function" ? 1 << 2 : 
 | 
			
		||||
			0) << 1, 
 | 
			
		||||
			i = null;
 | 
			
		||||
 | 
			
		||||
		if(!error){
 | 
			
		||||
 | 
			
		||||
			const l = threads.length;
 | 
			
		||||
 | 
			
		||||
			for(i = 0; i < l; i ++)
 | 
			
		||||
				if(!threads[i])
 | 
			
		||||
					break;
 | 
			
		||||
			
 | 
			
		||||
			threads[i] = callback;
 | 
			
		||||
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		return [i, error];
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	this.thread_remove = i => {
 | 
			
		||||
 | 
			
		||||
		let error = (
 | 
			
		||||
			i === undefined ? 1 << 0 : 
 | 
			
		||||
			i === null ? 1 << 1 : 
 | 
			
		||||
			isNaN(i) ? 1 << 2 : 
 | 
			
		||||
			i != i >> 0 ? 1 << 3 : 
 | 
			
		||||
			i < 0 ? 1 << 4 : 
 | 
			
		||||
			i >= threads.length ? 1 << 5 : 
 | 
			
		||||
		0) << 1;
 | 
			
		||||
 | 
			
		||||
		!i && (threads[i] = null);
 | 
			
		||||
 | 
			
		||||
		return error;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	this.preload = (selector, callback) => {
 | 
			
		||||
 | 
			
		||||
		let callback_is_function = typeof callback == "function", 
 | 
			
		||||
			error = (
 | 
			
		||||
				((
 | 
			
		||||
					selector === undefined ? 1 << 0 : 
 | 
			
		||||
					selector === null ? 1 << 1 : 
 | 
			
		||||
				0) << 0) | 
 | 
			
		||||
				((
 | 
			
		||||
					callback === undefined ? 1 << 0 : 
 | 
			
		||||
					callback === null ? 1 << 1 : 
 | 
			
		||||
					!callback_is_function ? 1 << 2 : 
 | 
			
		||||
				0) << 10) | 
 | 
			
		||||
			0) << 1, 
 | 
			
		||||
			item = null, 
 | 
			
		||||
			asynchronous = false;
 | 
			
		||||
		const end = () => callback_is_function && callback(item, error, asynchronous);
 | 
			
		||||
 | 
			
		||||
		if(!error){
 | 
			
		||||
			switch(typeof selector){
 | 
			
		||||
				case "string":
 | 
			
		||||
					if(!(error |= (
 | 
			
		||||
						!selector ? 1 << 5 : 
 | 
			
		||||
						!(selector = selector.trim()) ? 1 << 6 : 
 | 
			
		||||
					0) << 5)){
 | 
			
		||||
 | 
			
		||||
						try{
 | 
			
		||||
							(item = item_self.querySelector(selector)) && end();
 | 
			
		||||
						}catch(exception){
 | 
			
		||||
							error |= 1 << 7;
 | 
			
		||||
							end();
 | 
			
		||||
						};
 | 
			
		||||
 | 
			
		||||
						if(!item && !error){
 | 
			
		||||
 | 
			
		||||
							const date = Date.now(), 
 | 
			
		||||
								  [thread, suberror] = self.thread_add(() => {
 | 
			
		||||
									  if(item = item_self.querySelector(selector)){
 | 
			
		||||
										  self.thread_remove(thread);
 | 
			
		||||
										  end();
 | 
			
		||||
									  }else if(Date.now() - date > preload_timeout){
 | 
			
		||||
										  self.thread_remove(thread);
 | 
			
		||||
										  error |= 1 << 8;
 | 
			
		||||
										  end();
 | 
			
		||||
									  };
 | 
			
		||||
								  });
 | 
			
		||||
 | 
			
		||||
						};
 | 
			
		||||
 | 
			
		||||
					};
 | 
			
		||||
				break;
 | 
			
		||||
				case "object":
 | 
			
		||||
					if(selector.tagName || selector.nodeName)
 | 
			
		||||
						item = selector;
 | 
			
		||||
					else 
 | 
			
		||||
						error |= 1 << 4;
 | 
			
		||||
					end();
 | 
			
		||||
				break;
 | 
			
		||||
				default:
 | 
			
		||||
					error |= 1 << 3;
 | 
			
		||||
					end();
 | 
			
		||||
				break;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		return error;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	this.hash = () => {
 | 
			
		||||
 | 
			
		||||
		let hash;
 | 
			
		||||
		const l = hashes_alphabet.length;
 | 
			
		||||
 | 
			
		||||
		do{
 | 
			
		||||
			hash = "";
 | 
			
		||||
			while((hash += hashes_alphabet[Math.random() * l >> 0]).length < hashes_length);
 | 
			
		||||
		}while(
 | 
			
		||||
			hashes.includes(hash) || 
 | 
			
		||||
			/^[0-9]/.test(hash) || 
 | 
			
		||||
			document.querySelector("#" + hash + ",." + hash + ",[name=" + hash + "]")
 | 
			
		||||
		);
 | 
			
		||||
		hashes.push(hash);
 | 
			
		||||
 | 
			
		||||
		return hash;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	this.build_preloader = callback => {
 | 
			
		||||
 | 
			
		||||
		const hash = self.hash();
 | 
			
		||||
 | 
			
		||||
		self.preload("[data-preloader=" + hash + "]", (preloader, error, asynchronous) => {
 | 
			
		||||
			typeof callback == "function" && callback(error ? null : preloader.parentNode, error, asynchronous);
 | 
			
		||||
			preloader.remove();
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		return `<div data-preloader="` + hash + `"></div>`;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	this.set_self = (item, hash) => {
 | 
			
		||||
		
 | 
			
		||||
		let error = ((
 | 
			
		||||
			((item_self.tagName || item_self.nodeName) != "#document" ? 1 << 0 : 0) | 
 | 
			
		||||
			(hash_self ? 1 << 1 : 0) | 
 | 
			
		||||
		0) || (
 | 
			
		||||
			((
 | 
			
		||||
				item === undefined ? 1 << 0 : 
 | 
			
		||||
				item === null ? 1 << 1 : 
 | 
			
		||||
				typeof item != "object" ? 1 << 2 : 
 | 
			
		||||
				!item.tagName && !item.nodeName ? 1 << 3 : 
 | 
			
		||||
				(item.tagName || item.nodeName) == "#document" ? 1 << 4 : 
 | 
			
		||||
			0) << 2) | 
 | 
			
		||||
			((
 | 
			
		||||
				hash === undefined ? 1 << 0 : 
 | 
			
		||||
				hash === null ? 1 << 1 : 
 | 
			
		||||
				typeof hash != "string" ? 1 << 2 : 
 | 
			
		||||
				!hash ? 1 << 3 : 
 | 
			
		||||
				!hash.trim() ? 1 << 4 : 
 | 
			
		||||
				hash != hash.trim() ? 1 << 5 : 
 | 
			
		||||
				hash.split("").some(character => !hashes_alphabet.includes(character)) ? 1 << 6 : 
 | 
			
		||||
				hash.length < hashes_length ? 1 << 7 : 
 | 
			
		||||
			0) << 7) | 
 | 
			
		||||
		0)) << 1;
 | 
			
		||||
 | 
			
		||||
		if(!error){
 | 
			
		||||
			item_self = self.item_self = item;
 | 
			
		||||
			hash_self = self.hash_self = hash;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		return error;
 | 
			
		||||
	};
 | 
			
		||||
	
 | 
			
		||||
	construct();
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										151
									
								
								Public/html/Sizerboard.views.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										151
									
								
								Public/html/Sizerboard.views.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,151 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
    <head>
 | 
			
		||||
		<title data-i18n="sizerboard_views">Sizerboard - Views</title>
 | 
			
		||||
		<meta http-equiv="content-type" content="text/html;charset=utf-8" />
 | 
			
		||||
		<meta charset="utf-8" />
 | 
			
		||||
 | 
			
		||||
    </head>
 | 
			
		||||
    <body>
 | 
			
		||||
 | 
			
		||||
        <!-- [[base_view]] -->
 | 
			
		||||
        <div class="sizerboard {hash}{classes}" id="{hash}" data-hash="{hash}" data-application="{application}" data-url="{url}" data-git="{git}" data-cells="{cells}">
 | 
			
		||||
            <header>
 | 
			
		||||
                <h1>
 | 
			
		||||
                    <a href="{url}" data-i18n="sizerboard" title="{{sizerboard}}" data-i18n-without="true">
 | 
			
		||||
                        <span class="logo">
 | 
			
		||||
                            <img src="{logo}" data-i18n="sizerboard" alt="{{sizerboard}}" data-i18n-without="true" />
 | 
			
		||||
                            <span style="background-image:url('{logo}');"></span>
 | 
			
		||||
                        </span>
 | 
			
		||||
                        <span data-i18n="sizerboard">{{sizerboard}}</span>
 | 
			
		||||
                    </a>
 | 
			
		||||
                </h1>
 | 
			
		||||
                <nav class="main-menu">
 | 
			
		||||
                    <ul>{main_menu_items}</ul>
 | 
			
		||||
                </nav>
 | 
			
		||||
            </header>
 | 
			
		||||
            <main>
 | 
			
		||||
                <form class="projects-menu" method="post" action="#" onsubmit="return false;">
 | 
			
		||||
                    <fieldset>
 | 
			
		||||
                        <legend data-i18n="projects_menu">{{projects_menu}}</legend>
 | 
			
		||||
                        <p data-i18n="projects_menu_text">{{projects_menu_text}}</p>
 | 
			
		||||
                        <ul class="group search-box" data-i18n="search" title="{{search}}" data-i18n-without="true">
 | 
			
		||||
                            <li><label for="projects_menu_search">
 | 
			
		||||
                                <span data-icon="search"></span>
 | 
			
		||||
                                <span data-i18n="search">{{search}}</span>
 | 
			
		||||
                            </label></li>
 | 
			
		||||
                            <li class="input"><input type="text" id="projects_menu_search" name="search" data-i18n="{search}" placeholder="{{search}}..." data-i18n-without="true" data-i18n-dotted="true" /></li>
 | 
			
		||||
                            <li class="input"><button type="button" data-i18n="search" title="{{search}}" data-i18n-without="true" onclick="object_name.projects.search(this, event);">
 | 
			
		||||
                                <span data-icon="search"></span>
 | 
			
		||||
                                <span data-i18n="search">{{search}}</span>
 | 
			
		||||
                            </button></li>
 | 
			
		||||
                            <li class="input"><button type="button" data-i18n="add" title="{{add}}" data-i18n-without="true" onclick="object_name.projects.add(this, event);">
 | 
			
		||||
                                <span data-icon="add"></span>
 | 
			
		||||
                                <span data-i18n="add">{{add}}</span>
 | 
			
		||||
                            </button></li>
 | 
			
		||||
                        </ul>
 | 
			
		||||
                        <nav>
 | 
			
		||||
                            <ul>{projects}</ul>
 | 
			
		||||
                        </nav>
 | 
			
		||||
                    </fieldset>
 | 
			
		||||
                </form>
 | 
			
		||||
                <form class="draw-box" method="post" action="#" onsubmit="return false;" data-mode="canvas" data-selected="null">
 | 
			
		||||
                    <fieldset>
 | 
			
		||||
                        <legend data-i18n="draw_box">{{draw_box}}</legend>
 | 
			
		||||
                        <p data-i18n="draw_box_text">{{draw_box_text}}</p>
 | 
			
		||||
                        <ul class="group">
 | 
			
		||||
                            <li class="input"><button type="button" data-i18n="html" title="{{html}}" data-i18n-without="true" onclick="object_name.draw_box.show(this, event, 'html');">
 | 
			
		||||
                                <span data-icon="html"></span>
 | 
			
		||||
                                <span data-i18n="html">{{html}}</span>
 | 
			
		||||
                            </button></li>
 | 
			
		||||
                            <li class="input"><button type="button" data-i18n="canvas" title="{{canvas}}" data-i18n-without="true" onclick="object_name.draw_box.show(this, event, 'canvas');" disabled>
 | 
			
		||||
                                <span data-icon="canvas"></span>
 | 
			
		||||
                                <span data-i18n="canvas">{{canvas}}</span>
 | 
			
		||||
                            </button></li>
 | 
			
		||||
                            <li class="input"><button type="button" data-i18n="svg" title="{{svg}}" data-i18n-without="true" onclick="object_name.draw_box.show(this, event, 'svg');">
 | 
			
		||||
                                <span data-icon="svg"></span>
 | 
			
		||||
                                <span data-i18n="svg">{{svg}}</span>
 | 
			
		||||
                            </button></li>
 | 
			
		||||
                            <li class="input"><button type="button" data-i18n="text" title="{{text}}" data-i18n-without="true" onclick="object_name.draw_box.show(this, event, 'text');">
 | 
			
		||||
                                <span data-icon="text"></span>
 | 
			
		||||
                                <span data-i18n="text">{{text}}</span>
 | 
			
		||||
                            </button></li>
 | 
			
		||||
                        </ul>
 | 
			
		||||
                        <div class="fields">
 | 
			
		||||
                            <section class="html" data-visible="false"></section>
 | 
			
		||||
                            <section class="canvas" data-visible="true">
 | 
			
		||||
                                <canvas></canvas>
 | 
			
		||||
                            </section>
 | 
			
		||||
                            <section class="svg" data-visible="false">
 | 
			
		||||
                                <svg></svg>
 | 
			
		||||
                            </section>
 | 
			
		||||
                            <section class="text" data-visible="false">
 | 
			
		||||
                                <textarea name="code" data-i18n="code" data-i18n-dotted="true" data-i18n-without="true" placeholder="{{code}}..."></textarea>
 | 
			
		||||
                            </section>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </fieldset>
 | 
			
		||||
                    <div class="curtain"></div>
 | 
			
		||||
                </form>
 | 
			
		||||
                <fieldset class="actions-box">
 | 
			
		||||
                    <legend data-i18n="actions">{{actions}}</legend>
 | 
			
		||||
                    <p data-i18n="actions_text">{{actions_text}}</p>
 | 
			
		||||
                    <nav class="actions">
 | 
			
		||||
                        <ul>
 | 
			
		||||
                            <li data-i18n="upload" data-i18n-without="true" title="{{upload}}">
 | 
			
		||||
                                <button type="button" onclick="object_name.projects.upload(this, event);">
 | 
			
		||||
                                    <span data-icon="upload"></span>
 | 
			
		||||
                                    <span data-i18n="upload">{{upload}}</span>
 | 
			
		||||
                                </button>
 | 
			
		||||
                            </li>
 | 
			
		||||
                            <li data-i18n="save" data-i18n-without="true" title="{{save}}">
 | 
			
		||||
                                <button type="button" onclick="object_name.projects.save(this, event);" disabled>
 | 
			
		||||
                                    <span data-icon="save"></span>
 | 
			
		||||
                                    <span data-i18n="save">{{save}}</span>
 | 
			
		||||
                                </button>
 | 
			
		||||
                            </li>
 | 
			
		||||
                            <li data-i18n="download" data-i18n-without="true" title="{{download}}">
 | 
			
		||||
                                <button type="button" onclick="object_name.projects.download(this, event);" disabled>
 | 
			
		||||
                                    <span data-icon="download"></span>
 | 
			
		||||
                                    <span data-i18n="download">{{download}}</span>
 | 
			
		||||
                                </button>
 | 
			
		||||
                            </li>
 | 
			
		||||
                        </ul>
 | 
			
		||||
                    </nav>
 | 
			
		||||
                </fieldset>
 | 
			
		||||
            </main>
 | 
			
		||||
            <footer>
 | 
			
		||||
                <span class="licences">
 | 
			
		||||
                    <a href="https://www.gnu.org/licenses/gpl-3.0.txt" target="_blank" data-i18n="license_gpl" title="GPLv3" data-i18n-without="true">
 | 
			
		||||
                        <span data-i18n="license_text">© 2024-2025 CopyLeft.</span>
 | 
			
		||||
                        <img src="https://www.gnu.org/graphics/gplv3-127x51.png" data-i18n="license_gpl" alt="GPLv3" data-i18n-without="true" />
 | 
			
		||||
                    </a>
 | 
			
		||||
                    <a class="license-image" href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank" data-i18n="license_creative_commons" data-i18n-without="true" title="Creative Commons">
 | 
			
		||||
                        <img src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" alt="cc-sa" />
 | 
			
		||||
                    </a>
 | 
			
		||||
                </span>
 | 
			
		||||
            </footer>
 | 
			
		||||
            {preloader}
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- [[base_view]] -->
 | 
			
		||||
 | 
			
		||||
        <nav>
 | 
			
		||||
            <ul>
 | 
			
		||||
 | 
			
		||||
                <!-- [[main_menu_item]] -->
 | 
			
		||||
                <li data-i18n="{i18n}" title="{{i18n}}" data-i18n-without="true">
 | 
			
		||||
                    <a href="{url}" target="{target}">
 | 
			
		||||
                        <span data-icon="{icon}"></span>
 | 
			
		||||
                        <span data-i18n="{i18n}">{{i18n}}</span>
 | 
			
		||||
                    </a>
 | 
			
		||||
                </li>
 | 
			
		||||
                <!-- [[main_menu_item]] -->
 | 
			
		||||
 | 
			
		||||
                <!-- [[project_option]] -->
 | 
			
		||||
                <li data-name="{name}" data-i="{i}" title="{name}" onclick="object_name.projects.get_in_gui(this, event);" data-selected="false" rol="button">{name}</li>
 | 
			
		||||
                <!-- [[project_option]] -->
 | 
			
		||||
 | 
			
		||||
            </ul>
 | 
			
		||||
        </nav>
 | 
			
		||||
 | 
			
		||||
    </body>
 | 
			
		||||
</html>
 | 
			
		||||
@ -1,12 +0,0 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
	<head>
 | 
			
		||||
		<title data-i18n="sizerboard">Sizerboard</title>
 | 
			
		||||
		<meta http-equiv="content-type" content="text/html;charset=utf-8" />
 | 
			
		||||
		<meta charset="utf-8" />
 | 
			
		||||
		
 | 
			
		||||
		<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
 | 
			
		||||
		
 | 
			
		||||
	</head>
 | 
			
		||||
	<body></body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										58
									
								
								Public/index.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								Public/index.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
			
		||||
<?php 
 | 
			
		||||
 | 
			
		||||
	$default_language_code = "es";
 | 
			
		||||
	$languages_dictionary = json_decode(file_get_contents(__DIR__ . "/../JSON/Sizerboard.languages_iso.json"), true);
 | 
			
		||||
	$language_code = $default_language_code;
 | 
			
		||||
	$languages = [$languages_dictionary[$language_code]];
 | 
			
		||||
 | 
			
		||||
	preg_match('/^\/([a-z]{2})(\/([a-z0-9\-]+))?(\/([a-z0-9\-]+))?\/?$/i', $_SERVER["REQUEST_URI"], $matches, PREG_OFFSET_CAPTURE) && 
 | 
			
		||||
	count($matches) > 1 && 
 | 
			
		||||
	($language_code = $matches[1][0]);
 | 
			
		||||
 | 
			
		||||
	if($language_code != $default_language_code && isset($languages_dictionary[$language_code]))
 | 
			
		||||
		$languages[] = $languages_dictionary[$language_code];
 | 
			
		||||
	else 
 | 
			
		||||
		$language_code = $default_language_code;
 | 
			
		||||
 | 
			
		||||
?><!DOCTYPE html>
 | 
			
		||||
<html lang="<?=$language_code;?>">
 | 
			
		||||
	<head>
 | 
			
		||||
		<title data-i18n="sizerboard">Sizerboard</title>
 | 
			
		||||
		<meta http-equiv="content-type" content="text/html;charset=utf-8" />
 | 
			
		||||
		<meta charset="utf-8" />
 | 
			
		||||
 | 
			
		||||
		<style data-type="text/css" data-language="CSS2" data-rel="stylesheet" charset="utf-8">
 | 
			
		||||
 | 
			
		||||
			html,body{
 | 
			
		||||
				height : 100%;
 | 
			
		||||
				margin : 0em;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		</style>
 | 
			
		||||
 | 
			
		||||
		<link type="text/css" data-language="CSS3" rel="stylesheet" href="https://cdn.k3y.pw/css/fonts/local/Roboto.css" data-crossorigin="anonymous" charset="utf-8" />
 | 
			
		||||
		<link type="text/css" data-language="CSS3" rel="stylesheet" href="https://cdn.k3y.pw/css/fonts/local/RobotoMono.css" data-crossorigin="anonymous" charset="utf-8" />
 | 
			
		||||
		<link type="text/css" data-language="CSS3" rel="stylesheet" href="https://cdn.k3y.pw/css/fonts/local/FontAwesome5Free.css" data-crossorigin="anonymous" charset="utf-8" />
 | 
			
		||||
 | 
			
		||||
		<link type="text/css" data-language="SASS/CSS3" rel="stylesheet" href="/scss/Sizerboard.css" data-scss="/scss/Sizerboard.scss" data-css-map="/scss/Sizerboard.css.map" data-crossorigin="anonymous" charset="utf-8" />
 | 
			
		||||
		<link type="text/css" data-language="CSS3" rel="stylesheet" href="/css/Sizerboard.icons.css" data-crossorigin="anonymous" charset="utf-8" />
 | 
			
		||||
		
 | 
			
		||||
		<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
 | 
			
		||||
		<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.Views.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
 | 
			
		||||
		<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.Base.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
 | 
			
		||||
		<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.Projects.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
 | 
			
		||||
		<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/Sizerboard.DrawBox.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
 | 
			
		||||
 | 
			
		||||
		<script data-type="text/javascript" data-language="ECMAScript 2015" charset="utf-8">
 | 
			
		||||
 | 
			
		||||
			sizerboard = new Sizerboard({
 | 
			
		||||
				default_language : "<?=$languages_dictionary[$language_code];?>", 
 | 
			
		||||
				language : "<?=$languages_dictionary[$language_code];?>", 
 | 
			
		||||
				default_i18n_files : [<?php foreach($languages as $i => $language){?><?=$i ? ", " : "";?>"/json/i18n/Sizerboard.i18n.<?=$language;?>.json"<?php }?>]
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
		</script>
 | 
			
		||||
		
 | 
			
		||||
	</head>
 | 
			
		||||
	<body></body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										33
									
								
								Public/json/Sizerboard.settings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								Public/json/Sizerboard.settings.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
			
		||||
{
 | 
			
		||||
    "nulls" : false, 
 | 
			
		||||
    "default_value" : null, 
 | 
			
		||||
    "default_text" : "", 
 | 
			
		||||
    "autostart" : true, 
 | 
			
		||||
    "default_language" : "english", 
 | 
			
		||||
    "timeout" : 2000, 
 | 
			
		||||
    "print_format" : "[{type}] {yyyy}{mm}{dd} {hh}{ii}{ss} [{line}]{file}({method}): {message}", 
 | 
			
		||||
    "gui_mode" : "light", 
 | 
			
		||||
    "frames_per_second" : 24, 
 | 
			
		||||
    "position" : "body", 
 | 
			
		||||
    "views_overwrite" : false, 
 | 
			
		||||
    "default_views_files" : "/html/Sizerboard.views.html", 
 | 
			
		||||
    "logo" : "/images/Sizerboard.webp", 
 | 
			
		||||
    "application_name" : "Sizerboard", 
 | 
			
		||||
    "application_url" : "https://sizerboard.k3y.pw/", 
 | 
			
		||||
    "application_git" : "https://git.k3y.pw/KyMAN/Sizerboard", 
 | 
			
		||||
    "cells" : 40, 
 | 
			
		||||
    "main_menu_items" : [
 | 
			
		||||
        {"i18n" : "home", "icon" : "home", "url" : "/", "target" : "_self"}, 
 | 
			
		||||
        {"i18n" : "documentation", "icon" : "documentation", "url" : "/doc", "target" : "_blank"}, 
 | 
			
		||||
        {"i18n" : "git", "icon" : "git", "url" : "https://git.k3y.pw/KyMAN/Sizerboard", "target" : "_blank"}
 | 
			
		||||
    ], 
 | 
			
		||||
    "default_i18n_files" : [
 | 
			
		||||
        "/json/i18n/Sizerboard.i18n.english.json", 
 | 
			
		||||
        "/json/i18n/Sizerboard.i18n.espanol.json", 
 | 
			
		||||
        "/json/i18n/Sizerboard.i18n.nihongo.json", 
 | 
			
		||||
        "/json/i18n/Sizerboard.i18n.russkiy.json", 
 | 
			
		||||
        "/json/i18n/Sizerboard.i18n.alarabiyah.json"
 | 
			
		||||
    ], 
 | 
			
		||||
    "hashes_alphabet" : "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz", 
 | 
			
		||||
    "hashes_length" : 11
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.alarabiyah.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.alarabiyah.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "alarabiyah" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "المدير", 
 | 
			
		||||
        "documentation" : "الوثائق", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "قائمة بالمشروع", 
 | 
			
		||||
        "projects_menu_text" : "هذه قائمة المشروع ثم يمكنك التصفية باسم المشاريع التي تملكها، وإذا لم يكن هناك اسم، يمكنك خلقه.", 
 | 
			
		||||
        "search" : "البحث", 
 | 
			
		||||
        "add" : "مضافا إليها", 
 | 
			
		||||
        "draw_box" : "الإطار", 
 | 
			
		||||
        "draw_box_text" : "وسيتضمن هذا الإطار رسومات وأدوات وصناديق نصية للتحرير.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "النص", 
 | 
			
		||||
        "code" : "المدونة", 
 | 
			
		||||
        "actions" : "الإجراءات", 
 | 
			
		||||
        "actions_text" : "ويتضمن هذا الإطار الإجراءات العامة ضد مشاريعكم.", 
 | 
			
		||||
        "upload" : "فوق", 
 | 
			
		||||
        "save" : "أنقذ", 
 | 
			
		||||
        "download" : "تحميل", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.azerbaycanca.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.azerbaycanca.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "azerbaycanca" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : " Principal", 
 | 
			
		||||
        "documentation" : "Tarix", 
 | 
			
		||||
        "git" : "Qeydiyyat", 
 | 
			
		||||
        "projects_menu" : "Elanlar", 
 | 
			
		||||
        "projects_menu_text" : "Bu layihə meneceridir. Sonra siz öz layihələrin adı ilə filter edə bilərsiniz, və adı varsa, onu yaraya bilərsiniz.", 
 | 
			
		||||
        "search" : "Axtarış", 
 | 
			
		||||
        "add" : "Axtarış", 
 | 
			
		||||
        "draw_box" : "Tarix", 
 | 
			
		||||
        "draw_box_text" : "Bu səhifə konfiqurasiyalar, alətlər və məhsul qutusu daxil edəcək.", 
 | 
			
		||||
        "html" : " HTML", 
 | 
			
		||||
        "canvas" : "Qeydiyyat", 
 | 
			
		||||
        "svg" : "QALEREYA", 
 | 
			
		||||
        "text" : "Tarix", 
 | 
			
		||||
        "code" : "Qeydiyyat", 
 | 
			
		||||
        "actions" : "Proqramlar", 
 | 
			
		||||
        "actions_text" : "Bu səhifə sizin layihələrinə qarşı ümumi həyata malikdir.", 
 | 
			
		||||
        "upload" : "Qeydiyyat", 
 | 
			
		||||
        "save" : "Daxil ol", 
 | 
			
		||||
        "download" : "Pulsuz", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.catala.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.catala.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "catala" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Principal", 
 | 
			
		||||
        "documentation" : "Documentació", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Menú del projecte", 
 | 
			
		||||
        "projects_menu_text" : "Aquest és el menú del projecte. Si no hi ha cap nom, podeu crear-lo.", 
 | 
			
		||||
        "search" : "Cerca", 
 | 
			
		||||
        "add" : "Afegir", 
 | 
			
		||||
        "draw_box" : "Box dibuixat", 
 | 
			
		||||
        "draw_box_text" : "Aquest marc conté dibuixos representatius, eines i caixa de text per a l'edició.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Llenç", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Text", 
 | 
			
		||||
        "code" : "Codi", 
 | 
			
		||||
        "actions" : "Accions", 
 | 
			
		||||
        "actions_text" : "Aquest marc conté les accions generals contra els vostres projectes.", 
 | 
			
		||||
        "upload" : "Amunt", 
 | 
			
		||||
        "save" : "Save", 
 | 
			
		||||
        "download" : "Descàrrega", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.cestina.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.cestina.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "cestina" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Čeština", 
 | 
			
		||||
        "documentation" : "Odkazy", 
 | 
			
		||||
        "git" : "Čeština", 
 | 
			
		||||
        "projects_menu" : "Nabídka projektu", 
 | 
			
		||||
        "projects_menu_text" : "Jedná se o nabídku projektu. Poté můžete filtrovat podle názvu projektů, které vlastníte, a pokud není jméno, můžete jej vytvořit.", 
 | 
			
		||||
        "search" : "Hledat", 
 | 
			
		||||
        "add" : "Čeština", 
 | 
			
		||||
        "draw_box" : "Box nakreslený", 
 | 
			
		||||
        "draw_box_text" : "Tento rámec bude obsahovat reprezentativní výkresy, nástroje a textové pole pro úpravy.", 
 | 
			
		||||
        "html" : "ČEŠTINA", 
 | 
			
		||||
        "canvas" : "Čeština", 
 | 
			
		||||
        "svg" : "ČEŠTINA", 
 | 
			
		||||
        "text" : "Čeština", 
 | 
			
		||||
        "code" : "Kód", 
 | 
			
		||||
        "actions" : "Akce", 
 | 
			
		||||
        "actions_text" : "Tento rámec obsahuje obecné akce proti svým projektům.", 
 | 
			
		||||
        "upload" : "Nahoru", 
 | 
			
		||||
        "save" : "Čeština", 
 | 
			
		||||
        "download" : "Čeština", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.dansk.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.dansk.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "dansk" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "I NÆRHEDEN AF Sizerboard", 
 | 
			
		||||
        "home" : "Fyrste", 
 | 
			
		||||
        "documentation" : "Dokumentation", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Projektmenu", 
 | 
			
		||||
        "projects_menu_text" : "Dette er projektmenuen. Så kan du filtrere ved at nævne de projekter, du ejer, og hvis der ikke er noget navn, kan du oprette det.", 
 | 
			
		||||
        "search" : "Søg Søg Søg", 
 | 
			
		||||
        "add" : "Tilføj Tilføj Tilføj Tilføj", 
 | 
			
		||||
        "draw_box" : "Box tegnet", 
 | 
			
		||||
        "draw_box_text" : "Denne ramme indeholder repræsentative tegninger, værktøjer og tekstboks til redigering.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Fotolærred", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Tekst tekst", 
 | 
			
		||||
        "code" : "Kodekode", 
 | 
			
		||||
        "actions" : "Handlinger", 
 | 
			
		||||
        "actions_text" : "Denne ramme indeholder de generelle handlinger mod dine projekter.", 
 | 
			
		||||
        "upload" : "Up Up Up Up", 
 | 
			
		||||
        "save" : "Gem Gem Gem Gem Gem Gem", 
 | 
			
		||||
        "download" : "Download Download Download Download", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.deutsch.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.deutsch.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "deutsch" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Auftraggeber", 
 | 
			
		||||
        "documentation" : "Dokumentation", 
 | 
			
		||||
        "git" : "Gier", 
 | 
			
		||||
        "projects_menu" : "Projektmenü", 
 | 
			
		||||
        "projects_menu_text" : "Das ist das Projektmenü. Dann können Sie mit Namen die Projekte filtern, die Sie besitzen, und wenn es keinen Namen gibt, können Sie es erstellen.", 
 | 
			
		||||
        "search" : "Suche", 
 | 
			
		||||
        "add" : "Hinzufügen", 
 | 
			
		||||
        "draw_box" : "Feld gezogen", 
 | 
			
		||||
        "draw_box_text" : "Dieser Rahmen enthält repräsentative Zeichnungen, Werkzeuge und Textbox zur Bearbeitung.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "~", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Text", 
 | 
			
		||||
        "code" : "Code", 
 | 
			
		||||
        "actions" : "Maßnahmen", 
 | 
			
		||||
        "actions_text" : "Dieser Rahmen enthält die allgemeinen Aktionen gegen Ihre Projekte.", 
 | 
			
		||||
        "upload" : "Nach oben", 
 | 
			
		||||
        "save" : "Speichern", 
 | 
			
		||||
        "download" : "Downloads", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										52
									
								
								Public/json/i18n/Sizerboard.i18n.ellinika.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								Public/json/i18n/Sizerboard.i18n.ellinika.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,52 @@
 | 
			
		||||
{
 | 
			
		||||
    "ellinika" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Πριγκιπ Πριγκιερ", 
 | 
			
		||||
        "documentation" : "Τεκμηρίωση", 
 | 
			
		||||
        "git" : "Git Git", 
 | 
			
		||||
        "projects_menu" : "Πρόγραμμα μενού μενού", 
 | 
			
		||||
        "projects_menu_text" : [
 | 
			
		||||
            "Αυτό είναι το μενού του έργου. Στη συνέχεια μπορείτε να ", 
 | 
			
		||||
            "φιλτράρετε με το όνομα τα έργα που διαθέτετε και αν δεν υπάρχει ", 
 | 
			
		||||
            "όνομα, μπορείτε να το δημιουργήσετε."
 | 
			
		||||
        ], 
 | 
			
		||||
        "search" : "Αναζήτηση Αναζήτηση Αναζήτηση", 
 | 
			
		||||
        "add" : "Προσθήκη Προσθήκη", 
 | 
			
		||||
        "draw_box" : "Box", 
 | 
			
		||||
        "draw_box_text" : "Αυτό το πλαίσιο θα περιέχει αντιπροσωπευτικά σχέδια, εργαλεία και πλαίσιο κειμένου για επεξεργασία.", 
 | 
			
		||||
        "html" : "HTML HTML HTML HTML", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "MODE", 
 | 
			
		||||
        "text" : "Κείμενο κείμενο κείμενο κείμενο κείμενο κείμενο κείμενο κείμενο κείμενο κείμενο", 
 | 
			
		||||
        "code" : "Κώδικα κώδικα", 
 | 
			
		||||
        "actions" : "Δράση", 
 | 
			
		||||
        "actions_text" : "Το πλαίσιο αυτό περιέχει τις γενικές δράσεις κατά των έργων σας.", 
 | 
			
		||||
        "upload" : [
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up Up ", 
 | 
			
		||||
            "Up Up Up Up"
 | 
			
		||||
        ], 
 | 
			
		||||
        "save" : "Εξοικονομήστε", 
 | 
			
		||||
        "download" : "Download Download Download", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.english.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.english.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "english" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Principal", 
 | 
			
		||||
        "documentation" : "Documentation", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Project menu", 
 | 
			
		||||
        "projects_menu_text" : "This is the project menu. Then you can filter by name the projects you own, and if there is no name, you can create it.", 
 | 
			
		||||
        "search" : "Search", 
 | 
			
		||||
        "add" : "Add", 
 | 
			
		||||
        "draw_box" : "Box drawn", 
 | 
			
		||||
        "draw_box_text" : "This framework will contain representative drawings, tools and text box for editing.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Text", 
 | 
			
		||||
        "code" : "Code", 
 | 
			
		||||
        "actions" : "Actions", 
 | 
			
		||||
        "actions_text" : "This framework contains the general actions against your projects.", 
 | 
			
		||||
        "upload" : "Up", 
 | 
			
		||||
        "save" : "Save", 
 | 
			
		||||
        "download" : "Download", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								Public/json/i18n/Sizerboard.i18n.espanol.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								Public/json/i18n/Sizerboard.i18n.espanol.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
{
 | 
			
		||||
    "espanol" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Principal", 
 | 
			
		||||
        "documentation" : "Documentación", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Menú de proyectos", 
 | 
			
		||||
        "projects_menu_text" : [
 | 
			
		||||
            "Este es el menú de proyectos. A continuación podrás filtrar por nombre los proyectos que ", 
 | 
			
		||||
            "posees, y en caso de no existir el nombre, lo podrás crear."
 | 
			
		||||
        ], 
 | 
			
		||||
        "search" : "Buscar", 
 | 
			
		||||
        "add" : "Añadir", 
 | 
			
		||||
        "draw_box" : "Caja de dibujado", 
 | 
			
		||||
        "draw_box_text" : "Este marco contendrá los dibujos representativos, sus herramientas y el cuadro de texto para edición.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Texto", 
 | 
			
		||||
        "code" : "Código", 
 | 
			
		||||
        "actions" : "Acciones", 
 | 
			
		||||
        "actions_text" : "Este marco contiene las acciones generales contra tus proyectos.", 
 | 
			
		||||
        "upload" : "Subir", 
 | 
			
		||||
        "save" : "Guardar", 
 | 
			
		||||
        "download" : "Descargar", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.esperanto.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.esperanto.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "esperanto" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Ĉefa rektoro", 
 | 
			
		||||
        "documentation" : "Dokumentado", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Projekto menuo", 
 | 
			
		||||
        "projects_menu_text" : "Tio estas la projekto menuo. Tiam vi povas filtri laŭ la projektoj, kiujn vi posedas, kaj se ne ekzistas nomo, vi povas krei ĝin.", 
 | 
			
		||||
        "search" : "Serĉo", 
 | 
			
		||||
        "add" : "Aldonu", 
 | 
			
		||||
        "draw_box" : "La skatolo", 
 | 
			
		||||
        "draw_box_text" : "Tiu kadro enhavos reprezentajn desegnaĵojn, ilojn kaj tekstkeston por redaktado.", 
 | 
			
		||||
        "html" : "HTML HTML HTML HTML", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Teksto teksto", 
 | 
			
		||||
        "code" : "Kodo", 
 | 
			
		||||
        "actions" : "Agoj", 
 | 
			
		||||
        "actions_text" : "Ĉi tiu kadro enhavas la ĝeneralajn agojn kontraŭ viaj projektoj.", 
 | 
			
		||||
        "upload" : "Supren ĝis", 
 | 
			
		||||
        "save" : "Savi", 
 | 
			
		||||
        "download" : "Elŝutu", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.farsi.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.farsi.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "farsi" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "مدیر ارشد", 
 | 
			
		||||
        "documentation" : "مستندات", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Project menu", 
 | 
			
		||||
        "projects_menu_text" : "این منو پروژه است. سپس می توانید با نام پروژه هایی که مالک آن هستید فیلتر کنید و اگر نامی وجود نداشته باشد، می توانید آن را ایجاد کنید.", 
 | 
			
		||||
        "search" : "جستجو جستجو", 
 | 
			
		||||
        "add" : "Add Add", 
 | 
			
		||||
        "draw_box" : "جعبه", 
 | 
			
		||||
        "draw_box_text" : "این چارچوب شامل نقشه های نمایندگی، ابزار و جعبه متن برای ویرایش خواهد بود.", 
 | 
			
		||||
        "html" : "HTML HTML", 
 | 
			
		||||
        "canvas" : "بوم بوم", 
 | 
			
		||||
        "svg" : "SVG SVG", 
 | 
			
		||||
        "text" : "متن متن متن متن", 
 | 
			
		||||
        "code" : "کد", 
 | 
			
		||||
        "actions" : "اقدامات", 
 | 
			
		||||
        "actions_text" : "این چارچوب شامل اقدامات عمومی علیه پروژه های شما است.", 
 | 
			
		||||
        "upload" : "Up Up Up", 
 | 
			
		||||
        "save" : "Save Save", 
 | 
			
		||||
        "download" : "Download", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.francais.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.francais.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "francais" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Principal", 
 | 
			
		||||
        "documentation" : "Documentation", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Menu du projet", 
 | 
			
		||||
        "projects_menu_text" : "C'est le menu du projet. Ensuite, vous pouvez filtrer par nom les projets que vous possédez, et s'il n'y a pas de nom, vous pouvez le créer.", 
 | 
			
		||||
        "search" : "Recherche", 
 | 
			
		||||
        "add" : "Add", 
 | 
			
		||||
        "draw_box" : "Encadré", 
 | 
			
		||||
        "draw_box_text" : "Ce cadre comprendra des dessins représentatifs, des outils et une boîte de texte pour l'édition.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Texte", 
 | 
			
		||||
        "code" : "Code", 
 | 
			
		||||
        "actions" : "Mesures à prendre", 
 | 
			
		||||
        "actions_text" : "Ce cadre contient les actions générales contre vos projets.", 
 | 
			
		||||
        "upload" : "Debout", 
 | 
			
		||||
        "save" : "Save", 
 | 
			
		||||
        "download" : "Télécharger", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										38
									
								
								Public/json/i18n/Sizerboard.i18n.gaeilge.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								Public/json/i18n/Sizerboard.i18n.gaeilge.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
			
		||||
{
 | 
			
		||||
    "gaeilge" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "SEIRBHÍS DO CHUSTAIMÉIRÍ", 
 | 
			
		||||
        "home" : "Príomhoide", 
 | 
			
		||||
        "documentation" : "Cáipéisí", 
 | 
			
		||||
        "git" : "Bláthanna cumhra: cumhráin", 
 | 
			
		||||
        "projects_menu" : "Roghchlár Tionscadail", 
 | 
			
		||||
        "projects_menu_text" : [
 | 
			
		||||
            "Is é seo an roghchlár tionscadail. Ansin, is féidir leat na ", 
 | 
			
		||||
            "tionscadail a bhfuil tú féin a scagadh de réir ainm, agus mura ", 
 | 
			
		||||
            "bhfuil aon ainm ann, is féidir leat é a chruthú."
 | 
			
		||||
        ], 
 | 
			
		||||
        "search" : "Cuardaigh Cuardaigh Cuardaigh", 
 | 
			
		||||
        "add" : "Déan teagmháil linn", 
 | 
			
		||||
        "draw_box" : "Bosca tarraingt", 
 | 
			
		||||
        "draw_box_text" : "Beidh líníochtaí ionadaíocha, uirlisí agus bosca téacs le haghaidh eagarthóireachta sa chreat seo.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Canbhás", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Téacs téacs", 
 | 
			
		||||
        "code" : "Cód an Chóid", 
 | 
			
		||||
        "actions" : "Gníomhaíochtaí", 
 | 
			
		||||
        "actions_text" : "Tá na gníomhaíochtaí ginearálta i gcoinne do thionscadail sa chreat seo.", 
 | 
			
		||||
        "upload" : "Suas", 
 | 
			
		||||
        "save" : "Sábháil Sábháil", 
 | 
			
		||||
        "download" : "Íoslódáil", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.hangugeo.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.hangugeo.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "hangugeo" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard의 특징", 
 | 
			
		||||
        "home" : "주 메뉴", 
 | 
			
		||||
        "documentation" : "회사연혁", 
 | 
			
		||||
        "git" : "사이트맵", 
 | 
			
		||||
        "projects_menu" : "프로젝트 메뉴", 
 | 
			
		||||
        "projects_menu_text" : "프로젝트 메뉴입니다. 그런 다음 당신은 자신의 프로젝트 이름을 입력 할 수 있습니다, 그리고 이름이없는 경우, 당신은 그것을 만들 수 있습니다.", 
 | 
			
		||||
        "search" : "제품정보", 
 | 
			
		||||
        "add" : "기타", 
 | 
			
		||||
        "draw_box" : "회사 소개", 
 | 
			
		||||
        "draw_box_text" : "이 프레임 워크는 편집을위한 대표 도면, 도구 및 텍스트 상자를 포함합니다.", 
 | 
			
		||||
        "html" : "HTML 지원", 
 | 
			
		||||
        "canvas" : "인기 카테고리", 
 | 
			
		||||
        "svg" : "사이트맵", 
 | 
			
		||||
        "text" : "이름 *", 
 | 
			
		||||
        "code" : "* 이름", 
 | 
			
		||||
        "actions" : "기타", 
 | 
			
		||||
        "actions_text" : "이 프레임 워크는 프로젝트에 대한 일반적인 조치를 포함합니다.", 
 | 
			
		||||
        "upload" : "지원하다", 
 | 
			
		||||
        "save" : "제품 정보", 
 | 
			
		||||
        "download" : "다운로드", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.hindi.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.hindi.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "hindi" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "प्रधान", 
 | 
			
		||||
        "documentation" : "प्रलेखन", 
 | 
			
		||||
        "git" : "गिट", 
 | 
			
		||||
        "projects_menu" : "परियोजना मेनू", 
 | 
			
		||||
        "projects_menu_text" : "यह परियोजना मेनू है। फिर आप अपनी परियोजनाओं को नाम से फ़िल्टर कर सकते हैं और यदि कोई नाम नहीं है तो आप इसे बना सकते हैं।.", 
 | 
			
		||||
        "search" : "खोज", 
 | 
			
		||||
        "add" : "जोड़ें", 
 | 
			
		||||
        "draw_box" : "बॉक्स खींचा", 
 | 
			
		||||
        "draw_box_text" : "इस ढांचे में संपादन के लिए प्रतिनिधि चित्र, उपकरण और टेक्स्ट बॉक्स शामिल होंगे।.", 
 | 
			
		||||
        "html" : "एचटीएमएल", 
 | 
			
		||||
        "canvas" : "कैनवास", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "पाठ", 
 | 
			
		||||
        "code" : "कोड", 
 | 
			
		||||
        "actions" : "कार्य", 
 | 
			
		||||
        "actions_text" : "इस ढांचे में आपकी परियोजनाओं के खिलाफ सामान्य कार्य शामिल हैं।.", 
 | 
			
		||||
        "upload" : "ऊपर", 
 | 
			
		||||
        "save" : "सहेजें", 
 | 
			
		||||
        "download" : "डाउनलोड", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.indonesia.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.indonesia.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "indonesia" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "LOGIN", 
 | 
			
		||||
        "home" : "Login", 
 | 
			
		||||
        "documentation" : "Sitemap", 
 | 
			
		||||
        "git" : "Login", 
 | 
			
		||||
        "projects_menu" : "Menu Proyek", 
 | 
			
		||||
        "projects_menu_text" : "Ini adalah menu proyek. Kemudian Anda dapat menyaring dengan nama proyek yang Anda miliki, dan jika tidak ada nama, Anda dapat membuatnya.", 
 | 
			
		||||
        "search" : "Sitemap", 
 | 
			
		||||
        "add" : "Login", 
 | 
			
		||||
        "draw_box" : "Kotak ditarik", 
 | 
			
		||||
        "draw_box_text" : "Kerangka ini akan berisi gambar perwakilan, alat dan kotak teks untuk mengedit.", 
 | 
			
		||||
        "html" : "LOGIN", 
 | 
			
		||||
        "canvas" : "Login", 
 | 
			
		||||
        "svg" : "LOGIN", 
 | 
			
		||||
        "text" : "Login", 
 | 
			
		||||
        "code" : "Login", 
 | 
			
		||||
        "actions" : "Sitemap", 
 | 
			
		||||
        "actions_text" : "Kerangka ini berisi tindakan umum terhadap proyek Anda.", 
 | 
			
		||||
        "upload" : "Sitemap", 
 | 
			
		||||
        "save" : "Sitemap", 
 | 
			
		||||
        "download" : "Login", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.italiano.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.italiano.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "italiano" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Principale", 
 | 
			
		||||
        "documentation" : "Documentazione", 
 | 
			
		||||
        "git" : "Gi", 
 | 
			
		||||
        "projects_menu" : "Menu di progetto", 
 | 
			
		||||
        "projects_menu_text" : "Questo è il menu del progetto. Quindi è possibile filtrare per nome i progetti che si possiede, e se non c'è un nome, è possibile crearlo.", 
 | 
			
		||||
        "search" : "Ricerca", 
 | 
			
		||||
        "add" : "Aggiungi", 
 | 
			
		||||
        "draw_box" : "Designazione delle merci", 
 | 
			
		||||
        "draw_box_text" : "Questo quadro conterrà disegni rappresentativi, strumenti e casella di testo per la modifica.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Telaio", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Testo", 
 | 
			
		||||
        "code" : "Codice", 
 | 
			
		||||
        "actions" : "Azioni", 
 | 
			
		||||
        "actions_text" : "Questo quadro contiene le azioni generali contro i vostri progetti.", 
 | 
			
		||||
        "upload" : "Su", 
 | 
			
		||||
        "save" : "Salva", 
 | 
			
		||||
        "download" : "Scarica", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.ivrit.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.ivrit.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "ivrit" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "ראשי", 
 | 
			
		||||
        "documentation" : "מסמך", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "תפריט Project", 
 | 
			
		||||
        "projects_menu_text" : "זהו תפריט הפרויקט. לאחר מכן תוכל לסנן בשם הפרויקטים שבבעלותך, ואם אין שם, תוכל ליצור את זה.", 
 | 
			
		||||
        "search" : "חיפוש חיפוש", 
 | 
			
		||||
        "add" : "הוסף", 
 | 
			
		||||
        "draw_box" : "Box", 
 | 
			
		||||
        "draw_box_text" : "מסגרת זו תכיל רישומים מייצגים, כלים ותיבת טקסט לעריכה.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "טקסט", 
 | 
			
		||||
        "code" : "קודקוד", 
 | 
			
		||||
        "actions" : "פעולות", 
 | 
			
		||||
        "actions_text" : "מסגרת זו כוללת את הפעולות הכלליות נגד הפרויקטים שלך.", 
 | 
			
		||||
        "upload" : "למעלה", 
 | 
			
		||||
        "save" : "להציל", 
 | 
			
		||||
        "download" : "הורד Download", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.magyar.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.magyar.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "magyar" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Elnök", 
 | 
			
		||||
        "documentation" : "Dokumentáció", 
 | 
			
		||||
        "git" : "Ajándék", 
 | 
			
		||||
        "projects_menu" : "Project menü", 
 | 
			
		||||
        "projects_menu_text" : "Ez a projekt menü. Ezután szűrheti a saját projekteket, és ha nincs neve, létrehozhatja.", 
 | 
			
		||||
        "search" : "Keresés", 
 | 
			
		||||
        "add" : "Hozzáadás", 
 | 
			
		||||
        "draw_box" : "Box rajz", 
 | 
			
		||||
        "draw_box_text" : "Ez a keret reprezentatív rajzokat, eszközöket és szövegdobozokat tartalmaz a szerkesztéshez.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Vászon", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Szöveg", 
 | 
			
		||||
        "code" : "Kód", 
 | 
			
		||||
        "actions" : "Akciók", 
 | 
			
		||||
        "actions_text" : "Ez a keret tartalmazza az általános intézkedéseket a projektek ellen.", 
 | 
			
		||||
        "upload" : "Felül", 
 | 
			
		||||
        "save" : "Mentés", 
 | 
			
		||||
        "download" : "Letöltés", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.nederlands.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.nederlands.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "nederlands" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Directeur", 
 | 
			
		||||
        "documentation" : "Document", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Project Menu", 
 | 
			
		||||
        "projects_menu_text" : "Dit is het project menu. Dan filter je met naam de projecten die je bezit, en als er geen naam is, kun je het creëren.", 
 | 
			
		||||
        "search" : "Zoek", 
 | 
			
		||||
        "add" : "Advocaat", 
 | 
			
		||||
        "draw_box" : "Box getekend", 
 | 
			
		||||
        "draw_box_text" : "Dit framewerk bevat representatieve tekeningen, gereedschap en tekstbus voor editing.", 
 | 
			
		||||
        "html" : "HTM", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Text", 
 | 
			
		||||
        "code" : "Code", 
 | 
			
		||||
        "actions" : "Actie", 
 | 
			
		||||
        "actions_text" : "Dit framewerk bevat de algemene acties tegen je projecten.", 
 | 
			
		||||
        "upload" : "Omhoog", 
 | 
			
		||||
        "save" : "Red", 
 | 
			
		||||
        "download" : "Download", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.nihongo.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.nihongo.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "nihongo" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboardの特長", 
 | 
			
		||||
        "home" : "代表取締役", 
 | 
			
		||||
        "documentation" : "ドキュメント", 
 | 
			
		||||
        "git" : "ログイン", 
 | 
			
		||||
        "projects_menu" : "プロジェクトメニュー", 
 | 
			
		||||
        "projects_menu_text" : "プロジェクトメニューです。 そこで、自分のプロジェクト名を絞り、名前がない場合、作成できます。.", 
 | 
			
		||||
        "search" : "アクセス", 
 | 
			
		||||
        "add" : "追加する", 
 | 
			
		||||
        "draw_box" : "ボックス描画", 
 | 
			
		||||
        "draw_box_text" : "このフレームワークには、編集用の代表的な図面、ツール、テキストボックスが含まれます。.", 
 | 
			
		||||
        "html" : "アーカイブ", 
 | 
			
		||||
        "canvas" : "キャンバス", 
 | 
			
		||||
        "svg" : "SVGの特長", 
 | 
			
		||||
        "text" : "テキスト", 
 | 
			
		||||
        "code" : "コードコード", 
 | 
			
		||||
        "actions" : "アクション", 
 | 
			
		||||
        "actions_text" : "このフレームワークには、プロジェクトに対する一般的なアクションが含まれています。.", 
 | 
			
		||||
        "upload" : "ニュース", 
 | 
			
		||||
        "save" : "保存する", 
 | 
			
		||||
        "download" : "ダウンロード", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.polski.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.polski.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "polski" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "MKWBZK", 
 | 
			
		||||
        "home" : "Wydawca", 
 | 
			
		||||
        "documentation" : "Dokumentacja", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Project menu", 
 | 
			
		||||
        "projects_menu_text" : "Jest to projekt menu. Wtedy możesz filtrować, nazywać je własnymi projektami i jeśli nie ma imienia, to możesz ją stworzyć.", 
 | 
			
		||||
        "search" : "Search Search", 
 | 
			
		||||
        "add" : "Addd", 
 | 
			
		||||
        "draw_box" : "Box", 
 | 
			
		||||
        "draw_box_text" : "Takie ramy zawierają rysunki reprezentacyjne, narzędzia i skrzynie tekstowe do edycji.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Tekst", 
 | 
			
		||||
        "code" : "Kodeks", 
 | 
			
		||||
        "actions" : "Akcja", 
 | 
			
		||||
        "actions_text" : "Zasady te obejmują działania przeciwko projektom.", 
 | 
			
		||||
        "upload" : "Up", 
 | 
			
		||||
        "save" : "Save", 
 | 
			
		||||
        "download" : "Download", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.portugues.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.portugues.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "portugues" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Director", 
 | 
			
		||||
        "documentation" : "Documentação", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Menu de projeto", 
 | 
			
		||||
        "projects_menu_text" : "Este é o menu do projeto. Então você pode filtrar por nome os projetos que você possui, e se não houver nenhum nome, você pode criá-lo.", 
 | 
			
		||||
        "search" : "Pesquisar", 
 | 
			
		||||
        "add" : "Adicionar", 
 | 
			
		||||
        "draw_box" : "Caixa retirada", 
 | 
			
		||||
        "draw_box_text" : "Esta estrutura conterá desenhos representativos, ferramentas e caixa de texto para edição.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Lona", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Texto", 
 | 
			
		||||
        "code" : "Código", 
 | 
			
		||||
        "actions" : "Acções", 
 | 
			
		||||
        "actions_text" : "Esta estrutura contém as ações gerais contra seus projetos.", 
 | 
			
		||||
        "upload" : "Para cima", 
 | 
			
		||||
        "save" : "Salvar", 
 | 
			
		||||
        "download" : "Baixar", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.russkiy.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.russkiy.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "russkiy" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Principal", 
 | 
			
		||||
        "documentation" : "Документация", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Меню проекта", 
 | 
			
		||||
        "projects_menu_text" : "Это меню проекта. Затем вы можете отфильтровать по названию проекты, которые у вас есть, и если нет имени, вы можете его создать.", 
 | 
			
		||||
        "search" : "Поиск", 
 | 
			
		||||
        "add" : "Добавить", 
 | 
			
		||||
        "draw_box" : "Вставка", 
 | 
			
		||||
        "draw_box_text" : "Эти рамки будут содержать репрезентативные чертежи, инструменты и текстовые ящики для редактирования.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Холст", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Текст", 
 | 
			
		||||
        "code" : "Код", 
 | 
			
		||||
        "actions" : "Действия", 
 | 
			
		||||
        "actions_text" : "Эта основа содержит общие действия против ваших проектов.", 
 | 
			
		||||
        "upload" : "Вверх", 
 | 
			
		||||
        "save" : "Сохранить", 
 | 
			
		||||
        "download" : "Скачать", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.slovencina.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.slovencina.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "slovencina" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Všeobecný", 
 | 
			
		||||
        "documentation" : "Aktuality", 
 | 
			
		||||
        "git" : "Všeobecný", 
 | 
			
		||||
        "projects_menu" : "Ponuka projektu", 
 | 
			
		||||
        "projects_menu_text" : "Toto je ponuka projektu. Potom môžete filtrovať podľa názvu projektov, ktoré vlastníte, a ak neexistuje názov, môžete ho vytvoriť.", 
 | 
			
		||||
        "search" : "Vyhľadávanie", 
 | 
			
		||||
        "add" : "Pridať", 
 | 
			
		||||
        "draw_box" : "Box nakreslený", 
 | 
			
		||||
        "draw_box_text" : "Tento rámec bude obsahovať reprezentatívne výkresy, nástroje a text box pre editáciu.", 
 | 
			
		||||
        "html" : "AKTUALITY", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVOJE", 
 | 
			
		||||
        "text" : "Aktuality", 
 | 
			
		||||
        "code" : "Kód", 
 | 
			
		||||
        "actions" : "Akcie", 
 | 
			
		||||
        "actions_text" : "Tento rámec obsahuje všeobecné akcie proti vašim projektom.", 
 | 
			
		||||
        "upload" : "Hore", 
 | 
			
		||||
        "save" : "Uložiť", 
 | 
			
		||||
        "download" : "Na stiahnutie", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.suomi.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.suomi.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "suomi" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Pääasiallinen", 
 | 
			
		||||
        "documentation" : "Dokumentointi", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Hankkeen menu", 
 | 
			
		||||
        "projects_menu_text" : "Tämä on projektin menu. Sitten voit suodattaa omistamiasi projekteja nimeltä ja jos nimeä ei ole, voit luoda sen.", 
 | 
			
		||||
        "search" : "Etsintä", 
 | 
			
		||||
        "add" : "Lisää", 
 | 
			
		||||
        "draw_box" : "Box piirretty", 
 | 
			
		||||
        "draw_box_text" : "Tämä kehys sisältää edustavia piirustuksia, työkaluja ja tekstiruudun editointiin.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Teksti", 
 | 
			
		||||
        "code" : "Code", 
 | 
			
		||||
        "actions" : "Toimia", 
 | 
			
		||||
        "actions_text" : "Tämä kehys sisältää yleiset toimet projektejasi vastaan.", 
 | 
			
		||||
        "upload" : "Up", 
 | 
			
		||||
        "save" : "Säästäminen", 
 | 
			
		||||
        "download" : "Download Download", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.svenska.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.svenska.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "svenska" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "Principal", 
 | 
			
		||||
        "documentation" : "Dokumentation", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "Projektmeny", 
 | 
			
		||||
        "projects_menu_text" : "Detta är projektmenyn. Då kan du filtrera efter namn på de projekt du äger, och om det inte finns något namn kan du skapa det.", 
 | 
			
		||||
        "search" : "Sök efter Sök", 
 | 
			
		||||
        "add" : "Lägg till", 
 | 
			
		||||
        "draw_box" : "Box dras", 
 | 
			
		||||
        "draw_box_text" : "Denna ram kommer att innehålla representativa ritningar, verktyg och textruta för redigering.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Texttext", 
 | 
			
		||||
        "code" : "Kodkod", 
 | 
			
		||||
        "actions" : "Åtgärder", 
 | 
			
		||||
        "actions_text" : "Detta ramverk innehåller de allmänna åtgärderna mot dina projekt.", 
 | 
			
		||||
        "upload" : "Upp", 
 | 
			
		||||
        "save" : "Spara", 
 | 
			
		||||
        "download" : "Ladda ner", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.thai.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.thai.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "thai" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "ข้อมูล", 
 | 
			
		||||
        "documentation" : "เอกสาร", 
 | 
			
		||||
        "git" : "Git", 
 | 
			
		||||
        "projects_menu" : "เมนู", 
 | 
			
		||||
        "projects_menu_text" : "นี่คือเมนูโครงการ จากนั้นคุณสามารถกรองโดยชื่อโครงการที่คุณเป็นเจ้าของและถ้าไม่มีชื่อคุณสามารถสร้าง.", 
 | 
			
		||||
        "search" : "ค้นหา", 
 | 
			
		||||
        "add" : "เพิ่ม", 
 | 
			
		||||
        "draw_box" : "กล่องวาด", 
 | 
			
		||||
        "draw_box_text" : "กรอบนี้มีภาพวาดเครื่องมือและเครื่องมือข้อความสําหรับการแก้ไข.", 
 | 
			
		||||
        "html" : "HTML", 
 | 
			
		||||
        "canvas" : "ผ้าใบ", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "ข้อความ", 
 | 
			
		||||
        "code" : "รหัส", 
 | 
			
		||||
        "actions" : "การกระทํา", 
 | 
			
		||||
        "actions_text" : "กรอบนี้มีการกระทําทั่วไปกับโครงการของคุณ.", 
 | 
			
		||||
        "upload" : "ขึ้น", 
 | 
			
		||||
        "save" : "บันทึก", 
 | 
			
		||||
        "download" : "ดาวน์โหลด", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										51
									
								
								Public/json/i18n/Sizerboard.i18n.turkce.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								Public/json/i18n/Sizerboard.i18n.turkce.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
			
		||||
{
 | 
			
		||||
    "turkce" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "MVBCKYR", 
 | 
			
		||||
        "home" : "Müdür", 
 | 
			
		||||
        "documentation" : "Dokümantasyon", 
 | 
			
		||||
        "git" : "Git Git Git Git", 
 | 
			
		||||
        "projects_menu" : "Project menu", 
 | 
			
		||||
        "projects_menu_text" : "Bu proje menüsüdür. Sonra kendi olduğunuz projelerle filtreleyebilirsiniz ve isim yoksa onu yaratabilirsiniz.", 
 | 
			
		||||
        "search" : "Arama Arama", 
 | 
			
		||||
        "add" : [
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add ", 
 | 
			
		||||
            "Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add Add"
 | 
			
		||||
        ], 
 | 
			
		||||
        "draw_box" : "Kutu", 
 | 
			
		||||
        "draw_box_text" : "Bu çerçeve, düzenleme için temsilci çizimleri, araçları ve metin kutusu içerecektir.", 
 | 
			
		||||
        "html" : "HTML HTML HTML HTML", 
 | 
			
		||||
        "canvas" : "Blood", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "Text Text Text Text", 
 | 
			
		||||
        "code" : "Kod Kodu", 
 | 
			
		||||
        "actions" : "Eylemler", 
 | 
			
		||||
        "actions_text" : "Bu çerçeve, projelerinize karşı genel eylemleri içerir.", 
 | 
			
		||||
        "upload" : "Up Up Up Up", 
 | 
			
		||||
        "save" : "Kaydet Kaydet Kaydet", 
 | 
			
		||||
        "download" : "Download Download Download Download Download", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.ukrainska.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.ukrainska.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "ukrainska" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "МКВБКГКСБ", 
 | 
			
		||||
        "home" : "Головна", 
 | 
			
		||||
        "documentation" : "Документація", 
 | 
			
		||||
        "git" : "Навігація", 
 | 
			
		||||
        "projects_menu" : "Меню проекту", 
 | 
			
		||||
        "projects_menu_text" : "Це меню проекту. Тоді ви можете відфільтрувати свої проекти, і якщо немає назви, ви можете створити його.", 
 | 
			
		||||
        "search" : "Пошук", 
 | 
			
		||||
        "add" : "Додати", 
 | 
			
		||||
        "draw_box" : "Коробка намальована", 
 | 
			
		||||
        "draw_box_text" : "Цей каркас буде містити представницькі креслення, інструменти та текстове поле для редагування.", 
 | 
			
		||||
        "html" : "УКРАЇНСЬКА", 
 | 
			
		||||
        "canvas" : "Полотно", 
 | 
			
		||||
        "svg" : "СВГ", 
 | 
			
		||||
        "text" : "Головна", 
 | 
			
		||||
        "code" : "Коди", 
 | 
			
		||||
        "actions" : "Акції", 
 | 
			
		||||
        "actions_text" : "У цьому розділі зібрані загальні дії щодо ваших проектів.", 
 | 
			
		||||
        "upload" : "Вгору", 
 | 
			
		||||
        "save" : "Зберегти", 
 | 
			
		||||
        "download" : "Завантажити", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.zhongwen.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Public/json/i18n/Sizerboard.i18n.zhongwen.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "zhongwen" : {
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_common_start" : null, 
 | 
			
		||||
        "Sizerboard_common_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_start" : null, 
 | 
			
		||||
        "Sizerboard_end" : null, 
 | 
			
		||||
 | 
			
		||||
        "Sizerboard_base_start" : null, 
 | 
			
		||||
        "sizerboard" : "Sizerboard", 
 | 
			
		||||
        "home" : "特等", 
 | 
			
		||||
        "documentation" : "文件", 
 | 
			
		||||
        "git" : "专 员", 
 | 
			
		||||
        "projects_menu" : "项目菜单", 
 | 
			
		||||
        "projects_menu_text" : "这就是项目菜单。 然后,你可以以你自己的项目的名义进行过滤,如果没有名字,你可以创建。.", 
 | 
			
		||||
        "search" : "搜索", 
 | 
			
		||||
        "add" : "增 编", 
 | 
			
		||||
        "draw_box" : "方框", 
 | 
			
		||||
        "draw_box_text" : "这一框架将包含有代表性的图画、工具和文字箱以供编辑。.", 
 | 
			
		||||
        "html" : "传真", 
 | 
			
		||||
        "canvas" : "Canvas", 
 | 
			
		||||
        "svg" : "SVG", 
 | 
			
		||||
        "text" : "案文", 
 | 
			
		||||
        "code" : "法典", 
 | 
			
		||||
        "actions" : "行动", 
 | 
			
		||||
        "actions_text" : "该框架载有针对贵项目的一般行动。.", 
 | 
			
		||||
        "upload" : "页: 1", 
 | 
			
		||||
        "save" : "Save", 
 | 
			
		||||
        "download" : "下载", 
 | 
			
		||||
        "Sizerboard_base_end" : null
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										348
									
								
								Public/scss/Sizerboard.base.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										348
									
								
								Public/scss/Sizerboard.base.scss
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,348 @@
 | 
			
		||||
.sizerboard{
 | 
			
		||||
 | 
			
		||||
    position : absolute;
 | 
			
		||||
    top : 0em;
 | 
			
		||||
    left : 0em;
 | 
			
		||||
    width : 100%;
 | 
			
		||||
    height : 100%;
 | 
			
		||||
    overflow : hidden;
 | 
			
		||||
    
 | 
			
		||||
    &,input,button,textarea{font-family : $font-family;}
 | 
			
		||||
    
 | 
			
		||||
    [data-visible=false]{display : none;}
 | 
			
		||||
 | 
			
		||||
    [data-icon]::before{
 | 
			
		||||
        font-family : $font-family;
 | 
			
		||||
        margin-right : .4em;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    a[href]{text-decoration : none;}
 | 
			
		||||
    a[href],[onmousedown],[onmouseup],[onclick]{
 | 
			
		||||
        color : $color-primary;
 | 
			
		||||
        cursor : pointer;
 | 
			
		||||
        transition-property : color;
 | 
			
		||||
        transition-duration : $transition-out;
 | 
			
		||||
        &:hover,&:focus{
 | 
			
		||||
            color : $color-secondary;
 | 
			
		||||
            transition-duration : $transition-in;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    [type=text],[type=password],[type=date],[type=datetime],[type=time],textarea{
 | 
			
		||||
        width : 100%;
 | 
			
		||||
        box-sizing : border-box;
 | 
			
		||||
    }
 | 
			
		||||
    button,[type=button],[type=submit],[type=reset],[rol=button],[type=text],[type=password],[type=date],[type=datetime],[type=time],textarea{
 | 
			
		||||
        color : $color-primary;
 | 
			
		||||
        font-size : 1em;
 | 
			
		||||
        border : .1em solid $color-primary;
 | 
			
		||||
        box-shadow : 0em 0em .4em inset $color-primary;
 | 
			
		||||
        border-radius : $border-radius;
 | 
			
		||||
        transition-property : color,border-color,box-shadow;
 | 
			
		||||
        transition-duration : $transition-out;
 | 
			
		||||
        &:hover,&:focus{
 | 
			
		||||
            color : $color-secondary;
 | 
			
		||||
            border-color : $color-secondary;
 | 
			
		||||
            box-shadow : 0em 0em .4em inset $color-secondary;
 | 
			
		||||
            transition-duration : $transition-in;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    button,[type=button],[type=submit],[type=reset],[rol=button]{cursor : pointer;}
 | 
			
		||||
    a[href],[onmousedown],[onmouseup],[onclick]{
 | 
			
		||||
        outline : none;
 | 
			
		||||
        &[disabled],&[readonly],&[data-selected=true]{&,&:hover{
 | 
			
		||||
            color : $color-grey;
 | 
			
		||||
            cursor : default;
 | 
			
		||||
        }}
 | 
			
		||||
    }
 | 
			
		||||
    button,[type=button],[type=submit],[type=reset],[rol=button],[type=text],[type=password],[type=date],[type=datetime],[type=time],textarea{
 | 
			
		||||
        outline : none;
 | 
			
		||||
        box-sizing : border-box;
 | 
			
		||||
        &[disabled],&[readonly],&[data-selected=true]{&,&:hover,&:focus{
 | 
			
		||||
            color : $color-grey;
 | 
			
		||||
            border-color : $color-grey;
 | 
			
		||||
            cursor : default;
 | 
			
		||||
            box-shadow : 0em 0em .4em inset $color-grey;
 | 
			
		||||
        }}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    label{
 | 
			
		||||
        padding : 0em .4em;
 | 
			
		||||
        font-weight : 900;
 | 
			
		||||
        white-space : nowrap;
 | 
			
		||||
        border : .1em solid $color-grey;
 | 
			
		||||
        border-radius : $border-radius;
 | 
			
		||||
        box-shadow : 0em 0em .4em inset $color-grey;
 | 
			
		||||
        &>*{font-size : .9em;}
 | 
			
		||||
        &::after{content : ":";}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .group{
 | 
			
		||||
        display : table;
 | 
			
		||||
        margin : 0em;
 | 
			
		||||
        padding : 0em;
 | 
			
		||||
        list-style-type : none;
 | 
			
		||||
        border-collapse : collapse;
 | 
			
		||||
        li{
 | 
			
		||||
            display : table-cell;
 | 
			
		||||
            &>*{
 | 
			
		||||
                border-radius : 0em;
 | 
			
		||||
                padding : .1em .4em;
 | 
			
		||||
                padding-block : none;
 | 
			
		||||
                padding-inline : none;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        &>:first-child>*{border-radius : $border-radius 0em 0em $border-radius;}
 | 
			
		||||
        &>:last-child>*{border-radius : 0em $border-radius $border-radius 0em;}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    header,main,footer{
 | 
			
		||||
        position : absolute;
 | 
			
		||||
        left : 0em;
 | 
			
		||||
        width : 100%;
 | 
			
		||||
    }
 | 
			
		||||
    header,footer{
 | 
			
		||||
        background-color : $color-fore;
 | 
			
		||||
        color : $color-back;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    header{
 | 
			
		||||
        top : 0em;
 | 
			
		||||
        height : $header-height;
 | 
			
		||||
        z-index : 20;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    main{
 | 
			
		||||
        top : $header-height;
 | 
			
		||||
        bottom : $footer-height;
 | 
			
		||||
        background-color : $color-back;
 | 
			
		||||
        color : $color-fore;
 | 
			
		||||
        z-index : 10;
 | 
			
		||||
        overflow : hidden;
 | 
			
		||||
        &>form{
 | 
			
		||||
            display : block;
 | 
			
		||||
            position : absolute;
 | 
			
		||||
            top : 0em;
 | 
			
		||||
            height : 100%;
 | 
			
		||||
            overflow : hidden;
 | 
			
		||||
            &>fieldset{
 | 
			
		||||
                position : absolute;
 | 
			
		||||
                top : 0em;
 | 
			
		||||
                left : 0em;
 | 
			
		||||
                right : 0em;
 | 
			
		||||
                bottom : 0em;
 | 
			
		||||
                margin : $box-margin;
 | 
			
		||||
                padding : 0em;
 | 
			
		||||
                border : none;
 | 
			
		||||
                &>legend{
 | 
			
		||||
                    display : block;
 | 
			
		||||
                    width : 100%;
 | 
			
		||||
                    font-size : 1.2em;
 | 
			
		||||
                    font-weight : 900;
 | 
			
		||||
                    border-bottom : .15em solid $color-fore;
 | 
			
		||||
                }
 | 
			
		||||
                &>p{
 | 
			
		||||
                    margin : 0em;
 | 
			
		||||
                    padding : 1em 0em;
 | 
			
		||||
                    font-size : .85em;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    footer{
 | 
			
		||||
        bottom : 0em;
 | 
			
		||||
        height : $footer-height;
 | 
			
		||||
        z-index : 30;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .main-menu{
 | 
			
		||||
        position : absolute;
 | 
			
		||||
        bottom : 0em;
 | 
			
		||||
        left : 50%;
 | 
			
		||||
        margin-bottom : .2em;
 | 
			
		||||
        margin-left : -20em;
 | 
			
		||||
        width : 40em;
 | 
			
		||||
        text-align : center;
 | 
			
		||||
        ul{
 | 
			
		||||
            margin : 0em;
 | 
			
		||||
            padding : 0em;
 | 
			
		||||
            list-style-type : none;
 | 
			
		||||
        }
 | 
			
		||||
        li{
 | 
			
		||||
            display : inline-block;
 | 
			
		||||
            margin : 0em 1em;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    h1{
 | 
			
		||||
        margin : 0em;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .projects-menu{
 | 
			
		||||
        left : 0em;
 | 
			
		||||
        width : $projects-menu-width;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .search-box{
 | 
			
		||||
        position : absolute;
 | 
			
		||||
        top : 7.6em;
 | 
			
		||||
        width : 100%;
 | 
			
		||||
        &>:first-child>*{border-bottom-left-radius : 0em;}
 | 
			
		||||
        &>:last-child>*{border-bottom-right-radius : 0em;}
 | 
			
		||||
        &>:nth-child(2){width : 100%;}
 | 
			
		||||
        label{
 | 
			
		||||
            font-weight : 400;
 | 
			
		||||
            &::after{content : "";}
 | 
			
		||||
        }
 | 
			
		||||
        [data-icon]{
 | 
			
		||||
            &::before{margin : 0em;}
 | 
			
		||||
            &+[data-i18n]{display : none;}
 | 
			
		||||
        }
 | 
			
		||||
        button[data-i18n=search]{display : none;}
 | 
			
		||||
        &+nav{
 | 
			
		||||
            position : absolute;
 | 
			
		||||
            top : 9em;
 | 
			
		||||
            left : 0em;
 | 
			
		||||
            bottom : 0em;
 | 
			
		||||
            width : 100%;
 | 
			
		||||
            border : .1em solid $color-fore;
 | 
			
		||||
            background-color : $color-back;
 | 
			
		||||
            overflow : auto;
 | 
			
		||||
            box-sizing : border-box;
 | 
			
		||||
            border-radius : 0em 0em $border-radius $border-radius;
 | 
			
		||||
            box-shadow : .1em .1em .2em $color-grey;
 | 
			
		||||
            &>ul{
 | 
			
		||||
                margin : 0em;
 | 
			
		||||
                padding : 0em;
 | 
			
		||||
                list-style-type : none;
 | 
			
		||||
                // &>:last-child{border-radius : 0em 0em $border-radius $border-radius;}
 | 
			
		||||
            }
 | 
			
		||||
            li{
 | 
			
		||||
                padding : .2em .4em;
 | 
			
		||||
                border-radius : 0em;
 | 
			
		||||
                box-sizing : border-box;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .draw-box{
 | 
			
		||||
        left : $projects-menu-width;
 | 
			
		||||
        right : 0em;
 | 
			
		||||
        .group{
 | 
			
		||||
            position : absolute;
 | 
			
		||||
            top : 2.6em;
 | 
			
		||||
            left : 0em;
 | 
			
		||||
            &>:first-child>button{border-bottom-left-radius : 0em;}
 | 
			
		||||
            &>:last-child>button{border-bottom-right-radius : 0em;}
 | 
			
		||||
        }
 | 
			
		||||
        .fields{
 | 
			
		||||
            position : absolute;
 | 
			
		||||
            top : 4em;
 | 
			
		||||
            left : 0em;
 | 
			
		||||
            bottom : 0em;
 | 
			
		||||
            width  : 100%;
 | 
			
		||||
            border : .1em solid $color-fore;
 | 
			
		||||
            background-color : $color-back;
 | 
			
		||||
            box-sizing : border-box;
 | 
			
		||||
            border-radius : 0em $border-radius $border-radius $border-radius;
 | 
			
		||||
            box-shadow : .1em .1em .2em $color-fore;
 | 
			
		||||
            &>section{&,&>*{
 | 
			
		||||
                position : absolute;
 | 
			
		||||
                top : 0em;
 | 
			
		||||
                left : 0em;
 | 
			
		||||
                width : 100%;
 | 
			
		||||
                height : 100%;
 | 
			
		||||
            }}
 | 
			
		||||
            &>section>*{border-radius : 0em $border-radius $border-radius $border-radius;}
 | 
			
		||||
            textarea{
 | 
			
		||||
                font-family : $font-mono;
 | 
			
		||||
                color : $color-fore;
 | 
			
		||||
                resize : none;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        .curtain{
 | 
			
		||||
            position : absolute;
 | 
			
		||||
            top : 0em;
 | 
			
		||||
            left : 0em;
 | 
			
		||||
            width : 100%;
 | 
			
		||||
            height : 100%;
 | 
			
		||||
            background-color : $color-back;
 | 
			
		||||
            opacity : .8;
 | 
			
		||||
        }
 | 
			
		||||
        &:not([data-selected=null])>.curtain{display : none;}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .actions-box{
 | 
			
		||||
        position : absolute;
 | 
			
		||||
        right : 0em;
 | 
			
		||||
        bottom : 0em;
 | 
			
		||||
        border : none;
 | 
			
		||||
        &>legend,&>p{display : none;}
 | 
			
		||||
        ul{
 | 
			
		||||
            position : absolute;
 | 
			
		||||
            right : 0em;
 | 
			
		||||
            bottom : 0em;
 | 
			
		||||
            margin : .5em;
 | 
			
		||||
            padding : 0em;
 | 
			
		||||
            list-style-type : none;
 | 
			
		||||
            overflow : visible;
 | 
			
		||||
            &>li{
 | 
			
		||||
                display : "block";
 | 
			
		||||
                position : relative;
 | 
			
		||||
                text-align : right;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        li{margin : .2em 0em;}
 | 
			
		||||
        button{
 | 
			
		||||
            min-width : 2em;
 | 
			
		||||
            height : 2em;
 | 
			
		||||
            text-align : right;
 | 
			
		||||
            white-space : nowrap;
 | 
			
		||||
            box-sizing : border-box;
 | 
			
		||||
            border-radius : 1em;
 | 
			
		||||
            span{
 | 
			
		||||
                font-size : 1.3em;
 | 
			
		||||
                font-weight : 900;
 | 
			
		||||
            }
 | 
			
		||||
            [data-icon]{
 | 
			
		||||
                display : inline-block;
 | 
			
		||||
                position : absolute;
 | 
			
		||||
                top : 0em;
 | 
			
		||||
                right : 0em;
 | 
			
		||||
                width : 1.5em;
 | 
			
		||||
                text-align : center;
 | 
			
		||||
                margin : .2em 0em;
 | 
			
		||||
                &::before{margin : 0em;}
 | 
			
		||||
            }
 | 
			
		||||
            [data-i18n]{
 | 
			
		||||
                display : block;
 | 
			
		||||
                padding-right : 0em;
 | 
			
		||||
                width : 0em;
 | 
			
		||||
                overflow : hidden;
 | 
			
		||||
                opacity : 0;
 | 
			
		||||
                transition-property : padding-right,width,opacity;
 | 
			
		||||
                transition-duration : $transition-out;
 | 
			
		||||
            }
 | 
			
		||||
            &:hover>[data-i18n]{
 | 
			
		||||
                padding-right : 1.3em;
 | 
			
		||||
                width : 6em;
 | 
			
		||||
                opacity : 1;
 | 
			
		||||
                transition-duration : $transition-in;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .licences{
 | 
			
		||||
        display : block;
 | 
			
		||||
        width : 100%;
 | 
			
		||||
        text-align : center;
 | 
			
		||||
        font-size : .85em;
 | 
			
		||||
        font-weight : 900;
 | 
			
		||||
        img{
 | 
			
		||||
            width : auto;
 | 
			
		||||
            height : 1em;
 | 
			
		||||
        }
 | 
			
		||||
        a>*{vertical-align : middle;}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										301
									
								
								Public/scss/Sizerboard.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										301
									
								
								Public/scss/Sizerboard.css
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,301 @@
 | 
			
		||||
.sizerboard {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 0em;
 | 
			
		||||
  left: 0em;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  overflow: hidden; }
 | 
			
		||||
  .sizerboard, .sizerboard input, .sizerboard button, .sizerboard textarea {
 | 
			
		||||
    font-family: "Roboto"; }
 | 
			
		||||
  .sizerboard [data-visible=false] {
 | 
			
		||||
    display: none; }
 | 
			
		||||
  .sizerboard [data-icon]::before {
 | 
			
		||||
    font-family: "Roboto";
 | 
			
		||||
    margin-right: .4em; }
 | 
			
		||||
  .sizerboard a[href] {
 | 
			
		||||
    text-decoration: none; }
 | 
			
		||||
  .sizerboard a[href], .sizerboard [onmousedown], .sizerboard [onmouseup], .sizerboard [onclick] {
 | 
			
		||||
    color: #2282D4;
 | 
			
		||||
    cursor: pointer;
 | 
			
		||||
    transition-property: color;
 | 
			
		||||
    transition-duration: 1s; }
 | 
			
		||||
    .sizerboard a[href]:hover, .sizerboard a[href]:focus, .sizerboard [onmousedown]:hover, .sizerboard [onmousedown]:focus, .sizerboard [onmouseup]:hover, .sizerboard [onmouseup]:focus, .sizerboard [onclick]:hover, .sizerboard [onclick]:focus {
 | 
			
		||||
      color: #D48222;
 | 
			
		||||
      transition-duration: 0.2s; }
 | 
			
		||||
  .sizerboard [type=text], .sizerboard [type=password], .sizerboard [type=date], .sizerboard [type=datetime], .sizerboard [type=time], .sizerboard textarea {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    box-sizing: border-box; }
 | 
			
		||||
  .sizerboard button, .sizerboard [type=button], .sizerboard [type=submit], .sizerboard [type=reset], .sizerboard [rol=button], .sizerboard [type=text], .sizerboard [type=password], .sizerboard [type=date], .sizerboard [type=datetime], .sizerboard [type=time], .sizerboard textarea {
 | 
			
		||||
    color: #2282D4;
 | 
			
		||||
    font-size: 1em;
 | 
			
		||||
    border: 0.1em solid #2282D4;
 | 
			
		||||
    box-shadow: 0em 0em 0.4em inset #2282D4;
 | 
			
		||||
    border-radius: 0.3em;
 | 
			
		||||
    transition-property: color,border-color,box-shadow;
 | 
			
		||||
    transition-duration: 1s; }
 | 
			
		||||
    .sizerboard button:hover, .sizerboard button:focus, .sizerboard [type=button]:hover, .sizerboard [type=button]:focus, .sizerboard [type=submit]:hover, .sizerboard [type=submit]:focus, .sizerboard [type=reset]:hover, .sizerboard [type=reset]:focus, .sizerboard [rol=button]:hover, .sizerboard [rol=button]:focus, .sizerboard [type=text]:hover, .sizerboard [type=text]:focus, .sizerboard [type=password]:hover, .sizerboard [type=password]:focus, .sizerboard [type=date]:hover, .sizerboard [type=date]:focus, .sizerboard [type=datetime]:hover, .sizerboard [type=datetime]:focus, .sizerboard [type=time]:hover, .sizerboard [type=time]:focus, .sizerboard textarea:hover, .sizerboard textarea:focus {
 | 
			
		||||
      color: #D48222;
 | 
			
		||||
      border-color: #D48222;
 | 
			
		||||
      box-shadow: 0em 0em 0.4em inset #D48222;
 | 
			
		||||
      transition-duration: 0.2s; }
 | 
			
		||||
  .sizerboard button, .sizerboard [type=button], .sizerboard [type=submit], .sizerboard [type=reset], .sizerboard [rol=button] {
 | 
			
		||||
    cursor: pointer; }
 | 
			
		||||
  .sizerboard a[href], .sizerboard [onmousedown], .sizerboard [onmouseup], .sizerboard [onclick] {
 | 
			
		||||
    outline: none; }
 | 
			
		||||
    .sizerboard a[href][disabled], .sizerboard a[href][disabled]:hover, .sizerboard a[href][readonly], .sizerboard a[href][readonly]:hover, .sizerboard a[href][data-selected=true], .sizerboard a[href][data-selected=true]:hover, .sizerboard [onmousedown][disabled], .sizerboard [onmousedown][disabled]:hover, .sizerboard [onmousedown][readonly], .sizerboard [onmousedown][readonly]:hover, .sizerboard [onmousedown][data-selected=true], .sizerboard [onmousedown][data-selected=true]:hover, .sizerboard [onmouseup][disabled], .sizerboard [onmouseup][disabled]:hover, .sizerboard [onmouseup][readonly], .sizerboard [onmouseup][readonly]:hover, .sizerboard [onmouseup][data-selected=true], .sizerboard [onmouseup][data-selected=true]:hover, .sizerboard [onclick][disabled], .sizerboard [onclick][disabled]:hover, .sizerboard [onclick][readonly], .sizerboard [onclick][readonly]:hover, .sizerboard [onclick][data-selected=true], .sizerboard [onclick][data-selected=true]:hover {
 | 
			
		||||
      color: #898989;
 | 
			
		||||
      cursor: default; }
 | 
			
		||||
  .sizerboard button, .sizerboard [type=button], .sizerboard [type=submit], .sizerboard [type=reset], .sizerboard [rol=button], .sizerboard [type=text], .sizerboard [type=password], .sizerboard [type=date], .sizerboard [type=datetime], .sizerboard [type=time], .sizerboard textarea {
 | 
			
		||||
    outline: none;
 | 
			
		||||
    box-sizing: border-box; }
 | 
			
		||||
    .sizerboard button[disabled], .sizerboard button[disabled]:hover, .sizerboard button[disabled]:focus, .sizerboard button[readonly], .sizerboard button[readonly]:hover, .sizerboard button[readonly]:focus, .sizerboard button[data-selected=true], .sizerboard button[data-selected=true]:hover, .sizerboard button[data-selected=true]:focus, .sizerboard [type=button][disabled], .sizerboard [type=button][disabled]:hover, .sizerboard [type=button][disabled]:focus, .sizerboard [type=button][readonly], .sizerboard [type=button][readonly]:hover, .sizerboard [type=button][readonly]:focus, .sizerboard [type=button][data-selected=true], .sizerboard [type=button][data-selected=true]:hover, .sizerboard [type=button][data-selected=true]:focus, .sizerboard [type=submit][disabled], .sizerboard [type=submit][disabled]:hover, .sizerboard [type=submit][disabled]:focus, .sizerboard [type=submit][readonly], .sizerboard [type=submit][readonly]:hover, .sizerboard [type=submit][readonly]:focus, .sizerboard [type=submit][data-selected=true], .sizerboard [type=submit][data-selected=true]:hover, .sizerboard [type=submit][data-selected=true]:focus, .sizerboard [type=reset][disabled], .sizerboard [type=reset][disabled]:hover, .sizerboard [type=reset][disabled]:focus, .sizerboard [type=reset][readonly], .sizerboard [type=reset][readonly]:hover, .sizerboard [type=reset][readonly]:focus, .sizerboard [type=reset][data-selected=true], .sizerboard [type=reset][data-selected=true]:hover, .sizerboard [type=reset][data-selected=true]:focus, .sizerboard [rol=button][disabled], .sizerboard [rol=button][disabled]:hover, .sizerboard [rol=button][disabled]:focus, .sizerboard [rol=button][readonly], .sizerboard [rol=button][readonly]:hover, .sizerboard [rol=button][readonly]:focus, .sizerboard [rol=button][data-selected=true], .sizerboard [rol=button][data-selected=true]:hover, .sizerboard [rol=button][data-selected=true]:focus, .sizerboard [type=text][disabled], .sizerboard [type=text][disabled]:hover, .sizerboard [type=text][disabled]:focus, .sizerboard [type=text][readonly], .sizerboard [type=text][readonly]:hover, .sizerboard [type=text][readonly]:focus, .sizerboard [type=text][data-selected=true], .sizerboard [type=text][data-selected=true]:hover, .sizerboard [type=text][data-selected=true]:focus, .sizerboard [type=password][disabled], .sizerboard [type=password][disabled]:hover, .sizerboard [type=password][disabled]:focus, .sizerboard [type=password][readonly], .sizerboard [type=password][readonly]:hover, .sizerboard [type=password][readonly]:focus, .sizerboard [type=password][data-selected=true], .sizerboard [type=password][data-selected=true]:hover, .sizerboard [type=password][data-selected=true]:focus, .sizerboard [type=date][disabled], .sizerboard [type=date][disabled]:hover, .sizerboard [type=date][disabled]:focus, .sizerboard [type=date][readonly], .sizerboard [type=date][readonly]:hover, .sizerboard [type=date][readonly]:focus, .sizerboard [type=date][data-selected=true], .sizerboard [type=date][data-selected=true]:hover, .sizerboard [type=date][data-selected=true]:focus, .sizerboard [type=datetime][disabled], .sizerboard [type=datetime][disabled]:hover, .sizerboard [type=datetime][disabled]:focus, .sizerboard [type=datetime][readonly], .sizerboard [type=datetime][readonly]:hover, .sizerboard [type=datetime][readonly]:focus, .sizerboard [type=datetime][data-selected=true], .sizerboard [type=datetime][data-selected=true]:hover, .sizerboard [type=datetime][data-selected=true]:focus, .sizerboard [type=time][disabled], .sizerboard [type=time][disabled]:hover, .sizerboard [type=time][disabled]:focus, .sizerboard [type=time][readonly], .sizerboard [type=time][readonly]:hover, .sizerboard [type=time][readonly]:focus, .sizerboard [type=time][data-selected=true], .sizerboard [type=time][data-selected=true]:hover, .sizerboard [type=time][data-selected=true]:focus, .sizerboard textarea[disabled], .sizerboard textarea[disabled]:hover, .sizerboard textarea[disabled]:focus, .sizerboard textarea[readonly], .sizerboard textarea[readonly]:hover, .sizerboard textarea[readonly]:focus, .sizerboard textarea[data-selected=true], .sizerboard textarea[data-selected=true]:hover, .sizerboard textarea[data-selected=true]:focus {
 | 
			
		||||
      color: #898989;
 | 
			
		||||
      border-color: #898989;
 | 
			
		||||
      cursor: default;
 | 
			
		||||
      box-shadow: 0em 0em 0.4em inset #898989; }
 | 
			
		||||
  .sizerboard label {
 | 
			
		||||
    padding: 0em .4em;
 | 
			
		||||
    font-weight: 900;
 | 
			
		||||
    white-space: nowrap;
 | 
			
		||||
    border: 0.1em solid #898989;
 | 
			
		||||
    border-radius: 0.3em;
 | 
			
		||||
    box-shadow: 0em 0em 0.4em inset #898989; }
 | 
			
		||||
    .sizerboard label > * {
 | 
			
		||||
      font-size: .9em; }
 | 
			
		||||
    .sizerboard label::after {
 | 
			
		||||
      content: ":"; }
 | 
			
		||||
  .sizerboard .group {
 | 
			
		||||
    display: table;
 | 
			
		||||
    margin: 0em;
 | 
			
		||||
    padding: 0em;
 | 
			
		||||
    list-style-type: none;
 | 
			
		||||
    border-collapse: collapse; }
 | 
			
		||||
    .sizerboard .group li {
 | 
			
		||||
      display: table-cell; }
 | 
			
		||||
      .sizerboard .group li > * {
 | 
			
		||||
        border-radius: 0em;
 | 
			
		||||
        padding: .1em .4em;
 | 
			
		||||
        padding-block: none;
 | 
			
		||||
        padding-inline: none; }
 | 
			
		||||
    .sizerboard .group > :first-child > * {
 | 
			
		||||
      border-radius: 0.3em 0em 0em 0.3em; }
 | 
			
		||||
    .sizerboard .group > :last-child > * {
 | 
			
		||||
      border-radius: 0em 0.3em 0.3em 0em; }
 | 
			
		||||
  .sizerboard header, .sizerboard main, .sizerboard footer {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    left: 0em;
 | 
			
		||||
    width: 100%; }
 | 
			
		||||
  .sizerboard header, .sizerboard footer {
 | 
			
		||||
    background-color: #222;
 | 
			
		||||
    color: #EFEFEF; }
 | 
			
		||||
  .sizerboard header {
 | 
			
		||||
    top: 0em;
 | 
			
		||||
    height: 4em;
 | 
			
		||||
    z-index: 20; }
 | 
			
		||||
  .sizerboard main {
 | 
			
		||||
    top: 4em;
 | 
			
		||||
    bottom: 1em;
 | 
			
		||||
    background-color: #EFEFEF;
 | 
			
		||||
    color: #222;
 | 
			
		||||
    z-index: 10;
 | 
			
		||||
    overflow: hidden; }
 | 
			
		||||
    .sizerboard main > form {
 | 
			
		||||
      display: block;
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 0em;
 | 
			
		||||
      height: 100%;
 | 
			
		||||
      overflow: hidden; }
 | 
			
		||||
      .sizerboard main > form > fieldset {
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        top: 0em;
 | 
			
		||||
        left: 0em;
 | 
			
		||||
        right: 0em;
 | 
			
		||||
        bottom: 0em;
 | 
			
		||||
        margin: 0.4em;
 | 
			
		||||
        padding: 0em;
 | 
			
		||||
        border: none; }
 | 
			
		||||
        .sizerboard main > form > fieldset > legend {
 | 
			
		||||
          display: block;
 | 
			
		||||
          width: 100%;
 | 
			
		||||
          font-size: 1.2em;
 | 
			
		||||
          font-weight: 900;
 | 
			
		||||
          border-bottom: 0.15em solid #222; }
 | 
			
		||||
        .sizerboard main > form > fieldset > p {
 | 
			
		||||
          margin: 0em;
 | 
			
		||||
          padding: 1em 0em;
 | 
			
		||||
          font-size: .85em; }
 | 
			
		||||
  .sizerboard footer {
 | 
			
		||||
    bottom: 0em;
 | 
			
		||||
    height: 1em;
 | 
			
		||||
    z-index: 30; }
 | 
			
		||||
  .sizerboard .main-menu {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    bottom: 0em;
 | 
			
		||||
    left: 50%;
 | 
			
		||||
    margin-bottom: .2em;
 | 
			
		||||
    margin-left: -20em;
 | 
			
		||||
    width: 40em;
 | 
			
		||||
    text-align: center; }
 | 
			
		||||
    .sizerboard .main-menu ul {
 | 
			
		||||
      margin: 0em;
 | 
			
		||||
      padding: 0em;
 | 
			
		||||
      list-style-type: none; }
 | 
			
		||||
    .sizerboard .main-menu li {
 | 
			
		||||
      display: inline-block;
 | 
			
		||||
      margin: 0em 1em; }
 | 
			
		||||
  .sizerboard h1 {
 | 
			
		||||
    margin: 0em; }
 | 
			
		||||
  .sizerboard .projects-menu {
 | 
			
		||||
    left: 0em;
 | 
			
		||||
    width: 10em; }
 | 
			
		||||
  .sizerboard .search-box {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    top: 7.6em;
 | 
			
		||||
    width: 100%; }
 | 
			
		||||
    .sizerboard .search-box > :first-child > * {
 | 
			
		||||
      border-bottom-left-radius: 0em; }
 | 
			
		||||
    .sizerboard .search-box > :last-child > * {
 | 
			
		||||
      border-bottom-right-radius: 0em; }
 | 
			
		||||
    .sizerboard .search-box > :nth-child(2) {
 | 
			
		||||
      width: 100%; }
 | 
			
		||||
    .sizerboard .search-box label {
 | 
			
		||||
      font-weight: 400; }
 | 
			
		||||
      .sizerboard .search-box label::after {
 | 
			
		||||
        content: ""; }
 | 
			
		||||
    .sizerboard .search-box [data-icon]::before {
 | 
			
		||||
      margin: 0em; }
 | 
			
		||||
    .sizerboard .search-box [data-icon] + [data-i18n] {
 | 
			
		||||
      display: none; }
 | 
			
		||||
    .sizerboard .search-box button[data-i18n=search] {
 | 
			
		||||
      display: none; }
 | 
			
		||||
    .sizerboard .search-box + nav {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 9em;
 | 
			
		||||
      left: 0em;
 | 
			
		||||
      bottom: 0em;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      border: 0.1em solid #222;
 | 
			
		||||
      background-color: #EFEFEF;
 | 
			
		||||
      overflow: auto;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      border-radius: 0em 0em 0.3em 0.3em;
 | 
			
		||||
      box-shadow: 0.1em 0.1em 0.2em #898989; }
 | 
			
		||||
      .sizerboard .search-box + nav > ul {
 | 
			
		||||
        margin: 0em;
 | 
			
		||||
        padding: 0em;
 | 
			
		||||
        list-style-type: none; }
 | 
			
		||||
      .sizerboard .search-box + nav li {
 | 
			
		||||
        padding: .2em .4em;
 | 
			
		||||
        border-radius: 0em;
 | 
			
		||||
        box-sizing: border-box; }
 | 
			
		||||
  .sizerboard .draw-box {
 | 
			
		||||
    left: 10em;
 | 
			
		||||
    right: 0em; }
 | 
			
		||||
    .sizerboard .draw-box .group {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 2.6em;
 | 
			
		||||
      left: 0em; }
 | 
			
		||||
      .sizerboard .draw-box .group > :first-child > button {
 | 
			
		||||
        border-bottom-left-radius: 0em; }
 | 
			
		||||
      .sizerboard .draw-box .group > :last-child > button {
 | 
			
		||||
        border-bottom-right-radius: 0em; }
 | 
			
		||||
    .sizerboard .draw-box .fields {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 4em;
 | 
			
		||||
      left: 0em;
 | 
			
		||||
      bottom: 0em;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      border: 0.1em solid #222;
 | 
			
		||||
      background-color: #EFEFEF;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      border-radius: 0em 0.3em 0.3em 0.3em;
 | 
			
		||||
      box-shadow: 0.1em 0.1em 0.2em #222; }
 | 
			
		||||
      .sizerboard .draw-box .fields > section, .sizerboard .draw-box .fields > section > * {
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        top: 0em;
 | 
			
		||||
        left: 0em;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 100%; }
 | 
			
		||||
      .sizerboard .draw-box .fields > section > * {
 | 
			
		||||
        border-radius: 0em 0.3em 0.3em 0.3em; }
 | 
			
		||||
      .sizerboard .draw-box .fields textarea {
 | 
			
		||||
        font-family: "Roboto Mono";
 | 
			
		||||
        color: #222;
 | 
			
		||||
        resize: none; }
 | 
			
		||||
    .sizerboard .draw-box .curtain {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 0em;
 | 
			
		||||
      left: 0em;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      height: 100%;
 | 
			
		||||
      background-color: #EFEFEF;
 | 
			
		||||
      opacity: .8; }
 | 
			
		||||
    .sizerboard .draw-box:not([data-selected=null]) > .curtain {
 | 
			
		||||
      display: none; }
 | 
			
		||||
  .sizerboard .actions-box {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    right: 0em;
 | 
			
		||||
    bottom: 0em;
 | 
			
		||||
    border: none; }
 | 
			
		||||
    .sizerboard .actions-box > legend, .sizerboard .actions-box > p {
 | 
			
		||||
      display: none; }
 | 
			
		||||
    .sizerboard .actions-box ul {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      right: 0em;
 | 
			
		||||
      bottom: 0em;
 | 
			
		||||
      margin: .5em;
 | 
			
		||||
      padding: 0em;
 | 
			
		||||
      list-style-type: none;
 | 
			
		||||
      overflow: visible; }
 | 
			
		||||
      .sizerboard .actions-box ul > li {
 | 
			
		||||
        display: "block";
 | 
			
		||||
        position: relative;
 | 
			
		||||
        text-align: right; }
 | 
			
		||||
    .sizerboard .actions-box li {
 | 
			
		||||
      margin: .2em 0em; }
 | 
			
		||||
    .sizerboard .actions-box button {
 | 
			
		||||
      min-width: 2em;
 | 
			
		||||
      height: 2em;
 | 
			
		||||
      text-align: right;
 | 
			
		||||
      white-space: nowrap;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      border-radius: 1em; }
 | 
			
		||||
      .sizerboard .actions-box button span {
 | 
			
		||||
        font-size: 1.3em;
 | 
			
		||||
        font-weight: 900; }
 | 
			
		||||
      .sizerboard .actions-box button [data-icon] {
 | 
			
		||||
        display: inline-block;
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        top: 0em;
 | 
			
		||||
        right: 0em;
 | 
			
		||||
        width: 1.5em;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        margin: .2em 0em; }
 | 
			
		||||
        .sizerboard .actions-box button [data-icon]::before {
 | 
			
		||||
          margin: 0em; }
 | 
			
		||||
      .sizerboard .actions-box button [data-i18n] {
 | 
			
		||||
        display: block;
 | 
			
		||||
        padding-right: 0em;
 | 
			
		||||
        width: 0em;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
        opacity: 0;
 | 
			
		||||
        transition-property: padding-right,width,opacity;
 | 
			
		||||
        transition-duration: 1s; }
 | 
			
		||||
      .sizerboard .actions-box button:hover > [data-i18n] {
 | 
			
		||||
        padding-right: 1.3em;
 | 
			
		||||
        width: 6em;
 | 
			
		||||
        opacity: 1;
 | 
			
		||||
        transition-duration: 0.2s; }
 | 
			
		||||
  .sizerboard .licences {
 | 
			
		||||
    display: block;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    font-size: .85em;
 | 
			
		||||
    font-weight: 900; }
 | 
			
		||||
    .sizerboard .licences img {
 | 
			
		||||
      width: auto;
 | 
			
		||||
      height: 1em; }
 | 
			
		||||
    .sizerboard .licences a > * {
 | 
			
		||||
      vertical-align: middle; }
 | 
			
		||||
 | 
			
		||||
/*# sourceMappingURL=Sizerboard.css.map */
 | 
			
		||||
							
								
								
									
										7
									
								
								Public/scss/Sizerboard.css.map
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Public/scss/Sizerboard.css.map
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								Public/scss/Sizerboard.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Public/scss/Sizerboard.scss
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
@import "Sizerboard.settings.scss", "Sizerboard.base.scss";
 | 
			
		||||
							
								
								
									
										23
									
								
								Public/scss/Sizerboard.settings.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								Public/scss/Sizerboard.settings.scss
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
			
		||||
// colors
 | 
			
		||||
$color-primary : #2282D4;
 | 
			
		||||
$color-secondary : #D48222;
 | 
			
		||||
$color-fore : #222;
 | 
			
		||||
$color-back : #EFEFEF;
 | 
			
		||||
$color-grey : mix($color-fore, $color-back, 50%);
 | 
			
		||||
 | 
			
		||||
// Sizes
 | 
			
		||||
$header-height : 4em;
 | 
			
		||||
$footer-height : 1em;
 | 
			
		||||
$projects-menu-width : 10em;
 | 
			
		||||
$border-radius : .3em;
 | 
			
		||||
$box-margin : .4em;
 | 
			
		||||
 | 
			
		||||
// Fonts
 | 
			
		||||
$font-family : "Roboto";
 | 
			
		||||
$font-mono : "Roboto Mono";
 | 
			
		||||
$font-icons : "FA5FS";
 | 
			
		||||
 | 
			
		||||
// Transitions
 | 
			
		||||
$transition-in : .2s;
 | 
			
		||||
$transition-out : 1s;
 | 
			
		||||
$transition : ($transition-out - $transition-in) * .5 + $transition-in;
 | 
			
		||||
							
								
								
									
										14
									
								
								Sizerboard.apache2.conf
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										14
									
								
								Sizerboard.apache2.conf
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
<VirtualHost *:80>
 | 
			
		||||
	ServerName				sizerboard.local
 | 
			
		||||
	DocumentRoot			/Projects/Sizerboard/Public
 | 
			
		||||
	<Directory /Projects/Sizerboard>
 | 
			
		||||
		Options			    +Indexes +FollowSymLinks +MultiViews
 | 
			
		||||
		DirectoryIndex		index.html index.php
 | 
			
		||||
		AllowOverride	    all
 | 
			
		||||
		Order			    Allow,Deny
 | 
			
		||||
		Allow			    from all
 | 
			
		||||
		Require			    all granted
 | 
			
		||||
	</Directory>
 | 
			
		||||
	ErrorLog				${APACHE_LOG_DIR}/error_sizerboard_80.log
 | 
			
		||||
	CustomLog				${APACHE_LOG_DIR}/access_sizerboard_80.log combined
 | 
			
		||||
</VirtualHost>
 | 
			
		||||
							
								
								
									
										3
									
								
								Tools/sass.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										3
									
								
								Tools/sass.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
directory=`dirname $(readlink -f "$0")`
 | 
			
		||||
sass $directory/../Public/scss/Sizerboard.scss ../Public/scss/Sizerboard.css;
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user