lexgui 0.1.46 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/codeeditor.js +12 -10
- package/build/lexgui.css +345 -119
- package/build/lexgui.js +8313 -7874
- package/build/lexgui.min.css +1 -0
- package/build/lexgui.min.js +1 -0
- package/build/lexgui.module.js +624 -204
- package/build/lexgui.module.min.js +1 -0
- package/changelog.md +24 -2
- package/demo.js +89 -873
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import url(https://fonts.googleapis.com/css2?family=Ubuntu:wght@700&display=swap);@import url(https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap);#lexroot,#modal{left:0;top:0;width:100%;height:100%;position:absolute;right:0}.commandbar input,.lexwidgetname,body,html{font-family:var(--global-font)}.lexdialog,.lexpanel,body,html{overflow:hidden}.lexbranchtitle,.lexdialogtitle{font-family:var(--global-title-font);font-weight:600}.commandbar,.lexcard span{--webkit-backdrop-filter:blur(12px)}.lextable table,thead{border-collapse:separate}@font-face{font-family:GoogleSans;src:url("https://raw.githubusercontent.com/jxarco/lexgui.js/master/data/GoogleSans.ttf")}:root{color-scheme:dark;--global-font:"GoogleSans",sans-serif;--global-title-font:"GoogleSans",sans-serif;--global-font-size:13px;--global-font-size-big:15px;--global-color-primary:light-dark(#f9f9f9, #141414);--global-color-secondary:light-dark(#ececec, #252525);--global-color-terciary:light-dark(#e0e0e0, #3a3a3a);--global-color-quaternary:light-dark(#c8c8c8, #494949);--global-color-quinary:light-dark(#b0b0b0, #5c5c5c);--global-selected:#2d69da;--global-selected-light:#0d99ff;--global-selected-dark:#304b86;--global-color-accent:#ec5377;--global-color-warning:#ffc107;--global-color-error:#f54c4c;--global-button-color:light-dark(#f9f9f9, #3e3e3e);--global-button-color-hovered:light-dark(#ececec, #444);--global-text-primary:light-dark(#202124, #f4f4ffe6);--global-text-secondary:light-dark(#353636, #bfbfc0ea);--global-text-terciary:light-dark(#5a5a5af5, #929292d8);--global-text-quaternary:light-dark(#6b6a6af5, #585757e1);--global-intense-background:light-dark(#fefefe, #121212);--global-medium-background:#252525;--global-blur-background:light-dark(#f7f7f7d8, #1f1f1fe7);--global-color-transparent:#7b8ae200;--transition-time:1000;--code-editor-font-size:14px;--code-editor-row-height:20px;--graphnode-background:17,17,17}:root[data-theme=light]{color-scheme:light}.orange{color:orange}.gray{color:gray}.dodgerblue{color:#1e90ff}.lightblue{color:#5aa8f7}::-webkit-scrollbar{height:3px;width:4px;background:0 0;margin-right:2px}::-webkit-scrollbar-thumb{background:#aaaaaaa5;border-radius:6px}::-webkit-scrollbar-corner{display:none}::-webkit-scrollbar-thumb:hover{background:#aaa}body,html{width:100%;height:100%;margin:0;padding:0}:root[data-strictVP=false]{overflow-y:auto;bottom:unset}.lexareatabscontainer .lexpanel:not(.lexoverlaybuttons),.lextimeline .lextree .lextreeitem,blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}a:any-link{color:var(--global-selected-light)}canvas{border-radius:6px}dialog{animation:.1s forwards dialogHide}@keyframes dialogShow{from{opacity:0;transform:translate3d(0,-8px,0) scale3d(.92,.92,.92) rotate(0)}to{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1) rotate(0)}}@keyframes dialogHide{from{opacity:1;transform:translate3d(0,0,0) scale3d(1,1,1) rotate(0)}to{opacity:0;transform:translate3d(0,-8px,0) scale3d(.92,.92,.92) rotate(0)}}body.nocursor *{cursor:none!important}body.noevents *{pointer-events:none!important}.grabbing{cursor:move}.hidden{display:none!important}.hiddenOpacity{opacity:0!important;pointer-events:none}#modal{bottom:0;background-color:rgba(0,0,0,.5);z-index:99;opacity:1;transition:opacity .2s ease-in}#lexroot{bottom:0}.leximage,.lexsidebar{text-align:center}.leximage img{max-width:256px}.lexicon{margin-left:4px;cursor:pointer;line-height:inherit!important;color:var(--global-text-secondary)}.commandbar,.lexdialog{margin:0;position:absolute}.lexareatabs .lexareatab:hover,.lexicon:hover,.lextabscontainer .tabs .lextab.selected,.lextabscontainer .tabs .lextab:hover,.lextree .lextreeitem a:hover{color:var(--global-text-primary)}.commandbar a,.commandbar input,.lexdialogtitle,.lexfooter .social a,.lexfooter a,.lexicon:active{color:var(--global-text-secondary)}.lexicon:active{margin-top:.01em}.commandbar{background-color:var(--global-blur-background);backdrop-filter:blur(12px);border-radius:8px;border:1px solid #d0d0ec2a;width:30%;max-width:740px;top:15%;left:calc(50% - min(15%,740px));padding:0 0 2px;flex-wrap:wrap;z-index:105;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.commandbar[open],.lexinlinewidgets,.lexvector{display:flex}.commandbar .gs-header{width:100%;height:32px;display:flex;padding:6px}.commandbar a{padding:10px;background-color:var(--global-color-terciary);border-top-left-radius:6px;border-bottom-left-radius:6px;font-size:12px}.commandbar input{width:100%;flex:50%;background:0 0;border-top-right-radius:6px;border-bottom-right-radius:6px;background-color:var(--global-color-terciary);outline:0;border:none;line-height:23px;font-size:14px;font-weight:600}.commandbar .lexarea{background:0 0!important}.lexarea.overlay-bottom,.lexarea.overlay-left,.lexarea.overlay-right,.lexarea.overlay-top,.lexdialog.pocket,.lexfooter,.overlay-bottom .lexarea,.overlay-bottom .lextimeline,.overlay-bottom .lextimelinearea,.overlay-left .lexarea,.overlay-left .lextimeline,.overlay-right .lexarea,.overlay-right .lextimeline,.overlay-right .lextimelinearea,.overlay-top .lexarea,.overlay-top .lextimeline,.overlay-top .lextimelinearea{background-color:var(--global-color-primary)}.commandbar .searchitembox{flex-basis:100%;overflow-y:scroll;max-height:calc(512px - 48px)}.commandbar .searchitembox::-webkit-scrollbar{display:none}.commandbar .searchitembox .searchitem{padding:10px 10px 10px 50px;color:var(--global-text-primary);font-size:var(--global-font-size);line-height:15px;cursor:pointer}.commandbar .searchitembox .searchitem a{padding:0;margin-left:-28px;margin-top:2px;color:var(--global-selected-light);float:left}.commandbar .searchitembox .searchitem i,.commandbar .searchitembox .searchitem img{width:12px;margin-right:4px;margin-top:-2px;vertical-align:middle}.commandbar .searchitembox .searchitem i{font-size:11px}.commandbar .searchitembox .searchitem .lang-ext{color:#676e75;font-size:var(--global-font-size)}.commandbar .searchitembox .searchitem.last{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.commandbar .searchitembox .searchitem.hovered,.lexcontextmenu .lexcontextmenuentry:hover,.lexcontextmenubox .lexcontextmenuentry:hover:not(.cmtitle){background-color:var(--global-selected);color:#f5f5f5}.lexfooter{min-height:96px;padding:15px;width:100%;font-size:.875rem;line-height:1.25rem}.lexfooter .wrapper{width:calc(100% - 30px)}.lexfooter .columns{display:grid;text-align:center}.lexfooter ul{list-style-type:none;padding:0;margin:0 0 12px}.lexfooter h2{margin-block-start:0.83em;margin-block-end:0.83em}.lexfooter ul li{margin-bottom:8px;font-size:14px}.lexfooter a{text-decoration:none;transition:.15s ease-in-out}.lexbutton:disabled,.lexdialogcloser:hover,.lexwidgetseparator div{color:var(--global-text-terciary)}.lexfooter .credits-and-socials{display:grid;align-items:center;grid-template-columns:1fr 1fr;padding-inline:36px}.lexbranch .branchicon,.lexfooter p,.lexwidget *{font-size:var(--global-font-size)}.lexfooter .social{text-align:right;margin-block-start:1em;margin-block-end:1em}@media (max-width:768px){.lexfooter .credits-and-socials{display:block;text-align:center}.lexfooter .social{text-align:center}}.lexfooter .social svg{max-width:28px;max-height:28px;transition:.2s ease-in-out;fill:var(--global-text-secondary)}.lexfooter .social a{max-width:28px;max-height:28px;margin-right:6px;vertical-align:middle}.lexfooter .social a a{font-size:24px}.lexcodeeditor .autocomplete pre span.word-highlight,.lexfooter a:hover,.lextimeline .lexbutton:hover{color:var(--global-selected-light)}.lexfooter svg:hover{fill:var(--global-selected-light)}.lexfooter hr{border:none;border-top:1px solid #2c2c2c}.lexdialog{outline:0;border:none;background:0 0;padding:0;min-width:256px;min-height:max-content;box-shadow:0 2px 8px #101010;border-radius:8px;z-index:101;background-color:var(--global-color-secondary)}.lexdialogcontent.notitle,.lexdialogtitle{border-top-left-radius:8px;border-top-right-radius:8px}.lexbranch .lexbranchcontent,.lexdialog.pocket.minimized .lexdialogtitle,.lexdialogcontent{border-bottom-left-radius:8px;border-bottom-right-radius:8px}.lexdialogtitle{outline:0;font-size:18px;width:calc(100% - 24px);padding:12px 12px 12px 16px;display:flex;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;align-items:center;text-shadow:0 2px 4px #8e8f9483}.lexbranchtitle,.lexdialogcloser{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.lexdialogcontent{padding:15px;word-break:break-all;color:var(--global-text-primary);font-size:14px;margin-left:0!important}.lexdialogcontent.notitle{padding-top:36px}.lexdialogcloser{font-size:16px;color:var(--global-text-secondary);margin-right:.4em;user-select:none}.lexdialogcloser.notitle{position:absolute;top:.8em;right:.6em}.lexdropdown,.lextoggle,.lexwidget .lextext{position:relative}.lexdialogcloser:active{margin-top:.1em}.lexdialogcloser.notitle:active{margin-top:.05em}.lexdialog.pocket.dockable{transition:left .2s ease-out,top .2s ease-out,transform .2s ease-in}.lexdialog.pocket .lexdialogtitle{width:calc(100% - 28px);font-size:14px;background:var(--global-intense-background)}.lexdialog.pocket .lexdialogcontent{padding:4px 4px 4px 8px;max-height:-webkit-fill-available;opacity:1;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-ms-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.lexdialog.pocket.minimized .lexdialogcontent{max-height:0;padding:0;opacity:0;-webkit-transition:padding .2s;-moz-transition:padding .2s;-ms-transition:padding .2s;-o-transition:padding .2s;transition:padding .2s}.lexpopup{background:var(--global-blur-background)}.lexcontainer.col{flex-direction:column}.lexarea{background-color:var(--global-color-primary);margin:0}.lexsplitbar{background:rgba(186,188,207,.01);border-radius:8px}.lexsplitbar:hover{background-color:#8e949be8;background:rgba(186,188,207,.45)}.lexsplitbar.horizontal{cursor:ew-resize}.lexsplitbar.vertical{cursor:ns-resize;transform:translateY(-3px);left:calc(50% - 32px)}.lexsplitbar.dragging-split-area,.lexwidget .lextext:not(:has(div)){background-color:var(--global-button-color)}.lexbranch .lexbranchcontent,.lexbranchtitle{background-color:var(--global-color-secondary)}.lexpanel{margin:0 0 0 3px;overflow-y:scroll}.lexpanel::-webkit-scrollbar{display:none}.lexbranch{border-radius:6px;margin-bottom:4px!important}.lexbranchtitle,.lexbranchtitle.wtabs span.first{border-top-left-radius:8px}.lexbranch .lexbranchcontent{padding:4px}.lexbranch.last .lexbranchcontent{overflow:hidden;margin-bottom:6px}.lexbranchtitle{font-size:15px;color:var(--global-text-primary);text-shadow:0 1px 6px #5554547c;padding:10px;border-top-right-radius:8px;user-select:none}.lexdropdown .lexdropdownitem,.lextoggle{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.lexbranchtitle:active{padding-left:11px}.lexbranchtitle.wtabs{display:flex;padding:0;cursor:default;background-color:var(--global-color-terciary);text-shadow:none;color:#5f6770}.lexbranchtitle.wtabs span{padding:10px;cursor:pointer}.lexbranchtitle.wtabs span:hover{background-color:#47505872}.lexbranchtitle.wtabs span:active{margin-top:1px}.lexbranchtitle.wtabs span.selected{border-top:2px solid var(--global-selected-light);background-color:var(--global-color-secondary);color:var(--global-text-primary);text-shadow:0 1px 2px #000}.lexbranch.first .lexbranchtitle{margin-top:4px}.lexbranch.last.closed .lexbranchtitle{margin-bottom:6px}.lexbranch .switch-branch-button{float:right;font-size:11px;margin:8px 6px -4px 2px;transition:.1s}.lexbranch.closed .switch-branch-button{transform:rotate(180deg)}.lexbranch.closed .lexbranchtitle{background-color:inherit}.lexinlinewidgets .lexwidget{padding-left:10px;padding-right:10px}.lexinlinewidgets .lexwidgetname.float-center,.lexoverlaybuttonscontainer.center{justify-content:center}.lexinlinewidgets .lexwidgetname.float-right{justify-content:end;-moz-transform:translateX(-1em);-webkit-transform:translateX(-1em);transform:translateX(-1em)}.lexdropdown .option:not(.media),.lexwidget.nobranch{padding-left:12px}.lexwidget.micro,.lexwidget.micro button{padding-left:4px;padding-right:4px}.lexwidget.auto{width:unset!important}.lexwidget.micro{min-width:24px;width:3%!important}.lexwidget.right{margin-left:auto;margin-right:8px}.lexwidget.small{width:5%!important}.lexwidget.md{width:75%!important}.lexwidgetseparator div{-ms-transform:translateY(-11px);-webkit-transform:translateY(-11px);transform:translateY(-11px);height:2px;width:11px;cursor:ew-resize}.lexwidgetseparator div:hover{color:#4d4d5ac4}.lextitle.link,.lexwidget .lextext div,.lexwidgetname{color:var(--global-text-secondary)}.lexwidgetseparator div div{background:#dddddd33}.lexwidgetname{white-space:nowrap;overflow:hidden;display:flex;justify-content:space-between}.lexbutton,.lexdropdown{display:grid;align-content:center}.lexbutton,.lexwidget input:not(.lexcheckbox,.lextoggle),.lexwidget textarea{color:var(--global-text-primary);outline:0;font-family:var(--global-font)}.lexwidget input:not(.lexcheckbox,.lextoggle){background:0 0;padding:3px;font-weight:500;border-radius:6px;border:2px solid var(--global-color-transparent);transition:border-color .1s linear}.lexwidget .lextext{border-radius:6px;transition:.1s linear}.lexwidget .lextext.formlabel{margin-left:8px;margin-bottom:-12px}.lextimeline .lexbutton.accept:hover,.lexwidget .lextext:not(:has(div)):hover,.lexwidget .numberbox:hover{background-color:var(--global-button-color-hovered)}.lexwidget .lextext input{padding:5px}.lexwidget .lextext input:focus,.lexwidget textarea:focus{border:2px solid var(--global-selected)}.lexwidget .lextext input:invalid:focus{border:2px solid var(--global-color-error)}.lexwidget .lextext div{padding-left:6px}.lexwidget .lextext.lexwarning div{color:var(--global-color-warning);font-weight:700}.lexwidget .lextext.lexwarning i{color:var(--global-color-warning);margin-right:16px}.lexwidget .inputicon{padding:6px;font-size:10px;margin-top:2px;margin-left:2px}.lexwidget textarea{word-break:break-word;background:0 0;padding:5px;font-weight:600;border-radius:6px;border:2px solid var(--global-color-transparent);transition:.1s linear}.lexwidget textarea:disabled{resize:none}.lexwidget input.colorinput{border:none;margin-left:-4px}.lexwidget input:disabled:not(.lextoggle){outline:0;border:none;color:var(--global-text-terciary)}.lexseparator{border-bottom:1px solid var(--global-button-color);margin:5px 0 5px 10px}.lexbranch .lexseparator{border-top:1px solid #e7e7e7;border-bottom:1px solid #c1c1c1;width:-moz-calc(100% - 8px);width:-webkit-calc(100% - 8px);width:calc(100% - 8px);margin:5px 0 5px 4px}.lexinlinewidgets .lextitle{margin:8px;height:20px;flex:none}.lextitle a{margin-top:.3em;margin-right:.7em;color:var(--global-selected-light);font-size:11px}.lextitle.link{text-decoration:none;transition:transform .1s}.lextitle.link:hover{color:#049ef4;transform:scale(1.02)}.lexbutton{--button-color:var(--global-button-color);background-color:var(--button-color);border-radius:6px;border:1px solid transparent;min-height:22px!important;font-weight:500;white-space:nowrap;overflow:hidden;cursor:pointer;transition:.1s linear;padding:.35rem}:root[data-theme=light]{background-color:var(--global-color-secondary);text-shadow:0 1px 6px #afafaf7c;border:1px solid var(--global-color-terciary)!important}.lexbutton.secondary{--button-color:var(--global-selected-light)!important;color:#f9f9f9!important}.lexbutton.accent{--button-color:var(--global-color-accent)!important;color:#f9f9f9!important}.lexbutton.warning{--button-color:var(--global-color-warning)!important;color:#793205!important}.lexbutton.error{--button-color:var(--global-color-error)!important;color:#52020d!important}.lexbutton.xs{width:25%!important;margin:0 auto}.lexbutton.sm{width:45%!important;margin:0 auto}.lexbutton.outline{box-shadow:none;--button-color:var(--global-intense-background);border:1px solid var(--global-color-quaternary)!important}.lexbutton.left{text-align:left;padding-inline:12px}.lexbutton span:has(.lexbadge){display:inline-flex;flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.4rem}.lexbutton.foldback{padding:11px 10px 14px;float:right;align-items:center;margin-right:4px;margin-top:2px}.lexbutton a{margin-left:0;font-size:10px}.lexcombobuttons .lexbutton.combo a,.lexdropdown ul .lexlistitem,.lexvector a{font-size:11px}.lexbutton.array span{display:inline-flex;margin-left:8px}.lexbutton.array a{margin-top:2px;margin-right:3px;margin-left:auto}.lexbutton:hover{background-color:color-mix(in srgb,var(--button-color),#000 7%);color:var(--global-text-primary)}.lexbutton:active:not(.lexbutton.combo){background-color:color-mix(in srgb,var(--button-color),#fff 4%);color:var(--global-text-secondary);transform:scale(.99)}.lexbutton.selected{background:#3c4145;color:#ddd}.lexbutton.noname{margin-left:0;margin-top:0}.lexcombobuttons .lexcombobuttonsbox{display:flex;background-color:light-dark(var(--global-color-terciary),var(--global-button-color));width:max-content;justify-self:center;padding:3px;border-radius:8px;gap:.2em}.lexcombobuttons.right .lexcombobuttonsbox{justify-self:right}.lexcombobuttons.left .lexcombobuttonsbox{justify-self:left}.lexcombobuttons .lexbutton.combo{display:flex;padding:.7em 1.6em;transition:.2s;background:0 0}.lexarrayitems .lexwidgetname,.lexcombobuttons .lexbutton.combo:hover,.lexcontextmenu .lexcontextmenuentry:active,.lextabscontainer .tabs .lextab:active,.lextree .lextreeitem.selected .itemicon:hover,.lexvector .vecbox .vecinput:focus,.numberbox .vecinput:focus{color:var(--global-text-secondary)}.lexcombobuttons .lexbutton.combo.selected{background-color:var(--global-color-primary);outline:0;color:var(--global-text-primary)}.lexcombobuttons .lexbutton.combo:active{outline:0;color:#ccc}.lexcombobuttons .lexbutton.combo span{line-height:18px}.lexcolor .lexwidget,.lexdropdown .lexwidget{padding:0}.lexdropdown .lexfilter{width:calc(100% - 6px)!important;padding:2px 3px;background-color:var(--global-color-primary);border-bottom:1px solid;border-color:color-mix(in srgb,var(--global-text-terciary),#00000000 75%)}.lexdropdown .lexdropdownoptions,.lexdropdown ul{padding:0;margin:0;background-color:var(--global-color-primary)}.lexdropdown .lexfilter a{font-size:10px;padding-inline:4px}.lexinputmeasure,.lextree,.lextree .lextreetools input{font-size:var(--global-font-size)}.lexdropdown .option{display:flex;flex-direction:column;align-items:center;width:100%;position:relative}.lexdropdown .lexlistitem{height:fit-content}.lexdropdown .lexdropdownoptions{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:none;outline:0;width:fit-content;max-height:-webkit-fill-available;position:fixed;z-index:10000;box-shadow:0 0 6px rgba(0,0,0,.603);border-bottom-left-radius:6px;border-bottom-right-radius:6px;overflow-y:auto;overflow-x:hidden}.lexdropdown ul{list-style:none;z-index:10;width:100%;height:100%;box-shadow:0 0 6px rgba(175,175,175,.788)}.lexdropdown .lexdropdownoptions.place-above{border-radius:6px 6px 0 0}.lexdropdown .lexdropdownitem{width:100%;cursor:pointer;color:var(--global-text-primary);min-height:20px;line-height:22px;align-content:center;display:flow-root;padding:2px 32px 2px 0;user-select:none}.lexcodeeditor.disabled .lexareatab,.lexdropdown .lexdropdownitem.empty{cursor:default}.lexdropdown .lexdropdownitem.empty .option{padding:12px}.lexdropdown .lexdropdownitem:not(.empty):hover{background-color:var(--global-selected);color:var(--global-text-primary)}.lexdropdown .lexdropdownitem:not(.empty):active{color:#fff}.lexdropdown .lexdropdownitem a{display:none;right:24px;position:absolute}.lexcheckboxcont .checkboxtext,.lexdropdown .lexdropdownitem.selected,.lextogglecont .toggletext{font-weight:700}.lexdropdown .lexdropdownitem.selected a{display:block}.lexdropdown img{max-height:64px;margin-top:8px}.lexdropdown .lexdropdownitem:hover{background-color:var(--global-selected-light);color:#fff}.lexcheckbox.primary{--checkbox-color:var(--global-selected)}.lexcheckbox.secondary{--checkbox-color:var(--global-selected-light)}.lexcheckbox.accent{--checkbox-color:var(--global-color-accent)}.lexcheckbox.warning{--checkbox-color:var(--global-color-warning)}.lexcheckbox.error{--checkbox-color:var(--global-color-error)}.lexcheckbox:before{content:"";opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.lexcheckbox:checked,.lexcheckbox[aria-checked=true]{background-color:var(--checkbox-color);color:#fff!important}.lexcheckbox:checked:before,.lexcheckbox[aria-checked=true]:before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}.lexcheckboxcont,.lextogglecont{font-weight:700;display:inline-flex;gap:8px;margin:0 auto}.lexcheckboxsubmenu,.lextogglesubmenu{width:100%;padding:6px;color:var(--global-text-secondary);margin-top:-1px}.lextoggle{--toggle-color:#1a1a1a;border:1px solid transparent;color:#f9f9f9;background-color:var(--global-color-quaternary);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;vertical-align:middle;user-select:none;border-radius:12px;padding:3px;width:36px;height:22px;flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;transition:color .3s,grid-template-columns .2s;display:inline-grid}.lexvector .vecbox span,.lexwidget .lexunit{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.lextoggle.outline{border:1px solid transparent}.lextoggle.primary{--toggle-color:var(--global-selected)}.lextoggle.secondary{--toggle-color:var(--global-selected-light)}.lextoggle.accent{--toggle-color:var(--global-color-accent)}.lextoggle.warning{--toggle-color:var(--global-color-warning)}.lextoggle.error{--toggle-color:var(--global-color-error)}.lextoggle>*{z-index:1;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.lextoggle>:focus{outline-style:none}.lextoggle>:nth-child(2){color:#1f1f1f;rotate:none}.lextoggle>:nth-child(3){color:#1f1f1f;opacity:0;rotate:-15deg}.lextoggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.lextoggle:has(:checked)>:nth-child(3){opacity:1;rotate:none}.lextoggle:before{aspect-ratio:1;border-radius:50%;content:"";height:100%;background-color:currentColor;grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}.lexvector .vecbox,.lexwidget .numberbox{margin-right:2px;position:relative;transition:.1s linear}.lextoggle:focus-visible,.lextoggle:has(:focus-visible){outline-offset:2px;outline:solid 2px}.lextoggle:checked,.lextoggle:has(>input:checked),.lextoggle[aria-checked=true]{border:1px solid var(--global-color-secondary);background-color:var(--toggle-color);grid-template-columns:1fr 1fr 0fr}.lexvector .vecbox,.lexwidget.nobranch .lexvector .vecbox:hover{background:var(--global-button-color)}.lextoggle.outline:checked,.lextoggle.outline:has(>input:checked),.lextoggle.outline[aria-checked=true]{color:var(--toggle-color);border:1px solid currentColor;background-color:var(--global-color-primary)}.lextree,.lextree span{color:var(--global-text-secondary)}:is(.lextoggle:checked,.lextoggle[aria-checked=true],.lextoggle:has(>input:checked)):before{background-color:currentColor}.lextoggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.lextoggle:disabled{border:1px solid var(--global-text-terciary);cursor:not-allowed}.lextoggle:disabled:before{background-color:var(--global-text-terciary)}.lexcolor{display:flex;align-items:center}.lexcolor input{width:96px}.lexcolor input[type=color]::-webkit-color-swatch-wrapper{padding:2px;border-radius:4px}.lexcolor input[type=color]::-webkit-color-swatch{border-radius:4px;border:none}.lexcolor:has(input:focus) input[type=color]{outline:2px solid var(--global-selected);border-radius:4px}.lexcolor .colorinfo{color:var(--global-text-primary);min-width:56px;margin-left:8px;font-weight:600}.lexcard span a:hover,.lexcard:hover a,.lextree .lextreeitem .itemicon:hover,.lexwidget .lexsizecross{color:var(--global-selected)}.lexcolor input[type=color],.lexprogressbar.editable:hover{cursor:pointer}.lexvector a{width:48px;margin-left:6px;margin-right:6px}.lexvector .vecbox{display:flex;width:100%;border-radius:4px;border:2px solid var(--global-color-transparent)}.lexvector .vecbox:hover,.lexwidget.nobranch .lexvector .vecbox{background:var(--global-button-color-hovered)}.lexvector a.fa-lock{min-width:12px}.lexwidget .numberbox .drag-icon,.lexwidget .vecbox .drag-icon{position:absolute;width:2px;right:.25em;top:25%;font-size:11px;color:var(--global-text-secondary);z-index:11}.lexvector .vecbox:has(input:focus){border:2px solid var(--global-selected)}.lexvector .vecbox span{min-width:3px;width:3px;justify-content:center;background-color:#22292fbf;display:flex;font-weight:600;border-radius:4px;user-select:none}.lexvector .vecbox span.x{background-color:#eb6767}.lexvector .vecbox span.y{background-color:#72e27d}.lexvector .vecbox span.z{background-color:#7490eb}.lexvector .vecbox span.w{background-color:#fff}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{appearance:none;-webkit-appearance:none;-moz-appearance:none;margin:0}input[type=number]{appearance:textfield;-moz-appearance:textfield}.lexvector .vecbox .vecinput,.numberbox .vecinput{margin-left:2px;border:none;width:100%}.lexwidget .numberbox{display:grid;background-color:var(--global-button-color);border:2px solid var(--global-color-transparent);border-radius:6px}.lexwidget .numberbox:has(input:focus){border:2px solid var(--global-selected)}.lexwidget .numberbox span{position:absolute;top:1px;pointer-events:none}.lexinputmeasure{font-family:var(--global-font)}.lexinputslider{appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none!important;width:calc(100% - 12px);outline:0;opacity:.7;transition:opacity .2s;-moz-transition:.2s;-webkit-transition:.2s}.lexinputslider:hover,.lexsidebar .lexsidebarentry button:hover+.lexsidebarentrydesc{opacity:1}input[type=range]{height:1px}.lexinputslider::-moz-range-track{height:1px;background:#a19dc9}.lexinputslider::-webkit-slider-runnable-track{height:1px;background:#a19dc9}.lexinputslider::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;margin-top:-6px;width:12px;height:12px;border:1px solid #c9c7de;border-radius:6px;background:light-dark(var(--global-selected-light),var(--global-selected));box-shadow:0 0 6px #505050;cursor:pointer}.lexinputslider::-moz-range-thumb{margin-top:-8px;width:8px;height:8px;border-radius:6px;background:#a19dc9;cursor:pointer}.lexwidget .numberbox .drag-icon{right:.8em}.lexwidget .lexsizecross{font-weight:800}.lexwidget .lexunit{user-select:none}.lextree .lextreeitem,.lextree span{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.lexwidget .lexpad{place-items:center}.lexwidget .lexpad .lexinnerpad{border-radius:4px;background-color:light-dark(var(--global-color-terciary),var(--global-intense-background))}.lexwidget .lexpad .lexinnerpad .lexpadthumb{background-color:var(--global-selected-light);width:10%;height:10%;border-radius:2px;transform:translate(0,0)}.lextabscontainer{width:100%;height:100%;display:flex}.lextabscontainer.horizontal{display:table}.lextabscontainer .tabs{padding:4px;background:0 0!important;border-right:1px solid #a2a5c36a;justify-items:center;min-width:32px}.lextabscontainer.horizontal .tabs{border-right:none;border-bottom:1px solid #a2a5c36a;display:flex}.lextabscontainer .widgets{width:100%;padding:4px}.lextabscontainer .tabs .lextab{padding:4px;margin-bottom:10px;border-radius:4px;color:#8184a264;cursor:pointer;margin-right:4px;text-align:center}.lextree .lextreetools.notitle,.lextree span{border-top-left-radius:8px;border-top-right-radius:8px}.lextabscontainer.horizontal .tabs .lextab{margin-bottom:0;margin-right:10px}.lexgraphnode .lexgraphnodeios .lexgraphnodeoutputs,.lextabscontainer.horizontal .tabs .lextab a.withname{margin-left:6px}.lextabscontainer .tabs .lextab.last{margin-right:4px}.lextree{border-radius:6px;width:calc(100% - 6px);min-height:12px;margin:6px auto -8px;font-weight:600}.lextree .lextreetools{background:var(--global-color-secondary);padding:2px 6px;display:flex;align-items:center;border-radius:10px;margin-top:4px}.lextree .lextreetools input{padding-left:8px}.lextree .lextreetools.notitle{padding-top:14px}.lextree .lextreetools a{margin-right:8px}.lextree span{padding:8px;display:block;user-select:none;font-size:var(--global-font-size-big);font-weight:800}.lextree ul{padding-bottom:16px;padding-inline-start:0px}.lextree input{background:0 0;color:var(--global-text-primary);outline:0;border:none;font-size:var(--global-font-size);font-family:var(--global-font);line-height:23px;margin-left:-2px}.lextree .lextreeitem{list-style-type:none;align-items:center;margin-bottom:3px;line-height:25px;cursor:pointer;outline:0;border-radius:6px;user-select:none}.lexbadge,.lexprogress{justify-content:center}.lexmenubar .lexmenuentry,.lexprogressbar{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.lextree .lextreeitem .tree-item-icon,.lextree .lextreeitem img{width:12px;height:12px;margin-right:4px;vertical-align:middle;margin-top:-1px}.lextree .lextreeitem.draggingover{background:#7b8ae27b}.lextree .lextreeitem:hover{color:var(--global-text-primary);background:rgba(129,132,163,.191)}.lextree .lextreeitem.selected{color:var(--global-text-primary);background:light-dark(var(--global-selected-light),var(--global-selected))}.lextree .lextreeitem a{margin-right:6px;margin-top:4px;font-size:10px}.lextree .lextreeitem a.hierarchy{font-size:5px;margin-right:6px;margin-top:4px;vertical-align:2px}.lextree .lextreeitem a:active{color:var(--global-button-color);margin-top:6px}.lextree .lextreeitem.parent a{font-size:10px;vertical-align:1px}.lextree .lextreeitem .itemicon{font-size:10px!important;float:right;margin-top:7px;margin-right:8px}.lextree .lextreeitem .itemicon:active{margin-top:7px}.lexfileinput::file-selector-button{align-content:center;background-color:var(--global-button-color);border-radius:6px;border:none;margin-top:2px;min-height:22px!important;color:var(--global-text-primary);font-weight:500;outline:0;white-space:nowrap;overflow:hidden;cursor:pointer;font-family:var(--global-font);transition:.1s linear}.codechar,.lexcodeeditor .code{font-family:CommitMono,monospace;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"ss04","ss05"}.lexfileinput::file-selector-button:hover{background-color:var(--global-button-color-hovered);color:var(--global-text-primary)}.lexfileinput::file-selector-button:active{background-color:var(--global-color-terciary);color:var(--global-text-secondary);transform:scale(.99)}.lexfileinput:disabled::file-selector-button{cursor:not-allowed;color:var(--global-text-terciary)}.lexprogress{display:flex;align-items:center}.lexprogress span{width:10%}.lexprogressbar{border:none!important;width:95%;outline:0;opacity:.7;-webkit-transition:.2s;transition:opacity .2s;margin-top:2px;user-select:none}.lexprogressbar::-webkit-meter-bar{border-radius:.25rem;height:12px;background:color-mix(in srgb,var(--global-selected) 20%,transparent)}meter:-moz-meter-optimum::-moz-meter-bar{background:var(--global-selected)}.lexprogressbar::-webkit-meter-optimum-value{background:var(--global-selected)}meter:-moz-meter-sub-optimum::-moz-meter-bar{background:var(--global-color-warning)}.lexprogressbar::-webkit-meter-suboptimum-value{background:var(--global-color-warning)}meter:-moz-meter-sub-sub-optimum::-moz-meter-bar{background:var(--global-color-error)}.lexprogressbar::-webkit-meter-even-less-good-value{background:var(--global-color-error)}.lexbadge{border-radius:.35rem;vertical-align:middle;color:#fff;font-weight:500;border:1px solid var(--badge-color,#14171a);width:fit-content;align-items:center;gap:.5rem;padding-inline:0.6rem;font-size:.875rem;display:inline-flex;background-color:var(--badge-color,#1d232a)}.lexbadge.primary{--badge-color:var(--global-selected)}.lexbadge.secondary{--badge-color:var(--global-selected-light)}.lexbadge.accent{--badge-color:var(--global-color-accent)}.lexbadge.warning{--badge-color:var(--global-color-warning)}.lexbadge.error{--badge-color:var(--global-color-error)}.lexbadge.outline{color:var(--badge-color,var(--global-text-primary));box-shadow:none;background-color:#0000;background-image:none}.lexbadge.xs{padding-inline:0.4rem;font-size:.6rem}.lexbadge.sm{padding-inline:0.5rem;font-size:.75rem}.lexbadge.lg{padding-inline:0.8rem;font-size:1rem}.lexbadge.xl{padding-inline:1rem;font-size:1.125rem}.lexmenubar{width:100%;background-color:var(--global-color-primary);display:flex;height:100%;color:var(--global-text-primary);font-size:14px;font-weight:500}.lexcard span,.lexcontextmenu,.lexcontextmenubox{background-color:var(--global-blur-background)}.lexmenubar .lexmenuentry{min-height:48px;height:100%;display:flex;justify-content:center;align-items:center;padding-left:4px;padding-right:4px;cursor:pointer;margin-left:4px;user-select:none}.lexmenubar .lexmenuentry span{padding:4px 8px;border-radius:4px}.lexmenubar .lexmenuentry.selected span,.lexmenubar .lexmenuentry:hover span{color:var(--global-text-primary);background-color:var(--global-color-secondary)}.lexmenubar .lexmenuentry:active{color:#b7b7cba4;margin-top:.05em}.lexcontextmenu{position:absolute;padding-right:8px;z-index:1001;box-shadow:0 0 6px #2c2c2c7c!important;border:1px solid #91909036;border-radius:6px}.lexcontextmenu:before{content:"";position:absolute;width:100%;height:100%;top:0;left:0;border-radius:6px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:-1}.lexcontextmenu:focus{outline:0}.lexcontextmenu .lexcontextmenuentry{font-size:var(--global-font-size);width:100%;color:var(--global-text-primary);padding:4px 0 6px 8px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transform:translateZ(0);-webkit-transform:translateZ(0);-moz-transform:translateZ(0);display:flex;flex-direction:row;align-content:center;justify-content:space-between;position:relative}.lexcontextmenu .lexcontextmenuentry:first-child{border-top-right-radius:5px;border-top-left-radius:5px}.lexcontextmenu .lexcontextmenuentry:last-child{border-bottom-right-radius:5px;border-bottom-left-radius:5px}.lexcontextmenu .lexcontextmenuentrycontainer{display:flex;flex-direction:row}.lexcontextmenu .lexcontextmenuentry .lexentryname{margin-right:32px;margin-top:2px}.lexcontextmenu .lexcontextmenuentry.noicon .lexentryname{margin-left:10px}.lexcontextmenu .lexcontextmenuentry a{font-size:10px;float:left;margin-right:13px;margin-top:9px;margin-left:9px;min-width:10px}.lexcontextmenu .lexcontextmenuentry a.fa-xs{float:right;margin-right:8px}.lexcontextmenu .lexcontextmenuentry input{float:left;margin-right:28px;margin-left:5px}.lexcontextmenu .lexcontextmenuentry:hover input::after{border-color:#f5f5f5}.lexcontextmenu .lexseparator{margin:2px 0;width:-moz-calc(100% + 14px);width:-webkit-calc(100% + 14px);width:calc(100% + 14px)}.lexcontextmenu .lexentryshort{font-size:10px;float:right;margin-top:3px;font-weight:700;color:var(--global-text-primary);margin-right:12px;text-align:right}.lexcontextmenubox .lexcontextmenuentry,.lexmenubar .lexmenubutton{color:var(--global-text-secondary);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.lexmenubar .lexmenubuttons{display:flex;background-color:var(--global-color-secondary);margin-top:10px;margin-bottom:10px;border-radius:6px;padding-inline:4px;font-size:16px}.lexmenubar .lexmenubuttons.center{margin:10px auto 8px}.lexmenubar .lexmenubuttons.right{margin-left:unset;margin-right:12px}.lexmenubar .lexmenubutton{justify-content:center;padding:.6em 8px 8px;line-height:10px;user-select:none}.lexmenubar .lexmenubutton a{margin-left:0!important}.lexmenubar .lexmenubutton.disabled a{color:light-dark(var(--global-color-terciary),var(--global-button-color));cursor:default}.lexcontextmenubox{z-index:102;position:absolute;padding-right:20px;border-radius:6px;box-shadow:0 0 6px rgba(46,46,46,.596)!important;border:1px solid #91909036}.lexcontextmenubox:before{content:"";position:absolute;width:100%;height:100%;top:0;left:0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:-1;border-radius:6px}.lexcontextmenubox .lexcontextmenuentry{width:100%;padding:3px 10px 4px;user-select:none}.lexareatabs .lexareatab,.lexlistitem{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:pointer}.lexcontextmenubox .lexcontextmenuentry:first-child{border-top-left-radius:5px;border-top-right-radius:5px}.lexcontextmenubox .lexcontextmenuentry:last-child{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.lexcontextmenubox .lexcontextmenuentry.cmtitle{background:light-dark(var(--global-color-terciary),var(--global-intense-background));font-weight:700;cursor:default}.lexcontextmenubox .lexcontextmenuentry.cmseparator{height:1px;border-bottom:1px solid var(--global-color-terciary);padding-bottom:0;padding-top:0;margin-top:-4px}thead,tr{border-color:inherit}.lexcontextmenubox .lexcontextmenuentry .lexentryname{margin-right:10px;margin-top:2px;font-size:var(--global-font-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lexcontextmenubox .lexcontextmenuentry .lexentryname.disabled{color:light-dark(#808080b0,#c0c4cb53)}.lexcontextmenubox .lexcontextmenuentry a{float:right;margin-right:0;margin-top:10px;font-size:10px}.lexcontextmenubox .lexcontextmenuentry a.fa-xs{float:right;margin-top:-8px}.lexcontextmenubox .lexcontextmenuentry:active:not(.cmtitle,.cmseparator){padding-top:.22em;color:#b7b7cba4}.lexcontextmenubox .lexseparator{margin:3px 0 3px 10px}.lexcontextmenubox .lexentryshort{font-size:9px;float:right;font-weight:700;color:#979aa0e3}.lexsidebar .lexsidebarentry{width:64px;height:64px;margin-top:-6px}.lexsidebar .lexsidebarentry .lexsidebarentrydesc{position:absolute;margin-left:12px;font-weight:600;margin-top:13px;background-color:#afafaf;color:var(--global-color-primary);font-size:16px;border-radius:6px;text-align:center;opacity:0;z-index:102;padding:2px 6px;transition:opacity .1s ease-in}.lexsidebar .lexsidebarentry:first-child{padding-top:16px}.lexsidebar .lexsidebarentry button{width:calc(100% - 16px);height:calc(100% - 16px);background-color:var(--global-button-color);color:var(--global-text-primary);font-size:18px;border-radius:10px;border:0 solid var(--global-color-transparent);transition:border .1s ease-in-out;cursor:pointer}.lexoverlaybuttons .lexbutton,.lexoverlaybuttons .lexbutton a,.lexoverlaybuttons .lexbutton span{font-size:var(--global-font-size-big)}.lexsidebar .lexsidebarentry button:hover{border:3px solid var(--global-selected);background-color:var(--global-button-color-hovered)}.lexsidebar .lexsidebarentry button:active{font-size:17px}.lexsidebar .lexsidebarentry.selected button{background-color:var(--global-button-color-hovered);border:4px solid var(--global-selected)}.lexsidebar .lexsidebarfooter,.overlay-bottom{position:absolute;bottom:0}.lexsidebar .lexsidebarfooter .lexsidebarentry button{width:calc(100% - 16px);height:calc(100% - 16px);background-color:unset;font-size:14px}.lexsidebar .lexsidebarfooter .lexsidebarentry button:active{font-size:13px}.lexoverlaybuttonscontainer{position:absolute;display:flex;top:0;width:100%;pointer-events:none}.lexoverlaybuttons{display:flex;width:auto!important;height:auto!important;justify-content:start;z-index:100;background-color:var(--global-color-secondary);margin:8px;padding:.25em .25em .3em;border-radius:12px}.lexoverlaybuttons .lexwidget{padding:0;margin-right:6px;pointer-events:auto;min-width:32px}.lexoverlaybuttons .lexwidget button{min-width:32px}.lexoverlaybuttonscontainer.vertical{display:grid;justify-items:left}.lexoverlaybuttonscontainer.vertical .lexoverlaybuttons{display:grid}.lexoverlaybuttonscontainer.vertical .lexwidget{margin-bottom:6px;margin-right:0}.lexoverlaybuttonscontainer.vertical .lexwidget button{min-width:32px;max-height:32px!important}.lexoverlaybuttonscontainer.bottom{top:unset;bottom:0}.lexgraphnode .lexgraphnodeio.iooutput,.lexoverlaybuttonscontainer.right{justify-content:right}.lexoverlaybuttonscontainer.vertical.center{justify-items:center}.lexoverlaybuttonscontainer.vertical.right{justify-items:right}.lexoverlaybuttons .lexwidget:hover{background-color:unset}.lexoverlaybuttons .lexbutton{padding:6px;border-radius:10px;justify-content:center;background:0 0;color:var(--global-text-secondary);height:100%}.lexoverlaybuttons .lexbutton a{line-height:10px}.lexoverlaybuttons .lexbutton.array a{font-size:10px;margin-left:4px}.lexoverlaybuttons .lexbutton.selected img,.lexoverlaybuttons .lexbutton:hover img{filter:none}.lexoverlaybuttons .lexbutton:hover{color:var(--global-text-primary);background:var(--global-button-color-hovered)}.lexoverlaybuttons .lexbutton.selected:hover{color:#f4f4ffe6}.lexoverlaybuttons .lexbutton:active{outline:0!important;color:#d5d5d5}.lexoverlaybuttons .lexoverlaygroup{display:flex;margin-right:6px;background-color:var(--global-color-terciary);border-radius:8px}.lexoverlaybuttons .lexoverlaygroup .lexbutton{background:0 0;-webkit-backdrop-filter:none;backdrop-filter:none}.lexareatabs .lexareatab.thumb,.lexareatabs.row .lexareatab.selected{background:light-dark(var(--global-selected-light),var(--global-selected))}.lexoverlaybuttonscontainer.vertical .lexoverlaygroup{display:grid;margin-right:0;margin-bottom:6px}.lexoverlaybuttons .lexoverlaygroup .lexwidget{padding:0;margin-right:0}.lexoverlaybuttonscontainer.vertical .lexoverlaygroup .lexwidget{margin-right:0;margin-bottom:0}.lexoverlaybuttonscontainer.vertical .lexoverlaygroup .lexwidget button{width:100%!important}.lexoverlaybuttons .lexwidget:last-child{margin-right:0}.lexareatabs{display:flex;flex-direction:row;margin-left:7px;width:fit-content;width:-moz-fit-content;border-radius:10px}.lexareatabs.dockingtab{background-color:#7cb9f34e}.lexareatabs .lexareatab{font-size:13px;font-weight:600;justify-content:center;text-align:center;align-items:center;padding:3px;color:var(--global-text-secondary);user-select:none;transition:.2s;line-height:16px}.lexareatabs .lexareatab.thumb{position:absolute;z-index:0}.lexareatabs.row{width:calc(100%-9px);padding:4px 4px 6px}.lexareatabs.row .lexareatab{background-color:var(--global-color-secondary);padding-left:16px;padding-right:16px;margin-right:4px;border-radius:4px}.lexareatabs.fit{width:calc(100% - 14px)}.lexareatabs.fit .lexareatab{flex:100%;border-radius:10px;z-index:1}.lexareatabs .lexareatab:active{color:#b7b7cba4}.lexareatabs.fit .lexareatab.selected{color:#f8f8f8}.lexareatabs.row .lexareatab.selected{color:#fff}.lexareatabs.folding .lexareatab.selected{color:var(--global-text-primary);background-color:#555556}.lexareatabs.row .lexareatab.selected:hover{color:var(--global-color-primary)}.lexareatabscontainer{transition:height .1s ease-out}.lexareatabscontainer .lexbranch{margin:4px 7px!important}.lexareatabscontent.folded{max-height:0}.curve canvas{border-radius:2px}.lexcard{position:relative;margin-bottom:4px}.lexcard img{width:100%;height:128px;object-fit:cover;border-radius:6px;outline:3px solid var(--global-text-terciary)}.lexcard:hover img{outline:3px solid var(--global-selected)}.lexassetscontent li.selected,.lexassetscontent li:hover{outline:2px solid var(--global-selected)}.lexcard span{width:calc(100% - 16px);display:flex;backdrop-filter:blur(12px);align-items:center;height:16px;position:absolute;top:0;left:0;padding:8px;border-top-left-radius:6px;border-top-right-radius:6px;font-size:1.3em;font-family:var(--global-title-font);font-weight:600;text-transform:uppercase}.lexcard span a{color:var(--global-text-secondary);text-decoration:none}.lexlayers{display:grid;grid-template-columns:18px 18px 18px 18px 18px 18px 18px 18px;grid-gap:6px 8px;justify-content:center}.lexlayer{--layer-color:var(--global-color-primary);background-color:var(--layer-color);color:var(--global-text-primary);text-align:center;line-height:19px;width:18px;height:18px;cursor:pointer;border-radius:4px;font-size:11px}.lexarrayitems,.lexlistitem{color:var(--global-text-secondary)}.lexarrayitems,.lexlistitem,.lextags .lextag{font-size:var(--global-font-size)}.lexlayer.selected{--layer-color:light-dark(var(--global-selected-light), var(--global-selected));color:#fff}.lexlayer:hover{background-color:color-mix(in srgb,var(--layer-color),#000 7%)}.lexlayer:active{background-color:color-mix(in srgb,var(--layer-color),#fff 4%);transform:scale(.99)}.lexlist{background:var(--global-color-primary);border-radius:4px;padding:4px;display:grid}.lexlistitem{width:calc(100% - 8px);border-radius:4px;padding-left:4px;padding-right:4px;margin-top:1px;margin-bottom:1px;height:20px;line-height:22px;align-content:center;display:flow-root;user-select:none}.lextags .lextag,th{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.lexlistitem a{float:left;line-height:20px;margin-right:4px}.lexcodeeditor pre,.lexcodeeditor span{white-space:pre;word-wrap:normal;line-height:inherit;-webkit-tap-highlight-color:transparent}.lexlistitem:hover{background-color:var(--global-color-secondary);color:var(--global-text-primary)}.lexlistitem:active{color:rgba(216,218,230,.826)}.lexlistitem.selected{color:#fff;background-color:light-dark(var(--global-selected-light),var(--global-selected))}.lexwidget:has(.lexarrayitems),.lexwidget:has(.lexcheckboxsubmenu),.lexwidget:has(.lexcustomcontainer),.lexwidget:has(.lextogglesubmenu){background-color:light-dark(var(--global-color-terciary),var(--global-medium-background));border-radius:6px}.lexarray .lexwidget,.lexvideoeditor .lexwidget.nobranch{padding:0;width:100%!important}.lexarrayitems{width:100%;padding:6px;margin-top:-1px}.lextags .lextag,.lextimeline{color:var(--global-text-primary)}.lexarrayitems .small .lexbutton,.lexassetbrowser .lexarea,.lexcodeeditor.disabled pre.active-line{background:0 0}.lextags{display:inline-flex;flex-wrap:wrap;line-height:12px;background-color:light-dark(var(--global-color-terciary),var(--global-button-color));border-radius:8px;padding:4px}.lextags input{width:60%}.lextags .lextag{padding:6px;background-color:var(--global-color-primary);margin:2px;border-radius:6px;min-width:16px;justify-content:center;display:inherit;cursor:default;user-select:none}.lextags .lextag a:hover{color:light-dark(var(--global-text-terciary),var(--global-text-secondary));cursor:pointer}.lexcounter{display:flex;margin:0 auto}.lexcounterbox{display:grid;text-align:center;margin-left:16px;margin-right:16px}.lexcounterbox .lexcountervalue{width:100%;font-size:32px;font-weight:700}.lexcounterbox .lexcounterlabel{width:100%;margin-top:-22px;color:var(--global-text-secondary)}.lextable table{width:100%;border:2px solid;border-color:light-dark(#dbd8d8c0,#5c5b5b7a);border-radius:8px;border-spacing:0px;overflow:hidden;background-color:var(--global-button-color);box-shadow:0 2px 10px rgba(0,0,0,.1)}thead{display:table-header-group}tr{display:table-row;vertical-align:inherit}th{--th-color:light-dark(var(--global-text-quaternary), var(--global-text-primary));color:var(--th-color);font-size:calc(var(--global-font-size) + 1px)!important;cursor:pointer;transition:.1s linear;background-color:color-mix(in srgb,var(--global-button-color),#000 10%);user-select:none}.lexassetscontent li,.lexcodeeditor{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}tr:hover{background-color:color-mix(in srgb,var(--global-button-color),#000 7%)}th a{margin-left:4px;font-size:10px!important}th a:active{transform:scale(1.01)}th:hover{color:color-mix(in srgb,var(--th-color),#000 10%)}.lexassetscontent li,ul.lexassetscontent{-webkit-text-size-adjust:100%;font-size:var(--global-font-size);color:#aaa;box-sizing:border-box}td,th{padding:6px;padding-inline:12px;text-align:left;vertical-align:top}td.sm,th.sm{width:8%}td .lexcheckbox,th .lexcheckbox{margin-top:3px}td{border-top:2px solid;border-color:light-dark(#dbd8d8c0,#5c5b5b7a)}tbody:first-child tr:first-child td:first-child,thead:first-child tr:first-child th:first-child{border-radius:8px 0 0}tbody:last-child tr:last-child td:first-child,thead:last-child tr:last-child th:first-child{border-radius:0 0 0 8px}.lextable .lextablebuttons{display:inline-flex;gap:8px}.lexcustomcontainer span{align-items:center;display:flex;justify-content:space-between}.lexcustomcontainer .lexbutton span:not(:has(.menu)){width:95%}.lexknob{padding:8px}.lexknob .knobcircle{background:#3e3e3e;background:linear-gradient(180deg,#525252 0,#282828 100%);width:64px;height:64px;margin:0 auto;border-radius:50%;position:relative;box-shadow:0 3px 9px 2px #121212a9;--knob-snap-mark:45deg}.lexknob .knobcircle::before{content:"";position:absolute;width:125%;height:125%;top:-15.5%;left:-15.5%;border-radius:50%;border-bottom-color:transparent}.lexknob.show-ticks .knobcircle::after{content:"";position:absolute;width:130%;height:130%;top:-15.5%;left:-15.5%;border-radius:50%;pointer-events:none;mask-image:radial-gradient(circle,transparent 60%,black 60%),conic-gradient(transparent -135deg,black -135deg 275deg,transparent 275deg);-webkit-mask-composite:intersect;mask-composite:intersect;background:repeating-conic-gradient(transparent 0deg,rgba(255,255,255,.4) 1deg 3deg,transparent 4deg calc(var(--knob-snap-mark) - 1deg));transform:rotate(-135deg);background:repeating-conic-gradient(transparent 0deg,rgba(50,50,50,.493) 1deg 3deg,transparent 4deg calc(var(--knob-snap-mark) - 1deg))}.lexknob.sm .knobcircle{width:48px;height:48px}.lexknob.bg .knobcircle{width:81px;height:81px}.lexknob .innerknobcircle{width:56px;height:56px;border-radius:50%;margin:0;position:absolute;top:50%;left:50%;translate:-50% -50%;cursor:ns-resize}.lexknob.disabled .innerknobcircle{cursor:not-allowed}.lexknob.sm .innerknobcircle{width:39px;height:39px}.lexknob.bg .innerknobcircle{width:73px;height:73px}.lexknob .knobmarker{background-color:var(--global-selected);width:6px;height:6px;border-radius:50%;margin:6px auto 0}.lexknob.disabled .knobmarker{background-color:var(--global-text-terciary);background-color:var(--global-text-primary)}.lexknob.sm .knobmarker{width:5px;height:5px}.lexknob.bg .knobmarker{width:7px;height:7px;margin-top:8px}:root[data-theme=light]{background:linear-gradient(180deg,#c8c8c8 0,#a0a0a0 100%);box-shadow:0 0 8px 2px #a3a3a379}.lexknob .knobcircle::before{border:2px solid rgba(255,255,255,.2)}.lexknob .innerknobcircle{background-color:#b6b6b6}.lexknob .knobmarker{background-color:var(--global-selected-dark);filter:brightness(1.5)}.swap input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none}.swap>*{grid-row-start:1;grid-column-start:1;transition-property:transform,rotate,opacity;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}.swap .swap-indeterminate,.swap .swap-on,.swap input:indeterminate~.swap-on,.swap input:is(:checked,:indeterminate)~.swap-off{opacity:0}.swap input:checked~.swap-on,.swap input:indeterminate~.swap-indeterminate{opacity:1}.swap .swap-indeterminate,.swap .swap-on,.swap input:indeterminate~.swap-on{rotate:45deg}.swap input:is(:checked,:indeterminate)~.swap-on,.swap.swap-active .swap-on{rotate:none}.swap input:is(:checked,:indeterminate)~.swap-off,.swap.swap-active .swap-off{rotate:-45deg}.lextimeline{flex-direction:column;background-color:var(--global-primary-color);height:100%}.lextimeline ::-webkit-scrollbar{display:none}.lextimeline .lexbuttonscontainer{position:absolute;padding:0 10px}.lextimeline .lexwidget:has(.lexbutton:not(.array)){padding:1px}.lextimeline .lexinlinewidgets{padding-right:10px}.lextimeline .lextree{margin:0!important;width:100%}.lextimeline .lextitle{padding-left:24px}.lextimeline .lextree ul{margin:0;padding-bottom:0;padding-top:0;font-size:var(--global-font-size)}.lexassetbrowser .lexsplitbar.vertical,.lextimeline .lexsplitbar.vertical{position:unset;width:unset;height:unset}.lexmin{display:inline-block;color:var(--global-selected-light);background:var(--global-color-primary);border-radius:8px;padding:4px;position:absolute;transition:.3s;font-size:initial;cursor:pointer}.lexmin.horizontal{margin-top:48px;margin-left:-12px;height:fit-content}.lexmin.vertical{margin-top:-12px;margin-left:12px}.lexarea .fadein-horizontal,.lexarea .fadein-vertical{animation-name:fadein;animation-fill-mode:forwards}.lexarea .fadeout-horizontal,.lexarea .fadeout-vertical{animation-name:fadeout;animation-duration:.25s;animation-fill-mode:forwards}.lexarea .fadeout-vertical{transition:height}.lexarea .fadeout-horizontal{transition:width}@keyframes fadein{from{opacity:0%}25%{opacity:75%}to{opacity:100%}}@keyframes fadeout{from{opacity:100%}25%{opacity:25%}to{opacity:0%}}.overlay-top{position:absolute;top:0}.overlay-left{position:absolute;left:0;top:0}.overlay-right{position:absolute;right:0;top:0}.lexassetbrowser{min-height:190px;height:100%;border-radius:6px;background-color:var(--global-color-primary)}.lexgraphgroup,.lexgraphnode{cursor:pointer;min-width:96px;min-height:32px;transition:border 50ms linear}.lexassetbrowser .lexsplitbar.horizontal{position:relative;height:calc(100%);border-radius:0;left:0!important;top:0;background-color:var(--global-color-secondary)}.codebasearea .lexareatab.selected,.codebasearea .lexareatab:hover{background-color:var(--global-color-secondary)!important}.lexassetbrowser .lexsplitbar.horizontal:hover{background-color:var(--global-text-secondary)}.lexassetscontent.dragging{background-color:var(--global-intense-background)}ul.lexassetscontent{position:relative;overflow:auto;padding:0 1em;margin:0;height:calc(100% - 36px)}.lexassetscontent.list{display:table-cell;columns:3 256px;width:100%}.lexassetscontent li{-webkit-user-drag:element;user-select:none;width:10em;height:11.4em;display:inline-block;vertical-align:top;margin:.75em .5em .5em;padding:0;box-shadow:0 0 8px #000;overflow:hidden;background-color:#555;cursor:pointer;text-align:center;border-radius:2px 2px 4px 4px;position:relative;border-top:4px solid transparent}.lexassetscontent .lexitemdesc{position:absolute;font-weight:600;background-color:#afafaf;color:var(--global-color-primary);font-size:14px;border-radius:6px;display:none;opacity:0;z-index:102;padding:2px 6px;transition:opacity .1s ease-in;pointer-events:none}.lexassetscontent li:hover+.lexitemdesc,.lexgraphnode .lexgraphnodeio:hover .io__typedesc{opacity:1}.lexassetscontent.list li{width:calc(100% - .5em);height:1.8em;border-top:0;border-left:4px solid transparent;border-bottom-left-radius:2px;border-bottom-right-radius:2px;margin:.4em 0;box-shadow:0 0 6px rgba(0,0,0,.858)}.lexassetscontent .asset-file-preview{position:absolute;top:0;left:0;width:100%;height:calc(100% - 20px);padding-top:16px}.lexassetscontent .asset-file-preview text{font-size:64px;text-anchor:middle;font-family:Ubuntu,sans-serif}.lexassetscontent li.image{border-color:#efbc4e}.lexassetscontent li.script{border-color:#6881c3}.lexassetscontent li.json{border-color:#a3d5e1}.lexassetscontent li.mesh{border-color:#9c4444}.lexassetscontent li.clip{border-color:#b061bb}.lexassetscontent li.sigml{border-color:#9abc65}.lexassetscontent li.selected{transition:none!important;font-weight:700}.lexassetscontent li .lexassetinfo,.lexassetscontent li .lexassettitle{overflow:hidden;transition:.1s;position:absolute;box-sizing:border-box;-webkit-text-size-adjust:100%}.lexassetscontent li .lexassettitle{width:100%;bottom:0;font-size:var(--global-font-size);color:#bbb;cursor:pointer;text-align:center;display:block;height:20px;padding:.15em .1em .1em;text-overflow:ellipsis;white-space:nowrap;background-color:rgba(12,12,12,.8);z-index:1}.lexcodescrollbar.scrollbar-unused,.lexgraphnode .lexgraphnodeio[data-active] .io__type:hover span{display:none}.lexassetscontent.list li .lexassettitle{width:100%;height:100%;text-align:left;padding-left:2em}.lexassetscontent li .lexassetinfo{color:#999;text-align:left;padding:3px;top:0;display:none}.lexassetscontent.list li .lexassetinfo{display:block;right:6px;z-index:1}.lexassetscontent.list li:has(.lexcheckbox) .lexassetinfo{display:block;right:32px;z-index:1}.lexassetscontent li .lexcheckbox{position:absolute;display:block;z-index:100;width:1.15em;height:1.15em}.lexassetscontent.list li .lexcheckbox{right:3px;top:3px}.lexassetscontent li:hover span{color:#f5f5f5}.lexassetscontent li.selected .lexassettitle{color:#f5f5f5;text-shadow:0 0 3px #000;background-color:var(--global-selected)}.lexassetscontent li img{-webkit-text-size-adjust:100%;font-family:Arial;font-size:var(--global-font-size);cursor:pointer;text-align:center;color:#fff;box-sizing:border-box;border:0;max-width:10em;max-height:10em;width:100%;height:100%;object-fit:cover;transition:.2s}.lexassetscontent.list img{width:unset;height:2em;object-fit:contain;float:left;z-index:1;position:relative}.lexassetscontent li.folder img{transform:translateY(-6px)}.lexassetscontent.list li.folder img{transform:scale(.9)}.lexassetscontent li:hover img{transform:scale(1.12)}.codebasearea{display:flex;position:relative;overflow:inherit}.lexcodeeditor,.lexcodeeditor .lexareatabscontent,.lexcodegutter{overflow:hidden}.codebasearea *{letter-spacing:0!important}.codebasearea .lexareatabs{padding:0;margin:0}.codebasearea .lexareatab{padding:5px;border-radius:0!important;margin:0!important;border:1px solid #91909036;border-right:none;background-color:var(--global-color-primary)!important;transition:none}.codebasearea .lexareatab:last-child{border-right:1px solid #91909036}.codebasearea .lexareatab.selected{color:var(--global-text-secondary)!important;border-top:1px solid var(--global-selected);border-bottom:none}.codebasearea .lexareatab i{width:12px;font-size:10px;margin-right:4px;vertical-align:middle;margin-top:-3px}.codechar,.lexcodeeditor .code,.lexcodeeditor pre .line-gutter{font-size:var(--code-editor-font-size)}.codebasearea .lexareatab img{width:12px;height:12px;margin-right:4px;vertical-align:middle;margin-top:-2px}.lexcodeeditor ::-webkit-scrollbar{width:6px;height:6px;background:0 0}.lexcodeeditor ::-webkit-scrollbar-thumb{background:#8c8c909c}.lexcodeeditor .codetabsarea,.lexcodegutter,.lexcodetabinfo{background-color:light-dark(var(--global-color-terciary),var(--global-medium-background))}.lexcodeeditor ::-webkit-scrollbar-thumb:hover{background:#afafb4c2}.lexcodeeditor{outline:0;width:calc(100%);user-select:none}.lexcodeeditor pre .line-gutter,.lexgraphnode{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.lexcodetabinfo{position:absolute;z-index:3;bottom:0;margin-left:0}.lexcodegutter{width:48px;height:calc(100% - 65px);margin-top:28px;position:absolute;top:0}.lexcodeeditor .codetabsarea{height:calc(100% - 64px)!important;overflow:scroll}.lexcodeeditor .codetabsarea.no-code-info{height:calc(100% - 28px)!important}.lexcodeeditor .codetabsarea::-webkit-scrollbar{display:none}.lexcodeeditor .codetabsarea.with-vscrollbar{width:calc(100% - 10px)!important}.lexcodeeditor .codetabsarea.with-hscrollbar{height:calc(100% - 72px)!important}.lexcodeeditor .codetabsarea.dragging{background-color:var(--global-color-secondary)}.lexcodeeditor .code{cursor:text;position:relative}.codechar{position:absolute;top:0;left:0;padding:0;margin:0}.lexcodeeditor pre{-webkit-text-size-adjust:100%;cursor:text;box-sizing:border-box;border-radius:0;border-width:0;background:0 0;margin:0;color:var(--global-text-primary);position:relative;overflow:visible;height:var(--code-editor-row-height);pointer-events:none}.lexcodeeditor .cursors .cursor,.lexcodescrollbar,.lexcodescrollbar div{box-sizing:border-box;padding:0;position:absolute}.lexcodeeditor pre.active-line{background-color:#333437a9}.lexcodeeditor pre.added{background-color:#40db212f!important}.lexcodeeditor pre.removed{background-color:#db21212f!important}.lexcodeeditor span{-webkit-text-size-adjust:100%;cursor:text;font-family:inherit;font-size:inherit;box-sizing:border-box;display:inline-block}.lexcodeeditor pre .line-gutter{color:var(--global-text-terciary);width:48px;height:var(--code-editor-row-height);font-weight:400;line-height:var(--code-editor-row-height);text-align:center;user-select:none;position:sticky;left:0;z-index:1}.lexcodeeditor.no-gutter pre .line-gutter{opacity:0}.lexcodeeditor .cursors,.lexcodeeditor .selections{-webkit-text-size-adjust:100%;font-family:monospace;color:#aaa!important;font-size:16px;cursor:text;box-sizing:border-box;visibility:hidden;margin:0;padding:0;position:relative;pointer-events:none}.lexcodeeditor .autocomplete.show,.lexcodeeditor .cursors.show,.lexcodeeditor .selections.show{visibility:visible}.lexcodeeditor .cursors .cursor{-webkit-text-size-adjust:100%;font-family:monospace;font-size:16px;cursor:text;margin:0;border-right:none;width:0;height:var(--code-editor-row-height);border-left:3px solid var(--global-text-primary)!important;z-index:1!important;opacity:.6;left:0;top:0}.lexcodescrollbar{width:10px;height:calc(100% - 62px);background-color:transparent;margin:26px 0 0;z-index:1!important;right:0;pointer-events:none}.lexcodescrollbar.horizontal{width:calc(100% - 58px);height:10px;bottom:36px;right:10px}.lexcodescrollbar div{background-color:#bbbbbb3d!important;margin:0;border-right:none;z-index:0!important;top:0;width:10px;height:10px;transition:background-color .1s linear;pointer-events:all;background-color:#8383839d!important}.lexcodescrollbar div:hover{background-color:#bbbbbb8c!important;background-color:#5e5e5ea9!important}.lexcodeeditor .lexcodesearchresult,.lexcodeeditor .lexcodeselection{-webkit-text-size-adjust:100%;font-family:monospace;color:#aaa!important;font-size:15px;cursor:text;box-sizing:border-box;margin:0;padding:0;border-right:none;border-radius:1px;position:absolute;z-index:0!important;left:0;top:0;width:100px;height:var(--code-editor-row-height);background-color:var(--global-selected);opacity:.4}.lexcodeeditor .autocomplete,.lexcodeeditor .searchbox{width:256px;position:absolute;box-shadow:0 0 4px #101010;overflow-y:scroll;z-index:100}.lexcodeeditor .lexcodesearchresult{background-color:#f5f115;opacity:.5}.lexcodeeditor .searchbox{background-color:var(--global-color-secondary);right:6px;top:26px;border-radius:4px;border:1px solid var(--global-button-color);transform:translateY(-72px);transition:transform .2s ease-in}.lexcodeeditor .searchbox.gotoline{width:124px}.lexcodeeditor .searchbox.opened,.lexgraph .lexgraphpropdialog.opened{transform:translateY(0)}.lexcodeeditor .searchbox .lexpanel span{height:11px}.lexcodeeditor .autocomplete{background-color:var(--global-medium-background);max-height:128px;left:0;top:0;visibility:hidden;border-radius:4px;border:1px solid var(--global-button-color)}.lexcodeeditor .autocomplete.no-scrollbar::-webkit-scrollbar{display:none}.lexcodeeditor .autocomplete pre{margin:0;pointer-events:unset;cursor:default;height:22px;padding-left:6px}.lexcodeeditor .autocomplete pre a{font-size:11px;margin-top:4px;margin-right:6px;margin-left:2px}.lexcodeeditor .autocomplete pre:hover{background-color:var(--global-color-terciary);cursor:pointer}.lexcodeeditor .autocomplete pre.selected{background-color:var(--global-selected)}.lexcodeeditor .autocomplete pre span{cursor:inherit}.lexcodeeditor .autocomplete pre.selected span.word-highlight{color:#95a0e1}.lexcodesnippet{position:relative;border-radius:12px;overflow:hidden;box-shadow:0 3px 8px 0 rgba(0,0,0,.6);border:2px solid var(--global-color-primary)}.lexcodesnippet .lexwindowbuttons{width:100px;padding-inline:16px;display:inline-flex;gap:6px;align-items:center;justify-content:center}.lexcodesnippet .lexwindowbuttons span{width:11px;height:11px;border-radius:50%;cursor:default}.cm-mtd.css{color:#e0cc68}.cm-typ.batch{color:#36c0b0}.cm-str{color:#a15e3e}.cm-std,.cm-sym.batch,.cm-sym.cmake,.cm-sym.css,.cm-sym.glsl,.cm-sym.json,.cm-sym.wgsl{color:#a753c0}.cm-kwd{color:#1967d2}.cm-com{color:#188038}.cm-typ.c,.cm-typ.cpp,.cm-typ.glsl,.cm-typ.javascript,.cm-typ.python,.cm-typ.rust,.cm-typ.wgsl{color:#0b9484}.cm-dec.batch,.cm-dec.c,.cm-dec.cpp,.cm-dec.css,.cm-dec.glsl,.cm-dec.javascript,.cm-dec.json,.cm-dec.python,.cm-dec.rust,.cm-dec.wgsl{color:#c5221f}.cm-bln.c,.cm-bln.cpp,.cm-sym.c,.cm-sym.cpp,.cm-sym.javascript,.cm-sym.python,.cm-sym.rust{color:#333}.cm-bln.html,.cm-mtd.c,.cm-mtd.cpp,.cm-mtd.glsl,.cm-mtd.javascript,.cm-mtd.python,.cm-mtd.rust,.cm-mtd.wgsl,.cm-typ.css{color:#539ac7}.cm-ppc.c,.cm-ppc.cpp,.cm-ppc.wgsl{color:#626262}.cm-kwd.css{color:#c49319}.cm-bln.css{color:#2194ce}.cm-sym.html{color:#696969}.cm-bln.markdown,.cm-bln.xml{color:#a1d2f0}.cm-sym.xml{color:#929292}.lexgraph .lexdropdown ul{max-height:unset}.lexgraph .lexgraphlinks,.lexgraph .lexgraphnodes{width:100%;height:100%;position:absolute}.lexgraph .lexgraphlinks{pointer-events:none}.lexgraph .lexgraphlinks path{stroke-width:3px;stroke-opacity:0.9}.lexgraph .lexgraphlinks path.running{stroke-dasharray:5px;stroke-linecap:round;stroke-dashoffset:50;animation:1s linear infinite dash}@keyframes dash{to{stroke-dashoffset:0}}.lexgraph svg{position:absolute;overflow:visible;top:0;left:0;bottom:0;right:0}.lexgraph .box-selection-svg{stroke-width:3px;stroke:var(--global-selected);border-radius:8px;fill:var(--global-selected);fill-opacity:0.2}.lexgraph .box-selection-svg.removing{stroke-dasharray:6px;stroke-linecap:round}.lexgraphnode{position:absolute;user-select:none;border-radius:10px;background:linear-gradient(15deg,#161616da 10%,#080808da);background-color:unset;background-origin:border-box;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:3px solid var(--global-color-transparent);padding:4px}.lexgraphnode.math{background:linear-gradient(15deg,#0687d1da 10%,#00ffccda);background-color:unset;background-origin:border-box}.lexgraphnode.logic{background:linear-gradient(15deg,#fb4D3Dda 10%,#a74482da);background-color:unset;background-origin:border-box}.lexgraphnode.inputs{background:linear-gradient(15deg,#84e100da 10%,#79a095da);background-color:unset;background-origin:border-box}.lexgraphnode.variables{background:linear-gradient(15deg,#f14343da 10%,#e7b88bda);background-color:unset;background-origin:border-box}.lexgraphnode.events{background:linear-gradient(15deg,#ec49d7da 10%,#8dc0b8da);background-color:unset;background-origin:border-box}.lexgraphnode.function{background:linear-gradient(15deg,#d19b06da 10%,#ff7b00da);background-color:unset;background-origin:border-box}.lexgraphnode.selected{border:3px solid var(--global-selected-dark);border:3px solid #ffc107;box-shadow:0 2px 6px 0 rgba(0,0,0,.14)}.lexgraphnode .lexgraphnodeheader,.lexgraphnode .lexgraphnodeproperties{font-family:var(--global-title-font);font-weight:600;font-size:13px;color:#fff;text-shadow:0 0 2px #1b1b1bdc;border-bottom:1px solid #ffffff46;margin-bottom:2px;pointer-events:none;text-align:center;margin-left:-7px;width:calc(100% + 14px)}.lexgraphnode.selected .lexgraphnodeheader,.lexgraphnode.selected .lexgraphnodeproperties{margin-left:-4px;width:calc(100% + 8px)}.lexgraphnode .lexgraphnodeproperties{pointer-events:all}.lexgraphnode .lexgraphnodeios{display:flex;pointer-events:none}.lexgraphnode .lexgraphnodeios .lexgraphnodeinputs{margin-right:6px}.lexgraphnode .lexgraphnodeio{font-family:var(--global-title-font);font-weight:600;font-size:10px;color:#d9d9e3;text-shadow:0 1px 6px #22222283;display:flex;min-height:18px}.grapharea .graph-title button,.lexgraphgroup .lexgraphgrouptitle{font-family:var(--global-title-font);color:var(--global-text-primary)}.lexgraphnode .lexgraphnodeio .io__type{font-size:7px;font-weight:700;line-height:10px;min-width:11px;max-width:11px;min-height:10px;max-height:10px;background-color:#afafaf;align-self:center;margin-right:3px;border-radius:3px;padding-top:1px;text-align:center;border:1px solid #afafaf6b;color:var(--global-color-primary);pointer-events:all}.lexgraphnode .lexgraphnodeio .io__type span{pointer-events:none}.lexgraphnode .lexgraphnodeio .io__typedesc{position:absolute;margin-left:-30px;font-weight:600;margin-top:3px;background-color:#afafaf;color:var(--global-color-primary);font-size:8px;border-radius:4px;width:28px;text-align:center;opacity:0;transition:opacity .1s ease-in}.lexgraphnode .lexgraphnodeio .io__typedesc.output{margin-right:-30px}.lexgraphnode .lexgraphnodeio .io__type.vec2,.lexgraphnode .lexgraphnodeio .io__typedesc.vec2{background-color:#ecea4c}.lexgraphnode .lexgraphnodeio .io__type.vec3,.lexgraphnode .lexgraphnodeio .io__typedesc.vec3{background-color:#ee87e5}.lexgraphnode .lexgraphnodeio .io__type.vec4,.lexgraphnode .lexgraphnodeio .io__typedesc.vec4{background-color:#9d56d8}.lexgraphnode .lexgraphnodeio .io__type.string,.lexgraphnode .lexgraphnodeio .io__typedesc.string{background-color:#79cc9c}.lexgraphnode .lexgraphnodeio .io__type.mat,.lexgraphnode .lexgraphnodeio .io__typedesc.mat{background-color:#56a8d8}.lexgraphnode .lexgraphnodeio .io__name{margin-top:2px}.lexgraphnode .lexgraphnodeio .io__type.output{margin-right:unset;margin-left:3px}.lexgraphnode .lexgraphnodeio .io__type:hover{filter:brightness(1.2)}.lexgraphnode .lexgraphnodeio[data-active] .io__type:hover{background-color:rgba(255,58,58,.829)}.lexgraphnode .lexgraphnodeio[data-active] .io__type:hover::after{content:'X'}.lexgraphnode .lexgraphnodeio[data-active] .io__type{filter:brightness(1.4)}.lexgraph .lexgraphpropdialog{transform:translateY(-96px)}.lexgraph .lexgraphgroups{z-index:1}.lexgraphgroup{position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:8px;background:linear-gradient(35deg,#949292 10%,#a7c4bd);background-color:unset;background-origin:border-box;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid var(--global-text-primary);opacity:.5}.lexgraphgroup .lexgraphgrouptitle{font-size:14px;margin:8px;font-weight:600;outline:0;border:none;background:0 0;max-width:128px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid var(--global-color-primary)}.lexgraphgroup .lexgraphgrouptitle:disabled{pointer-events:none;border:none}.lexgraphgroup .lexgraphgroupresizer{position:absolute;bottom:2px;right:2px;width:12px;height:12px;border-bottom:2px solid var(--global-color-primary);border-right:2px solid var(--global-color-primary);border-bottom-right-radius:8px}.lexgraphgroup .lexgraphgroupresizer:hover{border-bottom:2px solid #4b4b4ba8;border-right:2px solid #4b4b4ba8}.grapharea .graph-title button{font-size:16px;font-weight:600}.lexvideoeditor{display:flex;justify-content:center}.lexvideoeditor video{width:100%;height:100%}.lexvideoeditor .lexarea .lexflexarea{display:flex;justify-content:center;padding:4px 0}.lexvideoeditor .lexconstrolsarea{min-height:88px!important;border-radius:8px;display:flex;align-content:center;flex-direction:column;justify-content:center}.lexvideoeditor .lexcontrolspanel{background-color:var(--global-intense-background);margin:0;display:flex;align-content:center;width:100%!important}.lexvideoeditor .lexcontrolspanel.lextime{width:auto!important;border-radius:5px}.lexvideoeditor .lextimebar{width:100%;height:inherit}.lexvideoeditor .lextext{padding:6px}.lexvideoeditor .lexbar{height:40px!important;margin:5px 10px;padding:5px;width:calc(100% - 40px)!important}.resizeable{resize:both;overflow:auto}.resize-area{position:absolute;border:2px double var(--global-selected-light);cursor:move;z-index:100}.resize-handle{position:absolute;width:10px;height:10px;background-color:#fff;cursor:pointer;border-radius:5px}.resize-handle.tl{top:-5px;left:-5px;cursor:nwse-resize}.resize-handle.tr{top:-5px;right:-5px;cursor:nesw-resize}.resize-handle.bl{bottom:-5px;left:-5px;cursor:nesw-resize}.resize-handle.br{bottom:-5px;right:-5px;cursor:nwse-resize}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";console.warn("Script _build/lexgui.js_ is depracated and will be removed soon. Please use ES Modules or alternatives: https://jxarco.github.io/lexgui.js/docs/"),function(e){var t={version:"0.2.0",ready:!1,components:[],signals:{},extraCommandbarEntries:[]};function n(e,t,n){return Math.min(Math.max(e,t),n)}function s(e,t){return 0==t?Math.floor(e):+e.toFixed(t??2).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,"$1")}function a(e,t,n,s,a){return(e-t)*(a-s)/(n-t)+s}t.MOUSE_LEFT_CLICK=0,t.MOUSE_MIDDLE_CLICK=1,t.MOUSE_RIGHT_CLICK=2,t.MOUSE_DOUBLE_CLICK=2,t.MOUSE_TRIPLE_CLICK=3,t.CURVE_MOVEOUT_CLAMP=0,t.CURVE_MOVEOUT_DELETE=1,t.clamp=n,t.round=s,t.remapRange=a,"undefined"!=typeof performance?t.getTime=performance.now.bind(performance):"undefined"!=typeof Date&&Date.now?t.getTime=Date.now.bind(Date):"undefined"!=typeof process?t.getTime=function(){var e=process.hrtime();return.001*e[0]+1e-6*e[1]}:t.getTime=function(){return(new Date).getTime()};function i(e,t){setTimeout(e,t??0)}function l(e){return e.replace(/\s/g,"").replaceAll("@","_").replaceAll("+","_plus_").replaceAll(".","")}function o(e){return e.includes(".")?e.split(".").pop():null}function r(e){return JSON.parse(JSON.stringify(e))}function c(e){return[parseInt(e.substring(1,3),16)/255,parseInt(e.substring(3,5),16)/255,parseInt(e.substring(5,7),16)/255]}function d(e){let t="#";for(let n of e)n=Math.floor(255*n),t+=n.toString(16);return t}function h(e,n=8){var s=document.createElement("span");s.className="lexinputmeasure",s.innerHTML=e,document.body.appendChild(s);var a=s.getBoundingClientRect();return t.UTILS.deleteElement(s),a.width+n}function u(){var e=function(){return(65536*(1+Math.random())|0).toString(16).substring(1)};return e()+"-"+e()+"-"+e()}function p(e,s={}){let a=0,i=0,l=null,o=s.targetClass,r=s.dragMargin??3,c=(s,l,o)=>{const c=e.parentElement?e.parentElement.getBoundingClientRect():{x:0,y:0,width:0,height:0},d="fixed"==e.style.position?new t.vec2(c.x,c.y):new t.vec2;o=o??s.clientX-a-c.x,l=l??s.clientY-i-c.y,e.style.left=n(o,r+d.x,d.x+c.width-e.offsetWidth-r)+"px",e.style.top=n(l,r+d.y,d.y+c.height-e.offsetHeight-r)+"px"};s.autoAdjust&&c(null,parseInt(e.style.left),parseInt(e.style.top));let d=t.UTILS.uidGenerator();e["draggable-id"]=d;let h=s.onMove?e=>{l&&s.onMove&&s.onMove(l)}:e=>{l&&c(e)},u=s.onDragStart;e.setAttribute("draggable",!0),e.addEventListener("mousedown",(function(e){l=e.target.classList.contains(o)||!o?e.target:null})),e.addEventListener("dragstart",(function(e){if(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),!l)return;var n=new Image;n.src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=",e.dataTransfer.setDragImage(n,0,0),e.dataTransfer.effectAllowed="move";const s=e.target.getBoundingClientRect(),o=l.parentElement.getBoundingClientRect(),r="fixed"==l.style.position?new t.vec2(o.x,o.y):new t.vec2;a=e.clientX-s.x-r.x,i=e.clientY-s.y-r.y,document.addEventListener("mousemove",h),u&&u(l,e)}),!1),document.addEventListener("mouseup",(()=>{l&&(l=null,document.removeEventListener("mousemove",h))}))}t.doAsync=i,t.getSupportedDOMName=l,t.has=function(e){return t.components.indexOf(e)>-1},t.getExtension=o,t.deepCopy=r,t.setTheme=function(e){e="light"==e?"light":"dark",document.documentElement.setAttribute("data-theme",e),t.emit("@on_new_color_scheme",e)},t.setThemeColor=function(e,t){document.querySelector(":root").style.setProperty("--"+e,t)},t.getThemeColor=function(e){const t=getComputedStyle(document.querySelector(":root")),n=t.getPropertyValue("--"+e);if(document.documentElement.getAttribute("data-theme"),n.includes("light-dark")){return"light"==t.getPropertyValue("color-scheme")?n.substring(n.indexOf("(")+1,n.indexOf(",")).replace(/\s/g,""):n.substring(n.indexOf(",")+1,n.indexOf(")")).replace(/\s/g,"")}return n},t.getBase64Image=function(e){var t=document.createElement("canvas");return t.width=e.width,t.height=e.height,t.getContext("2d").drawImage(e,0,0),t.toDataURL("image/png")},t.hexToRgb=c,t.rgbToHex=d,t.measureRealWidth=h,t.guidGenerator=u,t.buildTextPattern=function(e={}){let t=[];e.lowercase&&t.push("(?=.*[a-z])"),e.uppercase&&t.push("(?=.*[A-Z])"),e.digit&&t.push("(?=.*\\d)"),e.specialChar&&t.push("(?=.*[@#$%^&+=!])"),e.noSpaces&&t.push("(?!.*\\s)");let n=e.minLength||0,s=e.maxLength||"",a=`^${t.join("")}.{${n},${s}}$`;return e.asRegExp?new RegExp(a):a},t.makeDraggable=p,t.makeCodeSnippet=function(e,n,s={}){if(!t.has("CodeEditor"))return void console.error("Import the CodeEditor component to create snippets!");const a=document.createElement("div");a.className="lexcodesnippet",a.style.width=n?n[0]:"auto",a.style.height=n?n[1]:"auto";const i=new v({noAppend:!0});let l=new t.CodeEditor(i,{skipInfo:!0,disableEdition:!0,allowAddScripts:!1,name:s.tabName});if(l.setText(e,s.language??"Plain Text"),s.linesAdded){const e=l.root.querySelector(".code");for(let t of s.linesAdded)if(t.constructor==Number)e.childNodes[t-1].classList.add("added");else if(t.constructor==Array)for(let n=t[0]-1;n<=t[1]-1;n++)e.childNodes[n].classList.add("added")}if(s.linesRemoved){const e=l.root.querySelector(".code");for(let t of s.linesRemoved)if(t.constructor==Number)e.childNodes[t-1].classList.add("removed");else if(t.constructor==Array)for(let n=t[0]-1;n<=t[1]-1;n++)e.childNodes[n].classList.add("removed")}if(s.windowMode){const e=document.createElement("div");e.className="lexwindowbuttons";const t=document.createElement("span");t.style.background="#ee4f50";const n=document.createElement("span");n.style.background="#f5b720";const s=document.createElement("span");s.style.background="#53ca29",e.appendChild(t),e.appendChild(n),e.appendChild(s);l.root.querySelector(".lexareatabs").prepend(e)}return(s.lineNumbers??1)||l.root.classList.add("no-gutter"),a.appendChild(i.root),a},t.registerCommandbarEntry=function(e,n){t.extraCommandbarEntries.push({name:e,callback:n})};class m{constructor(e,t){this.x=e??0,this.y=t??e??0}get xy(){return[this.x,this.y]}get yx(){return[this.y,this.x]}set(e,t){this.x=e,this.y=t}add(e,t=new m){return t.set(this.x+e.x,this.y+e.y),t}sub(e,t=new m){return t.set(this.x-e.x,this.y-e.y),t}mul(e,t=new m){return e.constructor==Number&&(e=new m(e)),t.set(this.x*e.x,this.y*e.y),t}div(e,t=new m){return e.constructor==Number&&(e=new m(e)),t.set(this.x/e.x,this.y/e.y),t}abs(e=new m){return e.set(Math.abs(this.x),Math.abs(this.y)),e}dot(e){return this.x*e.x+this.y*e.y}len2(){return this.dot(this)}len(){return Math.sqrt(this.len2())}nrm(e=new m){return e.set(this.x,this.y),e.mul(1/this.len(),e)}dst(e){return e.sub(this).len()}clp(e,t,s=new m){return s.set(n(this.x,e,t),n(this.y,e,t)),s}}t.vec2=m,t.init=function(e={}){if(this.ready)return this.main_area;var n=document.createElement("div");n.id="lexroot",n.tabIndex=-1;var s=document.createElement("div");s.id="modal",this.modal=s,this.root=n,this.container=document.body,this.modal.classList.add("hiddenOpacity"),this.modal.toggle=function(e){this.classList.toggle("hiddenOpacity",e)},e.container&&(this.container=document.getElementById(e.container)),document.documentElement.setAttribute("data-strictVP",e.strictViewport??1?"true":"false"),this.commandbar=function(e){let n=document.createElement("dialog");n.className="commandbar",n.tabIndex=-1,e.appendChild(n);let s=[],a=null;n.addEventListener("keydown",(function(e){if(e.stopPropagation(),e.stopImmediatePropagation(),a=a??-1,"Escape"==e.key)this.close(),p(!0);else if("Enter"==e.key){const e=s[a];if(e){const t=e.item.type&&"checkbox"===e.item.type;this.close(),t?(e.item.checked=!e.item.checked,e.callback.call(window,e.item.checked,e.entry_name)):e.callback.call(window,e.entry_name)}}else if("ArrowDown"==e.key&&a<s.length-1){a++,n.querySelectorAll(".hovered").forEach((e=>e.classList.remove("hovered"))),s[a].classList.add("hovered");let e=s[a].offsetHeight*(a+1)-h.offsetHeight;e>0&&h.scrollTo({top:e,behavior:"smooth"})}else"ArrowUp"==e.key&&a>0&&(a--,n.querySelectorAll(".hovered").forEach((e=>e.classList.remove("hovered"))),s[a].classList.add("hovered"))})),n.addEventListener("focusout",(function(e){e.relatedTarget!=e.currentTarget&&(e.stopPropagation(),e.stopImmediatePropagation(),this.close(),p(!0))})),e.addEventListener("keydown",(e=>{if(" "==e.key&&e.ctrlKey)e.stopImmediatePropagation(),e.stopPropagation(),t.setCommandbarState(!0);else for(let n of t.components){if(!t[n]||!t[n].prototype.onKeyPressed)continue;const s=t.CodeEditor.getInstances();for(let t of s)t.onKeyPressed(e)}}));const i=document.createElement("div");i.className="gs-header";const l=document.createElement("a");l.className="fa-solid fa-magnifying-glass",i.appendChild(l);const o=document.createElement("input");o.placeholder="Search...",o.value="",i.appendChild(o);const r=new v({width:"100%",skipAppend:!0,className:"gs-tabs"}),c=r.addTabs();let d=null;{const e=(e,t)=>{d=t};c.add("All",document.createElement("div"),{selected:!0,onSelect:e})}const h=document.createElement("div");h.className="searchitembox";let u=null;const p=e=>{h.innerHTML="",s.length=0,a=null,e&&(o.value="")},m=(e,i,l,o)=>{if(!e.length)return;u&&u.classList.remove("last");let r=document.createElement("div");r.className="searchitem last";const c=o&&o.type&&"checkbox"===o.type;r.innerHTML=c?"<a class='fa fa-check'></a><span>"+(l+e)+"</span>":l+e,r.entry_name=e,r.callback=i,r.item=o,r.addEventListener("click",(function(e){this.callback.call(window,this.entry_name),t.setCommandbarState(!1),p(!0)})),r.addEventListener("mouseenter",(function(e){n.querySelectorAll(".hovered").forEach((e=>e.classList.remove("hovered"))),this.classList.add("hovered"),a=s.indexOf(this)})),r.addEventListener("mouseleave",(function(e){this.classList.remove("hovered")})),s.push(r),h.appendChild(r),u=r},g=(e,t,n)=>{const s=Object.keys(e)[0];if((e.name??n+s).toLowerCase().includes(t)&&e.callback&&m(e.name??s,e.callback,n,e),!e.name){n+=s+" > ";for(let a of e[s])g(a,t,n)}};return n._addElements=e=>{p();for(let n of t.menubars)for(let t of n.items)g(t,e,"");for(let n of t.extraCommandbarEntries){const t=n.name;t.toLowerCase().includes(e)&&m(t,n.callback,"",{})}if(t.has("CodeEditor")){const n=t.CodeEditor.getInstances();if(!n.length)return;const s=n[0].languages;for(let t of Object.keys(s)){const a="Language: "+t,i=n[0]._getFileIcon(null,s[t].ext);let l=i.includes("fa-")?"<i class='"+i+"'></i>":"<img src='https://raw.githubusercontent.com/jxarco/lexgui.js/master/"+i+"'>";l+=a+" <span class='lang-ext'>("+s[t].ext+")</span>",a.toLowerCase().includes(e)&&m(l,(()=>{for(let e of n)e._changeLanguage(t)}),"",{})}}},o.addEventListener("input",(function(e){n._addElements(this.value.toLowerCase())})),n.appendChild(i),n.appendChild(r.root),n.appendChild(h),n}(this.container),this.container.appendChild(s),e.skipRoot?this.root=document.body:this.container.appendChild(n),n.addEventListener("dragover",(function(e){e.preventDefault()}),!1),document.addEventListener("contextmenu",(function(e){e.preventDefault()}),!1);var a=document.getElementsByTagName("HEAD")[0],i=document.createElement("link");return i.rel="stylesheet",i.type="text/css",i.crossOrigin="anonymous",i.href="https://use.fontawesome.com/releases/v6.7.2/css/all.css",a.appendChild(i),this.DEFAULT_NAME_WIDTH="30%",this.DEFAULT_SPLITBAR_SIZE=4,this.OPEN_CONTEXTMENU_ENTRY="click",this.ready=!0,this.menubars=[],e.skipRoot||e.skipDefaultArea||(this.main_area=new v({id:e.id??"mainarea"})),(e.autoTheme??1)&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches&&(t.setTheme("light"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",(e=>{t.setTheme(e.matches?"dark":"light")}))),this.main_area},t.setCommandbarState=function(e,t=!0){const n=this.commandbar;e?(n.show(),n.querySelector("input").focus(),t&&n._addElements(void 0)):n.close()},t.message=function(e,t,n={}){if(!e)throw"No message to show";return n.modal=!0,new T(t,(t=>{t.addTextArea(null,e,null,{disabled:!0,fitHeight:!0})}),n)},t.popup=function(e,t,n={}){if(!e)throw"No message to show";n.size=n.size??["max-content","auto"],n.class="lexpopup";const s=n.timeout||3e3,a=new T(t,(t=>{t.addTextArea(null,e,null,{disabled:!0,fitHeight:!0})}),n);return setTimeout((()=>{a.close()}),Math.max(s,150)),a},t.prompt=function e(t,n,s,a={}){a.modal=!0;let i="";const l=new T(n,(o=>{o.addTextArea(null,t,null,{disabled:!0,fitHeight:!0}),(a.input??1)&&o.addText(null,a.input||i,(e=>i=e),{placeholder:"..."}),o.sameLine(2),o.addButton(null,a.accept||"OK",(()=>{a.required&&""===i?(t+=t.includes("You must fill the input text.")?"":"\nYou must fill the input text.",l.close(),e(t,n,s,a)):(s&&s.call(this,i),l.close())}),{buttonClass:"primary"}),o.addButton(null,"Cancel",(()=>{a.on_cancel&&a.on_cancel(),l.close()}))}),a);return(a.input??1)&&l.root.querySelector("input").focus(),l},t.badge=function(e,t,n={}){const s=document.createElement("div");return s.innerHTML=e,s.className="lexbadge "+(t??""),Object.assign(s.style,n.style??{}),s.outerHTML},t.makeContainer=function(e,t,n={}){const s=document.createElement("div");return s.className="lexcontainer "+(t??""),s.style.width=e&&e[0]?e[0]:"100%",s.style.height=e&&e[1]?e[1]:"100%",Object.assign(s.style,n),s};class g{constructor(e,t,n){this.name=e,this.value=t,this.domEvent=n}}t.IEvent=g;class f{static NONE=0;static NODE_SELECTED=1;static NODE_DELETED=2;static NODE_DBLCLICKED=3;static NODE_CONTEXTMENU=4;static NODE_DRAGGED=5;static NODE_RENAMED=6;static NODE_VISIBILITY=7;static NODE_CARETCHANGED=8;constructor(e,t,n){this.type=e||f.NONE,this.node=t,this.value=n,this.multiple=!1,this.panel=null}string(){switch(this.type){case f.NONE:return"tree_event_none";case f.NODE_SELECTED:return"tree_event_selected";case f.NODE_DELETED:return"tree_event_deleted";case f.NODE_DBLCLICKED:return"tree_event_dblclick";case f.NODE_CONTEXTMENU:return"tree_event_contextmenu";case f.NODE_DRAGGED:return"tree_event_dragged";case f.NODE_RENAMED:return"tree_event_renamed";case f.NODE_VISIBILITY:return"tree_event_visibility";case f.NODE_CARETCHANGED:return"tree_event_caretchanged"}}}t.TreeEvent=f,t.emit=function(e,n,s={}){const a=t.signals[e];if(!a)return;const i=s.target;if(i)i[e]&&i[e].call(i,n);else for(let e of a)if(e.constructor===_)e.set(n,s.skipCallback??!0),e.options&&e.options.callback&&e.options.callback(n,a);else{e(null,n)}},t.addSignal=function(e,n,s){n[e]=s,t.signals[e]||(t.signals[e]=[]),t.signals[e].indexOf(n)>-1||t.signals[e].push(n)};class v{constructor(e={}){var n=document.createElement("div");n.className="lexarea",e.id&&(n.id=e.id),e.className&&(n.className+=" "+e.className);var s=e.width||"calc( 100% )",a=e.height||"100%";(this.setLimitBox(e.minWidth,e.minHeight,e.maxWidth,e.maxHeight),s.constructor==Number&&(s+="px"),a.constructor==Number&&(a+="px"),n.style.width=s,n.style.height=a,this.offset=0,this.root=n,this.size=[this.root.offsetWidth,this.root.offsetHeight],this.sections=[],this.panels=[],e.skipAppend)||document.getElementById("lexroot").appendChild(this.root);let i=e.overlay;if(i){this.root.classList.add("overlay-"+i),e.left?this.root.style.left=e.left:e.right?this.root.style.right=e.right:e.top?this.root.style.top=e.top:e.bottom&&(this.root.style.bottom=e.bottom);if((e.draggable??!0)&&p(n,e),e.resizeable&&n.classList.add("resizeable"),e.resize){this.splitBar=document.createElement("div");let r="left"==i||"right"==i?"horizontal":"vertical";if(this.type=i,this.splitBar.className="lexsplitbar "+r,"right"==i)this.splitBar.style.width=t.DEFAULT_SPLITBAR_SIZE+"px",this.splitBar.style.left=-t.DEFAULT_SPLITBAR_SIZE/2+"px";else if("left"==i){let u=Math.min(document.body.clientWidth-t.DEFAULT_SPLITBAR_SIZE,this.root.clientWidth);this.splitBar.style.width=t.DEFAULT_SPLITBAR_SIZE+"px",this.splitBar.style.left=u+t.DEFAULT_SPLITBAR_SIZE/2+"px"}else if("top"==i){let m=Math.min(document.body.clientHeight-t.DEFAULT_SPLITBAR_SIZE,this.root.clientHeight);this.splitBar.style.height=t.DEFAULT_SPLITBAR_SIZE+"px",this.splitBar.style.top=m+t.DEFAULT_SPLITBAR_SIZE/2+"px"}else"bottom"==i&&(this.splitBar.style.height=t.DEFAULT_SPLITBAR_SIZE+"px",this.splitBar.style.top=-t.DEFAULT_SPLITBAR_SIZE/2+"px");this.splitBar.addEventListener("mousedown",c),this.root.appendChild(this.splitBar);var l=this,o=[0,0];function c(e){var t=l.root.ownerDocument;t.addEventListener("mousemove",d),t.addEventListener("mouseup",h),o[0]=e.x,o[1]=e.y,e.stopPropagation(),e.preventDefault(),document.body.classList.add("nocursor"),l.splitBar.classList.add("nocursor")}function d(e){switch(l.type){case"right":var n=o[0]-e.x,s=l.root.offsetWidth+n;l.root.style.width=s+"px";break;case"left":n=o[0]-e.x,s=Math.min(document.body.clientWidth-t.DEFAULT_SPLITBAR_SIZE,l.root.offsetWidth-n);l.root.style.width=s+"px",l.splitBar.style.left=s+t.DEFAULT_SPLITBAR_SIZE/2+"px";break;case"top":n=o[1]-e.y,s=Math.min(document.body.clientHeight-t.DEFAULT_SPLITBAR_SIZE,l.root.offsetHeight-n);l.root.style.height=s+"px",l.splitBar.style.top=s+t.DEFAULT_SPLITBAR_SIZE/2+"px";break;case"bottom":n=o[1]-e.y,s=l.root.offsetHeight+n;l.root.style.height=s+"px"}o[0]=e.x,o[1]=e.y,e.stopPropagation(),e.preventDefault(),l.onresize&&l.onresize(l.root.getBoundingClientRect())}function h(e){var t=l.root.ownerDocument;t.removeEventListener("mousemove",d),t.removeEventListener("mouseup",h),document.body.classList.remove("nocursor"),l.splitBar.classList.remove("nocursor")}}}}attach(e){if(this.sections.length)return void this.sections[1].attach(e);if(!e)throw"no content to attach";e.parent=this;let t=e.root?e.root:e;this.root.appendChild(t)}split(e={}){this.sections.length&&(this.offset=this.root.childNodes[0].offsetHeight,this._root=this.sections[0].root,this.root=this.sections[1].root);var n=e.type||"horizontal",s=e.sizes||["50%","50%"],a="auto"===e.sizes;if(!s[1]){let t=s[0],n=e.top?e.top:0;t.constructor==Number&&(t+=n,t+="px"),s[1]="calc( 100% - "+t+" )"}var i=new v({skipAppend:!0,className:"split"+(e.menubar||e.sidebar?"":" origin")}),l=new v({skipAppend:!0,className:"split"});i.parentArea=this,l.parentArea=this;let o=e.minimizable??!1,r=(e.resize??!0)||o;var c="0px";if(this.offset=0,r&&(this.resize=r,this.splitBar=document.createElement("div"),this.splitBar.className="lexsplitbar "+n,"horizontal"==n?this.splitBar.style.width=t.DEFAULT_SPLITBAR_SIZE+"px":this.splitBar.style.height=t.DEFAULT_SPLITBAR_SIZE+"px",this.splitBar.addEventListener("mousedown",(function(e){var t=m.root.ownerDocument;t.addEventListener("mousemove",g),t.addEventListener("mouseup",f),e.stopPropagation(),e.preventDefault(),document.body.classList.add("nocursor"),m.splitBar.classList.add("nocursor")})),c=t.DEFAULT_SPLITBAR_SIZE/2+"px",o&&(this.splitExtended=!1,l.root.addEventListener("animationend",(e=>{const t=getComputedStyle(l.root).opacity;l.root.classList.remove(e.animationName+"-"+n),l.root.style.opacity=t,y(l.root)})),this.splitBar.addEventListener("contextmenu",(e=>{e.preventDefault(),k(null,e,(e=>{e.add("Extend",{disabled:this.splitExtended,callback:()=>{this.extend()}}),e.add("Reduce",{disabled:!this.splitExtended,callback:()=>{this.reduce()}})}))})))),"horizontal"==n){var d=s[0],h=s[1];d.constructor==Number&&(d+="px"),h.constructor==Number&&(h+="px"),i.root.style.width="calc( "+d+" - "+c+" )",i.root.style.height="calc(100% - 0px)",l.root.style.width="calc( "+h+" - "+c+" )",l.root.style.height="calc(100% - 0px)",this.root.style.display="flex"}else if(i.root.style.width="100%",l.root.style.width="100%",a){i.root.style.height="auto";new ResizeObserver((e=>{for(const t of e){const e=t.contentRect;l.root.style.height="calc(100% - "+(e.height+4)+"px )"}})).observe(i.root)}else{var u=s[0],p=s[1];u.constructor==Number&&(u+="px"),p.constructor==Number&&(p+="px"),i.root.style.width="100%",i.root.style.height="auto"==u?u:"calc( "+u+" - "+c+" )",l.root.style.height="auto"==p?p:"calc( "+p+" - "+c+" )"}if(this.root.appendChild(i.root),r&&this.root.appendChild(this.splitBar),this.root.appendChild(l.root),this.sections=[i,l],this.type=n,this._update(),!r)return this.sections;var m=this;function g(e){"horizontal"==m.type?m._moveSplit(-e.movementX):m._moveSplit(-e.movementY);const t=m.root.querySelectorAll(".lexwidget");for(let e of t){const t=e.jsInstance;t.onresize&&t.onresize()}e.stopPropagation(),e.preventDefault()}function f(e){var t=m.root.ownerDocument;t.removeEventListener("mousemove",g),t.removeEventListener("mouseup",f),document.body.classList.remove("nocursor"),m.splitBar.classList.remove("nocursor")}return this.sections}setLimitBox(e=0,t=0,n=1/0,s=1/0){this.minWidth=e,this.minHeight=t,this.maxWidth=n,this.maxHeight=s}setSize(e){let[t,n]=e;null!=t&&t.constructor==Number&&(t+="px"),null!=n&&n.constructor==Number&&(n+="px"),t&&(this.root.style.width=t),n&&(this.root.style.height=n),this.size=[this.root.clientWidth,this.root.clientHeight],this.propagateEvent("onresize")}extend(){if(this.splitExtended)return;let[e,t]=this.sections;this.splitExtended=!0,"vertical"==this.type?(this.offset=t.root.offsetHeight,t.root.classList.add("fadeout-vertical"),this._moveSplit(-1/0,!0)):(this.offset=t.root.offsetWidth-8,t.root.classList.add("fadeout-horizontal"),this._moveSplit(-1/0,!0,8)),i((()=>this.propagateEvent("onresize")),150)}reduce(){if(!this.splitExtended)return;this.splitExtended=!1;let[e,t]=this.sections;"vertical"==this.type?(t.root.classList.add("fadein-vertical"),this._moveSplit(this.offset)):(t.root.classList.add("fadein-horizontal"),this._moveSplit(this.offset)),i((()=>this.propagateEvent("onresize")),150)}hide(){this.root.classList.add("hidden")}show(){this.root.classList.remove("hidden")}toggle(e){this.root.classList.toggle("hidden",e)}propagateEvent(e){for(var t=0;t<this.sections.length;t++){const n=this.sections[t];n[e]&&n[e].call(this,n.root.getBoundingClientRect()),n.propagateEvent(e)}}addPanel(e){let t=new L(e);return this.attach(t),this.panels.push(t),t}addMenubar(e,n={}){let s=new x(n);e&&e(s),t.menubars.push(s);const[a,i]=this.split({type:"vertical",sizes:[48,null],resize:!1,menubar:!0});return a.attach(s),a.is_menubar=!0,s}addSidebar(e,n={}){let s=new b(n);e&&e(s),t.menubars.push(s);const[a,i]=this.split({type:"horizontal",sizes:[64,null],resize:!1,sidebar:!0});return a.attach(s),a.is_sidebar=!0,s}addOverlayButtons(e,t={}){if(this.sections.length)return void this.sections[1].addOverlayButtons(e,t);console.assert(e.constructor==Array&&e.length),this.root.style.position="relative",t.className="lexoverlaybuttons";let n=this.addPanel(t),s=null;const a=document.createElement("div");a.className="lexoverlaybuttonscontainer",a.appendChild(n.root),this.attach(a);const i=t.float;if(i)for(var l=0;l<i.length;l++){switch(i[l]){case"h":case"t":case"l":break;case"v":a.className+=" vertical";break;case"m":a.className+=" middle";break;case"b":a.className+=" bottom";break;case"c":a.className+=" center";break;case"r":a.className+=" right"}}const o=function(e,t,a){const i={width:"auto",selectable:e.selectable,selected:e.selected,icon:e.icon,img:e.img,className:e.class};t&&(s||(s=document.createElement("div"),s.className="lexoverlaygroup",n.queuedContainer=s),i.parent=s);let l=e.callback;e.options?n.addDropdown(null,e.options,e.name,l,i):n.addButton(null,e.name,(function(t,n){if(e.selectable)if(e.group){let t=e.selected;e.group.forEach((e=>e.selected=!1)),e.selected=!t}else e.selected=!e.selected;l(t,n)}),i),s&&a&&(n.root.appendChild(s),s=null,n.clearQueue())};!function(){n.clear();for(let t of e)if(t.constructor===Array)for(let e=0;e<t.length;++e){let n=t[e];n.group=t,o(n,!0,e==t.length-1)}else o(t);if(i){var t=0;n.root.childNodes.forEach((e=>{t+=e.offsetHeight})),a.className.includes("middle")&&(a.style.top="-moz-calc( 50% - "+.5*t+"px )",a.style.top="-webkit-calc( 50% - "+.5*t+"px )",a.style.top="calc( 50% - "+.5*t+"px )")}}()}addTabs(e={}){const t=new E(this,e);return e.folding&&(this.parentArea._disableSplitResize(),this.root.style.paddingTop="4px"),t}_moveSplit(e,n=!1,s=0){if(!this.type)throw"No split area";if(void 0===e)return;const a=this.sections[0];var i=a.root;i.classList.contains("origin")||(i=i.parentElement);const l=this.sections[1],o=l.root,r=" - "+t.DEFAULT_SPLITBAR_SIZE+"px";let c=null;if(n||(c=i.style.transition,i.style.transition=o.style.transition="none",y(i),y(o)),"horizontal"==this.type){var d=Math.max(o.offsetWidth+e,parseInt(l.minWidth));s&&(d=s),i.style.width="-moz-calc( 100% - "+d+"px "+r+" )",i.style.width="-webkit-calc( 100% - "+d+"px "+r+" )",i.style.width="calc( 100% - "+d+"px "+r+" )",i.style.minWidth=parseInt(a.minWidth)+"px",o.style.width=d+"px",a.maxWidth!=1/0&&(o.style.minWidth="calc( 100% - "+parseInt(a.maxWidth)+"px )")}else{d=Math.max(o.offsetHeight+e+l.offset,parseInt(l.minHeight));s&&(d=s),i.style.height="-moz-calc( 100% - "+d+"px "+r+" )",i.style.height="-webkit-calc( 100% - "+d+"px "+r+" )",i.style.height="calc( 100% - "+d+"px "+r+" )",i.style.minHeight=a.minHeight+"px",o.style.height=d-l.offset+"px"}n||(i.style.transition=o.style.transition=c),this._update(),this.propagateEvent("onresize")}_disableSplitResize(){this.resize=!1,this.splitBar.remove(),delete this.splitBar}_update(){const e=this.root.getBoundingClientRect();this.size=[e.width,e.height];for(var t=0;t<this.sections.length;t++)this.sections[t]._update()}}function y(e){e.offsetHeight}t.Area=v;class E{static TAB_SIZE=28;static TAB_ID=0;constructor(e,n={}){this.onclose=n.onclose;let s=document.createElement("div");s.className="lexareatabs "+(n.fit?"fit":"row");const a=n.folding??!1;a&&s.classList.add("folding");let i=this;if(s.addEventListener("dragenter",(function(e){e.preventDefault(),this.classList.add("dockingtab")})),s.addEventListener("dragleave",(function(e){e.preventDefault(),this.classList.remove("dockingtab")})),s.addEventListener("drop",(function(e){e.preventDefault();const n=e.dataTransfer.getData("source"),s=document.getElementById(n);if(!s)return;this.appendChild(s);const a=document.getElementById(n+"_content");i.area.attach(a),this.classList.remove("dockingtab"),t.emit("@on_tab_docked"),s.instance=i,s.click(),i.tabs[s.dataset.name]=a})),e.root.classList.add("lexareatabscontainer"),e.split({type:"vertical",sizes:n.sizes??"auto",resize:!1,top:6}),e.sections[0].attach(s),this.area=e.sections[1],this.area.root.className+=" lexareatabscontent",this.selected=null,this.root=s,this.tabs={},this.tabDOMs={},n.fit){let e=document.createElement("span");e.className="lexareatab thumb",this.thumb=e,this.root.appendChild(e);new ResizeObserver((e=>{const t=this.thumb.item;if(t){var n=this.thumb.style.transition;this.thumb.style.transition="none",this.thumb.style.transform="translate( "+t.childIndex*t.offsetWidth+"px )",this.thumb.style.width=t.offsetWidth-5+"px",this.thumb.style.height=t.offsetHeight-6+"px",y(this.thumb),this.thumb.style.transition=n}})).observe(this.area.root)}if(a){this.folded=!0,this.folding=a,"up"==a&&e.root.insertChildAtIndex(e.sections[1].root,0);new ResizeObserver((t=>{for(const n of t){const t=n.contentRect,s=!0;e.parentArea.sections[0].root.style.height="calc(100% - "+((s?42:0)+t.height)+"px )"}})).observe(this.area.root),this.area.root.classList.add("folded")}}add(e,n,s={}){let a=s.selected??!1;a&&(this.root.querySelectorAll("span").forEach((e=>e.classList.remove("selected"))),this.area.root.querySelectorAll(".lextabcontent").forEach((e=>e.style.display="none"))),a=!Object.keys(this.tabs).length&&!this.folding||a;let i=n.root?n.root:n;if(i.originalDisplay=i.style.display,i.style.display=a?i.originalDisplay:"none",i.classList.add("lextabcontent"),s.icon)if(s.icon.includes("fa-"))s.icon="<i class='"+s.icon+"'></i>";else{const e="https://raw.githubusercontent.com/jxarco/lexgui.js/master/";s.icon="<img src='"+(e+s.icon)+"'>"}let l=document.createElement("span");l.dataset.name=e,l.className="lexareatab"+(a?" selected":""),l.innerHTML=(s.icon??"")+e,l.id=e.replace(/\s/g,"")+E.TAB_ID++,l.title=s.title??"",l.selected=a??!1,l.fixed=s.fixed,l.instance=this,i.id=l.id+"_content",l.selected&&(this.selected=e),t.addSignal("@on_tab_docked",l,(function(){1==this.parentElement.childNodes.length&&this.parentElement.childNodes[0].click()})),l.addEventListener("click",(e=>{if(e.preventDefault(),e.stopPropagation(),!l.fixed){const e=l.selected;l.parentElement.querySelectorAll("span").forEach((e=>e.selected=!1)),l.selected=!e,l.parentElement.querySelectorAll("span").forEach((e=>e.classList.remove("selected"))),l.classList.toggle("selected",this.folding&&l.selected),l.instance.area.root.querySelectorAll(".lextabcontent").forEach((e=>e.style.display="none")),i.style.display=i.originalDisplay,l.instance.selected=l.dataset.name}this.folding&&(this.folded=l.selected,this.area.root.classList.toggle("folded",!this.folded)),s.onSelect&&s.onSelect(e,l.dataset.name),this.thumb&&(this.thumb.style.transform="translate( "+l.childIndex*l.offsetWidth+"px )",this.thumb.style.width=l.offsetWidth-5+"px",this.thumb.style.height=l.offsetHeight-6+"px",this.thumb.item=l)})),l.addEventListener("contextmenu",(e=>{e.preventDefault(),e.stopPropagation(),s.onContextMenu&&s.onContextMenu(e,l.dataset.name)})),l.addEventListener("mouseup",(e=>{e.preventDefault(),e.stopPropagation(),1==e.button&&this.delete(l.dataset.name)})),l.setAttribute("draggable",!0),l.addEventListener("dragstart",(function(e){1!=this.parentElement.childNodes.length?e.dataTransfer.setData("source",e.target.id):e.preventDefault()})),l.childIndex=this.root.childElementCount-1,this.root.appendChild(l),this.area.attach(i),this.tabDOMs[e]=l,this.tabs[e]=n,setTimeout((()=>{s.onCreate&&s.onCreate.call(this,this.area.root.getBoundingClientRect()),a&&this.thumb&&(this.thumb.style.transform="translate( "+l.childIndex*l.offsetWidth+"px )",this.thumb.style.width=l.offsetWidth-5+"px",this.thumb.style.height=l.offsetHeight-6+"px",this.thumb.item=l)}),10)}select(e){this.tabDOMs[e]&&this.tabDOMs[e].click()}delete(e){const t=this.tabDOMs[e];if(!t||t.fixed)return;this.onclose&&this.onclose(e),this.tabDOMs[e].remove(),delete this.tabDOMs[e],this.tabs[e].remove(),delete this.tabs[e];const n=this.root.lastChild;n&&!n.fixed&&this.root.lastChild.click()}}t.Tabs=E;class x{constructor(e={}){this.root=document.createElement("div"),this.root.className="lexmenubar",e.float&&(this.root.style.justifyContent=e.float),this.items=[],this.icons={},this.shorts={},this.buttons=[]}add(e,t={}){t.constructor==Function&&(t={callback:t});const n=e.split("/"),s=n[n.length-1];this.icons[s]=t.icon,this.shorts[s]=t.short;let a=0,i=this;const l=(e,s)=>{if(null==e)return;let i=null;if(s.forEach((t=>{const n=Object.keys(t).find((t=>t==e));n&&(i=t[n])})),i)l(n[a++],i);else{let i={};i[e]=[];const o=n[a++];o||(i.callback=t.callback,i.type=t.type,i.checked=t.checked),s.push(i),l(o,i[e])}};l(n[a++],this.items);for(let e of this.items){let n=Object.keys(e)[0],s=n.replace(/\s/g,"").replaceAll(".","");if(this.root.querySelector("#"+s))continue;let a=document.createElement("div");a.className="lexmenuentry",a.id=s,a.innerHTML="<span>"+n+"</span>","left"==t.position?this.root.prepend(a):("right"==t.position&&(a.right=!0),this.root.lastChild&&this.root.lastChild.right?this.root.lastChild.before(a):this.root.appendChild(a));const l=function(e,t,n,s){let a=document.createElement("div");a.className="lexcontextmenu",a.tabIndex="0";const o=n.classList.contains("lexcontextmenuentry");var r=n.getBoundingClientRect();a.style.left=(o?r.width:r.left)+"px",a.style.top=(o?0:r.bottom-4)+"px",n.appendChild(a),a.focus(),r=a.getBoundingClientRect();for(var c=0;c<e[t].length;++c){const n=e[t][c],o=Object.keys(n)[0],r=n[o].length,d="checkbox"==n.type;let h=document.createElement("div");if(h.className="lexcontextmenuentry",h.className+=c==e[t].length-1?" last":"",""==o)h.className=" lexseparator";else{h.id=o;let e=document.createElement("div");e.innerHTML="",e.classList="lexcontextmenuentrycontainer",h.appendChild(e);const t=i.icons[o];d?e.innerHTML+="<input type='checkbox' >":t?e.innerHTML+="<a class='"+t+" fa-sm'></a>":(e.innerHTML+="<a class='fa-solid fa-sm noicon'></a>",e.classList.add("noicon")),e.innerHTML+="<div class='lexentryname'>"+o+"</div>"}let u=h.querySelector("input");if(u&&(u.checked=n.checked??!1,u.addEventListener("change",(e=>{n.checked=u.checked;const t=n.callback;t&&(t.call(this,n.checked,o,h),i.root.querySelectorAll(".lexcontextmenu").forEach((e=>e.remove()))),e.stopPropagation(),e.stopImmediatePropagation()}))),a.appendChild(h),""==o)continue;if(a.addEventListener("keydown",(function(e){e.preventDefault();let t=i.shorts[o];t&&(t=1==t.length?t.toLowerCase():t,t==e.key&&h.click())})),h.addEventListener("click",(e=>{u&&(n.checked=!n.checked);const t=n.callback;t&&(t.call(this,u?n.checked:o,u?o:h),i.root.querySelectorAll(".lexcontextmenu").forEach((e=>e.remove()))),e.stopPropagation(),e.stopImmediatePropagation()})),!r){if(i.shorts[o]){let e=document.createElement("div");e.className="lexentryshort",e.innerText=i.shorts[o],h.appendChild(e)}continue}let p=document.createElement("a");p.className="fa-solid fa-angle-right fa-xs",h.appendChild(p),h.addEventListener("mouseover",(e=>{h.built||(h.built=!0,l(n,o,h,++s),e.stopPropagation())})),h.addEventListener("mouseleave",(()=>{s=-1,delete h.built,a.querySelectorAll(".lexcontextmenu").forEach((e=>e.remove()))}))}a.style.width=a.offsetWidth+"px"};a.addEventListener("click",(()=>{const t=e.callback;t?t.call(this,n,a):(this.root.querySelectorAll(".lexmenuentry").forEach((e=>e.classList.remove("selected"))),a.classList.add("selected"),this.root.querySelectorAll(".lexcontextmenu").forEach((e=>e.remove())),l(e,n,a,-1))})),a.addEventListener("mouseleave",(()=>{this.root.querySelectorAll(".lexmenuentry").forEach((e=>e.classList.remove("selected"))),this.root.querySelectorAll(".lexcontextmenu").forEach((e=>e.remove()))}))}}getButton(e){return this.buttons[e]}getSubitem(e,t){let n=null,s=t[0];for(let a=0;a<e.length;a++)if(e[a][s])return 1==t.length?(n=e[a],n):(t.splice(0,1),this.getSubitem(e[a][s],t))}getItem(e){const t=e.split("/");return this.getSubitem(this.items,t)}setButtonIcon(e,t,n,s={}){const a=this.buttons[e];if(a)a.querySelector("a").className="fa-solid "+t+" lexicon";else{let a=document.createElement("div");const i=s.disabled??!1;a.className="lexmenubutton"+(i?" disabled":""),a.title=e??"",a.innerHTML="<a class='"+t+" lexicon' style='font-size:x-large;'></a>",a.style.padding="5px 10px",a.style.maxHeight="calc(100% - 10px)",a.style.alignItems="center","right"==s.float&&(a.right=!0),this.root.lastChild&&this.root.lastChild.right?this.root.lastChild.before(a):"left"==s.float?this.root.prepend(a):this.root.appendChild(a);const l=a.querySelector("a");l.addEventListener("click",(e=>{n&&!i&&n.call(this,l,e)}))}}setButtonImage(e,t,n,s={}){const a=this.buttons[e];if(a)a.querySelector("a").className="fa-solid "+icon+" lexicon";else{let a=document.createElement("div");const i=s.disabled??!1;a.className="lexmenubutton"+(i?" disabled":""),a.title=e??"",a.innerHTML="<a><image src='"+t+"' class='lexicon' style='height:32px;'></a>",a.style.padding="5px",a.style.alignItems="center","right"==s.float&&(a.right=!0),this.root.lastChild&&this.root.lastChild.right?this.root.lastChild.before(a):"left"==s.float?this.root.prepend(a):this.root.appendChild(a);const l=a.querySelector("a");l.addEventListener("click",(e=>{n&&!i&&n.call(this,l,e)}))}}addButtons(e,t={}){if(!e)throw"No buttons to add!";this.buttonContainer||(this.buttonContainer=document.createElement("div"),this.buttonContainer.className="lexmenubuttons",this.buttonContainer.classList.add(t.float??"center"),"right"==t.position&&(this.buttonContainer.right=!0),this.root.lastChild&&this.root.lastChild.right?this.root.lastChild.before(this.buttonContainer):this.root.appendChild(this.buttonContainer));for(let t=0;t<e.length;++t){let n=e[t],s=document.createElement("label");const a=n.title;let i=n.disabled??!1;s.className="lexmenubutton"+(i?" disabled":""),s.title=a??"",this.buttonContainer.appendChild(s);const l=document.createElement("a");l.className=n.icon+" lexicon",s.appendChild(l);let o=l;if(n.swap){s.classList.add("swap"),l.classList.add("swap-off");const e=document.createElement("input");e.type="checkbox",s.prepend(e),o=e;const t=document.createElement("a");t.className=n.swap+" swap-on lexicon",s.appendChild(t),s.swap=function(){const e=this.querySelector("input");e.checked=!e.checked},s.setState=function(e){this.querySelector("input").checked=e}}o.addEventListener("click",(e=>{if(n.callback&&!i){const t=s.querySelector("input");n.callback.call(this,e,t?.checked)}})),a&&(this.buttons[a]=s)}}}t.Menubar=x;class b{constructor(e={}){this.root=document.createElement("div"),this.root.className="lexsidebar",this.footer=document.createElement("div"),this.footer.className="lexsidebarfooter",this.root.appendChild(this.footer),this.items=[]}add(e,t={}){t.constructor==Function&&(t={callback:t});let n=e.replace(/\s/g,"").replaceAll(".","");if(this.items.findIndex(((e,t)=>e.key==n))>-1)return void console.warn(`'${e}' already created in Sidebar`);let s=document.createElement("div");s.className="lexsidebarentry "+(t.className??""),s.id=n,t.bottom?this.footer.appendChild(s):this.root.appendChild(s),this.root.appendChild(this.footer);let a=document.createElement("button");a.innerHTML="<i class='"+(t.icon??"")+"'></i>",s.appendChild(a);let i=document.createElement("span");i.className="lexsidebarentrydesc",i.innerHTML=e,s.appendChild(i),a.addEventListener("mouseenter",(()=>{setTimeout((()=>{i.style.display="unset"}),100)})),a.addEventListener("mouseleave",(()=>{setTimeout((()=>{i.style.display="none"}),100)})),s.addEventListener("click",(()=>{const n=t.callback;n&&n.call(this,e,s),t.bottom||(this.root.querySelectorAll(".lexsidebarentry").forEach((e=>e.classList.remove("selected"))),s.classList.add("selected"))})),this.items.push({name:n,domEl:s,callback:t.callback})}select(e){let t=e.replace(/\s/g,"").replaceAll(".","");const n=this.items.find((e=>e.name===t));n&&n.domEl.click()}}t.SideBar=b;class _{static NONE=0;static TEXT=1;static TEXTAREA=2;static BUTTON=3;static DROPDOWN=4;static CHECKBOX=5;static TOGGLE=6;static COLOR=7;static NUMBER=8;static TITLE=9;static VECTOR=10;static TREE=11;static PROGRESS=12;static FILE=13;static LAYERS=14;static ARRAY=15;static LIST=16;static TAGS=17;static CURVE=18;static CARD=19;static IMAGE=20;static CONTENT=21;static CUSTOM=22;static SEPARATOR=23;static KNOB=24;static SIZE=25;static PAD=26;static FORM=27;static DIAL=28;static COUNTER=29;static TABLE=30;static NO_CONTEXT_TYPES=[_.BUTTON,_.LIST,_.FILE,_.PROGRESS];constructor(e,t,n){this.name=e,this.type=t,this.options=n}value(){if(this.onGetValue)return this.onGetValue();console.warn("Can't get value of "+this.typeName())}set(e,t=!1,n=""){if(this.onSetValue)return this.onSetValue(e,t);console.warn("Can't set value of "+this.typeName())}oncontextmenu(e){_.NO_CONTEXT_TYPES.includes(this.type)||k(this.typeName(),e,(e=>{e.add("Copy",(()=>{this.copy()})),e.add("Paste",{disabled:!this._can_paste(),callback:()=>{this.paste()}})}))}copy(){navigator.clipboard.type=this.type,navigator.clipboard.customIdx=this.customIdx,navigator.clipboard.data=this.value(),navigator.clipboard.writeText(navigator.clipboard.data)}_can_paste(){return this.type===_.CUSTOM?void 0!==navigator.clipboard.customIdx&&this.customIdx==navigator.clipboard.customIdx:navigator.clipboard.type===this.type}paste(){this._can_paste()&&this.set(navigator.clipboard.data)}typeName(){switch(this.type){case _.TEXT:return"Text";case _.TEXTAREA:return"TextArea";case _.BUTTON:return"Button";case _.DROPDOWN:return"Dropdown";case _.CHECKBOX:return"Checkbox";case _.TOGGLE:return"Toggle";case _.COLOR:return"Color";case _.NUMBER:return"Number";case _.VECTOR:return"Vector";case _.TREE:return"Tree";case _.PROGRESS:return"Progress";case _.FILE:return"File";case _.LAYERS:return"Layers";case _.ARRAY:return"Array";case _.LIST:return"List";case _.TAGS:return"Tags";case _.CURVE:return"Curve";case _.KNOB:return"Knob";case _.SIZE:return"Size";case _.PAD:return"Pad";case _.FORM:return"Form";case _.DIAL:return"Dial";case _.COUNTER:return"Counter";case _.TABLE:return"Table";case _.CUSTOM:return this.customName}console.error(`Unknown Widget type: ${this.type}`)}refresh(){}}t.Widget=_,t.ADD_CUSTOM_WIDGET=function(e,n={}){let s=u();L.prototype["add"+e]=function(a,i,l){let o=this.create_widget(a,_.CUSTOM,n);o.customName=e,o.customIdx=s,o.onGetValue=()=>i,o.onSetValue=(e,t)=>{i=e,p(),h.querySelector(".lexcustomitems").toggleAttribute("hidden",!1),t||this._trigger(new g(a,i,null),l)};let c,d,h=o.domEl;h.style.flexWrap="wrap";let u=n.default??{};const p=()=>{i&&(o.instance=i=Object.assign(r(u),i)),c&&c.remove(),d&&d.remove(),c=document.createElement("div"),c.className="lexcustomcontainer",c.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")",this.queue(c);let s="<a class='fa-solid "+(n.icon??"fa-cube")+"' style='float:left'></a>";s+=e+(i?"":" [empty]"),s+="<a class='fa-solid "+(i?"fa-bars-staggered":" ")+" menu' style='float:right; width:5%;'></a>";let m=this.addButton(null,s,((t,n)=>{i?h.querySelector(".lexcustomitems").toggleAttribute("hidden"):k(null,n,(t=>{t.add("New "+e,(()=>{i={},p(),h.querySelector(".lexcustomitems").toggleAttribute("hidden",!1)}))}))}),{buttonClass:"custom"});if(this.clearQueue(),i&&m.querySelector("a.menu").addEventListener("click",(e=>{e.stopImmediatePropagation(),e.stopPropagation(),k(null,e,(e=>{e.add("Clear",(()=>{i=null,p()}))}))})),d=document.createElement("div"),d.className="lexcustomitems",d.toggleAttribute("hidden",!0),h.appendChild(c),h.appendChild(d),i){this.queue(d);const e=(e,t,n)=>{i[e]=t,this._trigger(new g(a,i,n),l)};for(let t in u){const n=i[t]??u[t];switch(n.constructor){case String:"#"===n[0]?this.addColor(t,n,e.bind(this,t)):this.addText(t,n,e.bind(this,t));break;case Number:this.addNumber(t,n,e.bind(this,t));break;case Boolean:this.addCheckbox(t,n,e.bind(this,t));break;case Array:n.length>4?this.addArray(t,n,e.bind(this,t)):this._add_vector(n.length,t,n,e.bind(this,t))}}this.clearQueue()}};p()}};class w{constructor(e,t,n){if(this.domEl=e,this.data=t,this.onevent=n.onevent,this.options=n,this.selected=[],t.constructor===Object)this._create_item(null,t);else for(let e of t)this._create_item(null,e)}_create_item(e,n,s=0,a){const i=this,l=this.domEl.querySelector("#lexnodetree_filter");if(n.children=n.children??[],l&&!n.id.includes(l.value)||null!=a&&a!=n.id){for(var o=0;o<n.children.length;++o)this._create_item(n,n.children[o],s+1,a);return}const r=this.domEl.querySelector("ul");n.visible=n.visible??!0,n.parent=e;let c=n.children.length>0,d=this.selected.indexOf(n)>-1||n.selected;if(this.options.onlyFolders){let e=!1;n.children.forEach((t=>e|="folder"==t.type)),c=!!e}let h=document.createElement("li");h.className="lextreeitem datalevel"+s+(c?" parent":"")+(d?" selected":""),h.id=t.getSupportedDOMName(n.id),h.tabIndex="0";let u=this.options.skip_default_icon??1?"":"fa-solid fa-square";if(c&&(u=n.closed?"fa-solid fa-caret-right":"fa-solid fa-caret-down"),h.innerHTML="<a class='"+u+" hierarchy'></a>",u=n.icon,n.icon)if(n.icon.includes("fa-"))h.innerHTML+="<a class='"+n.icon+" tree-item-icon'></a>";else{const e="https://raw.githubusercontent.com/jxarco/lexgui.js/master/";h.innerHTML+="<img src='"+(e+n.icon)+"'>"}h.innerHTML+=n.rename?"":n.id,h.setAttribute("draggable",!0),h.style.paddingLeft=3+15*(s+1)+(c?0:3)+"px",r.appendChild(h),h.addEventListener("click",(e=>{if(m)return void(m=!1);e.shiftKey||(r.querySelectorAll("li").forEach((e=>{e.classList.remove("selected")})),this.selected.length=0);const t=this.selected.indexOf(n);if(t>-1?(h.classList.remove("selected"),this.selected.splice(t,1)):(h.classList.add("selected"),this.selected.push(n)),c&&n.id.length>1){if(n.closed=!1,i.onevent){const e=new f(f.NODE_CARETCHANGED,n,n.closed);i.onevent(e)}i.frefresh(n.id)}if(i.onevent){const t=new f(f.NODE_SELECTED,e.shiftKey?this.selected:n);t.multiple=e.shiftKey,i.onevent(t)}})),h.addEventListener("dblclick",(function(){if((i.options.rename??1)&&(n.rename=!0,i.refresh()),i.onevent){const e=new f(f.NODE_DBLCLICKED,n);i.onevent(e)}})),h.addEventListener("contextmenu",(e=>{if(e.preventDefault(),i.onevent)return;const s=new f(f.NODE_CONTEXTMENU,this.selected.length>1?this.selected:n,e);s.multiple=this.selected.length>1,t.addContextMenu(s.multiple?"Selected Nodes":s.node.id,s.value,(e=>{s.panel=e})),i.onevent(s),1==(this.options.addDefault??!1)&&(s.panel.items&&s.panel.add(""),s.panel.add("Select Children",(()=>{const e=t=>{if(!t.closed)for(let n of t.children??[]){if(!n)continue;this.domEl.querySelector("#"+n.id).classList.add("selected"),this.selected.push(n),e(n)}};e(n)})),s.panel.add("Delete",{callback:()=>{if(!n.parent)return;if(i.onevent){const t=new f(f.NODE_DELETED,n,e);i.onevent(t)}let t=n.parent.children;const s=t.indexOf(n);t.splice(s,1),this.refresh()}}))})),h.addEventListener("keydown",(e=>{if(!n.rename)if(e.preventDefault(),"Delete"==e.key){if(i.onevent){const t=new f(f.NODE_DELETED,this.selected.length>1?this.selected:n,e);t.multiple=this.selected.length>1,i.onevent(t)}for(let e of this.selected){let t=e.parent.children;const n=t.indexOf(e);t.splice(n,1)}this.selected.length=0,this.refresh()}else if("ArrowUp"==e.key||"ArrowDown"==e.key){var s=this.selected.length>1?"ArrowUp"==e.key?this.selected.shift():this.selected.pop():this.selected[0],a=this.domEl.querySelector("#"+t.getSupportedDOMName(s.id)),l="ArrowUp"==e.key?a.previousSibling:a.nextSibling;l&&l.click()}}));let p=document.createElement("input");p.toggleAttribute("hidden",!n.rename),p.value=n.id,h.appendChild(p),n.rename&&(h.classList.add("selected"),p.focus()),p.addEventListener("keyup",(function(e){if("Enter"==e.key){if(this.value=this.value.replace(/\s/g,"_"),i.onevent){const e=new f(f.NODE_RENAMED,n,this.value);i.onevent(e)}n.id=t.getSupportedDOMName(this.value),delete n.rename,i.frefresh(n.id),r.querySelector("#"+n.id).classList.add("selected")}"Escape"==e.key&&(delete n.rename,i.frefresh(n.id))})),p.addEventListener("blur",(function(e){delete n.rename,i.refresh()})),(this.options.draggable??1)&&(e&&h.addEventListener("dragstart",(e=>{window.__tree_node_dragged=n})),h.addEventListener("dragover",(e=>{e.preventDefault()}),!1),h.addEventListener("dragenter",(e=>{e.target.classList.add("draggingover")})),h.addEventListener("dragleave",(e=>{e.target.classList.remove("draggingover")})),h.addEventListener("drop",(e=>{e.preventDefault();let t=window.__tree_node_dragged;if(!t)return;let s=n;if(t.id==s.id)return void console.warn("Cannot parent node to itself!");const a=function(e,t){var n=!1;for(var s of t.children){if(s.id==e.id)return!0;n|=a(e,s)}return n};if(a(s,t))return void console.warn("Cannot parent node to a current child!");if(i.onevent){const e=new f(f.NODE_DRAGGED,t,s);i.onevent(e)}const l=t.parent.children.findIndex((e=>e.id==t.id)),o=t.parent.children.splice(l,1);s.children.push(o[0]),i.refresh(),delete window.__tree_node_dragged})));let m=!1;if(c&&h.querySelector("a.hierarchy").addEventListener("click",(function(e){if(m=!0,e.stopImmediatePropagation(),e.stopPropagation(),n.closed=!n.closed,i.onevent){const e=new f(f.NODE_CARETCHANGED,n,n.closed);i.onevent(e)}i.frefresh(n.id)})),!n.skipVisibility){let e=document.createElement("a");e.className="itemicon fa-solid fa-eye"+(n.visible?"":"-slash"),e.title="Toggle visible",e.addEventListener("click",(function(e){if(e.stopPropagation(),n.visible=void 0!==n.visible&&!n.visible,this.className="itemicon fa-solid fa-eye"+(n.visible?"":"-slash"),i.onevent){const e=new f(f.NODE_VISIBILITY,n,n.visible);i.onevent(e)}})),h.appendChild(e)}if(n.actions)for(o=0;o<n.actions.length;++o){let e=n.actions[o];var g=document.createElement("a");g.className="itemicon "+e.icon,g.title=e.name,g.addEventListener("click",(function(t){e.callback(n,g),t.stopPropagation()})),h.appendChild(g)}if(null!=a&&n.id==a&&(this.selected=[n],h.click()),!n.closed)for(o=0;o<n.children.length;++o){let e=n.children[o];this.options.onlyFolders&&"folder"!=e.type||this._create_item(n,e,s+1)}}refresh(e,t){this.data=e??this.data,this.domEl.querySelector("ul").innerHTML="",this._create_item(null,this.data,0,t)}frefresh(e){this.refresh();var t=this.domEl.querySelector("#"+e);t&&t.focus()}select(e){this.refresh(null,e)}}class L{constructor(e={}){var t=document.createElement("div");t.className="lexpanel",e.id&&(t.id=e.id),e.className&&(t.className+=" "+e.className),t.style.width=e.width||"calc( 100% - 6px )",t.style.height=e.height||"100%",Object.assign(t.style,e.style??{}),this._inline_widgets_left=-1,this._inline_queued_container=null,this.root=t,this.onevent=e=>{},this.branch_open=!1,this.branches=[],this.current_branch=null,this.widgets={},this._queue=[]}get(e){return this.widgets[e]}getValue(e){let t=this.widgets[e];if(!t)throw"No widget called "+e;return t.value()}setValue(e,t,n){let s=this.widgets[e];if(!s)throw"No widget called "+e;return s.set(t,n)}attach(e){if(!e)throw"no content to attach";e.parent=this;let t=e.root?e.root:e;this.root.appendChild(t)}clear(){this.branch_open=!1,this.branches=[],this.current_branch=null;for(let e in this.widgets)if(this.widgets[e].options&&this.widgets[e].options.signal){const n=this.widgets[e].options.signal;for(let s=0;s<t.signals[n].length;s++)t.signals[n][s]==this.widgets[e]&&(t.signals[n]=[...t.signals[n].slice(0,s),...t.signals[n].slice(s+1)])}if(this.signals)for(let e=0;e<this.signals.length;e++){let n=Object.values(this.signals[e])[0],s=n.options.signal;for(let e=0;e<t.signals[s].length;e++)t.signals[s][e]==n&&(t.signals[s]=[...t.signals[s].slice(0,e),...t.signals[s].slice(e+1)])}this.widgets={},this.root.innerHTML=""}sameLine(e){this._inline_queued_container=this.queuedContainer,this._inline_widgets_left=e||1/0}endLine(e){if(-1!=this._inline_widgets_left){this._inline_widgets_left=-1,this._inlineContainer||(this._inlineContainer=document.createElement("div"),this._inlineContainer.className="lexinlinewidgets",e&&(this._inlineContainer.style.justifyContent=e));for(let e of this._inlineWidgets){e.constructor==Array?this._inline_queued_container?this._inlineContainer.appendChild(e[0]):e[1].appendChild(e[0]):this._inlineContainer.appendChild(e)}this._inline_queued_container?this._inline_queued_container.appendChild(this._inlineContainer):this.current_branch?this.current_branch.content.appendChild(this._inlineContainer):this.root.appendChild(this._inlineContainer),delete this._inlineWidgets,delete this._inlineContainer}else console.warn("No pending widgets to be inlined!")}branch(e,t={}){this.branch_open&&this.merge();var n=new C(e,t);return n.panel=this,this.branch_open=!0,this.current_branch=n,0==this.branches.length&&n.root.classList.add("first"),this.root.querySelectorAll(".lexbranch.last").forEach((e=>{e.classList.remove("last")})),n.root.classList.add("last"),this.branches.push(n),this.root.appendChild(n.root),t.filter&&this._addFilter(t.filter,{callback:this._searchWidgets.bind(this,n.name)}),n}merge(){this.branch_open=!1,this.current_branch=null}_pick(e,t){return void 0===e?t:e}static _dispatch_event(e,t,n,s,a){let i=new CustomEvent(t,{detail:n,bubbles:s,cancelable:a});e.dispatchEvent(i)}static _add_reset_property(e,t){var n=document.createElement("a");return n.style.display="none",n.style.marginRight="6px",n.className="lexicon fa fa-rotate-left",n.addEventListener("click",t),e.appendChild(n),n}create_widget(e,n,s={}){let a=new _(e,n,s),i=document.createElement("div");if(i.className="lexwidget",i.id=s.id??"",i.title=s.title??"",s.className&&(i.className+=" "+s.className),n!=_.TITLE&&(i.style.width="calc(100% - "+(this.current_branch||n==_.FILE?10:20)+"px)",s.width&&(i.style.width=i.style.minWidth=s.width),s.maxWidth&&(i.style.maxWidth=s.maxWidth),s.minWidth&&(i.style.minWidth=s.minWidth),s.height&&(i.style.height=i.style.minHeight=s.height)),null!=e){if(!s.hideName){let n=document.createElement("div");n.className="lexwidgetname",s.justifyName&&n.classList.add("float-"+s.justifyName),n.innerHTML=e||"",n.title=s.title??n.innerHTML,n.style.width=s.nameWidth||t.DEFAULT_NAME_WIDTH,i.appendChild(n),i.domName=n,n.addEventListener("contextmenu",(function(e){e.preventDefault(),a.oncontextmenu(e)}))}this.widgets[e]=a}s.signal&&(e||(this.signals||(this.signals=[]),this.signals.push({[s.signal]:a})),t.addSignal(s.signal,a)),a.domEl=i,i.jsInstance=a;const l=e=>{s.container?s.container.appendChild(e):this.queuedContainer?this.queuedContainer.appendChild(e):this.current_branch?(s.skipWidget||this.current_branch.widgets.push(a),this.current_branch.content.appendChild(e)):(e.classList.add("nobranch"),this.root.appendChild(e))},o=e=>{this.queuedContainer?this._inlineWidgets.push([e,this.queuedContainer]):this._inlineWidgets.push(e)};return this._inline_widgets_left>0&&!s.skipInlineCount?(this._inlineWidgets||(this._inlineWidgets=[]),o(i),this._inline_widgets_left--,this._inline_widgets_left||this.endLine()):l(i),a}_addFilter(e,t={}){t.placeholder=e.constructor==String?e:"Filter properties..",t.skipWidget=t.skipWidget??!0,t.skipInlineCount=!0;let n=this.create_widget(null,_.TEXT,t).domEl;n.className+=" lexfilter noname";let s=document.createElement("input");s.className="lexinput-filter",s.setAttribute("placeholder",t.placeholder),s.style.width="calc( 100% - 17px )",s.value=t.filterValue||"";let a=document.createElement("a");return a.className="fa-solid fa-magnifying-glass",n.appendChild(a),n.appendChild(s),s.addEventListener("input",(e=>{t.callback&&t.callback(s.value,e)})),n}_searchWidgets(e,t){for(let n of this.branches){if(n.name!==e)continue;for(let e of n.widgets)e.domEl.classList.contains("lexfilter")||e.domEl.remove();this.queue(n.content);const s=!t.length;for(let e of n.widgets){if(!s){if(!e.name)continue;t.toLowerCase();if(!e.name.toLowerCase().includes(t))continue}this.queuedContainer.appendChild(e.domEl)}return void this.clearQueue()}}_filterOptions(e,t){const n=!t.length;let s=[];for(let a=0;a<e.length;a++){let i=e[a];if(!n){let e="string"==typeof i?i:i.value;const n=t.toLowerCase();if(!e.toLowerCase().includes(n))continue}s.push(i)}this.refresh(s)}_trigger(e,t){t&&t.call(this,e.value,e.domEvent,e.name),this.onevent&&this.onevent.call(this,e)}getBranch(e){return e?this.branches.find((t=>t.name==e)):this.current_branch}queue(e){!e&&this.current_branch&&(e=this.current_branch.root),this.queuedContainer&&this._queue.push(this.queuedContainer),this.queuedContainer=e}clearQueue(){this._queue&&this._queue.length?this.queuedContainer=this._queue.pop():delete this.queuedContainer}addBlank(e=8,t){let n=this.create_widget(null,_.addBlank);return n.domEl.className+=" blank",n.domEl.style.height=e+"px",t&&(n.domEl.style.width=t),n}addTitle(e,t={}){if(!e)throw"Can't create Title without text!";let n=this.create_widget(null,_.TITLE,t).domEl;if(n.className="lextitle",t.icon){let e=document.createElement("a");e.className=t.icon,e.style.color=t.iconColor||"",n.appendChild(e)}let s=document.createElement("span");if(s.innerText=e,n.appendChild(s),Object.assign(n.style,t.style??{}),null!=t.link){let s=document.createElement("a");s.innerText=e,s.href=t.link,s.target=t.target??"",s.className="lextitle link",Object.assign(s.style,t.style??{}),n.replaceWith(s)}return n}addText(e,n,s,a={}){let i=this.create_widget(e,_.TEXT,a);i.onGetValue=()=>r.value,i.onSetValue=(e,t)=>{this.disabled?r.innerText=e:r.value=e,L._dispatch_event(r,"focusout",t)},i.valid=()=>{if(""==r.pattern)return!0;return new RegExp(r.pattern).test(r.value)};let l=i.domEl;i.name&&!a.skipReset&&L._add_reset_property(l.domName,(function(){r.value=r.iValue,this.style.display="none",L._dispatch_event(r,"focusout")}));let o=document.createElement("div");o.className="lextext"+(a.warning?" lexwarning":""),o.style.width=a.inputWidth||"calc( 100% - "+t.DEFAULT_NAME_WIDTH+" )",o.style.display="flex",a.textClass&&o.classList.add(a.textClass),this.disabled=(a.disabled||a.warning)??!!a.url;let r=null;if(this.disabled){r=document.createElement(a.url?"a":"div"),a.url&&(r.href=a.url,r.target="_blank");const e=a.warning?'<i class="fa-solid fa-triangle-exclamation"></i>':"";r.innerHTML=e+n||"",r.style.width="100%",r.style.textAlign=a.float??""}else{r=document.createElement("input"),r.type=a.type||"",r.value=r.iValue=n||"",r.style.width="100%",r.style.textAlign=a.float??"",r.setAttribute("placeholder",a.placeholder??""),a.required&&r.setAttribute("required",a.required),a.pattern&&r.setAttribute("pattern",a.pattern);var c=function(t,n){if(!i.valid())return;const a=n.detail;let o=l.querySelector(".lexwidgetname .lexicon");o&&(o.style.display=t!=r.iValue?"block":"none"),a||this._trigger(new g(e,t,n),s)}.bind(this);const t=a.trigger??"default";if("default"==t?(r.addEventListener("keyup",(function(e){"Enter"==e.key&&c(e.target.value,e)})),r.addEventListener("focusout",(function(e){c(e.target.value,e)}))):"input"==t&&r.addEventListener("input",(function(e){c(e.target.value,e)})),r.addEventListener("mousedown",(function(e){e.stopImmediatePropagation(),e.stopPropagation()})),a.icon){let e=document.createElement("a");e.className="inputicon "+a.icon,o.appendChild(e)}}return Object.assign(r.style,a.style??{}),o.appendChild(r),l.appendChild(o),i.name||(l.className+=" noname",o.style.width="100%"),i}addTextArea(e,n,s,a={}){let l=this.create_widget(e,_.TEXTAREA,a);l.onGetValue=()=>c.value,l.onSetValue=(e,t)=>{c.value=e,L._dispatch_event(c,"focusout",t)};let o=l.domEl;l.name&&!a.skipReset&&L._add_reset_property(o.domName,(function(){c.value=c.iValue,this.style.display="none",L._dispatch_event(c,"focusout")}));let r=document.createElement("div");r.className="lextextarea",r.style.width=a.inputWidth||"calc( 100% - "+t.DEFAULT_NAME_WIDTH+" )",r.style.height=a.height,r.style.display="flex";let c=document.createElement("textarea");c.value=c.iValue=n||"",c.style.width="100%",c.style.textAlign=a.float??"",Object.assign(c.style,a.style??{}),a.disabled&&c.setAttribute("disabled",!0),a.placeholder&&c.setAttribute("placeholder",a.placeholder);var d=function(t,n){const a=n.detail;let i=o.querySelector(".lexwidgetname .lexicon");i&&(i.style.display=t!=c.iValue?"block":"none"),a||this._trigger(new g(e,t,n),s)}.bind(this);const h=a.trigger??"default";if("default"==h?(c.addEventListener("keyup",(function(e){"Enter"==e.key&&d(e.target.value,e)})),c.addEventListener("focusout",(function(e){d(e.target.value,e)}))):"input"==h&&c.addEventListener("input",(function(e){d(e.target.value,e)})),a.icon){let e=document.createElement("a");e.className="inputicon "+a.icon,r.appendChild(e)}return r.appendChild(c),o.appendChild(r),l.name||(o.className+=" noname",r.style.width="100%"),i((()=>{a.fitHeight&&(c.style.height=c.scrollHeight+"px")}),10),l}addLabel(e,t={}){return t.disabled=!0,this.addText(null,e,null,t)}addButton(e,n,s,a={}){let i=this.create_widget(e,_.BUTTON,a);i.onGetValue=()=>o.innerText,i.onSetValue=(e,t)=>{o.innerHTML=a.icon?"<a class='"+a.icon+"'></a>":a.img?"<img src='"+a.img+"'>":"<span>"+(e||"")+"</span>"};let l=i.domEl;var o=document.createElement("button");return o.title=a.title??"",o.className="lexbutton "+(a.buttonClass??""),a.selected&&o.classList.add("selected"),o.innerHTML=a.icon?"<a class='"+a.icon+"'></a>":a.img?"<img src='"+a.img+"'>":"<span>"+(n||"")+"</span>",o.style.width="calc( 100% - "+(a.nameWidth??t.DEFAULT_NAME_WIDTH)+")",a.disabled&&o.setAttribute("disabled",!0),o.addEventListener("click",(t=>{a.selectable&&(a.parent&&a.parent.querySelectorAll(".lexbutton.selected").forEach((e=>{e!=o&&e.classList.remove("selected")})),o.classList.toggle("selected")),this._trigger(new g(e,n,t),s)})),l.appendChild(o),i.name||(o.className+=" noname",o.style.width="100%"),l}addComboButtons(e,n,s={}){let a=this.create_widget(e,_.BUTTON,s),i=a.domEl,l=this,o=document.createElement("div");o.className="lexcombobuttons ",s.float&&(o.className+=s.float),o.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")";let r=document.createElement("div");r.className="lexcombobuttonsbox ";let c=!s.noSelection;for(let t of n){if(!t.value)throw"Set 'value' for each button!";let n=document.createElement("button");n.className="lexbutton combo",n.title=t.icon?t.value:"",n.id=t.id??"",s.buttonClass&&n.classList.add(s.buttonClass),c&&s.selected==t.value&&n.classList.add("selected"),n.innerHTML=(t.icon?"<a class='"+t.icon+"'></a>":"")+"<span>"+(t.icon?"":t.value)+"</span>",s.disabled&&n.setAttribute("disabled",!0),n.addEventListener("click",(function(n){c&&(o.querySelectorAll("button").forEach((e=>e.classList.remove("selected"))),this.classList.add("selected")),l._trigger(new g(e,t.value,n),t.callback)})),r.appendChild(n)}return a.name||(i.className+=" noname",o.style.width="100%"),o.appendChild(r),i.appendChild(o),a}addCard(e,t={}){t.hideName=!0;let n=this.create_widget(e,_.CARD,t),s=n.domEl,a=document.createElement("div");if(a.className="lexcard",a.style.width="100%",t.img){let e=document.createElement("img");e.src=t.img,a.appendChild(e),null!=t.link&&(e.style.cursor="pointer",e.addEventListener("click",(function(){const e=a.querySelector("a");e&&e.click()})))}let i=document.createElement("span");if(i.innerText=e,null!=t.link){let n=document.createElement("a");n.innerText=e,n.href=t.link,n.target=t.target??"",i.innerText="",i.appendChild(n)}return a.appendChild(i),t.callback&&(a.style.cursor="pointer",a.addEventListener("click",(n=>{this._trigger(new g(e,null,n),t.callback)}))),s.appendChild(a),n}addForm(e,n,s,a={}){if(n.constructor!=Object)return void console.error("Form data must be an Object");a.hideName=!0;let i=this.create_widget(e,_.FORM,a);i.onGetValue=()=>o.formData,i.onSetValue=(e,n)=>{o.formData=e;const s=o.querySelectorAll(".lexwidget");for(let a=0;a<s.length;++a){if(s[a].jsInstance.type!=t.Widget.TEXT)continue;let i=s[a].querySelector(".lexwidgetname").innerText,l=s[a].querySelector(".lextext input");l.value=e[i]??"",L._dispatch_event(l,"focusout",n)}};let l=i.domEl,o=document.createElement("div");o.className="lexformdata",this.queue(o),o.formData={};for(let e in n){let t=n[e];t.constructor!=Object&&(t={}),t.placeholder=t.placeholder??e,t.width="calc(100% - 10px)",this.addLabel(e,{textClass:"formlabel"}),t.textWidget=this.addText(null,t.constructor==Object?t.value:t,(t=>{o.formData[e]=t}),t),o.formData[e]=t.constructor==Object?t.value:t}return this.addBlank(),this.addButton(null,a.actionName??"Submit",((e,t)=>{for(let e in n){if(!n[e].textWidget.valid())return}s&&s(o.formData,t)}),{buttonClass:"primary",width:"calc(100% - 10px)"}),this.clearQueue(),l.appendChild(o),i.name&&!a.hideName||(l.className+=" noname",o.style.width="100%"),i}addContent(e,t={}){if(!e)return;if(e.constructor==String){const t=document.createElement("div");t.innerHTML=e,e=t.childElementCount>1?t:t.firstElementChild}let n=this.create_widget(null,_.CONTENT,t);return n.domEl.appendChild(e),n}async addImage(e,t={}){if(!e)return;t.hideName=!0;let n=this.create_widget(null,_.IMAGE,t),s=n.domEl,a=document.createElement("div");a.className="leximage",a.style.width="100%";let i=document.createElement("img");i.src=e;for(let e in t.style)i.style[e]=t.style[e];return await i.decode(),a.appendChild(i),s.appendChild(a),n}addDropdown(e,n,s,a,i={}){let l=this.create_widget(e,_.DROPDOWN,i);l.onGetValue=()=>o.querySelector("li.selected").getAttribute("value"),l.onSetValue=(t,n)=>{let i=o.querySelector(".lexwidgetname .lexicon");i&&(i.style.display=t!=d.iValue?"block":"none"),s=t,m.querySelectorAll("li").forEach((e=>{e.getAttribute("value")==s&&e.click()})),n||this._trigger(new g(e,s,null),a)};let o=l.domEl,r=this;l.name&&!i.skipReset&&L._add_reset_property(o.domName,(function(){s=d.iValue,m.querySelectorAll("li").forEach((e=>{e.getAttribute("value")==s&&e.click()})),this.style.display="none"}));let c=document.createElement("div");c.className="lexdropdown",c.style.width=i.inputWidth||"calc( 100% - "+t.DEFAULT_NAME_WIDTH+")";let d=document.createElement("div");d.className="lexdropdown lexoption",d.name=e,d.iValue=s;let h=s;h+="<a class='fa-solid fa-angle-down' style='float:right; margin-right: 3px;'></a>",this.queue(c);let u=this.addButton(null,h,((e,t)=>{if(m.unfocus_event)return void delete m.unfocus_event;p.classList.remove("place-above");p.hasAttribute("open")?p.close():(p.show(),(e=>{console.log("Replacing container");const t=e.getParentArea(),n=u.getBoundingClientRect(),s=e.parentElement.closest("dialog");{const a=e.offsetHeight;let i=n.y,l=window.innerHeight;if(t){const e=t.getBoundingClientRect();l=e.y+e.height}s&&(i-=s.getBoundingClientRect().y),e.style.top=i+u.offsetHeight+"px",i+a>l&&(e.style.top=i-a+"px",e.classList.add("place-above"))}{const a=e.offsetWidth;let i=n.x;e.style.minWidth=n.width+"px",s&&(i-=s.getBoundingClientRect().x),e.style.left=i+"px";let l=window.innerWidth;if(t){const e=t.getBoundingClientRect();l=e.x+e.width}i+a>l&&(e.style.left=i-(a-n.width)+"px")}})(p)),f&&f.querySelector("input").focus()}),{buttonClass:"array",skipInlineCount:!0,disabled:i.disabled});this.clearQueue(),u.style.width="100%",u.refresh=e=>{""==u.querySelector("span").innerText?u.querySelector("span").innerText=e:u.querySelector("span").innerHTML=u.querySelector("span").innerHTML.replaceAll(u.querySelector("span").innerText,e)};const p=document.createElement("dialog");p.className="lexdropdownoptions";let m=document.createElement("ul");m.tabIndex=-1,m.className="lexoptions",p.appendChild(m),m.addEventListener("focusout",(function(e){if(e.stopPropagation(),e.stopImmediatePropagation(),e.relatedTarget===u.querySelector("button"))this.unfocus_event=!0,setTimeout((()=>delete this.unfocus_event),200);else{if(e.relatedTarget&&"INPUT"==e.relatedTarget.tagName)return;if("lexinput-filter"==e.target.className)return}p.close()}));let f=null;i.filter&&(f=this._addFilter(i.placeholder??"Search...",{container:m,callback:this._filterOptions.bind(m,n)}),m.appendChild(f),f.addEventListener("focusout",(function(e){e.relatedTarget&&"UL"==e.relatedTarget.tagName&&e.relatedTarget.classList.contains("lexoptions")||p.close()})));const v=document.createElement("span");return v.style.height="calc(100% - 25px)",m.appendChild(v),m.refresh=t=>{if(v.innerHTML="",!t.length){let e=t.emptyMsg??"No options found.",n=document.createElement("div");n.className="option",n.style.flexDirection="unset",n.innerHTML=e;let s=document.createElement("li");return s.className="lexdropdownitem empty",s.appendChild(n),void v.appendChild(s)}for(let i=0;i<t.length;i++){let l=t[i],c=document.createElement("li"),h=document.createElement("div");if(h.className="option",c.appendChild(h),c.addEventListener("click",(t=>{p.close();const i=o.querySelector(".lexoptions .selected");i&&i.classList.remove("selected"),s=t.currentTarget.getAttribute("value"),t.currentTarget.toggleAttribute("hidden",!1),t.currentTarget.classList.add("selected"),u.refresh(s);let l=o.querySelector(".lexwidgetname .lexicon");l&&(l.style.display=s!=d.iValue?"block":"none"),r._trigger(new g(e,s,null),a),f&&(f.querySelector("input").value="",this._filterOptions.bind(m,n,"")())})),l.constructor!=Object)h.style.flexDirection="unset",h.innerHTML="</a><span>"+l+"</span><a class='fa-solid fa-check'>",h.value=l,c.setAttribute("value",l),c.className="lexdropdownitem",l==s&&(c.classList.add("selected"),d.innerHTML=l);else{let e=document.createElement("img");e.src=l.src,c.setAttribute("value",l.value),c.className="lexlistitem",h.innerText=l.value,h.className+=" media",h.prepend(e),h.setAttribute("value",l.value),h.setAttribute("data-index",i),h.setAttribute("data-src",l.src),h.setAttribute("title",l.value),s==l.value&&c.classList.add("selected")}v.appendChild(c)}},m.refresh(n),c.appendChild(p),o.appendChild(c),l.name||(o.className+=" noname",c.style.width="100%"),l}addCurve(e,n,s,a={}){if(!e)throw"Set Widget Name!";let l=this,o=this.create_widget(e,_.CURVE,a);o.onGetValue=()=>JSON.parse(JSON.stringify(h.element.value)),o.onSetValue=(t,n)=>{let a=r.querySelector(".lexwidgetname .lexicon");a&&(a.style.display=t!=h.element.value?"block":"none"),h.element.value=JSON.parse(JSON.stringify(t)),h.redraw(),n||l._trigger(new g(e,h.element.value,null),s)};let r=o.domEl,c=JSON.parse(JSON.stringify(n));a.skipReset||L._add_reset_property(r.domName,(function(t){this.style.display="none",h.element.value=JSON.parse(JSON.stringify(c)),h.redraw(),l._trigger(new g(e,h.element.value,t),s)}));var d=document.createElement("div");d.className="lexcurve",d.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")",a.callback=(t,n)=>{let a=r.querySelector(".lexwidgetname .lexicon");a&&(a.style.display=t!=c?"block":"none"),l._trigger(new g(e,t,n),s)},a.name=e;let h=new A(this,n,a);return d.appendChild(h.element),r.appendChild(d),o.onresize=h.redraw.bind(h),o.curveInstance=h,i((()=>{h.canvas.width=d.offsetWidth,h.redraw()})),o}addDial(e,n,s,a={}){let l=this,o=this.create_widget(e,_.DIAL,a);o.onGetValue=()=>JSON.parse(JSON.stringify(h.element.value)),o.onSetValue=(t,n)=>{let a=r.querySelector(".lexwidgetname .lexicon");a&&(a.style.display=t!=h.element.value?"block":"none"),h.element.value=JSON.parse(JSON.stringify(t)),h.redraw(),n||l._trigger(new g(e,h.element.value,null),s)};let r=o.domEl,c=JSON.parse(JSON.stringify(n));o.name&&!a.skipReset&&L._add_reset_property(r.domName,(function(t){this.style.display="none",h.element.value=JSON.parse(JSON.stringify(c)),h.redraw(),l._trigger(new g(e,h.element.value,t),s)}));var d=document.createElement("div");d.className="lexcurve",d.style.width=o.name?"calc( 100% - "+t.DEFAULT_NAME_WIDTH+")":"100%",a.callback=(t,n)=>{let a=r.querySelector(".lexwidgetname .lexicon");a&&(a.style.display=t!=c?"block":"none"),l._trigger(new g(e,t,n),s)},a.name=e;let h=new D(this,n,a);return d.appendChild(h.element),r.appendChild(d),o.onresize=h.redraw.bind(h),o.curveInstance=h,i((()=>{h.element.style.height=h.element.offsetWidth+"px",h.canvas.width=h.element.offsetWidth,d.style.width=h.element.offsetWidth+"px",h.canvas.height=h.canvas.width,h.redraw()})),o}addLayers(e,n,s,a={}){if(!e)throw"Set Widget Name!";let i=this,l=this.create_widget(e,_.LAYERS,a);l.onGetValue=()=>o.value,l.onSetValue=(t,a)=>{let l=o.querySelector(".lexwidgetname .lexicon");l&&(l.style.display=t!=c?"block":"none"),n=o.value=t,d(),a||i._trigger(new g(e,n),s)};let o=l.domEl;L._add_reset_property(o.domName,(function(t){this.style.display="none",n=o.value=c,d(),i._trigger(new g(e,n,t),s)}));var r=document.createElement("div");r.className="lexlayers",r.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")";let c=o.value=n;const d=()=>{r.innerHTML="";let t=n.toString(2),a=t.length;for(var i=0;i<16-a;++i)t="0"+t;for(let a=0;a<16;++a){let i=document.createElement("div");if(i.className="lexlayer",null!=n){const e=t[16-a-1];null!=e&&"1"==e&&i.classList.add("selected")}i.innerText=a+1,i.title="Bit "+a+", value "+(1<<a),r.appendChild(i),i.addEventListener("click",(t=>{t.stopPropagation(),t.stopImmediatePropagation(),t.target.classList.toggle("selected"),n^=1<<a,o.value=n;let i=o.querySelector(".lexwidgetname .lexicon");i&&(i.style.display=n!=c?"block":"none"),this._trigger(new g(e,n,t),s)}))}};return d(),o.appendChild(r),l}addArray(e,n=[],s,a={}){if(!e)throw"Set Widget Name!";let i=this.create_widget(e,_.ARRAY,a);i.onGetValue=()=>{let e=l.querySelectorAll("input"),t=[];for(var n of e)t.push(n.value);return t},i.onSetValue=(t,a)=>{n=t,u(),a||this._trigger(new g(e,n,null),s)};let l=i.domEl;l.style.flexWrap="wrap";const o="4%";var r=document.createElement("div");r.className="lexarray",r.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")",this.queue(r);const c="<a class='fa-solid fa-angle-down' style='float:right; margin-right: 3px;'></a>";let d="Array (size "+n.length+")";d+=c,this.addButton(null,d,(()=>{l.querySelector(".lexarrayitems").toggleAttribute("hidden")}),{buttonClass:"array"}),this.clearQueue();let h=document.createElement("div");h.className="lexarrayitems",h.toggleAttribute("hidden",!0),l.appendChild(r),l.appendChild(h);const u=()=>{let t=l.querySelector(".lexbutton.array span");t.innerHTML="Array (size "+n.length+")",t.innerHTML+=c,h.innerHTML="",this.queue(h);for(let t=0;t<n.length;++t){const i=n[t];let l=a.innerValues?"dropdown":i.constructor;switch(this.sameLine(2),l){case String:this.addText(t+"",i,(function(e,a){n[t]=e,s(n)}),{nameWidth:o,inputWidth:"95%",skipReset:!0});break;case Number:this.addNumber(t+"",i,(function(e,a){n[t]=e,s(n)}),{nameWidth:o,inputWidth:"95%",skipReset:!0});break;case"dropdown":this.addDropdown(t+"",a.innerValues,i,(function(e,a){n[t]=e,s(n)}),{nameWidth:o,inputWidth:"95%",skipReset:!0})}this.addButton(null,"<a class='lexicon fa-solid fa-trash'></a>",((t,a)=>{n.splice(n.indexOf(i),1),u(),this._trigger(new g(e,n,a),s)}),{title:"Remove item",className:"micro"})}d="Add item",d+="<a class='fa-solid fa-plus' style='float:right; margin-right: 3px; margin-top: 2px;'></a>",this.addButton(null,d,((t,i)=>{n.push(a.innerValues?a.innerValues[0]:""),u(),this._trigger(new g(e,n,i),s)}),{buttonClass:"array"}),this.clearQueue()};return u(),i}addList(e,n,s,a,i={}){let l=this.create_widget(e,_.LIST,i);l.onGetValue=()=>s,l.onSetValue=(t,i)=>{r.querySelectorAll(".lexlistitem").forEach((e=>e.classList.remove("selected")));const l=n.indexOf(t);-1!=l&&(r.children[l].classList.toggle("selected"),s=t,i||this._trigger(new g(e,t),a))},l.updateValues=t=>{n=t,r.innerHTML="";for(let t=0;t<n.length;++t){let i=null,l=n[t];l.constructor===Array&&(i=l[1],l=l[0]);let o=document.createElement("div");o.className="lexlistitem"+(s==l?" selected":""),o.innerHTML="<span>"+l+"</span>"+(i?"<a class='"+i+"'></a>":""),o.addEventListener("click",(t=>{r.querySelectorAll(".lexlistitem").forEach((e=>e.classList.remove("selected"))),o.classList.toggle("selected"),s=l,this._trigger(new g(e,l,t),a)})),r.appendChild(o)}};let o=l.domEl,r=document.createElement("div");return r.className="lexlist",r.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")",l.updateValues(n),l.name||(o.className+=" noname",r.style.width="100%"),o.appendChild(r),l}addTags(e,n,s,a={}){n=n.replace(/\s/g,"").split(",");let i=[].concat(n),l=this.create_widget(e,_.TAGS,a);l.onGetValue=()=>[].concat(n),l.onSetValue=(t,a)=>{n=[].concat(t),d();let l=o.querySelector(".lexwidgetname .lexicon");l&&(l.style.display=t!=i?"block":"none"),a||r._trigger(new g(e,n),s)};let o=l.domEl,r=this;l.name&&L._add_reset_property(o.domName,(function(t){this.style.display="none",n=[].concat(i),d(),r._trigger(new g(e,n,t),s)}));const c=document.createElement("div");c.className="lextags",c.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")";const d=()=>{c.innerHTML="";for(let t=0;t<n.length;++t){const a=n[t],l=document.createElement("span");l.className="lextag",l.innerHTML=a;const d=document.createElement("a");d.className="lextagrmb fa-solid fa-xmark lexicon",l.appendChild(d),d.addEventListener("click",(t=>{l.remove(),n.splice(n.indexOf(a),1);let c=o.querySelector(".lexwidgetname .lexicon");c&&(c.style.display=n!=i?"block":"none"),r._trigger(new g(e,n,t),s)})),c.appendChild(l)}let t=document.createElement("input");t.value="",t.placeholder="Add tag...",c.appendChild(t),t.onkeydown=function(t){const a=this.value.replace(/\s/g,"");if(" "==t.key||"Enter"==t.key){if(t.preventDefault(),!a.length||n.indexOf(a)>-1)return;n.push(a),d();let i=o.querySelector(".lexwidgetname .lexicon");i&&(i.style.display="block"),r._trigger(new g(e,n,t),s)}},t.focus()};return d(),l.name||(o.className+=" noname",c.style.width="100%"),o.appendChild(c),l}addCheckbox(e,t,n,s={}){if(!e)throw"Set Widget Name!";let a=this.create_widget(e,_.CHECKBOX,s);a.onGetValue=()=>o.checked,a.onSetValue=(e,t)=>{o.checked!==e&&(o.checked=e,L._dispatch_event(o,"change",t))};let i=a.domEl;L._add_reset_property(i.domName,(function(){o.checked=!o.checked,L._dispatch_event(o,"change")}));var l=document.createElement("div");l.className="lexcheckboxcont";let o=document.createElement("input");o.type="checkbox",o.className="lexcheckbox "+(s.className??""),o.checked=t,o.iValue=t,o.disabled=s.disabled??!1;let r=document.createElement("span");if(r.className="checkboxtext",r.innerHTML="On",l.appendChild(o),l.appendChild(r),o.addEventListener("change",(t=>{const s=t.detail?.constructor==Number?null:t.detail;if(!s){let e=i.querySelector(".lexwidgetname .lexicon");e&&(e.style.display=o.checked!=o.iValue?"block":"none")}let a=i.querySelector(".lexcheckboxsubmenu");a&&a.toggleAttribute("hidden",!o.checked),s||this._trigger(new g(e,o.checked,t),n)})),i.appendChild(l),s.suboptions){i.style.flexWrap="wrap";let e=document.createElement("div");e.className="lexcheckboxsubmenu",e.toggleAttribute("hidden",!o.checked),this.queue(e),s.suboptions.call(this,this),this.clearQueue(),i.appendChild(e)}return a}addToggle(e,t,n,s={}){if(!e)throw"Set Widget Name!";let a=this.create_widget(e,_.TOGGLE,s);a.onGetValue=()=>o.checked,a.onSetValue=(e,t)=>{o.checked!==e&&(o.checked=e,L._dispatch_event(o,"change",t))};let i=a.domEl;L._add_reset_property(i.domName,(function(){o.checked=!o.checked,L._dispatch_event(o,"change")}));var l=document.createElement("div");l.className="lextogglecont";let o=document.createElement("input");o.type="checkbox",o.className="lextoggle "+(s.className??""),o.checked=t,o.iValue=t,o.disabled=s.disabled??!1;let r=document.createElement("span");if(r.className="toggletext",r.innerHTML="On",l.appendChild(o),l.appendChild(r),o.addEventListener("change",(t=>{const s=t.detail?.constructor==Number?null:t.detail;if(!s){let e=i.querySelector(".lexwidgetname .lexicon");e&&(e.style.display=o.checked!=o.iValue?"block":"none")}let a=i.querySelector(".lextogglesubmenu");a&&a.toggleAttribute("hidden",!o.checked),s||this._trigger(new g(e,o.checked,t),n)})),i.appendChild(l),s.suboptions){i.style.flexWrap="wrap";let e=document.createElement("div");e.className="lextogglesubmenu",e.toggleAttribute("hidden",!o.checked),this.queue(e),s.suboptions.call(this,this),this.clearQueue(),i.appendChild(e)}return a}addColor(e,n,s,a={}){if(!e)throw"Set Widget Name!";let i=this.create_widget(e,_.COLOR,a);i.onGetValue=()=>h.value,i.onSetValue=(e,t)=>{h.value=e,L._dispatch_event(h,"input",t)};let l=i.domEl,o=!1;L._add_reset_property(l.domName,(function(){this.style.display="none",h.value=h.iValue,L._dispatch_event(h,"input")}));var r=document.createElement("span");r.className="lexcolor",r.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")";let h=document.createElement("input");h.style.width="32px",h.type="color",h.className="colorinput",h.id="color"+u(),h.useRGB=a.useRGB??!1,h.value=h.iValue=n.constructor===Array?d(n):n,a.disabled&&(h.disabled=!0),h.addEventListener("input",(t=>{let n=t.target.value;const a=t.detail;if(o||p.set(n),!a){let e=l.querySelector(".lexwidgetname .lexicon");e&&(e.style.display=n!=h.iValue?"block":"none")}h.useRGB&&(n=c(n)),a||this._trigger(new g(e,n,t),s)}),!1),r.appendChild(h),this.queue(r);const p=this.addText(null,h.value,(e=>{o=!0,i.set(e),o=!1}),{width:"calc( 100% - 32px )"});return p.domEl.style.marginLeft="4px",this.clearQueue(),l.appendChild(r),i}addNumber(e,a,i,l={}){let o=this.create_widget(e,_.NUMBER,l);o.onGetValue=()=>+p.value,o.onSetValue=(e,t)=>{p.value=s(e,l.precision),L._dispatch_event(p,"change",t)};let r=o.domEl;o.name&&L._add_reset_property(r.domName,(function(){this.style.display="none",p.value=p.iValue,L._dispatch_event(p,"change")}));var c=document.createElement("div");c.className="lexnumber",c.style.width=l.inputWidth||"calc( 100% - "+t.DEFAULT_NAME_WIDTH+")";let d=document.createElement("div");d.className="numberbox";let p=document.createElement("input");if(p.id="number_"+u(),p.className="vecinput",p.min=l.min??-1e24,p.max=l.max??1e24,p.step=l.step??"any",p.type="number",a.constructor==Number&&(a=s(a=n(a,+p.min,+p.max),l.precision)),p.value=p.iValue=a,d.appendChild(p),l.units){let e=document.createElement("span");e.className="lexunit",e.innerText=l.units,e.style.left=h(p.value)+"px",p.unitSpan=e,d.appendChild(e)}let m=document.createElement("a");if(m.className="fa-solid fa-arrows-up-down drag-icon hidden",d.appendChild(m),l.disabled&&(p.disabled=!0),!l.skipSlider&&void 0!==l.min&&void 0!==l.max){let e=document.createElement("input");e.className="lexinputslider",e.min=l.min,e.max=l.max,e.step=l.step??1,e.type="range",e.value=a,e.addEventListener("input",(function(e){let t=+this.valueAsNumber;p.value=s(t,l.precision),L._dispatch_event(p,"change")}),!1),e.addEventListener("mousedown",(function(t){l.onPress&&l.onPress.bind(e)(t,e)}),!1),e.addEventListener("mouseup",(function(t){l.onRelease&&l.onRelease.bind(e)(t,e)}),!1),d.appendChild(e),o.setLimits=(t,n,s)=>{p.min=e.min=t??p.min,p.max=e.max=n??p.max,p.step=s??p.step,e.step=s??e.step,L._dispatch_event(p,"change",!0)}}p.addEventListener("input",(function(e){let t=+this.valueAsNumber;p.value=s(t,l.precision),l.units&&(p.unitSpan.style.left=h(p.value)+"px")}),!1),p.addEventListener("wheel",(function(e){if(e.preventDefault(),this!==document.activeElement)return;let t=l.step??1;e.shiftKey?t*=10:e.altKey&&(t*=.1);let n=+this.valueAsNumber-t*(e.deltaY>0?1:-1);this.value=s(n,l.precision),L._dispatch_event(p,"change")}),{passive:!1}),p.addEventListener("change",(t=>{if(isNaN(t.target.valueAsNumber))return;const a=t.detail;let o=t.target.value=n(+t.target.valueAsNumber,+p.min,+p.max);if(o=l.precision?s(o,l.precision):o,d.querySelector(".lexinputslider")&&(d.querySelector(".lexinputslider").value=o),p.value=o,l.units&&(p.unitSpan.style.left=h(p.value)+"px"),!a){let e=r.querySelector(".lexwidgetname .lexicon");e&&(e.style.display=o!=p.iValue?"block":"none")}a||this._trigger(new g(e,o,t),i)}),{passive:!1}),p.addEventListener("mousedown",(function(e){if(document.activeElement==p)return;var t=f.root.ownerDocument;t.addEventListener("mousemove",v),t.addEventListener("mouseup",y),document.body.classList.add("noevents"),m.classList.remove("hidden"),e.stopImmediatePropagation(),e.stopPropagation(),document.pointerLockElement||p.requestPointerLock();l.onPress&&l.onPress.bind(p)(e,p)}));var f=this;function v(e){let t=-e.movementY;if(0!=t){let n=l.step??1;e.shiftKey?n*=10:e.altKey&&(n*=.1);let s=+p.valueAsNumber+n*t;p.value=(+s).toFixed(4).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,"$1"),L._dispatch_event(p,"change")}e.stopPropagation(),e.preventDefault()}function y(e){var t=f.root.ownerDocument;t.removeEventListener("mousemove",v),t.removeEventListener("mouseup",y),document.body.classList.remove("noevents"),m.classList.add("hidden"),document.pointerLockElement&&document.exitPointerLock(),l.onRelease&&l.onRelease.bind(p)(e,p)}return c.appendChild(d),r.appendChild(c),o.name||(r.className+=" noname",c.style.width="100%"),o}static VECTOR_COMPONENTS={0:"x",1:"y",2:"z",3:"w"};_add_vector(e,a,i,l,o={}){if(e=n(e,2,4),i=i??new Array(e).fill(0),!a)throw"Set Widget Name!";let r=this.create_widget(a,_.VECTOR,o);r.onGetValue=()=>{let e=c.querySelectorAll("input"),t=[];for(var n of e)t.push(+n.value);return t},r.onSetValue=(e,t)=>{const n=c.querySelectorAll(".vecinput");if(n.length!=e.length)for(let a=0;a<n.length;++a){let i=e[a];n[a].value=s(i,o.precision)??0,L._dispatch_event(n[a],"change",t)}else console.error("Input length does not match vector length.")};let c=r.domEl;L._add_reset_property(c.domName,(function(){this.style.display="none";for(let e of c.querySelectorAll(".vecinput"))e.value=e.iValue,L._dispatch_event(e,"change")}));var d=document.createElement("div");d.className="lexvector",d.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")";for(let m=0;m<e;++m){let f=document.createElement("div");f.className="vecbox",f.innerHTML="<span class='"+L.VECTOR_COMPONENTS[m]+"'></span>";let v=document.createElement("input");v.className="vecinput v"+e,v.min=o.min??-1e24,v.max=o.max??1e24,v.step=o.step??"any",v.type="number",v.id="vec"+e+"_"+u(),v.idx=m,i[m].constructor==Number&&(i[m]=n(i[m],+v.min,+v.max),i[m]=s(i[m],o.precision)),v.value=v.iValue=i[m];let y=document.createElement("a");y.className="fa-solid fa-arrows-up-down drag-icon hidden",f.appendChild(y),o.disabled&&(v.disabled=!0),v.addEventListener("wheel",(function(e){if(e.preventDefault(),this!==document.activeElement)return;let t=o.step??1;if(e.shiftKey?t=10:e.altKey&&(t=.1),p.locked)for(let n of c.querySelectorAll(".vecinput"))n.value=s(+n.valueAsNumber-t*(e.deltaY>0?1:-1),o.precision),L._dispatch_event(n,"change");else this.value=s(+this.valueAsNumber-t*(e.deltaY>0?1:-1),o.precision),L._dispatch_event(v,"change")}),{passive:!1}),v.addEventListener("change",(e=>{if(isNaN(e.target.value))return;const t=e.detail;let r=e.target.value=n(e.target.value,+v.min,+v.max);if(r=s(r,o.precision),!t){let e=c.querySelector(".lexwidgetname .lexicon");e&&(e.style.display=r!=v.iValue?"block":"none")}if(p.locked)for(let e of c.querySelectorAll(".vecinput"))e.value=r,i[e.idx]=r;else v.value=r,i[e.target.idx]=r;t||this._trigger(new g(a,i,e),l)}),!1),v.addEventListener("mousedown",E);var h=this;function E(e){if(document.activeElement!=v){var t=h.root.ownerDocument;t.addEventListener("mousemove",x),t.addEventListener("mouseup",b),document.body.classList.add("noevents"),y.classList.remove("hidden"),e.stopImmediatePropagation(),e.stopPropagation(),document.pointerLockElement||v.requestPointerLock(),o.onPress&&o.onPress.bind(v)(e,v)}}function x(e){let t=-e.movementY;if(0!=t){let n=o.step??1;if(e.shiftKey?n=10:e.altKey&&(n=.1),p.locked)for(let e of c.querySelectorAll(".vecinput"))e.value=s(+e.valueAsNumber+n*t,o.precision),L._dispatch_event(e,"change");else v.value=s(+v.valueAsNumber+n*t,o.precision),L._dispatch_event(v,"change")}e.stopPropagation(),e.preventDefault()}function b(e){var t=h.root.ownerDocument;t.removeEventListener("mousemove",x),t.removeEventListener("mouseup",b),document.body.classList.remove("noevents"),y.classList.add("hidden"),document.pointerLockElement&&document.exitPointerLock(),o.onRelease&&o.onRelease.bind(v)(e,v)}f.appendChild(v),d.appendChild(f)}void 0===o.min&&void 0===o.max||(r.setLimits=(e,t,n)=>{const s=c.querySelectorAll(".vecinput");for(let a of s)a.min=e??a.min,a.max=t??a.max,a.step=n??a.step,L._dispatch_event(a,"change",!0);this._trigger(new g(a,i),l)});let p=document.createElement("a");return p.title="Lock",p.className="fa-solid fa-lock-open lexicon lock",d.appendChild(p),p.addEventListener("click",(function(e){this.locked=!this.locked,this.locked?(this.classList.add("fa-lock"),this.classList.remove("fa-lock-open")):(this.classList.add("fa-lock-open"),this.classList.remove("fa-lock"))}),!1),c.appendChild(d),r}addVector2(e,t,n,s){return this._add_vector(2,e,t,n,s)}addVector3(e,t,n,s){return this._add_vector(3,e,t,n,s)}addVector4(e,t,n,s){return this._add_vector(4,e,t,n,s)}addSize(e,t,n,s={}){let a=this.create_widget(e,_.SIZE,s);a.onGetValue=()=>{const e=[];for(let t=0;t<i.dimensions.length;++t)e.push(i.dimensions[t].onGetValue());return e},a.onSetValue=(e,t)=>{for(let n=0;n<i.dimensions.length;++n)i.dimensions[n].onSetValue(e[n],t)};let i=a.domEl;this.queue(i),i.aspectRatio=2==t.length?t[0]/t[1]:null,i.dimensions=[];for(let e=0;e<t.length;++e)if(i.dimensions[e]=this.addNumber(null,t[e],(t=>{const s=a.onGetValue();if(i.locked){const n=0==e?1/i.aspectRatio:i.aspectRatio,a=(1+e)%2;s[a]=t*n,i.dimensions[a].onSetValue(s[a],!0)}n&&n(s)}),{min:0,disabled:s.disabled,precision:s.precision}),e+1!=t.length){let e=document.createElement("a");e.className="lexsizecross fa-solid fa-xmark",i.appendChild(e)}if(this.clearQueue(),s.units){let e=document.createElement("span");e.className="lexunit",e.innerText=s.units,i.appendChild(e)}if(i.aspectRatio){let e=document.createElement("a");e.title="Lock Aspect Ratio",e.className="fa-solid fa-lock-open lexicon lock",i.appendChild(e),e.addEventListener("click",(function(e){if(i.locked=!i.locked,i.locked){this.classList.add("fa-lock"),this.classList.remove("fa-lock-open");const e=a.onGetValue();i.aspectRatio=e[0]/e[1]}else this.classList.add("fa-lock-open"),this.classList.remove("fa-lock")}),!1)}return a.name||(i.className+=" noname",container.style.width="100%"),a}addPad(e,n,s,l={}){if(!e)throw"Set Widget Name!";let o=this.create_widget(e,_.PAD,l);o.onGetValue=()=>h.value.xy,o.onSetValue=(t,n)=>{h.value.set(t[0],t[1]),u(h.value),n||this._trigger(new g(e,h.value.xy),s)};let r=o.domEl;var c=document.createElement("div");c.className="lexpad",c.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")";let d=document.createElement("div");d.id="lexpad-"+e,d.className="lexinnerpad",d.style.width=l.padSize??"96px",d.style.height=l.padSize??"96px";let h=document.createElement("div");h.className="lexpadthumb",h.value=new t.vec2(n[0],n[1]),h.min=l.min??0,h.max=l.max??1;let u=e=>{const[n,s]=[d.offsetWidth,d.offsetHeight],i=new t.vec2(a(e.x,h.min,h.max,0,1),a(e.y,h.min,h.max,0,1));h.style.transform=`translate(calc( ${n*i.x}px - 50% ), calc( ${s*i.y}px - 50%)`};i((()=>{u(h.value)})),d.appendChild(h),c.appendChild(d),r.appendChild(c),d.addEventListener("mousedown",(function(e){if(document.activeElement==h)return;var t=p.root.ownerDocument;t.addEventListener("mousemove",m),t.addEventListener("mouseup",f),document.body.classList.add("nocursor"),document.body.classList.add("noevents"),e.stopImmediatePropagation(),e.stopPropagation(),l.onPress&&l.onPress.bind(h)(e,h)}));let p=this;function m(n){const i=d.getBoundingClientRect(),l=new t.vec2(n.x-i.x,n.y-i.y);l.clp(0,d.offsetWidth,l);const[o,r]=[d.offsetWidth,d.offsetHeight],c=l.div(new t.vec2(d.offsetWidth,d.offsetHeight));h.style.transform=`translate(calc( ${o*c.x}px - 50% ), calc( ${r*c.y}px - 50%)`,h.value=new t.vec2(a(c.x,0,1,h.min,h.max),a(c.y,0,1,h.min,h.max)),p._trigger(new g(e,h.value.xy,n),s),n.stopPropagation(),n.preventDefault()}function f(e){var t=p.root.ownerDocument;t.removeEventListener("mousemove",m),t.removeEventListener("mouseup",f),document.body.classList.remove("nocursor"),document.body.classList.remove("noevents"),l.onRelease&&l.onRelease.bind(h)(e,h)}return o}addProgress(e,n,i={}){if(!e)throw"Set Widget Name!";let l=this.create_widget(e,_.PROGRESS,i);l.onGetValue=()=>c.value,l.onSetValue=(e,t)=>{o.querySelector("meter").value=e,d(),o.querySelector("span")&&(o.querySelector("span").innerText=e)};let o=l.domEl;var r=document.createElement("div");r.className="lexprogress",r.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")";let c=document.createElement("meter");c.id="lexprogressbar-"+e,c.className="lexprogressbar",c.step="any",c.min=i.min??0,c.max=i.max??1,c.low=i.low??c.low,c.high=i.high??c.high,c.optimum=i.optimum??c.optimum,c.value=n;const d=()=>{let e=t.getThemeColor("global-selected");null!=c.low&&c.value<c.low?e=t.getThemeColor("global-color-error"):null!=c.high&&c.value<c.high&&(e=t.getThemeColor("global-color-warning")),c.style.background=`color-mix(in srgb, ${e} 20%, transparent)`};if(r.appendChild(c),o.appendChild(r),i.showValue){document.getElementById("progressvalue-"+e)&&document.getElementById("progressvalue-"+e).remove();let h=document.createElement("span");h.id="progressvalue-"+e,h.style.padding="0px 5px",h.innerText=n,r.appendChild(h)}if(i.editable){c.classList.add("editable"),c.addEventListener("mousedown",p);const u=this;function p(t){var n=u.root.ownerDocument;n.addEventListener("mousemove",m),n.addEventListener("mouseup",g),document.body.classList.add("noevents"),c.classList.add("grabbing"),t.stopImmediatePropagation(),t.stopPropagation();const i=c.getBoundingClientRect(),l=s(a(t.offsetX,0,i.width,c.min,c.max));u.setValue(e,l)}function m(t){if(0!=t.movementX){const n=c.getBoundingClientRect(),l=s(a(t.offsetX-n.x,0,n.width,c.min,c.max));u.setValue(e,l),i.callback&&i.callback(l,t)}t.stopPropagation(),t.preventDefault()}function g(e){var t=u.root.ownerDocument;t.removeEventListener("mousemove",m),t.removeEventListener("mouseup",g),document.body.classList.remove("noevents"),c.classList.remove("grabbing")}}return d(),l}addFile(e,n,s={}){if(!e)throw"Set Widget Name!";let a=this.create_widget(e,_.FILE,s),i=a.domEl,l=s.local??!0,o=s.type??"text",r=s.read??!0,c=document.createElement("input");if(c.className="lexfileinput",c.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+" - 10%)",c.type="file",c.disabled=s.disabled??!1,s.placeholder&&(c.placeholder=s.placeholder),c.addEventListener("change",(function(e){const t=e.target.files;if(t.length)if(r){s.onBeforeRead&&s.onBeforeRead();const e=new FileReader;"text"===o?e.readAsText(t[0]):"buffer"===o?e.readAsArrayBuffer(t[0]):"bin"===o?e.readAsBinaryString(t[0]):"url"===o&&e.readAsDataURL(t[0]),e.onload=e=>{n.call(this,e.target.result,t[0])}}else n(t[0])})),c.addEventListener("cancel",(function(e){n(null)})),i.appendChild(c),this.queue(i),l){let e=null;this.addButton(null,"<a style='margin-top: 0px;' class='fa-solid fa-gear'></a>",(()=>{e||(e=new T("Load Settings",(e=>{e.addDropdown("Type",["text","buffer","bin","url"],o,(e=>{o=e})),e.addButton(null,"Reload",(e=>{c.dispatchEvent(new Event("change"))}))}),{onclose:t=>{t.remove(),e=null}}))}),{className:"micro",skipInlineCount:!0,title:"Settings"})}return this.clearQueue(),a}addTree(e,t,n={}){let s=document.createElement("div");if(s.className="lextree",e){let t=document.createElement("span");t.innerHTML=e,s.appendChild(t)}let a=document.createElement("div");if(a.className="lextreetools",e||(a.className+=" notitle"),n.icons)for(let e of n.icons){let t=document.createElement("a");t.title=e.name,t.className="lexicon "+e.icon,t.addEventListener("click",e.callback),a.appendChild(t)}n.filter=n.filter??!0;let i=null;if(n.filter){i=document.createElement("input"),i.id="lexnodetree_filter",i.setAttribute("placeholder","Filter.."),i.style.width="calc( 100% - 17px )",i.addEventListener("input",(function(){o.refresh()}));let e=document.createElement("a");e.className="lexicon fa-solid fa-magnifying-glass",a.appendChild(i),a.appendChild(e)}(n.icons||n.filter)&&s.appendChild(a);let l=document.createElement("ul");l.addEventListener("contextmenu",(function(e){e.preventDefault()})),s.appendChild(l),this.root.appendChild(s);const o=new w(s,t,n);return o}addSeparator(){var e=document.createElement("div");e.className="lexseparator";let t=new _(null,_.SEPARATOR);t.domEl=e,this.current_branch?(this.current_branch.content.appendChild(e),this.current_branch.widgets.push(t)):this.root.appendChild(e)}addTabs(e,t={}){let n=this.current_branch?this.current_branch.content:this.root;if(this.current_branch||console.warn("No current branch!"),e.constructor!=Array)throw"Param @tabs must be an Array!";const s=t.vertical??!0,a=!s&&(t.showNames??!1);let i=document.createElement("div");i.className="lextabscontainer",s||(i.className+=" horizontal");let l=document.createElement("div");l.className="tabs",i.appendChild(l),n.appendChild(i);for(let t=0;t<e.length;++t){const n=e[t];console.assert(n.name);const s=0==t;let o=document.createElement("div");o.className="lextab "+(t==e.length-1?"last":"")+(s?"selected":""),o.innerHTML=(a?n.name:"")+"<a class='"+(n.icon||"fa fa-hashtag")+" "+(a?"withname":"")+"'></a>",o.title=n.name;let r=document.createElement("div");r.id=n.name.replace(/\s/g,""),r.className="widgets",s||r.toggleAttribute("hidden",!0),i.appendChild(r),o.addEventListener("click",(e=>{l.querySelectorAll(".lextab").forEach((e=>{e.classList.remove("selected")})),e.target.classList.add("selected"),i.querySelectorAll(".widgets").forEach((e=>{e.toggleAttribute("hidden",!0)}));i.querySelector("#"+r.id).toggleAttribute("hidden"),n.onSelect&&n.onSelect(this,r)})),l.appendChild(o),n.onCreate&&(this.queue(r),n.onCreate(this,r),this.clearQueue())}this.addSeparator()}addCounter(e,t,s,a={}){let i=this.create_widget(e,_.COUNTER,a);i.onGetValue=()=>p.count,i.onSetValue=(e,t)=>{d(e,t)};let l=i.domEl;const o=a.min??0,r=a.max??100,c=a.step??1,d=(t,a,i)=>{t=n(t,o,r),p.count=t,p.innerHTML=t,a||this._trigger(new g(e,t,i),s)},h=document.createElement("div");h.className="lexcounter",l.appendChild(h),this.queue(h),this.addButton(null,"<a style='margin-top: 0px;' class='fa-solid fa-minus'></a>",((e,t)=>{let n=c??1;t.shiftKey&&(n*=10),d(p.count-n,!1,t)}),{className:"micro",skipInlineCount:!0,title:"Minus"}),this.clearQueue();const u=document.createElement("div");u.className="lexcounterbox",h.appendChild(u);const p=document.createElement("span");if(p.className="lexcountervalue",p.innerHTML=t,p.count=t,u.appendChild(p),a.label){const e=document.createElement("span");e.className="lexcounterlabel",e.innerHTML=a.label,u.appendChild(e)}return this.queue(h),this.addButton(null,"<a style='margin-top: 0px;' class='fa-solid fa-plus'></a>",((e,t)=>{let n=c??1;t.shiftKey&&(n*=10),d(p.count+n,!1,t)}),{className:"micro",skipInlineCount:!0,title:"Plus"}),this.clearQueue(),i}addTable(e,n,s={}){if(!n)throw"Data is needed to create a table!";let a=this.create_widget(e,_.TABLE,s);a.onGetValue=()=>{},a.onSetValue=(e,t)=>{};let i=a.domEl;const l=document.createElement("div");l.className="lextable",l.style.width="calc( 100% - "+t.DEFAULT_NAME_WIDTH+")";const o=document.createElement("table");function r(e,t,n,s){return n[e]<s[e]?-t:n[e]>s[e]?t:0}return l.appendChild(o),n.head=n.head??[],n.body=n.body??[],n.orderMap={},n.checkMap={},a.refreshTable=()=>{o.innerHTML="";{const e=document.createElement("thead");e.className="lextablehead",o.appendChild(e);const t=document.createElement("tr");if(s.selectable){const e=document.createElement("th"),s=document.createElement("input");s.type="checkbox",s.className="lexcheckbox",s.checked=n.checkMap[":root"]??!1,e.appendChild(s),s.addEventListener("change",(function(){n.checkMap[":root"]=this.checked;const e=o.querySelector("tbody");for(const t of e.childNodes)n.checkMap[t.getAttribute("rowId")]=this.checked,t.querySelector("input").checked=this.checked})),t.appendChild(e)}for(const e of n.head){const s=document.createElement("th");s.innerHTML=`${e} <a class="fa-solid fa-sort"></a>`,s.querySelector("a").addEventListener("click",(()=>{n.orderMap[e]||(n.orderMap[e]=1);const t=n.head.indexOf(e);n.body=n.body.sort(r.bind(this,t,n.orderMap[e])),n.orderMap[e]=-n.orderMap[e],a.refreshTable()})),t.appendChild(s)}if(s.rowActions){const e=document.createElement("th");e.className="sm",t.appendChild(e)}e.appendChild(t)}{const e=document.createElement("tbody");e.className="lextablebody",o.appendChild(e);for(let a=0;a<n.body.length;++a){const i=n.body[a],l=document.createElement("tr"),o=t.getSupportedDOMName(i.join("-"));if(l.setAttribute("rowId",o),s.selectable){const e=document.createElement("td"),t=document.createElement("input");t.type="checkbox",t.className="lexcheckbox",t.checked=n.checkMap[o],e.appendChild(t),t.addEventListener("change",(function(){n.checkMap[o]=this.checked})),l.appendChild(e)}for(const e of i){const t=document.createElement("td");t.innerHTML=`${e}`,l.appendChild(t)}if(s.rowActions){const e=document.createElement("td");e.className="sm";const t=document.createElement("div");t.className="lextablebuttons",e.appendChild(t);for(const e of s.rowActions){const i=document.createElement("a");i.className="lexicon","delete"==e?(i.className+=" fa-solid fa-trash-can",i.addEventListener("click",(function(){n.body.splice(a,1),l.remove()}))):"menu"==e?(i.className+=" fa-solid fa-ellipsis",i.addEventListener("click",(function(e){k(null,e,(e=>{s.onMenuAction?s.onMenuAction(e):console.warn("Using <Menu action> without action callbacks.")}))}))):(console.assert(e.constructor==Object),i.className+=` ${e.icon}`),t.appendChild(i)}l.appendChild(e)}e.appendChild(l)}}},a.refreshTable(),a.name||(i.className+=" noname",l.style.width="100%"),i.appendChild(l),a}}t.Panel=L;class C{constructor(e,n={}){this.name=e;var s=document.createElement("div");s.className="lexbranch",n.id&&(s.id=n.id),n.className&&(s.className+=" "+n.className),s.style.width="calc(100% - 7px)",s.style.margin="0 auto";var a=this;this.root=s,this.widgets=[];var l=document.createElement("div");l.className="lexbranchtitle",l.innerHTML="<a class='fa-solid fa-angle-up switch-branch-button'></a>",n.icon&&(l.innerHTML+="<a class='branchicon "+n.icon+"' style='margin-right: 8px; margin-bottom: -2px;'>"),l.innerHTML+=e||"Branch",s.appendChild(l);var o=document.createElement("div");o.id=e.replace(/\s/g,""),o.className="lexbranchcontent",s.appendChild(o),this.content=o,this._addBranchSeparator(),n.closed&&(l.className+=" closed",s.className+=" closed",this.grabber.setAttribute("hidden",!0),i((()=>{this.content.setAttribute("hidden",!0)}),15)),this.onclick=function(e){e.stopPropagation(),this.classList.toggle("closed"),this.parentElement.classList.toggle("closed"),a.content.toggleAttribute("hidden"),a.grabber.toggleAttribute("hidden"),t.emit("@on_branch_closed",this.classList.contains("closed"),{target:a.panel})},this.oncontextmenu=function(e){e.preventDefault(),e.stopPropagation(),this.parentElement.classList.contains("dialog")||k("Dock",e,(t=>{e.preventDefault(),t.add("Floating",a._on_make_floating.bind(a))}),{icon:"fa-regular fa-window-restore"})},l.addEventListener("click",this.onclick),l.addEventListener("contextmenu",this.oncontextmenu)}_on_make_floating(){new T(this.name,(e=>{for(let t of this.widgets)e.root.appendChild(t.domEl)})).widgets=this.widgets;const e=this.root.parentElement;this.root.remove();const t=e.querySelector(".lexbranch");t&&t.classList.add("first");const n=e.querySelectorAll(".lexbranch");n.length&&n[n.length-1].classList.add("last")}_addBranchSeparator(){const e=document.createElement("div");e.className="lexwidgetseparator",e.style.width="100%",e.style.background="none";const s=document.createElement("div");s.innerHTML="▾",e.appendChild(s),i((()=>{s.style.marginLeft=parseFloat(t.DEFAULT_NAME_WIDTH)/100*this.content.offsetWidth+"px"}),10);const a=document.createElement("div");a.style.width="1px",a.style.marginLeft="6px",a.style.marginTop="2px",a.style.height="0px",s.appendChild(a),s.addEventListener("mousedown",(function(e){var t=l.root.ownerDocument;t.addEventListener("mouseup",r),t.addEventListener("mousemove",o),e.stopPropagation(),e.preventDefault();const n=l.root.offsetHeight-l.root.children[0].offsetHeight;a.style.height=n-3+"px",document.body.classList.add("nocursor")})),this.grabber=s;let l=this;function o(e){let t=e.movementX;if(0!=t){const e=parseFloat(s.style.marginLeft);s.style.marginLeft=n(e+t,32,l.content.offsetWidth-32)+"px"}}function r(e){l._updateWidgets(),a.style.height="0px";var t=l.root.ownerDocument;t.removeEventListener("mouseup",r),t.removeEventListener("mousemove",o),document.body.classList.remove("nocursor")}this.content.appendChild(e)}_updateWidgets(){for(var e=this.grabber.style.marginLeft,t=0;t<this.widgets.length;t++){let a=this.widgets[t],i=a.domEl;if(i.children.length<2)continue;var n=i.children[0],s=i.children[1];n.style.width=e;let l="0px";switch(a.type){case _.FILE:l="10%";break;case _.TEXT:l="8px"}s.style.width="-moz-calc( 100% - "+e+" - "+l+" )",s.style.width="-webkit-calc( 100% - "+e+" - "+l+" )",s.style.width="calc( 100% - "+e+" - "+l+" )",a.onresize&&a.onresize()}}}t.Branch=C;t.Footer=class{constructor(e={}){const t=document.createElement("footer");t.className="lexfooter";const n=document.createElement("div");if(n.className="wrapper",t.appendChild(n),e.columns&&e.columns.constructor==Array){const t=document.createElement("div");t.className="columns",t.style.gridTemplateColumns="1fr ".repeat(e.columns.length),n.appendChild(t);for(let n of e.columns){const e=document.createElement("div");e.className="col",t.appendChild(e);const s=document.createElement("h2");if(s.innerHTML=n.title,e.appendChild(s),!n.items||!n.items.length)continue;const a=document.createElement("ul");e.appendChild(a);for(let e of n.items){const t=document.createElement("li");t.innerHTML=`<a class="" href="${e.link}">${e.title}</a>`,a.appendChild(t)}}}if(e.credits||e.socials){const t=document.createElement("hr");n.appendChild(t);const s=document.createElement("div");if(s.className="credits-and-socials",n.appendChild(s),e.credits){const t=document.createElement("p");t.innerHTML=e.credits,s.appendChild(t)}if(e.socials){const t=document.createElement("div");t.className="social";for(let n of e.socials){const e=document.createElement("a");e.title=n.title,e.innerHTML=n.icon,e.href=n.link,e.target="_blank",t.appendChild(e)}s.appendChild(t)}}(e.parent??document.body).appendChild(t)}};class T{static _last_id=0;constructor(e,n,s={}){n||console.warn("Content is empty, add some widgets using 'callback' parameter!"),this._oncreate=n,this.id=u();const a=s.size??[],l=s.position??[],o=s.draggable??!0,r=s.modal??!1;var c=document.createElement("dialog");c.className="lexdialog "+(s.class??""),c.id=s.id??"dialog"+T._last_id++,t.root.appendChild(c),i((()=>{r?c.showModal():c.show()}),10);let d=this;var h=document.createElement("div");if(e&&(h.className="lexdialogtitle",h.innerHTML=e,h.setAttribute("draggable",!1),h.oncontextmenu=function(n){n.preventDefault(),n.stopPropagation(),t.main_area&&"horizontal"===t.main_area.type&&k("Dock",n,(s=>{n.preventDefault();const a=function(e){let t=e.panels[0];if(t)return t;for(var n of e.sections)if(t=a(n),t)return t},i=function(t){let n=t.branches.find((t=>t.name===e));n?t.root.appendChild(n.root):(t.branch(e),n=t.branches.find((t=>t.name===e)));for(let e of d.widgets)n.content.appendChild(e.domEl);n.widgets=d.widgets,t.root.querySelectorAll(".lexbranch.last").forEach((e=>{e.classList.remove("last")})),n.root.classList.add("last"),c.remove()};let l=a(t.main_area.sections[1]);s.add('<i class="fa-regular fa-window-maximize fa-window-maximize fa-rotate-90">',{disabled:!l,id:"dock_options0",callback:()=>{i(l)}});let o=a(t.main_area.sections[0]);s.add('<i class="fa-regular fa-window-maximize fa-window-maximize fa-rotate-270">',{disabled:!o,id:"dock_options1",callback:()=>{i(o)}})}),{icon:"fa-regular fa-window-restore"})},c.appendChild(h)),s.closable??1){this.close=()=>{s.onBeforeClose&&s.onBeforeClose(this),s.onclose?s.onclose(this.root):(c.close(),i((()=>{d.panel.clear(),c.remove()}),150))};var m=document.createElement("a");m.className="lexdialogcloser fa-solid fa-xmark",m.title="Close",m.addEventListener("click",this.close),e?h.appendChild(m):(m.classList.add("notitle"),c.appendChild(m))}const g=new L;g.root.classList.add("lexdialogcontent"),e||g.root.classList.add("notitle"),n&&n.call(this,g),c.appendChild(g.root),g.root.querySelectorAll(".lexbranch").forEach((e=>e.classList.add("dialog"))),this.panel=g,this.root=c,this.title=h,o&&p(c,Object.assign({targetClass:"lexdialogtitle"},s)),a.length&&"string"!=typeof a[0]&&(a[0]+="px"),a.length&&"string"!=typeof a[1]&&(a[1]+="px"),c.style.width=a[0]?a[0]:"25%",c.style.height=a[1]?a[1]:"auto",s.size&&(this.size=a);let f=c.getBoundingClientRect();c.style.left=l[0]?l[0]:"calc( 50% - "+.5*f.width+"px )",c.style.top=l[1]?l[1]:"calc( 50% - "+.5*f.height+"px )",g.root.style.width="calc( 100% - 30px )",g.root.style.height=e?"calc( 100% - "+(h.offsetHeight+30)+"px )":"calc( 100% - 51px )"}destroy(){this.root.remove()}refresh(){this.panel.root.innerHTML="",this._oncreate.call(this,this.panel)}setPosition(e,t){this.root.style.left=e+"px",this.root.style.top=t+"px"}setTitle(e){const t=this.root.querySelector(".lexdialogtitle");t&&(t.innerText=e)}}t.Dialog=T;class N extends T{static TOP=0;static BOTTOM=1;constructor(e,n,s={}){s.draggable=s.draggable??!1,s.closable=s.closable??!1;super(e,n,s);let a=this;if(t.addSignal("@on_branch_closed",this.panel,(e=>{this.dock_pos==N.BOTTOM&&(this.root.style.top="calc(100% - "+(this.root.offsetHeight+3)+"px)")})),this.root.classList.add("pocket"),this.root.style.left="unset",s.position||(this.root.style.right="3px",this.root.style.top="3px"),this.panel.root.style.width="calc( 100% - 12px )",this.panel.root.style.height="calc( 100% - 40px )",this.dock_pos=N.TOP,this.minimized=!1,this.title.tabIndex=-1,this.title.addEventListener("click",(e=>{this.size&&(this.minimized?this.root.style.height=this.size[1]:this.root.style.height="auto"),this.root.classList.toggle("minimized"),this.minimized=!this.minimized,this.dock_pos==N.BOTTOM&&(a.root.style.top=this.root.classList.contains("minimized")?"calc(100% - "+(a.title.offsetHeight+6)+"px)":"calc(100% - "+(a.root.offsetHeight+3)+"px)")})),!s.draggable){const e=s.float;if(e)for(var i=0;i<e.length;i++){switch(e[i]){case"b":this.root.style.top="calc(100% - "+(this.root.offsetHeight+3)+"px)";break;case"l":this.root.style.right="unset",this.root.style.left=s.position?s.position[1]:"3px"}}this.root.classList.add("dockable"),this.title.addEventListener("keydown",(function(e){e.ctrlKey&&(a.root.style.right="unset","ArrowLeft"==e.key?a.root.style.left="0px":"ArrowRight"==e.key?a.root.style.left="calc(100% - "+(a.root.offsetWidth+3)+"px)":"ArrowUp"==e.key?(a.root.style.top="0px",a.dock_pos=N.TOP):"ArrowDown"==e.key&&(a.root.style.top="calc(100% - "+(a.root.offsetHeight+3)+"px)",a.dock_pos=N.BOTTOM))}))}}}t.PocketDialog=N;class S{constructor(e,t,n={}){if(document.body.querySelectorAll(".lexcontextmenubox").forEach((e=>e.remove())),this.root=document.createElement("div"),this.root.className="lexcontextmenubox",this.root.style.left=e.x-48+document.scrollingElement.scrollLeft+"px",this.root.style.top=e.y-8+document.scrollingElement.scrollTop+"px",this.root.addEventListener("mouseleave",(function(){this.remove()})),this.items=[],this.colors={},t){const e={};e[t]=[],e.className="cmtitle",e.icon=n.icon,this.items.push(e)}}_adjust_position(e,t,n=!1){let s=e.getBoundingClientRect();if(n){let n=window.innerWidth-s.right;n<0&&(e.style.left=e.offsetLeft+(n-t)+"px"),n=window.innerHeight-(s.top+s.height),n<0&&(e.style.top=e.offsetTop+(n-t+20)+"px")}else{let n=s.width;s.left<0?e.style.left=t+"px":window.innerWidth-s.right<0&&(e.style.left=window.innerWidth-n-t+"px"),s.top<0?e.style.top=t+"px":s.top+s.height>window.innerHeight&&(e.style.top=window.innerHeight-s.height-t+"px")}}_create_submenu(e,t,n,s){this.root.querySelectorAll(".lexcontextmenubox").forEach((e=>e.remove()));let a=document.createElement("div");a.className="lexcontextmenubox",n.appendChild(a);for(var i=0;i<e[t].length;++i){const n=e[t][i],l=Object.keys(n)[0];this._create_entry(n,l,a,s)}var l=n.getBoundingClientRect();a.style.left=l.width+"px",a.style.marginTop=3.5-n.offsetHeight+"px",this._adjust_position(a,6,!0)}_create_entry(e,n,s,a){const i=e[n].length;let o=document.createElement("div");o.className="lexcontextmenuentry"+(e.className?" "+e.className:""),o.id=e.id??"eId"+l(n),o.innerHTML="";const r=e.icon;r&&(o.innerHTML+="<a class='"+r+" fa-sm'></a>");const c=e.disabled;if(o.innerHTML+="<div class='lexentryname"+(c?" disabled":"")+"'>"+n+"</div>",s.appendChild(o),this.colors[n]&&(o.style.borderColor=this.colors[n]),""==n)return void(o.className+=" cmseparator");if(o.addEventListener("click",(s=>{if(s.stopPropagation(),s.stopImmediatePropagation(),c)return;const l=e.callback;l&&(l.call(this,n,o),this.root.remove()),i&&"click"==t.OPEN_CONTEXTMENU_ENTRY&&this._create_submenu(e,n,o,++a)})),!i)return;let d=document.createElement("a");d.className="fa-solid fa-bars-staggered fa-xs",o.appendChild(d),"mouseover"==t.OPEN_CONTEXTMENU_ENTRY&&o.addEventListener("mouseover",(t=>{o.built||(o.built=!0,this._create_submenu(e,n,o,++a),t.stopPropagation())})),o.addEventListener("mouseleave",(()=>{a=-1,s.querySelectorAll(".lexcontextmenubox").forEach((e=>e.remove()))}))}onCreate(){i((()=>this._adjust_position(this.root,6)))}add(e,t={}){t.constructor==Function&&(t={callback:t});const n=(e+="").split("/"),s=n[n.length-1];this.colors[s]=t.color;let a=0;const i=(e,s)=>{if(null==e)return;let l=null;if(s.forEach((t=>{const n=Object.keys(t).find((t=>t==e));n&&(l=t[n])})),l)i(n[a++],l);else{let l={};l[e]=[];const o=n[a++];o||(l.id=t.id,l.callback=t.callback,l.disabled=t.disabled??!1),s.push(l),i(o,l[e])}};i(n[a++],this.items);const o=e=>{let t=Object.keys(e)[0],n=e[t];if(n.length){if(null==n.find((e=>Object.keys(e)[0]==t))){const n={};n[t]=[],n.className="cmtitle",e[t].unshift(n)}for(var s of e[t]){let e=Object.keys(s)[0];for(var a=0;a<s[e].length;++a)o(s)}}};for(let e of this.items)o(e);for(let e of this.items){let t=Object.keys(e)[0],n="eId"+l(t);const s="#"+(e.id??n);this.root.querySelector(s)||this._create_entry(e,t,this.root,-1)}}setColor(e,t){"#"!==t[0]&&(t=d(t)),this.colors[e]=t}}function k(e,n,s,a){var i=new S(n,e,a);return t.root.appendChild(i.root),s&&s(i),i.onCreate(),i}t.ContextMenu=S,t.addContextMenu=k;class A{constructor(e,n,s={}){let a=document.createElement("div");a.className="curve "+(s.className?s.className:""),a.style.minHeight="50px",a.style.width=s.width||"100%",a.style.minWidth="50px",a.style.minHeight="20px",a.bgcolor=s.bgColor||t.getThemeColor("global-intense-background"),a.pointscolor=s.pointsColor||t.getThemeColor("global-selected-light"),a.linecolor=s.lineColor||"#555",a.value=n||[],a.xrange=s.xrange||[0,1],a.yrange=s.yrange||[0,1],a.defaulty=null!=s.defaulty?s.defaulty:0,a.no_overlap=s.noOverlap||!1,a.show_samples=s.showSamples||0,a.allow_add_values=s.allowAddValues??!0,a.draggable_x=s.draggableX??!0,a.draggable_y=s.draggableY??!0,a.smooth=(s.smooth&&"number"==typeof s.smooth?s.smooth:.3)||!1,a.move_out=s.moveOutAction??t.CURVE_MOVEOUT_DELETE,t.addSignal("@on_new_color_scheme",((e,n)=>{a.bgcolor=s.bgColor||t.getThemeColor("global-intense-background"),a.pointscolor=s.pointsColor||t.getThemeColor("global-selected-light"),this.redraw()})),this.element=a;let i=document.createElement("canvas");function l(e){return[i.width*(e[0]-a.xrange[0])/a.xrange[1],i.height*(e[1]-a.yrange[0])/a.yrange[1]]}function o(e){return[e[0]*a.xrange[1]/i.width+a.xrange[0],e[1]*a.yrange[1]/i.height+a.yrange[0]]}i.width=s.width||200,i.height=s.height||50,a.appendChild(i),this.canvas=i,a.addEventListener("mousedown",(function(e){document.addEventListener("mousemove",d),document.addEventListener("mouseup",h);var n=i.getBoundingClientRect(),s=e.clientX-n.left,u=e.clientY-n.top;if(r=function(e,t){for(var n=1e5,s=-1,i=0;i<a.value.length;i++){var o=p([e,t],l(a.value[i]));o<n&&o<8&&(n=o,s=i)}return s}(s,i.height-u),e.button==t.MOUSE_LEFT_CLICK&&-1==r&&a.allow_add_values){var g=o([s,i.height-u]);a.value.push(g),m(),r=a.value.indexOf(g)}c=[s,u],a.redraw(),e.preventDefault(),e.stopPropagation()})),a.getValueAt=function(e){if(e<a.xrange[0]||e>a.xrange[1])return a.defaulty;for(var t=[a.xrange[0],a.defaulty],n=0,s=0;s<a.value.length;s+=1){var i=a.value[s];if(e==i[0])return i[1];if(e<i[0])return n=(e-t[0])/(i[0]-t[0]),t[1]*(1-n)+i[1]*n;t=i}return i=[a.xrange[1],a.defaulty],n=(e-t[0])/(i[0]-t[0]),t[1]*(1-n)+i[1]*n},a.resample=function(e){for(var t=[],n=(a.xrange[1]-a.xrange[0])/e,s=a.xrange[0];s<=a.xrange[1];s+=n)t.push(a.getValueAt(s));return t},a.addValue=function(e){for(var t=0;t<a.value;t++){if(!(a.value[t][0]<e[0]))return a.value.splice(t,0,e),void redraw()}a.value.push(e),redraw()};var r=-1;a.redraw=function(e={}){e.value&&(a.value=e.value),e.xrange&&(a.xrange=e.xrange),e.yrange&&(a.yrange=e.yrange),e.smooth&&(a.smooth=e.smooth);var n=i.parentElement.getBoundingClientRect();i.parentElement.parentElement&&(n=i.parentElement.parentElement.getBoundingClientRect()),n&&i.width!=n.width&&n.width&&n.width<1e3&&(i.width=n.width);var s=i.getContext("2d");s.setTransform(1,0,0,1,0,0),s.translate(0,i.height),s.scale(1,-1),s.fillStyle=a.bgcolor,s.fillRect(0,0,i.width,i.height),s.strokeStyle=a.linecolor,s.beginPath();var o=l([a.xrange[0],a.defaulty]);s.moveTo(o[0],o[1]);let c=[o[0],o[1]];for(var d in a.value){o=l(a.value[d]),c.push(o[0]),c.push(o[1]),a.smooth||s.lineTo(o[0],o[1])}o=l([a.xrange[1],a.defaulty]),c.push(o[0]),c.push(o[1]),a.smooth?t.UTILS.drawSpline(s,c,a.smooth):(s.lineTo(o[0],o[1]),s.stroke());for(d=0;d<a.value.length;d+=1){o=l(a.value[d]),s.fillStyle=r==d?"white":a.pointscolor,s.beginPath(),s.arc(o[0],o[1],r==d?4:3,0,2*Math.PI),s.fill()}if(a.show_samples){var h=a.resample(a.show_samples);s.fillStyle="#888";for(d=0;d<h.length;d+=1){o=l([d*((a.xrange[1]-a.xrange[0])/a.show_samples)+a.xrange[0],h[d]]),s.beginPath(),s.arc(o[0],o[1],2,0,2*Math.PI),s.fill()}}};var c=[0,0];function d(e){var n=i.getBoundingClientRect(),s=e.clientX-n.left,l=e.clientY-n.top;s<0?s=0:s>i.width&&(s=i.width),l<0?l=0:l>i.height&&(l=i.height);const d=[e.clientX-n.left,e.clientY-n.top];if(-1!=r&&p(d,[s,l])>.5*i.height){if(a.move_out==t.CURVE_MOVEOUT_DELETE)a.value.splice(r,1);else{const e=[d[0]-s,d[1]-l];let t=a.value[r];t[0]=0==e[0]?t[0]:e[0]<0?a.xrange[0]:a.xrange[1],t[1]=0==e[1]?t[1]:e[1]<0?a.yrange[1]:a.yrange[0]}h(e)}else{var g=o([-(a.draggable_x?c[0]-s:0),a.draggable_y?c[1]-l:0]);if(-1!=r){var f=a.xrange[0],v=a.xrange[1];a.no_overlap&&(r>0&&(f=a.value[r-1][0]),r<a.value.length-1&&(v=a.value[r+1][0]));var y=a.value[r];y[0]+=g[0],y[1]+=g[1],y[0]<f?y[0]=f:y[0]>v&&(y[0]=v),y[1]<a.yrange[0]?y[1]=a.yrange[0]:y[1]>a.yrange[1]&&(y[1]=a.yrange[1])}m(),a.redraw(),c[0]=s,c[1]=l,u(e),e.preventDefault(),e.stopPropagation()}}function h(e){r=-1,a.redraw(),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",h),u(e),e.preventDefault(),e.stopPropagation()}function u(e){s.callback&&s.callback.call(a,a.value,e)}function p(e,t){return Math.sqrt(Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2))}function m(){var e=null;-1!=r&&(e=a.value[r]),a.value.sort((function(e,t){return e[0]-t[0]})),e&&(r=a.value.indexOf(e))}return a.redraw(),this}redraw(e={}){this.element.redraw(e)}}t.Curve=A;class D{constructor(e,n,s={}){let a=document.createElement("div");a.className="dial "+(s.className?s.className:""),a.style.width=a.style.height=s.size||"100%",a.style.minWidth=a.style.minHeight="50px",a.bgcolor=s.bgColor||t.getThemeColor("global-dark-background"),a.pointscolor=s.pointsColor||t.getThemeColor("global-selected-light"),a.linecolor=s.lineColor||"#555",a.value=n||[],a.xrange=s.xrange||[0,1],a.yrange=s.yrange||[0,1],a.defaulty=null!=s.defaulty?s.defaulty:0,a.no_overlap=s.noOverlap||!1,a.show_samples=s.showSamples||0,a.allow_add_values=s.allowAddValues??!0,a.draggable_x=s.draggableX??!0,a.draggable_y=s.draggableY??!0,a.smooth=(s.smooth&&"number"==typeof s.smooth?s.smooth:.3)||!1,a.move_out=s.moveOutAction??t.CURVE_MOVEOUT_DELETE,this.element=a;let i=document.createElement("canvas");function l(e,t){return Math.pow(e[0],2),[i.width*(e[0]-a.xrange[0])/a.xrange[1],i.height*(e[1]-a.yrange[0])/a.yrange[1]]}function o(e){return[e[0]*a.xrange[1]/i.width+a.xrange[0],e[1]*a.yrange[1]/i.height+a.yrange[0]]}i.width=i.height=s.size||200,a.appendChild(i),this.canvas=i,a.addEventListener("mousedown",(function(e){document.addEventListener("mousemove",d),document.addEventListener("mouseup",h);var n=i.getBoundingClientRect(),s=e.clientX-n.left,u=e.clientY-n.top;if(r=function(e,t){for(var n=1e5,s=-1,i=0;i<a.value.length;i++){var o=p([e,t],l(a.value[i]));o<n&&o<8&&(n=o,s=i)}return s}(s,i.height-u),e.button==t.MOUSE_LEFT_CLICK&&-1==r&&a.allow_add_values){var g=o([s,i.height-u]);a.value.push(g),m(),r=a.value.indexOf(g)}c=[s,u],a.redraw(),e.preventDefault(),e.stopPropagation()})),a.getValueAt=function(e){if(e<a.xrange[0]||e>a.xrange[1])return a.defaulty;for(var t=[a.xrange[0],a.defaulty],n=0,s=0;s<a.value.length;s+=1){var i=a.value[s];if(e==i[0])return i[1];if(e<i[0])return n=(e-t[0])/(i[0]-t[0]),t[1]*(1-n)+i[1]*n;t=i}return i=[a.xrange[1],a.defaulty],n=(e-t[0])/(i[0]-t[0]),t[1]*(1-n)+i[1]*n},a.resample=function(e){for(var t=[],n=(a.xrange[1]-a.xrange[0])/e,s=a.xrange[0];s<=a.xrange[1];s+=n)t.push(a.getValueAt(s));return t},a.addValue=function(e){for(var t=0;t<a.value;t++){if(!(a.value[t][0]<e[0]))return a.value.splice(t,0,e),void redraw()}a.value.push(e),redraw()};var r=-1;a.redraw=function(e={}){e.value&&(a.value=e.value),e.xrange&&(a.xrange=e.xrange),e.yrange&&(a.yrange=e.yrange),e.smooth&&(a.smooth=e.smooth);var t=i.parentElement.getBoundingClientRect();i.parentElement.parentElement&&(t=i.parentElement.parentElement.getBoundingClientRect()),t&&i.width!=t.width&&t.width&&t.width<1e3&&(i.width=t.width);var n=i.getContext("2d");n.setTransform(1,0,0,1,0,0),n.translate(0,i.height),n.scale(1,-1),n.fillStyle=a.bgcolor,n.fillRect(0,0,i.width,i.height),n.strokeStyle=a.linecolor,n.beginPath();var s=l([a.xrange[0],a.defaulty]);n.moveTo(s[0],s[1]);let o=[s[0],s[1]];for(var c in a.value){s=l(a.value[c]),o.push(s[0]),o.push(s[1])}s=l([a.xrange[1],a.defaulty]),o.push(s[0]),o.push(s[1]);s=l([0,0]),n.fillStyle="gray",n.beginPath(),n.arc(s[0],s[1],3,0,2*Math.PI),n.fill();for(c=0;c<a.value.length;c+=1){s=l(a.value[c]),n.fillStyle=r==c?"white":a.pointscolor,n.beginPath(),n.arc(s[0],s[1],r==c?4:3,0,2*Math.PI),n.fill()}if(a.show_samples){var d=a.resample(a.show_samples);n.fillStyle="#888";for(c=0;c<d.length;c+=1){s=l([c*((a.xrange[1]-a.xrange[0])/a.show_samples)+a.xrange[0],d[c]]),n.beginPath(),n.arc(s[0],s[1],2,0,2*Math.PI),n.fill()}}};var c=[0,0];function d(e){var n=i.getBoundingClientRect(),s=e.clientX-n.left,l=e.clientY-n.top;s<0?s=0:s>i.width&&(s=i.width),l<0?l=0:l>i.height&&(l=i.height);const d=[e.clientX-n.left,e.clientY-n.top];if(-1!=r&&p(d,[s,l])>.5*i.height){if(a.move_out==t.CURVE_MOVEOUT_DELETE)a.value.splice(r,1);else{const e=[d[0]-s,d[1]-l];let t=a.value[r];t[0]=0==e[0]?t[0]:e[0]<0?a.xrange[0]:a.xrange[1],t[1]=0==e[1]?t[1]:e[1]<0?a.yrange[1]:a.yrange[0]}h(e)}else{var g=o([-(a.draggable_x?c[0]-s:0),a.draggable_y?c[1]-l:0]);if(-1!=r){var f=a.xrange[0],v=a.xrange[1];a.no_overlap&&(r>0&&(f=a.value[r-1][0]),r<a.value.length-1&&(v=a.value[r+1][0]));var y=a.value[r];y[0]+=g[0],y[1]+=g[1],y[0]<f?y[0]=f:y[0]>v&&(y[0]=v),y[1]<a.yrange[0]?y[1]=a.yrange[0]:y[1]>a.yrange[1]&&(y[1]=a.yrange[1])}m(),a.redraw(),c[0]=s,c[1]=l,u(e),e.preventDefault(),e.stopPropagation()}}function h(e){r=-1,a.redraw(),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",h),u(e),e.preventDefault(),e.stopPropagation()}function u(e){s.callback&&s.callback.call(a,a.value,e)}function p(e,t){return Math.sqrt(Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2))}function m(){var e=null;-1!=r&&(e=a.value[r]),a.value.sort((function(e,t){return e[0]-t[0]})),e&&(r=a.value.indexOf(e))}return a.redraw(),this}redraw(e={}){this.element.redraw(e)}}t.Dial=D;class P{static NONE=0;static ASSET_SELECTED=1;static ASSET_DELETED=2;static ASSET_RENAMED=3;static ASSET_CLONED=4;static ASSET_DBLCLICKED=5;static ENTER_FOLDER=6;static ASSET_CHECKED=7;constructor(e,t,n){this.type=e||f.NONE,this.item=t,this.value=n,this.multiple=!1}string(){switch(this.type){case P.NONE:return"assetview_event_none";case P.ASSET_SELECTED:return"assetview_event_selected";case P.ASSET_DELETED:return"assetview_event_deleted";case P.ASSET_RENAMED:return"assetview_event_renamed";case P.ASSET_CLONED:return"assetview_event_cloned";case P.ASSET_DBLCLICKED:return"assetview_event_dblclicked";case P.ENTER_FOLDER:return"assetview_event_enter_folder";case P.ASSET_CHECKED:return"assetview_event_checked"}}}t.AssetViewEvent=P;class O{static LAYOUT_CONTENT=0;static LAYOUT_LIST=1;static MAX_PAGE_ELEMENTS=50;constructor(e={}){this.rootPath="https://raw.githubusercontent.com/jxarco/lexgui.js/master/",this.layout=e.layout??O.LAYOUT_CONTENT,this.contentPage=1,e.rootPath&&(e.rootPath.constructor!==String?console.warn("Asset Root Path must be a String (now is "+path.constructor.name+")"):this.rootPath=e.rootPath);let n=document.createElement("div");n.className="lexassetbrowser",this.root=n;let s=new t.Area({height:"100%"});n.appendChild(s.root);let a,i,l=s;this.skipBrowser=e.skipBrowser??!1,this.skipPreview=e.skipPreview??!1,this.useNativeTitle=e.useNativeTitle??!1,this.onlyFolders=e.onlyFolders??!0,this.allowMultipleSelection=e.allowMultipleSelection??!1,this.previewActions=e.previewActions??[],this.contextMenu=e.contextMenu??[],this.onRefreshContent=e.onRefreshContent,this.skipBrowser||([a,i]=s.split({type:"horizontal",sizes:["15%","85%"]}),l=i,a.setLimitBox(210,0),i.setLimitBox(512,0)),this.skipPreview||([l,i]=l.split({type:"horizontal",sizes:["80%","20%"]})),this.allowedTypes=e.allowedTypes||["None","Image","Mesh","Script","JSON","Clip"],this.prevData=[],this.nextData=[],this.data=[],this._processData(this.data,null),this.currentData=this.data,this.path=["@"],this.skipBrowser||this._createTreePanel(a),this._createContentPanel(l),this.skipPreview||(this.previewPanel=i.addPanel({className:"lexassetcontentpanel",style:{overflow:"scroll"}}))}load(e,t){this.prevData.length=0,this.nextData.length=0,this.data=e,this._processData(this.data,null),this.currentData=this.data,this.path=["@"],this.skipBrowser||this._createTreePanel(this.area),this._refreshContent(),this.onevent=t}clear(){this.previewPanel&&this.previewPanel.clear(),this.leftPanel&&this.leftPanel.clear(),this.rightPanel&&this.rightPanel.clear()}_processData(e,t){e.constructor!==Array&&(e.folder=t,e.children=e.children??[]);let n=e.constructor===Array?e:e.children;for(var s=0;s<n.length;++s)this._processData(n[s],e)}_updatePath(e){this.path.length=0;const n=e=>{if(!e)return;let t=(e.children?e.children:e)[0];t&&t.folder&&(this.path.push(t.folder.id??"@"),n(t.folder.folder))};n(e),t.emit("@on_folder_change",this.path.reverse().join("/"))}_createTreePanel(e){this.leftPanel?this.leftPanel.clear():this.leftPanel=e.addPanel({className:"lexassetbrowserpanel"});let n={id:"/",children:this.data};this.tree=this.leftPanel.addTree("Content Browser",n,{filter:!1,onlyFolders:this.onlyFolders,onevent:e=>{let n=e.node,s=e.value;switch(e.type){case t.TreeEvent.NODE_SELECTED:e.multiple||this._enterFolder(n),n.parent||(this.prevData.push(this.currentData),this.currentData=this.data,this._refreshContent(),this.path=["@"],t.emit("@on_folder_change",this.path.join("/")));break;case t.TreeEvent.NODE_DRAGGED:n.folder=s,this._refreshContent()}}})}_setContentLayout(e){this.layout=e,this._refreshContent()}_createContentPanel(e){this.rightPanel?this.rightPanel.clear():this.rightPanel=e.addPanel({className:"lexassetcontentpanel"});const t=(e,t)=>{if(!this.allowNextPage)return;const n=this.contentPage;this.contentPage+=e,this.contentPage=Math.min(this.contentPage,1+((this.currentData.length-1)/O.MAX_PAGE_ELEMENTS|0)),this.contentPage=Math.max(this.contentPage,1),n!=this.contentPage&&this._refreshContent()};this.rightPanel.sameLine(),this.rightPanel.addDropdown("Filter",this.allowedTypes,this.allowedTypes[0],(e=>this._refreshContent.call(this,null,e)),{width:"30%",minWidth:"128px"}),this.rightPanel.addText(null,this.searchValue??"",(e=>this._refreshContent.call(this,e,null)),{placeholder:"Search assets.."}),this.rightPanel.addButton(null,"<a class='fa fa-arrow-up-short-wide'></a>",((e,t)=>{const n=k("Sort by",t,(e=>{e.add("Name",(()=>this._sortData("id"))),e.add("Type",(()=>this._sortData("type"))),e.add(""),e.add("Ascending",(()=>this._sortData())),e.add("Descending",(()=>this._sortData(null,!0)))})),s=this.parent.root.parentElement;s.classList.contains("lexdialog")&&(n.root.style.zIndex=+getComputedStyle(s).zIndex+1)}).bind(this),{className:"micro",title:"Sort"}),this.rightPanel.addButton(null,"<a class='fa-solid fa-grip'></a>",((e,t)=>{const n=k("Layout",t,(e=>{e.add("Content",(()=>this._setContentLayout(O.LAYOUT_CONTENT))),e.add(""),e.add("List",(()=>this._setContentLayout(O.LAYOUT_LIST)))})),s=this.parent.root.parentElement;s.classList.contains("lexdialog")&&(n.root.style.zIndex=+getComputedStyle(s).zIndex+1)}).bind(this),{className:"micro",title:"View"}),this.rightPanel.addButton(null,"<a class='fa-solid fa-angles-left'></a>",t.bind(this,-1),{className:"micro",title:"Previous Page"}),this.rightPanel.addButton(null,"<a class='fa-solid fa-angles-right'></a>",t.bind(this,1),{className:"micro",title:"Next Page"}),this.rightPanel.endLine(),this.skipBrowser||(this.rightPanel.sameLine(),this.rightPanel.addComboButtons(null,[{value:"Left",icon:"fa-solid fa-left-long",callback:e=>{this.prevData.length&&(this.nextData.push(this.currentData),this.currentData=this.prevData.pop(),this._refreshContent(),this._updatePath(this.currentData))}},{value:"Right",icon:"fa-solid fa-right-long",callback:e=>{this.nextData.length&&(this.prevData.push(this.currentData),this.currentData=this.nextData.pop(),this._refreshContent(),this._updatePath(this.currentData))}},{value:"Refresh",icon:"fa-solid fa-arrows-rotate",callback:e=>{this._refreshContent()}}],{width:"auto",noSelection:!0}),this.rightPanel.addText(null,this.path.join("/"),null,{disabled:!0,signal:"@on_folder_change",style:{fontWeight:"bolder",fontSize:"16px",color:"#aaa"}}),this.rightPanel.addText(null,"Page "+this.contentPage+" / "+(1+((this.currentData.length-1)/O.MAX_PAGE_ELEMENTS|0)),null,{disabled:!0,signal:"@on_page_change",width:"fit-content"}),this.rightPanel.endLine()),this.content=document.createElement("ul"),this.content.className="lexassetscontent",this.rightPanel.root.appendChild(this.content),this.content.addEventListener("dragenter",(function(e){e.preventDefault(),this.classList.add("dragging")})),this.content.addEventListener("dragleave",(function(e){e.preventDefault(),this.classList.remove("dragging")})),this.content.addEventListener("drop",(e=>{e.preventDefault(),this._processDrop(e)})),this.content.addEventListener("click",(function(){this.querySelectorAll(".lexassetitem").forEach((e=>e.classList.remove("selected")))})),this._refreshContent()}_refreshContent(e,n){const s=this.layout==O.LAYOUT_CONTENT;this.filter=n??this.filter??"None",this.searchValue=e??this.searchValue??"",this.content.innerHTML="",this.content.className=s?"lexassetscontent":"lexassetscontent list";let a=this;const i=function(e){const n=e.type.charAt(0).toUpperCase()+e.type.slice(1),i=o(e.id),l="Folder"===n;let r=document.createElement("li");if(r.className="lexassetitem "+e.type.toLowerCase(),r.tabIndex=-1,a.content.appendChild(r),a.useNativeTitle)r.title=n+": "+e.id;else{let t=document.createElement("span");t.className="lexitemdesc",t.innerHTML="File: "+e.id+"<br>Type: "+n,a.content.appendChild(t),r.addEventListener("mousemove",(e=>{if(!s)return;const n=r.getBoundingClientRect(),a=e.target.getBoundingClientRect(),i=t.parentElement.getBoundingClientRect();let l=a.x-i.x-(a.x-n.x),o=a.y-i.y-(a.y-n.y);e.target.classList.contains("lexassettitle")&&(o+=a.y-n.y),t.style.left=l+e.offsetX+12+"px",t.style.top=o+e.offsetY+"px"})),r.addEventListener("mouseenter",(()=>{s&&(t.style.display="unset")})),r.addEventListener("mouseleave",(()=>{s&&setTimeout((()=>{t.style.display="none"}),100)}))}if(a.allowMultipleSelection){let t=document.createElement("input");t.type="checkbox",t.className="lexcheckbox",t.checked=e.selected,t.addEventListener("change",((t,n)=>{if(e.selected=!e.selected,a.onevent){const n=new P(P.ASSET_CHECKED,t.shiftKey?[e]:e);n.multiple=!!t.shiftKey,a.onevent(n)}t.stopPropagation(),t.stopImmediatePropagation()})),r.appendChild(t)}let c=document.createElement("span");if(c.className="lexassettitle",c.innerText=e.id,r.appendChild(c),!a.skipPreview){let t=null;if(e.src&&(["png","jpg"].indexOf(o(e.src))>-1||e.src.includes("data:image/"))||l||!s){t=document.createElement("img");let n=e.unknown_extension?a.rootPath+"images/file.png":l?a.rootPath+"images/folder.png":e.src;t.src=s||l?n:a.rootPath+"images/file.png",r.appendChild(t)}else{t=document.createElement("svg"),t.className="asset-file-preview",r.appendChild(t);let n=document.createElement("text");t.appendChild(n),n.innerText=i&&i!=e.id?"."+i.toUpperCase():e.type.toUpperCase();var d=2.5/n.innerText.length;if(d<1){var h=64*d;n.style.fontSize=h+"px",t.style.paddingTop="calc(50% - "+(.5*n.offsetHeight+10)+"px)"}}}if(!l){let e=document.createElement("span");e.className="lexassetinfo",e.innerText=n,r.appendChild(e)}return r.addEventListener("click",(function(n){n.stopImmediatePropagation(),n.stopPropagation();const s=n.detail==t.MOUSE_DOUBLE_CLICK;if(s){if(l)return void a._enterFolder(e)}else n.shiftKey||a.content.querySelectorAll(".lexassetitem").forEach((e=>e.classList.remove("selected"))),this.classList.add("selected"),a.selectedItem=e,a.skipPreview||a._previewAsset(e);if(a.onevent){const t=new P(s?P.ASSET_DBLCLICKED:P.ASSET_SELECTED,n.shiftKey?[e]:e);t.multiple=!!n.shiftKey,a.onevent(t)}})),a.contextMenu&&r.addEventListener("contextmenu",(function(n){n.preventDefault();const s=a.content.querySelectorAll(".selected").length;t.addContextMenu(s>1?s+" selected":l?e.id:e.type,n,(t=>{s<=1&&t.add("Rename"),l||t.add("Clone",a._cloneItem.bind(a,e)),s<=1&&t.add("Properties"),t.add(""),t.add("Delete",a._deleteItem.bind(a,e))}))})),r.addEventListener("dragstart",(function(e){e.preventDefault()}),!1),r},l=new FileReader,r=this.currentData.filter((e=>("None"==this.filter||e.type.toLowerCase()==this.filter.toLowerCase())&&e.id.toLowerCase().includes(this.searchValue.toLowerCase())));(n||e)&&(this.contentPage=1);const c=(this.contentPage-1)*O.MAX_PAGE_ELEMENTS,d=Math.min(c+O.MAX_PAGE_ELEMENTS,r.length);for(let s=c;s<d;++s){let a=r[s];a.path?t.request({url:a.path,dataType:"blob",success:t=>{a.bytesize=t.size,l.readAsDataURL(t),l.onload=t=>{a.src=t.currentTarget.result,a._path=a.path,delete a.path,this._refreshContent(e,n)}}}):a.domEl=i(a)}this.allowNextPage=r.length-1>O.MAX_PAGE_ELEMENTS,t.emit("@on_page_change","Page "+this.contentPage+" / "+(1+((r.length-1)/O.MAX_PAGE_ELEMENTS|0))),this.onRefreshContent&&this.onRefreshContent(e,n)}_previewAsset(e){const n=e.src&&e.src.includes("data:image/");if(this.previewPanel.clear(),this.previewPanel.branch("Asset"),"image"==e.type||e.src){(["png","jpg"].indexOf(o(e.src))>-1||n)&&this.previewPanel.addImage(e.src,{style:{width:"100%"}})}const s={disabled:!0};this.previewPanel.addText("Filename",e.id,null,s),e.lastModified&&this.previewPanel.addText("Last Modified",new Date(e.lastModified).toLocaleString(),null,s),(e._path||e.src)&&this.previewPanel.addText("URL",e._path?e._path:e.src,null,s),this.previewPanel.addText("Path",this.path.join("/"),null,s),this.previewPanel.addText("Type",e.type,null,s),e.bytesize&&this.previewPanel.addText("Size",(e.bytesize/1024).toPrecision(3)+" KBs",null,s),"folder"==e.type&&this.previewPanel.addText("Files",e.children?e.children.length.toString():"0",null,s),this.previewPanel.addSeparator();const a=[...this.previewActions];a.length||a.push({name:"Download",callback:()=>t.downloadURL(e.src,e.id)});for(let t of a)t.type&&t.type!==e.type||t.path&&t.path!==this.path.join("/")||this.previewPanel.addButton(null,t.name,t.callback.bind(this,e));this.previewPanel.merge()}_processDrop(e){const t=new FileReader,n=e.dataTransfer.files.length;for(let s=0;s<e.dataTransfer.files.length;++s){const a=e.dataTransfer.files[s],i=this.currentData.find((e=>e.id===a.name));i||(t.readAsDataURL(a),t.onload=e=>{let t=a.name.substr(a.name.lastIndexOf(".")+1).toLowerCase(),i={id:a.name,src:e.currentTarget.result,extension:t,lastModified:a.lastModified};switch(t){case"png":case"jpg":i.type="image";break;case"js":case"css":i.type="script";break;case"json":i.type="json";break;case"obj":i.type="mesh";break;default:i.type=t,i.unknown_extension=!0}this.currentData.push(i),s==n-1&&(this._refreshContent(),this.skipBrowser||this.tree.refresh())})}}_sortData(e,t=!1){e=e??this._lastSortBy??"id",this.currentData=this.currentData.sort(((n,s)=>{var a=t?s[e].localeCompare(n[e]):n[e].localeCompare(s[e]);return 0==a&&(a=t?s.id.localeCompare(n.id):n.id.localeCompare(s.id)),a})),this._lastSortBy=e,this._refreshContent()}_enterFolder(e){if(this.prevData.push(this.currentData),this.currentData=e.children,this.contentPage=1,this._refreshContent(),this._updatePath(this.currentData),this.onevent){const t=new P(P.ENTER_FOLDER,e);this.onevent(t)}}_deleteItem(e){const t=this.currentData.indexOf(e);if(t<0)console.error("[AssetView Error] Cannot delete. Item not found.");else{if(this.currentData.splice(t,1),this._refreshContent(this.searchValue,this.filter),this.onevent){const t=new P(P.ASSET_DELETED,e);this.onevent(t)}this.tree.refresh(),this._processData(this.data)}}_cloneItem(e){const t=this.currentData.indexOf(e);if(t<0)return;delete e.domEl,delete e.folder;const n=r(e);if(this.currentData.splice(t,0,n),this._refreshContent(this.searchValue,this.filter),this.onevent){const t=new P(P.ASSET_CLONED,e);this.onevent(t)}this._processData(this.data)}}t.AssetView=O,Object.assign(t,{request(e){var t=e.dataType||"text";"json"==t||"xml"==t?t="text":"binary"==t&&(t="arraybuffer",e.mimeType="application/octet-stream");var n=new XMLHttpRequest;n.open(e.data?"POST":"GET",e.url,!0),t&&(n.responseType=t),e.mimeType&&n.overrideMimeType(e.mimeType),e.nocache&&n.setRequestHeader("Cache-Control","no-cache"),n.onload=function(t){var n=this.response;if(200==this.status){if("json"==e.dataType)try{n=JSON.parse(n)}catch(s){if(!e.error)throw s;e.error(s)}else if("xml"==e.dataType)try{n=(new DOMParser).parseFromString(n,"text/xml")}catch(s){if(!e.error)throw s;e.error(s)}e.success&&e.success.call(this,n,this)}else{var s="Error "+this.status;e.error&&e.error(s)}},n.onerror=function(t){e.error&&e.error(t)};var s=new FormData;if(e.data)for(var a in e.data)s.append(a,e.data[a]);return n.send(s),n},requestText(e,t,n){return this.request({url:e,dataType:"text",success:t,error:n})},requestJSON(e,t,n){return this.request({url:e,dataType:"json",success:t,error:n})},requestBinary(e,t,n){return this.request({url:e,dataType:"binary",success:t,error:n})},requireScript(e,t,n,s,a){if(!e)throw"invalid URL";e.constructor===String&&(e=[e]);var i=e.length,l=[];for(var o in e){var r=document.createElement("script");r.num=o,r.type="text/javascript",r.src=e[o]+(a?"?version="+a:""),r.original_src=e[o],r.async=!1,r.onload=function(e){i--,l.push(this),i?s&&s(this.original_src,this.num):t&&t(l)},n&&(r.onerror=function(e){n(e,this.original_src,this.num)}),document.getElementsByTagName("head")[0].appendChild(r)}},downloadURL(e,n){const s=new FileReader,a=function(e){var t=document.createElement("a");t.href=e,t.download=n,document.body.appendChild(t),t.click(),document.body.removeChild(t)};e.includes("http")?t.request({url:e,dataType:"blob",success:e=>{s.readAsDataURL(e),s.onload=e=>{a(e.currentTarget.result)}}}):a(e)},downloadFile:function(e,t,n){if(t){n||(n=t.constructor===String?"text/plain":"application/octet-stream");var s=null;s=t.constructor!==File&&t.constructor!==Blob?new Blob([t],{type:n}):t;var a=URL.createObjectURL(s),i=document.createElement("a");i.setAttribute("href",a),i.setAttribute("download",e),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout((function(){URL.revokeObjectURL(a)}),6e4)}else console.warn("No file provided to download")}}),Object.defineProperty(String.prototype,"lastChar",{get:function(){return this[this.length-1]},enumerable:!0,configurable:!0}),Element.prototype.insertChildAtIndex=function(e,t=1/0){t>=this.children.length?this.appendChild(e):this.insertBefore(e,this.children[t])},Element.prototype.hasClass=function(e){return!!(e=[].concat(e)).filter((e=>this.classList.contains(e))).length},Element.prototype.addClass=function(e){e&&this.classList.add(e)},Element.prototype.getComputedSize=function(){const e=getComputedStyle(this);return{width:this.offsetWidth+e.getPropertyValue("marginLeft")+e.getPropertyValue("marginRight"),height:this.offsetHeight+e.getPropertyValue("marginTop")+e.getPropertyValue("marginBottom")}},Element.prototype.getParentArea=function(){let e=this.parentElement;for(;e;){if(e.classList.contains("lexarea"))return e;e=e.parentElement}},t.UTILS={getTime:()=>(new Date).getTime(),compareThreshold:(e,t,n,s)=>Math.abs(e-t)>=s||Math.abs(e-n)>=s,compareThresholdRange:(e,t,n,s)=>e>=n&&e<=s||t>=n&&t<=s||e<=n&&t>=s,uidGenerator:u,deleteElement(e){e&&e.remove()},flushCss(e){e.offsetHeight},getControlPoints(e,t,n,s,a,i,l){var o=Math.sqrt(Math.pow(n-e,2)+Math.pow(s-t,2)),r=l*o/(o+Math.sqrt(Math.pow(a-n,2)+Math.pow(i-s,2))),c=l-r;return[n+r*(e-a),s+r*(t-i),n-c*(e-a),s-c*(t-i)]},drawSpline(e,n,s){e.save();for(var a=[],i=n.length,l=0;l<i-4;l+=2)a=a.concat(t.UTILS.getControlPoints(n[l],n[l+1],n[l+2],n[l+3],n[l+4],n[l+5],s));for(l=2;l<n.length-5;l+=2)e.beginPath(),e.moveTo(n[l],n[l+1]),e.bezierCurveTo(a[2*l-2],a[2*l-1],a[2*l],a[2*l+1],n[l+2],n[l+3]),e.stroke(),e.closePath();e.beginPath(),e.moveTo(n[0],n[1]),e.quadraticCurveTo(a[0],a[1],n[2],n[3]),e.stroke(),e.closePath(),e.beginPath(),e.moveTo(n[i-2],n[i-1]),e.quadraticCurveTo(a[2*i-10],a[2*i-9],n[i-4],n[i-3]),e.stroke(),e.closePath(),e.restore()}}}("undefined"!=typeof window?window:"undefined"!=typeof self?self:global);
|