/ittf/meta/document/index.html.ittf (primary)
1 html2 $3 var opt = {4 title: 'ITTF explorer',5 }6 var ca = 'm-s color-header font-x font-w-s';7 var ca2 = 'color-header font-x font-w-s';8 var folderUri = ""9 $include models/docs/site.wzctx10 html/layouts/site( &opt )11 $append head-styles-212 css /ittf/meta/html/styles.css.ittf13 nav14 class tn-bar15 nav16 class tn-breadcrumbs17 . breadcrumb18 $foreach bc in ds.breadCrumbs19 a ${bc.name}20 $if bc.isLast21 class active22 href #23 $ folderUri = bc.uri24 $else25 href ${bc.uri}26 a27 + Edit28 href ${folderUri}29 # mc-wrapper30 class mc-wrapper-layout31 . mc-frame32 . mc-sidebar-left33 ul34 li35 a ${ds.primaryUri}36 href #${ds.primaryUri}37 class mc-item-link38 $foreach f in ds.fragments39 li40 a /${f.relUri}41 href #${f.uri}42 class mc-item-link43 $foreach r in ds.ittfReferences44 li45 a Ref: /${r.relUri}46 href #${r.documentState.primaryPath}47 class mc-item-link48 $foreach f in r.documentState.fragments49 li50 a /${f.relUri}51 href #${f.uri}52 class mc-item-link53 . mc-content54 . mc-pane55 . code-panel56 @ id ${ds.primaryUri}57 . modal-view-container58 h4 ${ds.primaryUri} (primary)59 class d-h260 . code-edit-button61 span edit62 class edit-ittf-content-button63 @ data-ittfcontent ${ds.id}_ittf64 @ data-ittfpretty ${ds.id}_pretty65 @ data-ittftitle ${ds.primaryUri}66 @ data-ittfhash ${ds.primaryHash}67 textarea68 style display:none;69 id ${ds.id}_ittf70 + ${ds.primaryIttf.content}71 pre72 id ${ds.id}_pretty73 class prettyprint74 + ${ds.primaryIttf.pretty}75 $foreach f in ds.fragments76 . mc-pane77 . code-panel78 @ id ${f.uri}79 . modal-view-container80 h4 /${f.relUri}81 class d-h282 . code-edit-button83 span edit84 class edit-ittf-content-button85 @ data-ittfcontent ${f.id}_ittf86 @ data-ittfpretty ${f.id}_pretty87 @ data-ittftitle /${f.relUri}88 @ data-ittfhash ${f.hash}89 textarea90 style display:none;91 id ${f.id}_ittf92 + ${f.ittfContent}93 pre94 id ${f.id}_pretty95 class prettyprint96 + ${f.ittfPretty}97 $foreach r in ds.ittfReferences98 . mc-pane99 . code-panel100 @ id ${r.documentState.primaryPath}101 . modal-view-container102 h4 ${r.documentState.primaryUri}103 class d-h2104 . code-edit-button105 span edit106 class edit-ittf-content-button107 @ data-ittfcontent ${r.documentState.id}_ittf108 @ data-ittfpretty ${r.documentState.id}_pretty109 @ data-ittftitle ${r.documentState.primaryUri}110 @ data-ittfhash ${r.documentState.primaryHash}111 textarea112 style display:none;113 id ${r.documentState.id}_ittf114 + ${r.documentState.primaryIttf.content}115 pre116 id ${r.documentState.id}_pretty117 class prettyprint118 + ${r.documentState.primaryIttf.pretty}119 $foreach f in r.documentState.fragments120 . mc-pane121 . code-panel122 @ id ${f.uri}123 . modal-view-container124 h4 /${f.relUri}125 class d-h2126 . code-edit-button127 span edit128 class edit-ittf-content-button129 @ data-ittfcontent ${f.id}_ittf130 @ data-ittfpretty ${f.id}_pretty131 @ data-ittftitle /${f.relUri}132 @ data-ittfhash ${f.hash}133 textarea134 style display:none;135 id ${f.id}_ittf136 + ${f.ittfContent}137 pre138 id ${f.id}_pretty139 class prettyprint140 + ${f.ittfPretty}141 # ittf-editor-form142 style display:none;143 class editor-form144 # ittf-editor-title145 class editor-title146 . editor-content147 . editor-panel148 # editorContainer149 . editor-buttons150 # ittf-editor-save151 class editor-button152 + Save153 # ittf-editor-save-refresh154 class editor-button155 + Save & Refresh156 # ittf-editor-cancel157 class editor-button158 + Cancel159 $$ js /public/lib/ace/src-noconflict/ace.js160 js https://www.unpkg.com/ace-builds@latest/src-noconflict/ace.js161 js /ittf/meta/html/main.js.ittf
/t/models/docs/site.wzctx.ittf
1 $group2 $global3 var wzCtx = {4 name: "stfnbssl.github.io/wizzi",5 version: "0.7.1",6 description: "Wizzi github page",7 author: "Stefano Bassoli",8 license: "MIT",9 Params: {10 title: "Wizzi",11 baseUrl: "https://stfnbssl.github.io/wizzi"12 },13 Section: {14 items: [15 {16 title: "Concepts",17 url: "/ittf/site/docs/concepts/overview.html.ittf"18 },19 {20 title: "Howtos",21 url: "/ittf/site/docs/howtos/getstarted.html.ittf"22 },23 /*24 {25 title: "Sample code",26 url: "/ittf/site/docs/samplecode/overview.html.ittf"27 },28 {29 title: "Geeky",30 url: "/ittf/site/docs/geeky/overview.html.ittf"31 },32 */33 {34 title: "Cheatsheets",35 url: "/wizzi/docs/cheatsheet/html"36 },37 {38 title: "Play",39 url: "/ittf/site/docs/play/index.html.ittf"40 }41 ]42 },43 Concepts: {44 items: [45 {46 title: "Overview",47 url: "./overview.html.ittf"48 },49 {50 title: "Ittf Documents",51 url: "./ittfdocuments.html.ittf"52 },53 {54 title: "Template Engine",55 url: "./templateengine.html.ittf"56 },57 {58 title: "JsWizzi",59 url: "./jswizzi.html.ittf"60 },61 {62 title: "mTrees",63 url: "./mtrees.html.ittf"64 },65 {66 title: "Wizzi Schemas",67 url: "./wizzischemas.html.ittf"68 },69 {70 title: "Wizzi Model DOMs",71 url: "./wizzimodeldoms.html.ittf"72 },73 {74 title: "Wizzi Model Instances",75 url: "./wizzimodelinstances.html.ittf"76 },77 {78 title: "Model Transformers",79 url: "./modeltransformers.html.ittf"80 },81 {82 title: "Artifact Generators",83 url: "./artifactgenerators.html.ittf"84 },85 {86 title: "Wizzi Jobs",87 url: "./wizzijobs.html.ittf"88 },89 {90 title: "Wizzi Meta Productions",91 url: "./wizzimetaproductions.html.ittf"92 },93 {94 title: "Wizzi Plugins",95 url: "./wizziplugins.html.ittf"96 },97 {98 title: "Wizzi Meta Plugins",99 url: "./wizzimetaplugins.html.ittf"100 },101 {102 title: "Wizzi API",103 url: "./wizziapi.html.ittf"104 },105 {106 title: "Wizzi CLI",107 url: "./wizzicli.html.ittf"108 },109 {110 title: "Virtual Store System",111 url: "./virtualstoresystem.html.ittf"112 },113 {114 title: "Glossary",115 url: "./glossary.html.ittf"116 }117 ]118 },119 Howtos: {120 items: [121 {122 title: "Get started",123 url: "./getstarted.html.ittf"124 },125 {126 title: "Wizzi API",127 url: "./wizziapi.html.ittf"128 }129 ]130 },131 SampleCode: {132 items: [133 {134 title: "Overview",135 url: "./overview.html.ittf"136 },137 {138 title: "Template Engine",139 url: "./templateengine.html.ittf"140 },141 {142 title: "JsWizzi",143 url: "./jswizzi.html.ittf"144 },145 {146 title: "mTrees",147 url: "./mtrees.html.ittf"148 },149 {150 title: "Wizzi Schemas",151 url: "./wizzischemas.html.ittf"152 },153 {154 title: "Wizzi Model DOMs",155 url: "./wizzimodeldoms.html.ittf"156 },157 {158 title: "Model Transformers",159 url: "./modeltransformers.html.ittf"160 },161 {162 title: "Artifact Generators",163 url: "./artifactgenerators.html.ittf"164 },165 {166 title: "Wizzi Jobs",167 url: "./wizzijobs.html.ittf"168 },169 {170 title: "Wizzi Plugins",171 url: "./wizziplugins.html.ittf"172 },173 {174 title: "Wizzi API",175 url: "./wizziapi.html.ittf"176 },177 {178 title: "Virtual Store System",179 url: "./virtualstoresystem.html.ittf"180 },181 {182 title: "Glossary",183 url: "./glossary.html.ittf"184 }185 ]186 },187 Geeky: {188 items: [189 {190 title: "Overview",191 url: "./overview.html.ittf"192 },193 {194 title: "Template Engine",195 url: "./templateengine.html.ittf"196 },197 {198 title: "JsWizzi",199 url: "./jswizzi.html.ittf"200 },201 {202 title: "mTrees",203 url: "./mtrees.html.ittf"204 },205 {206 title: "Wizzi Schemas",207 url: "./wizzischemas.html.ittf"208 },209 {210 title: "Wizzi Model DOMs",211 url: "./wizzimodeldoms.html.ittf"212 },213 {214 title: "Model Transformers",215 url: "./modeltransformers.html.ittf"216 },217 {218 title: "Artifact Generators",219 url: "./artifactgenerators.html.ittf"220 },221 {222 title: "Wizzi Jobs",223 url: "./wizzijobs.html.ittf"224 },225 {226 title: "Wizzi Plugins",227 url: "./wizziplugins.html.ittf"228 },229 {230 title: "Wizzi API",231 url: "./wizziapi.html.ittf"232 },233 {234 title: "Wizzi CLI",235 url: "./wizzicli.html.ittf"236 },237 {238 title: "Virtual Store System",239 url: "./virtualstoresystem.html.ittf"240 },241 {242 title: "Glossary",243 url: "./glossary.html.ittf"244 }245 ]246 },247 Starter: {248 "items": [249 {250 title: "wizzi-starter-wizzi-plugin",251 url: "https://github.com/wizzifactory/wizzi-examples/tree/master/packages/wizzi-starter-wizzi-plugin"252 },253 {254 title: "wizzi-starter-webpack-react",255 url: "https://github.com/wizzifactory/wizzi-examples/tree/master/packages/wizzi-starter-webpack-react"256 },257 {258 title: "wizzi-starter-mern",259 url: "https://github.com/wizzifactory/wizzi-examples/tree/master/packages/wizzi-starter-mern"260 },261 {262 title: "wizzi-starter-nextjs",263 url: "https://github.com/wizzifactory/wizzi-examples/tree/master/packages/wizzi-starter-nextjs"264 },265 {266 title: "wizzi-starter-gatsby",267 url: "https://github.com/wizzifactory/wizzi-examples/tree/master/packages/wizzi-starter-gatsby"268 }269 ]270 },271 "Plugin": {272 items: [273 {274 title: "wizzi-js",275 url: "https://github.com/wizzifactory/wizzi/tree/master/packages/wizzi-js/dist"276 },277 {278 title: "wizzi-web",279 url: "https://github.com/wizzifactory/wizzi/tree/master/packages/wizzi-web/dist"280 },281 {282 title: "wizzi-lab",283 url: "https://github.com/wizzifactory/wizzi/tree/master/packages/wizzi-lab/dist"284 }285 ]286 },287 Colors: {288 "bg_0": "#333",289 "bg_f_0": "#000",290 "c_0": "#fff",291 "bg_dark": "#333",292 "bg_dark_medium": "#444",293 "c_dark": "#ddd",294 "c_dark_medium": "#bbb",295 "h3_c_dark": "#fc0"296 },297 Fonts: {298 "useMaterialIcons": true,299 "materialIcons": {300 "baseUrl": "https://stfnbssl.github.io/wizzi/fonts",301 "fontWeight": "400",302 "size": "24px"303 }304 },305 Styles: {306 shellColors: {307 mainHeaderBg: "#0D0D0D",308 mainHeader: "#dedede",309 mainContentBg: "#2D2D2D",310 mainContent: "#dedede",311 mainContentLeftBarBg: "#1D1D1D",312 mainContentLeftBar: "#dedede",313 mainFooterBg: "#0D0D0D",314 mainFooter: "#dedede",315 }316 }317 }318 var mpage = {319 Colors: {320 background: "#ffffff",321 scheme1Fade90: "whiteFade-90,rgba(255,255,255,0.9)",322 themeBack: "#ffffff",323 primary: "#BDF3EE",324 primaryDark: "#122944",325 primary30: "#BDF3EE",326 gray70: "grey-70,#222B31",327 grad1: "#81B6CF",328 grad2: "#222B31"329 }330 }
/t/html/layouts/site.html.ittf
1 $group2 $params &opt3 $include models/docs/site.wzctx4 $5 var ca = 'm-s p-s color-header font-l font-w-xxl';6 var ca_inverse = 'm-s p-s color-header-inverse bg-color-header-inverse font-l font-w-xxl';7 var ca2 = 'color-header font-x font-w-s';8 head9 $if opt.title10 @title ${opt.title}11 meta12 charset utf-813 meta14 name viewport15 content width=device-width, initial-scale=116 link17 rel preconnect18 href https://fonts.googleapis.com19 link20 rel preconnect21 href https://fonts.gstatic.com22 crossorigin23 link24 @ rel "stylesheet"26 css /ittf/css/main.css.ittf27 script28 module29 set window.__filename = 'browser'30 $if opt.isWizziStudio && !opt.useFirebase31 var WizziBrowser32 {33 @ log34 function35 var line36 _ Array.prototype.slice.call(arguments).map37 function38 param argument39 return40 iif typeof argument === 'string'41 then argument42 else JSON.stringify(argument)43 ._ join44 @ '\n '45 if arguments.length > 1 && arguments[arguments.length-1] === '-'46 set line += new Array(50).join('-')47 set document.querySelector('#wizzi-browser-log').textContent += line + '\n'48 @ clearLog49 function50 set document.querySelector('#wizzi-browser-log').textContent = ''51 @ setStatus52 function53 param status54 set document.querySelector('#wizzi-browser-status').textContent = status55 @ setContent56 function57 param newContent58 var content = document.querySelector('#wizzi-browser-content')59 while content.hasChildNodes()60 _ content.removeChild(content.lastChild)61 _ content.appendChild(newContent)62 $hook head-styles-063 $if opt.isWizziStudio && !opt.useFirebase64 @style65 css66 # wizzi-browser-status67 margin .5em 068 font-style italic69 # wizzi-browser-log70 margin .5em 071 white-space pre-wrap72 # wizzi-browser-content73 margin .5em 074 # status:empty, #log:empty, #content:empty75 display none76 $include ./styles77 ./site-styles( &opt )78 $if opt.stickyNav79 style80 # ${opt.stickyNav}.sticky81 position fixed82 top 083 . ${opt.stickyNav}OffsetMargin84 padding-top ${opt.stickyNavOffset}px85 $if opt.stickyNavLogo86 # ${opt.stickyNavLogo}.visible87 display block88 # ${opt.stickyNavLogo}.hidden89 display none90 $hook head-styles91 $hook head-styles-292 $hook head-styles-393 $hook head-scripts94 body95 . full-page96 . main-header97 . flex-row space-between align-items-center width-10098 id __main_navbar99 . flex-row100 html/a( /, ${ca2})101 div102 style width: 80px; margin-top: 5px; margin-left: 20px;103 html/images/logo( ${colors.mainHeader}, ${colors.mainHeaderBg})104 . flex-row105 $if true106 $if locals.user107 $if opt.section != 'Starter'108 html/a( Starter, /ittf/site/starter.html.ittf, ${ca})109 $else110 . ${ca_inverse}111 + Starter112 $if opt.section != 'Lab'113 html/a( Lab, /ittf/site/lab.html.ittf, ${ca})114 $else115 . ${ca_inverse}116 + Lab117 $if opt.section != 'Productions'118 html/a( Productions, /ittf/site/productions.html.ittf, ${ca})119 $else120 . ${ca_inverse}121 + Productions122 $if opt.section != 'Play'123 html/a( Play, /public/play, ${ca})124 $else125 . ${ca_inverse}126 + Play127 . flex-row128 $if opt.section != 'Project'129 html/a( Project, /ittf/site/project.html.ittf, ${ca})130 $else131 . ${ca_inverse}132 + Project133 $if opt.section != 'Docs'134 html/a( Docs, /ittf/site/docs/concepts/overview.html.ittf, ${ca})135 $else136 . ${ca_inverse}137 + Docs138 html/a( Github, https://github.com/stfnbssl/wizzi, ${ca})139 . flex-row m-r-x140 $if false141 $if locals.user142 html/a( Profile, /account/profile, ${ca})143 html/a( Log Out, /auth/logout, ${ca})144 $else145 html/a( Log In, /auth/login, ${ca})146 $else147 . ${ca}148 + Log in149 title "Not implemented yet"150 . main-content151 . main-content-left-bar152 $hook main-content-left-bar153 . main-content-work-area154 $hook main-content-work-area155 $hook156 . main-footer157 $hook main-footer158 $hook body-scripts-0159 $if opt.isWizziStudio && !opt.useFirebase160 div161 # wizzi-browser-status162 # wizzi-browser-log163 # wizzi-browser-content164 ./site-scripts( &opt )165 $if opt.stickyNav166 script167 let header = document.getElementById("__main_navbar")168 let stickyBar = document.getElementById("${opt.stickyNav}")169 $if opt.stickyNavLogo170 let stickyLogo = document.getElementById("${opt.stickyNavLogo}")171 let stickyPos = ${opt.stickyNavOffset}172 _ window.addEventListener173 @ "scroll"174 =>175 param e176 let scrollPos = window.scrollY177 if scrollPos > stickyPos178 _ stickyBar.classList.add('sticky')179 _ header.classList.add('${opt.stickyNav}OffsetMargin')180 $if opt.stickyNavLogo181 _ stickyLogo.classList.add('visible')182 _ stickyLogo.classList.remove('hidden')183 else184 _ stickyBar.classList.remove('sticky')185 _ header.classList.remove('${opt.stickyNav}OffsetMargin')186 $if opt.stickyNavLogo187 _ stickyLogo.classList.remove('visible')188 _ stickyLogo.classList.add('hidden')189 $hook body-scripts190 $hook body-scripts-2191 $hook body-scripts-3192 $if opt.useHighlight193 script194 _ document.addEventListener195 @ 'DOMContentLoaded'196 =>197 param event198 _ document.querySelectorAll199 @ 'pre .hljs'200 ._ forEach201 =>202 param block203 _ hljs.highlightBlock(block)
/t/html/layouts/t/styles.html.ittf
1 $group2 style3 css4 $5 var colors = wzCtx.Styles.shellColors;6 . main-header7 background-color ${colors.mainHeaderBg}8 color ${colors.mainHeader}9 height 5vh10 overflow auto11 display flex12 flex-direction row13 justify-content space-between14 . main-content15 display flex16 flex-direction row17 height 92vh18 overflow auto19 background-color ${colors.mainContentBg}20 color ${colors.mainContent}21 . main-content-left-bar22 height 100%23 width 3%24 background-color ${colors.mainContentLeftBarBg}25 . main-content-work-area26 height 100%27 width 97%28 . main-footer29 background-color ${colors.mainFooterBg}30 color ${colors.mainFooter}31 height 3vh32 overflow auto
/t/html/layouts/site-styles.html.ittf
1 $group2 $params &opt3 $if opt.useBootstrap4 css /public/lib/bootstrap/dist/css/bootstrap.min.css5 $if opt.useCodemirror6 html/s( /public/lib/codemirror/lib/codemirror.css)7 html/s( /public/lib/codemirror/theme/monokai.css)8 html/s( /public/lib/codemirror/theme/twilight.css)9 $if typeof(wzCtx.aspect) !== 'undefined'10 $if wzCtx.aspect.AnimateCss11 $if wzCtx.aspect.production12 html/s( /public/lib/animatecss/animate.min.css)13 $else14 html/s( /public/lib/animatecss/animate.css)15 $if opt.useFontAwesome16 $17 var fontAwesomeKey = 'eab461efef';18 script19 src https://kit.fontawesome.com/${fontAwesomeKey}.js20 crossorigin anonymous21 $if opt.useFontRoboto22 html/s( https://fonts.googleapis.com/css?family=Roboto:300, 400, 500)23 $if opt.useFontMaterialIcons24 html/s( https://fonts.googleapis.com/icon?family=Material+Icons)25 $if opt.useGoogleFonts26 $foreach item in opt.googleFonts27 css https://fonts.googleapis.com/css?family=${item}28 $if opt.useHighlight29 $if opt.isWizziStudio30 html/s( /public/lib/highlight/styles/github.css)31 html/s( /public/lib/highlightjs-master/dracula.css)32 $else33 html/s( https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/default.min.css)34 $if opt.useJarallax35 html/s( /public/lib/jarallax/jarallax.css)36 $if opt.useJsonFormatter37 $if opt.isWizziStudio38 html/s( https://cdnjs.cloudflare.com/ajax/libs/json-formatter/0.7.0/json-formatter.min.css)39 $else40 html/s( https://cdnjs.cloudflare.com/ajax/libs/json-formatter/0.7.0/json-formatter.min.css)41 $if opt.useMaterialUI42 html/s( https://fonts.googleapis.com/icon?family=Material+Icons)43 $if opt.usePopper44 html/s( /public/lib/popper/main.css)45 $if opt.usePrism46 $if opt.isWizziStudio47 css /public/lib/prism/prism.css48 $else49 css https://cdnjs.cloudflare.com/ajax/libs/prism/1.6.0/themes/prism.min.css50 $if opt.useSocial51 html/s( /public/lib/social/social-icons.css)52 $if opt.useSweetalert54 $if opt.mainCss && opt.mainCss.length > 055 html/s( ${opt.mainCss})
/t/html/a.html.ittf
1 $group2 $params text, href|#, ca|@@null3 a ${text}4 href ${href}5 $if ca6 class ${ca}7 $hook
/t/html/images/logo.html.ittf
1 svg2 $params color|#000, bgcolor|#fff, viewBox|0 0 660 2803 $4 var opt = {};5 opt.y0 = 10;6 opt.y1 = 10;7 opt.y1a = 90;8 opt.y2 = 210;9 opt.ybottom = 250;10 opt.color = color;11 preserve-aspect-ratio xMidYMid meet12 viewBox ${viewBox}13 rect14 x 015 y 016 width 66017 height 28018 fill ${bgcolor}19 stroke none20 polyline21 stroke ${color}22 fill ${color}23 stroke-width 224 points 10 ${opt.ybottom} 45 ${opt.y0} 60 ${opt.y0} 75 ${opt.y1a + 40} 120 ${opt.y2} 120 ${opt.y1a + 40} 175 ${opt.y2} 175 ${opt.y1a + 20} 230 ${opt.y2} 230 ${opt.ybottom}25 wizzi-logo-i( 250, &opt )26 wizzi-logo-z( 320, &opt )27 wizzi-logo-z( 450, &opt )28 wizzi-logo-i( 590, &opt )
/t/html/layouts/site-scripts.html.ittf
1 $group2 $params &opt3 $4 var useReact = opt.useReact || opt.useMaterialUI;5 var useBabel = useReact || opt.useBabel;6 $if opt.useAce7 $if opt.isWizziStudio8 $if opt.production9 html/j( /public/lib/ace/src-min-noconflict/ace.js)10 $else11 html/j( /public/lib/ace/src-noconflict/ace.js)12 $else13 html/j( https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.2/ace.js)14 $if opt.useBootstrap15 html/j( /public/lib/bootstrap/dist/js/bootstrap.min.js)16 $if opt.useEventEmitter17 $$ html/j( https://unpkg.com/eventemitter3@latest/umd/eventemitter3.min.js19 $if opt.useCodemirror20 html/j( /public/lib/codemirror/lib/codemirror.js)21 html/j( /public/lib/codemirror/mode/javascript/javascript.js)22 html/j( /public/lib/codemirror/mode/xml/xml.js)23 html/j( /public/lib/codemirror/theme/monokai.css)24 html/j( /public/lib/codemirror/theme/twilight.css)25 $if opt.useDeepDiff26 $if opt.isWizziStudio27 html/j( /public/lib/flitbit/deep-diff.min.js)28 $else29 html/j( https://cdnjs.cloudflare.com/ajax/libs/deep-diff/0.3.3/deep-diff.min.js)30 $if opt.useKeycode31 $if opt.isWizziStudio32 html/j( /public/lib/material-ui/keycode.min.2.2.0.js)33 $else34 html/j( https://cdn.jsdelivr.net/npm/keycode.js)35 $if opt.useHighlight36 $if opt.isWizziStudio37 html/j( https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js)38 $else39 html/j( https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js)40 $if opt.useInteractJs41 html/j( /public/lib/interactjs/interact.js)42 $if opt.useJarallax43 html/j( /public/lib/object-fit-images/ofi.min.js)44 $if opt.production45 html/j( /public/lib/jarallax/jarallax.min.js)46 html/j( /public/lib/jarallax/jarallax-video.min.js)47 html/j( /public/lib/jarallax/jarallax-element.min.js)48 $else49 html/j( /public/lib/jarallax/jarallax.js)50 html/j( /public/lib/jarallax/jarallax-video.js)51 html/j( /public/lib/jarallax/jarallax-element.js)52 $if opt.useJQuery || opt.useBootstrap53 $if opt.production54 html/j( /public/lib/jquery/jquery.min.js)55 $else56 html/j( /public/lib/jquery/jquery.js)57 $if opt.useJsonFormatter58 $if opt.isWizziStudio59 html/j( /public/lib/json-formatter/json-formatter.js)60 $else62 $if opt.useJss63 js /public/lib/jss/jss.js64 js /public/lib/jss/jss-preset-default.js65 $if opt.useMarkdown66 html/j( https://cdn.jsdelivr.net/npm/marked/marked.min.js)67 $if opt.useMathJax68 html/j( https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML)69 $if opt.usePopper70 html/j( /public/lib/popper/popper.js)71 $if opt.usePrism72 $if opt.isWizziStudio73 js /public/lib/prism/prism.js74 $else75 js https://cdnjs.cloudflare.com/ajax/libs/prism/1.6.0/prism.min.js76 $if opt.usePubSub77 js /public/lib/pubsub/pubsub.js78 $if useReact79 $if opt.production81 $else83 $if opt.production86 $else89 $if opt.useClassNames90 html/j( /public/lib/react/classnames.js)91 $if opt.useMaterialUI92 $if opt.materialUI.latest93 $if opt.production94 html/j( https://unpkg.com/@mui/material@latest/umd/material-ui.production.min.js)95 $else96 html/j( https://unpkg.com/@mui/material@latest/umd/material-ui.development.js)97 $else98 $if opt.production99 $if opt.materialUI.v4101 $else103 $else104 $if opt.materialUI.v4106 $else108 $if opt.useRouter111 html/j( https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/react-router-dom.production.min.js)112 $if opt.useReactGrid113 html/j( /public/lib/react/react-grid-layout.min.js)114 $if opt.useDownshift115 $if opt.local || opt.isWizziStudio117 $else119 $if opt.useGridLayout120 $if opt.useGridLayoutLatest121 html/j( https://unpkg.com/react-grid-layout@latest/dist/react-grid-layout.min.js)122 $else124 $if opt.react.useStyledComponents126 $if opt.react.useTransitionGroup127 js https://cdnjs.cloudflare.com/ajax/libs/react-transition-group/4.4.1/react-transition-group.min.js128 $if opt.useRxJs129 html/j( /public/lib/rxjs/rxjs.umd.min.js)130 $if opt.useScrollReveal131 html/j( /public/lib/scrollreveal/scrollreveal.js)132 $if opt.useSplit133 js /public/lib/controls/split.js134 $if opt.useSweetalert136 $if opt.useUnderscore137 $if opt.production138 html/j( /public/lib/underscore/underscore.min.js)139 $else140 html/j( /public/lib/underscore/underscore.js)141 $if opt.useVue142 html/j( https://unpkg.com/vue)143 $if opt.useWizzi144 $if opt.isWizziStudio145 html/j( /public/wizzi-play/scripts/wizzi.standalone.js)146 $else147 html/j( /scripts/wizzi.standalone.js)148 $if opt.useMathJax149 script150 #151 _ MathJax.Hub.Config152 {153 @ tex2jax154 {155 @ inlineMath [['$','$'], ['\\(','\\)']]156 @ processEscapes true157 $if useBabel159 $if opt.useMonaco160 html/j( /public/lib/monaco-editor/min/vs/loader.js)161 $if opt.mainJs && opt.mainJs.length > 0162 $if useBabel163 script164 src ${opt.mainJs}165 type text/babel166 $else167 js ${opt.mainJs}
/t/html/images/t/wizzi-logo-i.html.ittf
1 $group2 $params l:integer, &opt3 polyline4 stroke ${opt.color}5 fill ${opt.color}6 stroke-width 27 points ${l} ${opt.ybottom} ${l+10} ${opt.y1+80} ${l+40} ${opt.y1+80} ${l+50} ${opt.ybottom}8 path9 stroke ${opt.color}10 fill ${opt.color}11 stroke-width 212 d M${l+30}, ${opt.y1+20} C${l+60},${opt.y1+40} ${l+0},${opt.y1+60} ${l+30}, ${opt.y1+74}
/t/html/images/t/wizzi-logo-z.html.ittf
1 $group2 $params l:integer, &opt3 polyline4 stroke ${opt.color}5 fill ${opt.color}6 stroke-width 27 points ${l} ${opt.ybottom} ${l} ${opt.ybottom - 20} ${l+100} ${opt.y1a+40} ${l+80} ${opt.y1a+20} ${l+80} ${opt.y1a} ${l+130} ${opt.y1a} ${l+100} ${opt.ybottom - 20} ${l+120} ${opt.ybottom - 20} ${l+120} ${opt.ybottom}
/t/html/s.html.ittf
1 $group2 $params url3 link4 href ${url}5 rel stylesheet
/t/html/j.html.ittf
1 $group2 $params url3 script4 src ${url}5 crossorigin anonymous
/ittf/meta/html/styles.css.ittf
1 css2 $include options-init3 $4 opt.prettyprint = true;5 opt.l_mc_top = 8;6 opt.c_bg_tn_bar = '#fafafa';7 opt.c_bg_tn_main = '#ededed';8 $include options-analize9 css/layouts/meta_main( &opt)10 < body11 background-color ${opt.c_bg_0}12 color ${opt.c_0}13 font-size 15px14 font-family roboto, verdana, tahoma, arial, sans-serif15 line-height 1.8em16 < h117 font-size 2rem18 padding 1rem 0 0.5rem 019 < h220 font-size 1.5rem21 padding 0.6rem 0 0.3rem 022 . clear23 clear both24 $include s/tn25 $include s/fsitems26 $include s/mc27 $include s/modal28 $include s/editor29 $include css/sidebar-left30 $include css/breadcrumbs
/ittf/meta/t/options-init.ittf
1 $group2 $3 var opt = {4 resetMarginsPaddingsBorders: true,5 resetDisplayBlock: false,6 resetOlUl: true,7 resetBlockquote: false,8 resetTable: false,9 resetLinks: true,10 prettyprint: false,11 debug_css: false,12 c_0: '#000',13 c_bg_0: '#fff',14 fa_1: false,15 sidebar_1: false,16 sb_1_min_w: 0,17 logo_w: 70,18 logo_h: 35,19 };
/ittf/meta/t/options-analize.ittf
1 $group2 $3 if (opt.sidebar_1) {4 opt.fa_1 = true;5 }
/ittf/meta/html/t/s/tn.css.ittf
1 $group2 # tn-input-toggle3 display none4 . tn-bar5 position fixed6 min-width 100%7 background-color ${opt.c_bg_tn_bar}8 . tn-main9 - flex for logo and menu UL10 display flex11 align-items center12 - space-between evenly distributes the child elements within the parent flex container13 justify-content space-between14 padding 1rem 1rem15 . logo16 background-color ${opt.c_bg_tn_bar}17 < img18 width 7rem19 height 3rem20 & :hover21 background-color ${opt.c_tn_bg_logo_hover}22 < ul23 display flex24 justify-content space-between25 list-style-type none26 - width is required for justify-content to take effect27 width 90%28 < li29 display inline-block30 padding 1rem31 font-size 1.6rem32 < a33 text-decoration none34 & :hover35 color ${opt.c_tn_2}36 . tn-breadcrumbs37 margin 5px38 background-color ${opt.c_bg_tn_main}
/ittf/meta/html/t/s/fsitems.css.ittf
1 $group2 . breadcrumbs-panel3 display flex4 flex-direction row5 padding 0 0.5rem 0.5rem 0.5rem6 . breadcrumb-item7 padding 0.5rem 1rem8 font-size 1.5rem9 . fsitem10 < img11 position relative12 top 3px13 < a14 padding-left 0.5rem
/ittf/meta/html/t/s/mc.css.ittf
1 $group2 # mc-wrapper3 position fixed4 width 100%5 height 100%6 $if opt.debug_css7 border 1px solid blue8 . mc-wrapper-layout9 top ${opt.l_mc_top}rem10 height calc(100% - ${opt.l_mc_top + 10}rem)11 . mc-frame12 display flex13 flex-direction row14 height 100%15 $if opt.debug_css16 border 1px solid red17 . mc-content18 $$padding 50px 30px19 $$ Do the same as mc-sidebar-left20 padding 20px 20px21 $$ height 100%22 $$ still i can't find why i need to subtract these 40 pixels23 $$ It seems to be the padding. Why? Isn t it internal to height24 height calc(100% - 10rem)25 overflow auto26 . mc-pane27 width 100%28 < h229 font-size 2rem30 font-weight 70031 margin 2rem 0 0 032 < h333 font-size 1.4rem34 font-weight 70035 margin 1.5rem 0 0 036 < h437 font-weight 70038 margin 0.5rem 0 -3px 039 < p40 line-height 1.3rem41 margin-bottom 0.5rem42 < ul43 list-style-type disc44 padding-left 2rem45 . code-edit-button46 cursor pointer47 & :hover48 text-decoration underline49 media screen and (max-width: 1028px)50 # mc-wrapper51 . mc-frame52 display block53 . mc-sidebar-left54 $$ TODO explain exactly why 160px (that is mc-frame-bar height)55 height calc(100% - 10rem)56 margin 10px57 < ul li58 font-size 3rem59 border-bottom 2px solid ${opt.c_0}60 padding 2rem 061 < ul li:last-child62 border-bottom 063 . mc-wrapper-layout64 top ${opt.l_mc_top_mobile}rem65 height calc(100% - ${opt.l_mc_top_mobile + 1}rem)66 . mc-frame-bar67 display flex68 flex-direction row69 justify-content space-between70 background-color ${opt.c_mc_bg_frame_bar}71 color ${opt.c_mc_frame_bar}72 margin 1rem73 padding 1.5rem 1rem74 . mc-sidebar-left-title75 display block76 padding-left 077 font-size 3rem78 . mc-label-toggle79 display block80 . mc-item-link81 display none82 . mc-pane83 display none84 font-size 1.1rem85 < h286 font-size 1.6rem87 font-weight 50088 margin 1.5rem 0 0 089 < h390 font-size 1.3rem91 font-weight 50092 margin 1.2rem 0 0 093 < h494 font-weight 50095 margin 1rem 0 -3px 096 < p97 line-height 2rem98 margin-bottom 1rem99 . mc-content100 $$ TODO explain exactly why 60px (that is mc-frame-bar height)101 height calc(100% - 60px)102 margin 10px103 padding 20px 40px104 . mc-content-title105 display none106 # mc-toggle-toc:checked ~ .mc-frame .mc-sidebar-left107 display none108 # mc-toggle-toc:checked ~ .mc-frame .mc-label-toggle-close109 font-size 70px110 cursor pointer111 display block112 $$ float right113 height 35px114 $$ margin-top -0.7rem115 width 35px
/ittf/meta/html/t/s/modal.css.ittf
1 $group2 . modal3 display none4 position fixed5 z-index 16 left 07 top 08 width 100%9 height 100%10 overflow auto11 background-color rgb(0,0,0)12 background-color rgba(0,0,0,0.4)13 . modal-content14 background-color #fefefe15 margin 5% auto16 padding 20px17 border 1px solid #88818 width 80%19 . modal-close20 color #aaa21 float right22 font-size 28px23 font-weight bold24 . modal-close:hover25 + .modal-close:focus26 color black27 text-decoration none28 cursor pointer
/ittf/meta/html/t/s/editor.css.ittf
1 $group2 . editor-form3 display flex4 flex-direction column5 . editor-content6 display flex7 flex-direction row8 . editor-buttons9 display flex10 flex-direction column11 padding 2rem 5rem12 . editor-title13 font-size 1.2rem14 font-weight 90015 padding-bottom 0.2rem16 . editor-panel17 . editor-button18 background-color #66619 color #fff20 text-align center21 padding 1rem22 margin-bottom 0.5rem23 border-radius 0.5rem24 cursor pointer25 & :hover26 background-color #99927 color #ff0
/ittf/meta/t/css/sidebar-left.css.ittf
1 $group2 . mc-sidebar-left3 padding 20px 30px4 $$ still i can't find why i need to subtract these5 height calc(100% - 10rem)6 min-width 20rem7 overflow auto8 < ul9 display flex10 justify-content space-between11 flex-direction column12 list-style-type none13 transition all 1s ease14 < li15 border-bottom 1px solid ${opt.c_0}16 color ${opt.c_0}17 display block18 font-size 0.8rem19 $$ padding 0.1rem 0 0.1rem 1rem20 padding 021 < a22 color ${opt.c_0}23 < li:last-child24 border-bottom 025 . mc-sidebar-left-title26 display none
/ittf/meta/t/css/breadcrumbs.css.ittf
1 $group2 . breadcrumb3 # centering4 display inline-block5 box-shadow 0 0 15px 1px rgba(0, 0, 0, 0.35)6 overflow hidden7 border-radius 5px8 # Lets add the numbers for each link using CSS counters. flag is the name of the counter. to be defined using counter-reset in the parent element of the links9 counter-reset flag10 . breadcrumb a11 text-decoration none12 outline none13 display block14 float left15 font-size 12px16 line-height 36px17 color white18 # need more margin on the left of links to accomodate the numbers19 padding 0 10px 0 60px20 background #66621 background linear-gradient(#666, #333)22 position relative23 # since the first link does not have a triangle before it we can reduce the left padding to make it look consistent with other links24 . breadcrumb a:first-child25 padding-left 46px26 border-radius 5px 0 0 5px27 # to match with the parent's radius28 . breadcrumb a:first-child:before29 left 14px30 . breadcrumb a:last-child31 border-radius 0 5px 5px 032 # this was to prevent glitches on hover33 padding-right 20px34 # hover/active styles35 . breadcrumb a.active36 + .breadcrumb a:hover37 background #33338 background linear-gradient(#333, #000)39 . breadcrumb a.active:after40 + .breadcrumb a:hover:after41 background #33342 background linear-gradient(135deg, #333, #000)43 # adding the arrows for the breadcrumbs using rotated pseudo elements44 . breadcrumb a:after45 content ''46 position absolute47 top 048 right -18px49 # half of square's length50 # same dimension as the line-height of .breadcrumb a51 width 36px52 height 36px53 #54 # as you see the rotated square takes a larger height. which makes it tough to position it properly. So we are going to scale it down so that the diagonals become equal to the line-height of the link. We scale it to 70.7% because if square's:55 # length = 1; diagonal = (1^2 + 1^2)^0.5 = 1.414 (pythagoras theorem)56 # if diagonal required = 1; length = 1/1.414 = 0.70757 transform scale(0.707) rotate(45deg)58 # we need to prevent the arrows from getting buried under the next link59 z-index 160 # background same as links but the gradient will be rotated to compensate with the transform applied61 background #66662 background linear-gradient(135deg, #666, #333)63 # stylish arrow design using box shadow64 box-shadow 2px -2px 0 2px rgba(0, 0, 0, 0.4), 3px -3px 0 2px rgba(255, 255, 255, 0.1)65 #66 #67 # 5px - for rounded arrows and68 # 50px - to prevent hover glitches on the border created using shadows69 border-radius 0 5px 0 50px70 # we dont need an arrow after the last link71 . breadcrumb a:last-child:after72 content none73 # we will use the :before element to show numbers74 . breadcrumb a:before75 content counter(flag)76 counter-increment flag77 # some styles now78 border-radius 100%79 width 20px80 height 20px81 line-height 20px82 margin 8px 083 position absolute84 top 085 left 30px86 background #44487 background linear-gradient(#444, #222)88 font-weight bold89 . flat a90 + .flat a:after91 background white92 color black93 transition all 0.5s94 . flat a:before95 background white96 box-shadow 0 0 0 1px #ccc97 . flat a:hover98 + .flat a.active99 + .flat a:hover:after100 + .flat a.active:after101 background #9EEB62
/ittf/meta/html/main.js.ittf
1 module2 kind es63 $include js/wz/core4 $include js/wz/ace5 $include js/editManager6 $include js/modalManager7 $include js/dataManager8 $include js/clickListener9 _ wz.contentLoaded10 function11 log '*** content loaded'12 var editorImpl13 new AceEditor14 {15 @ key 'ittf-editor'16 @ editorElementId 'editorContainer'17 @ width '1100px'18 @ height '600px'19 var ctx20 {21 @ editorImpl editorImpl22 @ editSaveUrl '/api/v1/wizzifs/ittf'23 @ editSaveHttpMethod 'put'24 @ modalsContainerId 'modalsContainer'25 set ctx.editManager26 new EditManager27 @ ctx28 {29 @ dataHashKey 'ittfhash'30 @ dataContentKey 'ittfcontent'31 @ dataPrettyKey 'ittfpretty'32 @ dataTitleKey 'ittftitle'33 set ctx.modalManager = new ModalManager(ctx)34 set ctx.dataManager = new DataManager(ctx)35 set ctx.clickHandler = ctx.editManager36 _ setupClickListener37 @ ctx38 {39 @ containerId 'mc-wrapper'40 @ targetClass 'edit-ittf-content-button'41 @ dataField42 [43 @ 'ittfhash'44 @ 'ittfcontent'45 @ 'ittfpretty'46 @ 'ittftitle'
/t/js/wz/core.js.ittf
1 $group2 $include polyfill3 iife4 var wz = window.wz = {}5 var rclass = /[\n\t\r]/g6 var rnotwhite = (/\S+/g)7 $include eventTarget8 $include global9 $include events10 $include verify11 set wz.element12 function13 param element14 if typeof element === 'string'15 var e = document.querySelector(element)16 if !e17 try18 set e = document.querySelector("#" + element)19 catch ex20 return null21 return e22 else23 return element24 set wz.hide25 function26 param element27 var e = wz.element(element)28 set e.style.display = 'none'29 set wz.show30 function31 param element32 var e = wz.element(element)33 set e.style.display = 'block'34 set wz.hasClass35 function36 param element37 param selector38 var e = wz.element(element)39 if (" " + e.className + " ").replace(rclass, " ").indexOf(" " + selector + " ") > -140 return true41 return false42 set wz.addClass43 function44 param element45 param value46 param options47 var e = wz.element(element)48 var classes, cur, finalValue49 if options && options.removeOnClass50 var elements = document.getElementsByClassName(options.removeOnClass)51 _ Array.from(elements).forEach52 function53 param element54 _ wz.removeClass(element, value)55 if value && typeof value === "string"56 set classes = ( value || "" ).match( rnotwhite ) || []57 if !e.className && classes.length === 158 set e.className = value59 else60 set cur = " " + e.className + " "61 foreach clazz in classes62 if cur.indexOf( " " + clazz + " " ) < 063 set cur += clazz + " "64 set finalValue = cur.trim()65 if e.className !== finalValue66 set e.className = finalValue67 set wz.removeClass68 function69 param element70 param value71 var e = wz.element(element)72 var classes, cur, finalValue73 if value && typeof value === "string"74 set classes = ( value || "" ).match( rnotwhite ) || []75 set cur = e.className ? ( " " + e.className + " " ).replace( rclass, " " ) : ""76 foreach clazz in classes77 while cur.indexOf( " " + clazz + " " ) >= 078 set cur = cur.replace( " " + clazz + " ", " " )79 set finalValue = cur.trim()80 if e.className !== finalValue81 set e.className = finalValue82 set wz.toggleClass83 function84 param element85 param value86 if wz.hasClass(element, value)87 _ wz.removeClass(element, value)88 else89 _ wz.addClass(element, value)90 set wz.attribute91 function92 param element93 param name94 param value95 var e = wz.element(element)96 if typeof value === 'undefined'97 return e.getAttribute(name)98 else99 _ e.setAttribute(name, value)100 set wz.style101 function102 param element103 param name104 param value105 var e = wz.element(element)106 if typeof value === 'undefined'107 return e.style[name]108 else109 set e.style[name] = value110 set wz.text111 function112 param element113 param value114 var e = wz.element(element)115 if typeof value === 'undefined'116 return e.textContent117 elif e.textContent !== value118 set e.textContent = value119 set wz.html120 function121 param element122 param html123 var saveElementForLog = element124 if typeof element === "string"125 set element = wz.element(element)126 if !element127 log 'element', saveElementForLog128 throw new Error('In wz.html the element parameter must be an html element or the id of an html element. Received: ' + saveElementForLog)129 if typeof html === 'undefined'130 return element.innerHTML131 else132 set element.innerHTML = html133 set wz.htmlEscaped134 function135 param element136 param html137 _ wz.html138 @ element139 _ wz.escapeHtml(html)140 set wz.replaceChildren141 function142 param element143 param nodes144 var saveElementForLog = element145 if typeof element === "string"146 set element = wz.element(element)147 if !element148 log 'element', saveElementForLog149 throw new Error('In wz.replaceChildren the element parameter must be an html element or the id of an html element. Received: ' + saveElementForLog)150 set element.innerHTML = ''151 if nodes.length152 foreach node in nodes153 _ element.appendChild( node )154 else155 _ element.appendChild( nodes )156 set wz.value157 function158 param element159 param value160 var saveElementForLog = element161 if typeof element === "string"162 set element = wz.element(element)163 if !element164 log 'element', saveElementForLog165 throw new Error('In wz.value the element parameter must be an html element or the id of an html element. Received: ' + saveElementForLog)166 if typeof value === 'undefined'167 return element.value168 elif element.value !== value169 set element.value = value170 set wz.val = wz.value171 set wz.click172 function173 param element174 param handler175 param useCapture176 _ window.addEvent177 @ wz.element(element)178 @ 'click'179 @ handler180 @ useCapture181 set wz.clickClass182 function183 param classname184 param handler185 param useCapture186 var elements = document.getElementsByClassName(classname)187 _ Array.from(elements).forEach188 function189 param element190 _ wz.click191 @ element192 @ handler193 @ useCapture194 set wz.unclick195 function196 param element197 param handler198 param useCapture199 _ window.removeEvent200 @ wz.element(element)201 @ 'click'202 @ handler203 @ useCapture204 set wz.blur205 function206 param element207 param handler208 param useCapture209 _ window.addEvent210 @ wz.element(element)211 @ 'blur'212 @ handler213 @ useCapture214 set wz.unblur215 function216 param element217 param handler218 param useCapture219 _ window.removeEvent220 @ wz.element(element)221 @ 'blur'222 @ handler223 @ useCapture224 set wz.change225 function226 param element227 param handler228 param useCapture229 _ window.addEvent230 @ wz.element(element)231 @ 'change'232 @ handler233 @ useCapture234 set wz.unchange235 function236 param element237 param handler238 param useCapture239 _ window.removeEvent240 @ wz.element(element)241 @ 'change'242 @ handler243 @ useCapture244 set wz.contextmenu245 function246 param element247 param handler248 param useCapture249 _ window.addEvent250 @ wz.element(element)251 @ 'contextmenu'252 @ handler253 @ useCapture254 set wz.uncontextmenu255 function256 param element257 param handler258 param useCapture259 _ window.removeEvent260 @ wz.element(element)261 @ 'contextmenu'262 @ handler263 @ useCapture264 set wz.keypress265 function266 param element267 param handler268 param useCapture269 _ window.addEvent270 @ wz.element(element)271 @ 'keypress'272 @ handler273 @ useCapture274 set wz.unkeypress275 function276 param element277 param handler278 param useCapture279 _ window.removeEvent280 @ wz.element(element)281 @ 'keypress'282 @ handler283 @ useCapture284 set wz.contentLoaded285 function286 param fn287 # from Diego Perini https://raw.githubusercontent.com/dperini/ContentLoaded/master/src/contentloaded.js288 var289 decl done = false290 decl top = true291 decl doc = window.document292 decl root = doc.documentElement293 decl modern = doc.addEventListener294 decl add = modern ? 'addEventListener' : 'attachEvent'295 decl rem = modern ? 'removeEventListener' : 'detachEvent'296 decl pre = modern ? '' : 'on'297 decl init298 function299 param e300 if (e.type == 'readystatechange') && (doc.readyState != 'complete')301 return302 _ (e.type == 'load' ? window : doc)[rem]303 @ pre + e.type304 @ init305 @ false306 if !(done) && (done = true)307 _ fn.call(window, (e.type || e))308 decl poll309 function310 try311 _ root.doScroll('left')312 catch e313 _ setTimeout(poll, 50)314 return315 _ init('poll')316 if doc.readyState == 'complete'317 _ fn.call(window, 'lazy')318 else319 if !(modern) && root.doScroll320 try321 set top = !(window.frameElement)322 catch e323 if top324 _ poll()325 _ doc[add]326 @ pre + 'DOMContentLoaded'327 @ init328 @ false329 _ doc[add]330 @ pre + 'readystatechange'331 @ init332 @ false333 _ window[add]334 @ pre + 'load'335 @ init336 @ false337 set wz.loaded = wz.contentLoaded338 var entityMap339 {340 @ '&' '&'341 @ '<' '<'342 @ '>' '>'343 @ '"' '"'344 @ "'" '''345 @ '/' '/'346 @ '`' '`'347 @ '=' '='348 set wz.escapeHtml349 function escapeHtml350 param string351 return352 _ String(string).replace353 @ /[&<>"'`=\/]/g354 function fromEntityMap355 param s356 return entityMap[s]357 set wz.unescapeHtml358 function359 param string360 return361 _ wz.replace362 _ wz.replace363 _ wz.replace364 @ string365 @ '<'366 @ '<'367 @ '>'368 @ '>'369 @ '&'370 @ '&'371 ()
/t/js/wz/ace.js.ittf
1 $group2 var AceEditor_mimemap3 {4 @ js 'javascript'5 var AceEditor_defaults6 {7 @ key 'ace'8 @ editorElementId 'aceEditor'9 @ mode 'text'10 @ theme 'monokai'11 @ fontSize '11pt'12 class AceEditor13 ctor14 param options15 #16 # params17 # { options18 # string editorElementId19 # string mode20 # string theme21 # number width22 # number height23 set this.options24 _ Object.assign25 @ AceEditor_defaults26 @ options27 set this.elementId = this.options.editorElementId28 set this.key = this.options.key29 set this.editor = null30 set this.events = {}31 m getValue32 if this.editor33 return this.editor.getValue()34 m setValue35 param value36 if !this.editor37 _ this.initialize()38 _ this.editor.setValue(value, 1)39 m setMime40 param value41 _ this.setMode42 @ AceEditor_mimemap[value] || value43 m setMode44 param value45 if this.editor46 _ this.editor.getSession().setMode47 @ "ace/mode/" + value48 m setTheme49 param value50 if this.editor51 _ this.editor.setTheme52 @ "ace/theme/" + value53 m readOnly54 param value55 if typeof value === 'undefined'56 return57 _ this.editor.getReadOnly()58 else59 _ this.editor.setReadOnly(value)60 m onChange61 param handler62 set this.onChange = handler63 m initialize64 if this.editor65 return66 log 'AceEditor.initialize start on', this.options.editorElementId67 if typeof ace === 'undefined' || !ace.edit68 throw new Error('wz.ace initialize methods requires the `ace` component. Check that the ace script has been included.')69 set this.element = wz.element('#' + this.options.editorElementId)70 if !this.element71 throw new Error('wz.ace initialize methods requires an existing `options.editorElementId` : ' + this.options.editorElementId + ' html element.')72 _ wz.style(this.element, 'width', this.options.width)73 _ wz.style(this.element, 'height', this.options.height)74 set this.editor75 _ ace.edit76 @ this.options.editorElementId77 _ this.editor.setOptions78 {79 @ fontSize this.options.fontSize80 _ this.setMode81 @ this.options.mode82 _ this.setTheme83 @ this.options.theme84 var that = this85 _ this.editor.getSession().on86 @ 'change'87 function88 _ that.fire89 @ 'change'90 [91 _ that.getValue92 log 'AceEditor.initialize end'93 m on94 param name95 param handler96 if this.events.hasOwnProperty(name)97 _ this.events[name].push(handler)98 else99 set this.events[name] = [handler]100 m off101 param name102 param handler103 if !this.events.hasOwnProperty(name)104 return105 var index = this.events[name].indexOf(handler)106 if index != -1107 _ this.events[name].splice(index, 1)108 m fire109 param name110 param args111 if !this.events.hasOwnProperty(name)112 return113 if !args || !args.length114 set args = []115 foreach ev in this.events[name]116 _ ev.apply(null, args)
/ittf/meta/html/t/js/editManager.js.ittf
1 $group2 #3 # implements clickHandler4 # params5 # { ctx6 # { editorImpl7 # { modalManager8 # string editorKey9 #10 class EditManager11 ctor12 param ctx13 param options14 set this.ctx = ctx15 set this.options = options16 set this.editorImpl = ctx.editorImpl17 # do not set this in the constructor, could be yet uncreated18 # set this.modalManager = ctx.modalManager19 set this.dataHashKey = options.dataHashKey20 set this.dataContentKey = options.dataContentKey21 set this.dataPrettyKey = options.dataPrettyKey22 set this.dataTitleKey = options.dataTitleKey23 set this.contentHash = null24 set this.contentOriginal = null25 m initEditor26 if this.editor27 return28 _ this.editorImpl.initialize29 set this.editor = this.editorImpl30 var that = this31 var saveEl = wz.element('#' + this.editor.key + '-save')32 var saveRefreshEl = wz.element('#' + this.editor.key + '-save-refresh')33 var cancelEl = wz.element('#' + this.editor.key + '-cancel')34 set this.titleElement = wz.element('#' + this.editor.key + '-title')35 _ wz.click36 @ cancelEl37 function38 _ that.ctx.modalManager.hide39 @ that.editor.key40 _ wz.click41 @ saveEl42 function43 if that.editor.getValue() !== that.contentOriginal44 _ that.ctx.dataManager.editSave45 @ that.contentHash46 _ that.editor.getValue47 _ that.ctx.modalManager.hide48 @ that.editor.key49 _ wz.click50 @ saveRefreshEl51 function52 if that.editor.getValue() !== that.contentOriginal53 _ that.ctx.dataManager.editSave54 @ that.contentHash55 _ that.editor.getValue56 _ that.ctx.modalManager.hide57 @ that.editor.key58 set location.href= location.pathname59 m onSave60 param data61 _ wz.value62 @ this.contentElementId63 @ data.content64 _ wz.html65 @ this.prettyElementId66 @ data.pretty && data.pretty.prettyLines ? data.pretty.prettyLines.join('') : data.pretty67 m setEditor68 param options69 if this.editor70 _ this.editor.setValue71 @ options.value72 if this.titleElement73 _ wz.text(this.titleElement, options.title)74 m edit75 param options76 # log 'wz.editManager.edit.options', options77 _ this.initEditor78 _ this.setEditor79 @ options80 m handleClick81 param target82 param dataValue83 # log 'wz.editManager.handleClick.dataValue', dataValue84 set this.contentElementId = dataValue[this.dataContentKey]85 set this.prettyElementId = dataValue[this.dataPrettyKey]86 set this.contentHash = dataValue[this.dataHashKey]87 set this.contentOriginal = wz.value(this.contentElementId)88 _ this.edit89 {90 @ value wz.value(this.contentElementId)91 @ title dataValue[this.dataTitleKey]92 _ this.ctx.modalManager.show93 @ this.editor.key94 @ this.editor.key + '-form'95 m checkClick96 param target97 if this.editor98 return99 _ this.ctx.modalManager.checkClick100 @ this.editor.key + '-form'101 @ target102 return false
/ittf/meta/html/t/js/modalManager.js.ittf
1 $group2 class ModalManager3 ctor4 param ctx5 set this.ctx = ctx6 set this.dialogs = {}7 m checkClick8 param dialogKey9 param target10 # Not implemented yet11 # log 'wz.ModalManager.checkClick', target12 return false13 m show14 param dialogKey15 param formId16 var dialogData17 _ this.createMarkup18 @ dialogKey19 if !dialogData.currentContent20 var formEl21 _ wz.element( '#' + formId)22 if !formEl23 throw new Error('In wz.modalManager.show() the formId is not an existing html element: ' + formId)24 _ dialogData.modalContentElement.appendChild25 @ formEl26 set formEl.style.display = "block"27 set dialogData.currentContent = formEl28 set dialogData.modalElement.style.display = "block"29 m hide30 param dialogKey31 var dialogData32 _ this.createMarkup33 @ dialogKey34 if !dialogData35 throw new Error('In wz.modalManager.hide() the dialogKey is unknown: ' + dialogKey)36 set dialogData.modalElement.style.display = "none"37 m createMarkup38 param dialogKey39 if !this.dialogs[dialogKey]40 set this.dialogs[dialogKey] = {}41 var dialog = this.dialogs[dialogKey]42 if dialog.modalElement43 return dialog44 var modalsContainer = wz.element('#' + this.ctx.modalsContainerId)45 if !modalsContainer46 set modalsContainer = document.createElement('div')47 _ modalsContainer.setAttribute('id', this.ctx.modalsContainerId)48 _ document.body.appendChild(modalsContainer)49 # . modal50 # id edit-modal51 # . modal-content52 # id edit-modal-content53 # span ×54 # class modal-close55 var spanClose = document.createElement('span')56 _ spanClose.setAttribute('class', 'modal-close')57 _ wz.text(spanClose, 'X')58 var that = this59 _ wz.click60 @ spanClose61 function62 _ that.hide63 @ dialogKey64 set dialog.modalContentElement = document.createElement('div')65 _ dialog.modalContentElement.setAttribute('class', 'modal-content')66 _ dialog.modalContentElement.setAttribute('id', dialogKey + '-modal-content')67 set dialog.modalElement = document.createElement('div')68 _ dialog.modalElement.setAttribute('class', 'modal')69 _ dialog.modalElement.setAttribute('id', dialogKey + '-modal')70 _ dialog.modalContentElement.appendChild(spanClose)71 _ dialog.modalElement.appendChild(dialog.modalContentElement)72 _ modalsContainer.appendChild(dialog.modalElement)73 return dialog
/ittf/meta/html/t/js/dataManager.js.ittf
1 $group2 #3 # implements editSave4 # params5 # { ctx6 #7 class DataManager8 ctor9 param ctx10 set this.ctx = ctx11 set this.editSaveUrl = ctx.editSaveUrl12 set this.editSaveHttpMethod = ctx.editSaveHttpMethod13 m editSave14 param hash15 param content16 log 'wz.DataManager.editSave', hash, content17 _ fetch18 @ this.editSaveUrl19 {20 @ method this.editSaveHttpMethod.toUpperCase()21 { headers22 @ "Content-Type" "application/json"23 @ body24 _ JSON.stringify25 {26 @ hash hash27 @ content content28 @ prettify true29 ._ then30 =>31 param response32 _ response.json()33 ._ then34 =>35 param json36 $if true37 _ alert38 @ 'editSave: ' + JSON.stringify(json, null, 2)39 if this.ctx.editManager && this.ctx.editManager.onSave40 set json.data.hash = hash41 set json.data.content = content42 #43 _ alert44 @ 'editSave: ' + JSON.stringify(json, null, 2)45 _ this.ctx.editManager.onSave46 @ json.data47 ._ catch48 =>49 param err50 error err51 _ alert52 @ 'editSave error: ' + err
/ittf/meta/html/t/js/clickListener.js.ittf
1 $group2 #3 # params4 # { ctx5 # { clickHandler6 # { options7 # string container8 # string class9 # string dataField10 # optional11 function setupClickListener12 param ctx13 param options14 var el = wz.element('#' + options.containerId)15 if !el16 throw new Error('wz.setupClickHandler requires an existing `options.containerId` html element. Received: ' + options.container)17 _ wz.click18 @ el19 @ create_clickListener(ctx, options)20 function create_clickListener21 param ctx22 param options23 return24 function clickListener25 param event26 # log 'clickListener.target', event.target27 var dataValue = null28 if options.dataField29 if Array.isArray(options.dataField)30 set dataValue = {}31 foreach item in options.dataField32 set dataValue[item] = event.target.dataset[item]33 else34 set dataValue = event.target.dataset[options.dataField]35 # log 'clickListener.target.dataValue', dataValue36 # log 'has class ' + options.targetClass, wz.hasClass(event.target, options.targetClass)37 if wz.hasClass(event.target, options.targetClass)38 _ ctx.clickHandler.handleClick39 @ event.target40 @ dataValue41 _ event.preventDefault()42 _ event.stopPropagation()43 else44 if ctx.clickHandler.checkClick(event.target)45 _ event.preventDefault()46 _ event.stopPropagation()
/t/js/wz/t/polyfill.js.ittf
1 $group2 if typeof Array.isArray === 'undefined'3 set Array.isArray4 function5 param obj6 return Object.prototype.toString.call(obj) === '[object Array]'
/t/js/wz/t/eventTarget.js.ittf
1 $group2 class wz_EventTarget3 ctor4 set this.handlers = {}5 m __is_Event6 param name7 return Array.isArray(this.events) == false || this.events.indexOf(name) > -18 m emit9 param name10 var args = [].slice.call(arguments, 1)11 # log 'wz_EventTarget.emit.args', arguments, args12 if this.__is_Event(name)13 if this.handlers[name] instanceof Array14 foreach handle in this.handlers[name]15 # log 'handle.context', handle.context16 _ handle.callback.apply(handle.context, args)17 else18 throw new Error(name + ' event cannot be found on TreeView.')19 m on20 param name21 param callback22 param scope23 # log 'EventTarget.on.name,scope', name, scope24 if this.__is_Event(name)25 if !this.handlers[name]26 set this.handlers[name] = []27 _ this.handlers[name].push28 {29 @ callback callback30 @ context scope31 else32 throw new Error(name + ' is not supported by TreeView.')33 m off34 param name35 param callback36 var37 decl index38 decl found = false39 if this.handlers[name] instanceof Array40 _ this.handlers[name].forEach41 function42 param handle43 param i44 set index = i45 if handle.callback === callback && !found46 set found = true47 if found48 _ this.handlers[name].splice(index, 1)49 set wz.EventTarget = wz_EventTarget
/t/js/wz/t/global.js.ittf
1 $group2 class wz_global : wz.EventTarget3 set wz.global = new wz_global()
/t/js/wz/t/events.js.ittf
1 $group2 iife3 if document.addEventListener4 set window.addEvent =5 function6 param elem7 param type8 param handler9 param useCapture10 _ elem.addEventListener(type, handler, !(!(useCapture)))11 return handler12 set window.removeEvent =13 function14 param elem15 param type16 param handler17 param useCapture18 _ elem.removeEventListener(type, handler, !(!(useCapture)))19 return true20 elif document.attachEvent21 set window.addEvent =22 function23 param elem24 param type25 param handler26 set type = ("on" + type)27 var boundedHandler28 function29 return handler.apply(elem, arguments)30 _ elem.attachEvent(type, boundedHandler)31 return boundedHandler32 set window.removeEvent =33 function34 param elem35 param type36 param handler37 set type = ("on" + type)38 _ elem.detachEvent(type, handler)39 return true40 ()
/t/js/wz/t/verify.js.ittf
1 $group2 set wz.isString3 function4 param test5 return test !== null && typeof(test) === 'string'6 set wz.isEmpty7 function8 param test9 return wz.isString(test) == false || test.length == 010 set wz.isObject11 function12 param test13 if test === null || typeof(test) === 'undefined'14 return false15 return {}.toString.call(test) === '[object Object]'16 set wz.isArray17 function18 param test19 if test === null || typeof(test) === 'undefined'20 return false21 if Array.isArray22 return Array.isArray(test);23 return {}.toString.call(test) === '[object Array]'24 set wz.clone25 function26 param obj27 if wz.isArray(obj)28 var ret29 [30 foreach item in obj31 var value32 _ clone33 @ item34 if value !== null35 _ ret.push(value)36 return ret37 elif wz.isObject(obj)38 var ret39 {40 for var prop in obj41 if obj.hasOwnProperty(prop)42 set ret[prop] = clone(obj[prop])43 return ret44 else45 return obj46 set wz.replace47 function48 param text49 param find50 param replace51 if wz.isEmpty(text)52 return text53 return54 _ text.replace55 new RegExp56 _ wz.escapeRegExp(find)57 @ 'g'58 @ replace59 set wz.escapeRegExp60 function61 param text62 if wz.isEmpty(text)63 return text64 return text.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1")
/ittf/css/main.css.ittf
1 css2 $3 var count = [0,1,2,3,4,5];4 var sizes = ['s','m','l','x','xl','xxl'];5 var scale = ['0.4','0.6','1','1.3','1.6','3'];6 var scaleRad = ['3','6','12','18','30','48'];7 var scaleWidth = [15,25,35,65,75,85];8 var scale50 = [50,100,150,200];9 < html10 font-family -apple-system, BlinkMacSystemFont, system-ui, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif11 font-size 16px12 < body13 margin 014 < a15 text-decoration none16 color #ffffff17 $include colors18 $include layout19 . fixed20 position fixed21 . relative22 position relative23 . absolute24 position absolute25 . flex-row26 display flex27 flex-direction row28 . flex-column29 display flex30 flex-direction column31 . justify-content-start32 justify-content start33 . justify-content-center34 justify-content center35 . justify-content-space-between36 justify-content space-between37 . space-between38 justify-content space-between39 . align-items-start40 align-items start41 . align-items-center42 align-items center43 . width-full44 width 100%!important45 . width-half46 width 50%!important47 . text-align-center48 text-align center49 . text-align-left50 text-align left51 . text-align-right52 text-align right53 . text-align-justify54 text-align justify55 . m-0-auto56 margin 0 auto57 $foreach c in scale5058 . m-${c}59 margin ${c}px60 . m-l-${c}61 margin-left ${c}px62 . m-r-${c}63 margin-right ${c}px64 . m-t-${c}65 margin-top ${c}px66 . m-b-${c}67 margin-bottom ${c}px68 $foreach c in count69 . font-${sizes[c]}70 font-size ${scale[c]}em71 . m-${sizes[c]}72 margin ${scale[c]}em73 . m-t-${sizes[c]}74 margin-top ${scale[c]}em75 . m-b-${sizes[c]}76 margin-bottom ${scale[c]}em77 . m-l-${sizes[c]}78 margin-left ${scale[c]}em79 . m-r-${sizes[c]}80 margin-right ${scale[c]}em81 . m-w-${sizes[c]}82 margin-left ${scale[c]}em83 margin-right ${scale[c]}em84 . m-y-${sizes[c]}85 margin-top ${scale[c]}em86 margin-bottom ${scale[c]}em87 . p-${sizes[c]}88 padding ${scale[c]}em89 . p-t-${sizes[c]}90 padding-top ${scale[c]}em91 . p-b-${sizes[c]}92 padding-bottom ${scale[c]}em93 . p-l-${sizes[c]}94 padding-left ${scale[c]}em95 . p-r-${sizes[c]}96 padding-right ${scale[c]}em97 . p-w-${sizes[c]}98 padding-left ${scale[c]}em99 padding-right ${scale[c]}em100 . p-y-${sizes[c]}101 padding-top ${scale[c]}em102 padding-bottom ${scale[c]}em103 . border-${sizes[c]}104 border ${c+1}px solid #323232105 . border-t-${sizes[c]}106 border-top ${c+1}px solid #323232107 . border-b-${sizes[c]}108 border-bottom ${c+1}px solid #323232109 . border-l-${sizes[c]}110 border-left ${c+1}px solid #323232111 . border-r-${sizes[c]}112 border-right ${c+1}px solid #323232113 . radius-${sizes[c]}114 border-radius ${scaleRad[c]}px115 . width-${sizes[c]}116 width ${scaleWidth[c]}%!important117 . font-w-s118 font-weight 300119 . font-w-x120 font-weight 500121 . font-w-xxl122 font-weight 700123 $include form124 $include icons
/ittf/css/t/colors.css.ittf
1 $group2 - header3 - main4 - main-content5 - footer6 < :root7 --color-tn-bg #3131318 --color-input-bg #dedede9 --color-input-border #76767610 --color-shadow-inset #a0a0a011 --color-text-primary #00000012 --color-success #2ea44f13 --color-error #ff000014 --color-warning #dbab0915 . color-header16 color #efefef17 . bg-color-header18 background-color #43434319 . color-header-inverse20 color #ff479021 . bg-color-header-inverse22 background-color #73737323 . color-main24 color #efefef25 . bg-color-main26 background-color #49494927 . color-main-content28 color #efefef29 . bg-color-main-content30 background-color #51515131 . color-black32 color #00000033 . bg-white34 background-color #00000035 . color-white36 color #ffffff37 . bg-black38 background-color #00000039 . color-success40 color var(--color-success)41 . bg-success42 background-color var(--color-success)43 . color-error44 color var(--color-error)45 . bg-error46 background-color var(--color-error)47 . color-warning48 color var(--color-warning)49 . bg-warning50 background-color var(--color-warning)51 . bg-filter52 background-color #eeeeff53 . bg-list54 background-color #eeffee
/ittf/css/t/layout.css.ittf
1 $group2 . container-703 width 70%4 margin 0 auto5 . container-806 width 80%7 margin 0 auto8 . container-909 width 90%10 margin 0 auto11 . flex-row12 display flex13 flex-direction row14 . flex-column15 display flex16 flex-direction column17 . justify-content-start18 justify-content start19 . justify-content-center20 justify-content center21 . justify-content-space-between22 justify-content space-between23 . space-between24 justify-content space-between25 . align-items-start26 align-items start27 . align-items-center28 align-items center29 . grid30 display grid31 . width-10032 width 100%33 . width-5034 width 50%35 . height-10036 height 100%37 . height-5038 height 50%
/ittf/css/t/form.css.ittf
1 $group2 . form-control3 background-color var(--color-input-bg)4 background-position right 8px center5 background-repeat no-repeat6 border 1px solid var(--color-input-border)7 border-radius 6px8 box-shadow var(--color-shadow-inset)9 color var(--color-text-primary)10 font-size 14px11 line-height 20px12 outline none13 padding 5px 12px14 vertical-align middle15 # ==========================================================================16 # Form17 # ==========================================================================18 . form-card19 padding 30px20 border 1px solid #ebebeb21 . form-title22 font-size 30px23 font-weight 70024 margin-bottom 20px25 # ==========================================================================26 # Control27 # ==========================================================================28 . control-group29 width 100%30 padding 10px31 margin-bottom 5px32 . single-control33 width 100%34 margin-bottom 5px35 . control-label36 font-weight bold37 margin-bottom 7px38 . control-error39 font-size 12px40 color red41 # ==========================================================================42 # Label43 # ==========================================================================44 < label.required45 position relative46 < label.required:after47 content '*'48 margin-left 2px49 color #b9000050 # ==========================================================================51 # GRID52 # ==========================================================================53 . grid-row-254 display grid55 grid-template-columns 1fr 1fr56 . grid-row-357 display grid58 grid-template-columns 1fr 1fr 1fr59 . input-group60 position relative61 width 100%62 margin-bottom 1px63 padding-bottom 4px64 # ==========================================================================65 # BUTTON66 # ==========================================================================67 . btn68 line-height 40px69 display inline-block70 padding 0 25px71 cursor pointer72 color #fff73 font-family "Roboto", "Arial", "Helvetica Neue", sans-serif74 transition all 0.4s ease75 font-size 14px76 font-weight 70077 . btn--radius78 border-radius 3px79 . btn--green80 background #57b84681 . btn--green:hover82 background #4dae3c83 # ==========================================================================84 # Input85 # ==========================================================================86 < input87 box-sizing border-box88 border 1px solid #ebebeb89 padding 14px 20px90 border-radius 5px91 font-size 14px92 font-family inherit93 < input:focus94 border 1px solid #009e0095 < input.error96 border 1px solid #c7000097 . input-icon98 position absolute99 font-size 18px100 color #ccc101 right 8px102 top 50%103 transform translateY(-50%)104 cursor pointer105 . input--style-2106 color #666107 font-size 16px108 font-weight 500109 . input--style-2::-webkit-input-placeholder110 color #808080111 opacity .4112 . input--style-2:-moz-placeholder113 color #808080114 opacity .4115 . input--style-2::-moz-placeholder116 color #808080117 opacity .4118 . input--style-2:-ms-input-placeholder119 color #808080120 opacity .4121 . input--style-2:-ms-input-placeholder122 color #808080123 opacity .4124 # ==========================================================================125 # Object condition126 # ==========================================================================127 . object-condition128 border 1px solid #cbcbcb129 padding 5px130 background-color #efefef131 . object-condition-checkbox132 background-color #fff
/ittf/css/t/icons.css.ittf
1 $group2 . octicon3 fill currentColor4 display inline-block5 overflow visible!important6 vertical-align text-bottom