',dropdown:'',p2dpad:''};function eE(e,t){let i=e.createElementNS(ey,"svg");return i.innerHTML=eP[t],i}function ek(e,t,i){e.insertBefore(t,e.children[i])}function eV(e){e.parentElement&&e.parentElement.removeChild(e)}function eL(e){for(;e.children.length>0;)e.removeChild(e.children[0])}function eM(e){return e.relatedTarget?e.relatedTarget:"explicitOriginalTarget"in e?e.explicitOriginalTarget:null}function eD(e,t){e.emitter.on("change",e=>{t(e.rawValue)}),t(e.rawValue)}function eS(e,t,i){eD(e.value(t),i)}function ej(e){return(t,i)=>["tp","-",e,"v",t?`_${t}`:"",i?`-${i}`:""].join("")}const eT=ej("lbl");class eI{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(eT()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(eT("l")),eS(t.props,"label",t=>{p(t)?this.element.classList.add(eT(void 0,"nol")):(this.element.classList.remove(eT(void 0,"nol")),function(e){for(;e.childNodes.length>0;)e.removeChild(e.childNodes[0])}(i),i.appendChild(function(e,t){let i=e.createDocumentFragment();return t.split("\n").map(t=>e.createTextNode(t)).forEach((t,n)=>{n>0&&i.appendChild(e.createElement("br")),i.appendChild(t)}),i}(e,t)))}),this.element.appendChild(i),this.labelElement=i;let n=e.createElement("div");n.classList.add(eT("v")),this.element.appendChild(n),this.valueElement=n}}class eO{constructor(e,t){this.props=t.props,this.valueController=t.valueController,this.viewProps=t.valueController.viewProps,this.view=new eI(e,{props:t.props,viewProps:this.viewProps}),this.view.valueElement.appendChild(this.valueController.view.element)}importProps(e){return eg(e,null,e=>({label:e.optional.string}),e=>(this.props.set("label",e.label),!0))}exportProps(){return e_(null,{label:this.props.get("label")})}}const eA=ej(""),eR={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class eK{constructor(e){this.parent_=null,this.blade=e.blade,this.view=e.view,this.viewProps=e.viewProps;let t=this.view.element;this.blade.value("positions").emitter.on("change",()=>{["veryfirst","first","last","verylast"].forEach(e=>{t.classList.remove(eA(void 0,eR[e]))}),this.blade.get("positions").forEach(e=>{t.classList.add(eA(void 0,eR[e]))})}),this.viewProps.handleDispose(()=>{eV(t)})}get parent(){return this.parent_}set parent(e){this.parent_=e,this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}importState(e){return eg(e,null,e=>({disabled:e.required.boolean,hidden:e.required.boolean}),e=>(this.viewProps.importState(e),!0))}exportState(){return e_(null,Object.assign({},this.viewProps.exportState()))}}class ez extends eK{constructor(e,t){if(t.value!==t.valueController.value)throw g.shouldNeverHappen();let i=t.valueController.viewProps,n=new eO(e,{blade:t.blade,props:t.props,valueController:t.valueController});super(Object.assign(Object.assign({},t),{view:new eI(e,{props:t.props,viewProps:i}),viewProps:i})),this.labelController=n,this.value=t.value,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}importState(e){return eg(e,t=>{var i,n,s;return super.importState(t)&&this.labelController.importProps(t)&&(null===(s=null===(n=(i=this.valueController).importProps)||void 0===n?void 0:n.call(i,e))||void 0===s||s)},e=>({value:e.optional.raw}),e=>(e.value&&(this.value.rawValue=e.value),!0))}exportState(){var e,t,i;return e_(()=>super.exportState(),Object.assign(Object.assign({value:this.value.rawValue},this.labelController.exportProps()),null!==(i=null===(t=(e=this.valueController).exportProps)||void 0===t?void 0:t.call(e))&&void 0!==i?i:{}))}}function eB(e){let t=Object.assign({},e);return delete t.value,t}class eN extends ez{constructor(e,t){super(e,t),this.tag=t.tag}importState(e){return eg(e,t=>super.importState(eB(e)),e=>({tag:e.optional.string}),e=>(this.tag=e.tag,!0))}exportState(){return e_(()=>eB(super.exportState()),{binding:{key:this.value.binding.target.key,value:this.value.binding.target.read()},tag:this.tag})}}class eF extends eN{importState(e){return eg(e,e=>super.importState(e),e=>({binding:e.required.object({value:e.required.raw})}),e=>(this.value.binding.inject(e.binding.value),this.value.fetch(),!0))}}function eU(e,t){for(;e.lengthe.length?i.splice(0,i.length-e.length):eU(i,e.length),i}(this.value_.rawValue,this.binding.read())}onTick_(){this.fetch()}onValueBeforeChange_(e){this.emitter.emit("beforechange",Object.assign(Object.assign({},e),{sender:this}))}onValueChange_(e){this.emitter.emit("change",Object.assign(Object.assign({},e),{sender:this}))}}class e$ extends eN{exportState(){return e_(()=>super.exportState(),{binding:{readonly:!0}})}}class eq extends er{get label(){return this.controller.labelController.props.get("label")}set label(e){this.controller.labelController.props.set("label",e)}get title(){var e;return null!==(e=this.controller.buttonController.props.get("title"))&&void 0!==e?e:""}set title(e){this.controller.buttonController.props.set("title",e)}on(e,t){let i=t.bind(this);return this.controller.buttonController.emitter.on(e,e=>{i(new ep(this,e.nativeEvent))}),this}off(e,t){return this.controller.buttonController.emitter.off(e,t),this}}function eG(e,t){return i=>{i?e.classList.add(t):e.classList.remove(t)}}function eJ(e,t){eD(e,e=>{t.textContent=null!=e?e:""})}const eY=ej("btn");class eX{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(eY()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("button");i.classList.add(eY("b")),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;let n=e.createElement("div");n.classList.add(eY("t")),eJ(t.props.value("title"),n),this.buttonElement.appendChild(n)}}class eZ{constructor(e,t){this.emitter=new w,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new eX(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}importProps(e){return eg(e,null,e=>({title:e.optional.string}),e=>(this.props.set("title",e.title),!0))}exportProps(){return e_(null,{title:this.props.get("title")})}onClick_(e){this.emitter.emit("click",{nativeEvent:e,sender:this})}}class eW extends eK{constructor(e,t){let i=new eZ(e,{props:t.buttonProps,viewProps:t.viewProps}),n=new eO(e,{blade:t.blade,props:t.labelProps,valueController:i});super({blade:t.blade,view:n.view,viewProps:t.viewProps}),this.buttonController=i,this.labelController=n}importState(e){return eg(e,e=>super.importState(e)&&this.buttonController.importProps(e)&&this.labelController.importProps(e),()=>({}),()=>!0)}exportState(){return e_(()=>super.exportState(),Object.assign(Object.assign({},this.buttonController.exportProps()),this.labelController.exportProps()))}}class eQ{constructor(e){let[t,i]=e.split("-"),n=t.split(".");this.major=parseInt(n[0],10),this.minor=parseInt(n[1],10),this.patch=parseInt(n[2],10),this.prerelease=null!=i?i:null}toString(){let e=[this.major,this.minor,this.patch].join(".");return null!==this.prerelease?[e,this.prerelease].join("-"):e}}const e0=new eQ("2.0.3");function e1(e){return Object.assign({core:e0},e)}const e2=e1({id:"button",type:"blade",accept(e){let t=eb(e,e=>({title:e.required.string,view:e.required.constant("button"),label:e.optional.string}));return t?{params:t}:null},controller:e=>new eW(e.document,{blade:e.blade,buttonProps:P.fromObject({title:e.params.title}),labelProps:P.fromObject({label:e.params.label}),viewProps:e.viewProps}),api:e=>e.controller instanceof eW?new eq(e.controller):null});class e3{constructor(e,t){this.onRackValueChange_=this.onRackValueChange_.bind(this),this.controller_=e,this.emitter_=new w,this.pool_=t,this.controller_.rack.emitter.on("valuechange",this.onRackValueChange_)}get children(){return this.controller_.rack.children.map(e=>this.pool_.createApi(e))}addBinding(e,t,i){let n=null!=i?i:{},s=this.controller_.element.ownerDocument,r=this.pool_.createBinding(s,function(e,t){if(!_.isBindable(e))throw g.notBindable();return new _(e,t)}(e,t),n),o=this.pool_.createBindingApi(r);return this.add(o,n.index)}addFolder(e){return this.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}addButton(e){return this.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}addTab(e){return this.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}add(e,t){let i=e.controller;return this.controller_.rack.add(i,t),e}remove(e){this.controller_.rack.remove(e.controller)}addBlade(e){let t=this.controller_.element.ownerDocument,i=this.pool_.createBlade(t,e),n=this.pool_.createApi(i);return this.add(n,e.index)}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)},{key:t}),this}off(e,t){return this.emitter_.off(e,t),this}refresh(){this.children.forEach(e=>{d(e)&&"refresh"in e&&"function"==typeof e.refresh&&e.refresh()})}onRackValueChange_(e){let t=e.bladeController,i=this.pool_.createApi(t),n=ef(t.value)?t.value.binding:null;this.emitter_.emit("change",new el(i,n?n.target.read():t.value.rawValue,e.options.last))}}class e5 extends er{constructor(e,t){super(e),this.rackApi_=new e3(e.rackController,t)}refresh(){this.rackApi_.refresh()}}class e6 extends eK{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}importState(e){return eg(e,e=>super.importState(e),e=>({children:e.required.array(e.required.raw)}),e=>this.rackController.rack.children.every((t,i)=>t.importState(e.children[i])))}exportState(){return e_(()=>super.exportState(),{children:this.rackController.rack.children.map(e=>e.exportState())})}}function e4(e){return"rackController"in e}class e9{constructor(e){this.emitter=new w,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=e}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(e){for(let t of this.allItems())if(e(t))return t;return null}includes(e){return this.cache_.has(e)}add(e,t){if(this.includes(e))throw g.shouldNeverHappen();let i=void 0!==t?t:this.items_.length;this.items_.splice(i,0,e),this.cache_.add(e);let n=this.extract_(e);n&&(n.emitter.on("add",this.onSubListAdd_),n.emitter.on("remove",this.onSubListRemove_),n.allItems().forEach(e=>{this.cache_.add(e)})),this.emitter.emit("add",{index:i,item:e,root:this,target:this})}remove(e){let t=this.items_.indexOf(e);if(t<0)return;this.items_.splice(t,1),this.cache_.delete(e);let i=this.extract_(e);i&&(i.allItems().forEach(e=>{this.cache_.delete(e)}),i.emitter.off("add",this.onSubListAdd_),i.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:t,item:e,root:this,target:this})}onSubListAdd_(e){this.cache_.add(e.item),this.emitter.emit("add",{index:e.index,item:e.item,root:this,target:e.target})}onSubListRemove_(e){this.cache_.delete(e.item),this.emitter.emit("remove",{index:e.index,item:e.item,root:this,target:e.target})}}function e8(e){return e4(e)?e.rackController.rack.bcSet_:null}class e7{constructor(e){var t,i;this.emitter=new w,this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onRackLayout_=this.onRackLayout_.bind(this),this.onRackValueChange_=this.onRackValueChange_.bind(this),this.blade_=null!==(t=e.blade)&&void 0!==t?t:null,null===(i=this.blade_)||void 0===i||i.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=e.viewProps,this.bcSet_=new e9(e8),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,t){var i;null===(i=e.parent)||void 0===i||i.remove(e),e.parent=this,this.bcSet_.add(e,t)}remove(e){e.parent=null,this.bcSet_.remove(e)}find(e){return this.bcSet_.allItems().filter(e)}onSetAdd_(e){this.updatePositions_();let t=e.target===e.root;if(this.emitter.emit("add",{bladeController:e.item,index:e.index,root:t,sender:this}),!t)return;let i=e.item;if(i.viewProps.emitter.on("change",this.onChildViewPropsChange_),i.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),i.viewProps.handleDispose(this.onChildDispose_),ew(i))i.value.emitter.on("change",this.onChildValueChange_);else if(e4(i)){let e=i.rackController.rack;if(e){let t=e.emitter;t.on("layout",this.onRackLayout_),t.on("valuechange",this.onRackValueChange_)}}}onSetRemove_(e){this.updatePositions_();let t=e.target===e.root;if(this.emitter.emit("remove",{bladeController:e.item,root:t,sender:this}),!t)return;let i=e.item;if(ew(i))i.value.emitter.off("change",this.onChildValueChange_);else if(e4(i)){let e=i.rackController.rack;if(e){let t=e.emitter;t.off("layout",this.onRackLayout_),t.off("valuechange",this.onRackValueChange_)}}}updatePositions_(){let e=this.bcSet_.items.filter(e=>!e.viewProps.get("hidden")),t=e[0],i=e[e.length-1];this.bcSet_.items.forEach(e=>{let n=[];e===t&&(n.push("first"),this.blade_&&!this.blade_.get("positions").includes("veryfirst")||n.push("veryfirst")),e===i&&(n.push("last"),this.blade_&&!this.blade_.get("positions").includes("verylast")||n.push("verylast")),e.blade.set("positions",n)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(e=>e.viewProps.get("disposed")).forEach(e=>{this.bcSet_.remove(e)})}onChildValueChange_(e){let t=function(e,t){for(let i=0;i{for(let e=this.rack.children.length-1;e>=0;e--)this.rack.children[e].viewProps.set("disposed",!0)})}onRackAdd_(e){e.root&&ek(this.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.root&&eV(e.bladeController.view.element)}}function tt(){return new P({positions:C([],{equals:c})})}class ti extends P{constructor(e){super(e)}static create(e){return new ti(P.createCore({completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null}))}get styleExpanded(){var e;return null!==(e=this.get("temporaryExpanded"))&&void 0!==e?e:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";let e=this.get("expandedHeight");return this.get("shouldFixHeight")&&!p(e)?`${e}px`:"auto"}bindExpandedClass(e,t){let i=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};eS(this,"expanded",i),eS(this,"temporaryExpanded",i)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function tn(e,t){t.style.height=e.styleHeight}function ts(e,t){e.value("expanded").emitter.on("beforechange",()=>{if(e.set("completed",!1),p(e.get("expandedHeight"))){let i;let n=(i=0,function(e,t){let i=e.style.transition;e.style.transition="none",t(),e.style.transition=i}(t,()=>{e.set("expandedHeight",null),e.set("temporaryExpanded",!0),ex(t),i=t.clientHeight,e.set("temporaryExpanded",null),ex(t)}),i);n>0&&e.set("expandedHeight",n)}e.set("shouldFixHeight",!0),ex(t)}),e.emitter.on("change",()=>{tn(e,t)}),tn(e,t),t.addEventListener("transitionend",t=>{"height"===t.propertyName&&e.cleanUpTransition()})}class tr extends e5{constructor(e,t){super(e,t),this.emitter_=new w,this.controller.foldable.value("expanded").emitter.on("change",e=>{this.emitter_.emit("fold",new ea(this,e.sender.rawValue))}),this.rackApi_.on("change",e=>{this.emitter_.emit("change",e)})}get expanded(){return this.controller.foldable.get("expanded")}set expanded(e){this.controller.foldable.set("expanded",e)}get title(){return this.controller.props.get("title")}set title(e){this.controller.props.set("title",e)}get children(){return this.rackApi_.children}addBinding(e,t,i){return this.rackApi_.addBinding(e,t,i)}addFolder(e){return this.rackApi_.addFolder(e)}addButton(e){return this.rackApi_.addButton(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){return this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addBlade(e){return this.rackApi_.addBlade(e)}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)},{key:t}),this}off(e,t){return this.emitter_.off(e,t),this}}const to=ej("cnt");class tl{constructor(e,t){var i;this.className_=ej(null!==(i=t.viewName)&&void 0!==i?i:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),to()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),eS(this.foldable_,"completed",eG(this.element,this.className_(void 0,"cpl")));let n=e.createElement("button");n.classList.add(this.className_("b")),eS(t.props,"title",e=>{p(e)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),t.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n;let s=e.createElement("div");s.classList.add(this.className_("i")),this.element.appendChild(s);let r=e.createElement("div");r.classList.add(this.className_("t")),eJ(t.props.value("title"),r),this.buttonElement.appendChild(r),this.titleElement=r;let o=e.createElement("div");o.classList.add(this.className_("m")),this.buttonElement.appendChild(o);let l=e.createElement("div");l.classList.add(this.className_("c")),this.element.appendChild(l),this.containerElement=l}}class ta extends e6{constructor(e,t){var i;let n=ti.create(null===(i=t.expanded)||void 0===i||i),s=new tl(e,{foldable:n,props:t.props,viewName:t.root?"rot":void 0,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:new te({blade:t.blade,element:s.containerElement,root:t.root,viewProps:t.viewProps}),view:s})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=t.props,this.foldable=n,ts(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}importState(e){return eg(e,e=>super.importState(e),e=>({expanded:e.required.boolean,title:e.optional.string}),e=>(this.foldable.set("expanded",e.expanded),this.props.set("title",e.title),!0))}exportState(){return e_(()=>super.exportState(),{expanded:this.foldable.get("expanded"),title:this.props.get("title")})}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}const th=e1({id:"folder",type:"blade",accept(e){let t=eb(e,e=>({title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean}));return t?{params:t}:null},controller:e=>new ta(e.document,{blade:e.blade,expanded:e.params.expanded,props:P.fromObject({title:e.params.title}),viewProps:e.viewProps}),api:e=>e.controller instanceof ta?new tr(e.controller,e.pool):null}),tp=ej("");function td(e,t){return eG(e,tp(void 0,t))}class tu extends P{constructor(e){var t,i;super(e),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=[new x(i=C(this.getGlobalDisabled_())),(e,t)=>{i.setRawValue(e,t)}],this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),null===(t=this.get("parent"))||void 0===t||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(e){var t,i,n;let s=null!=e?e:{};return new tu(P.createCore({disabled:null!==(t=s.disabled)&&void 0!==t&&t,disposed:!1,hidden:null!==(i=s.hidden)&&void 0!==i&&i,parent:null!==(n=s.parent)&&void 0!==n?n:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(e){eD(this.globalDisabled_,td(e,"disabled")),eS(this,"hidden",td(e,"hidden"))}bindDisabled(e){eD(this.globalDisabled_,t=>{e.disabled=t})}bindTabIndex(e){eD(this.globalDisabled_,t=>{e.tabIndex=t?-1:0})}handleDispose(e){this.value("disposed").emitter.on("change",t=>{t&&e()})}importState(e){this.set("disabled",e.disabled),this.set("hidden",e.hidden)}exportState(){return{disabled:this.get("disabled"),hidden:this.get("hidden")}}getGlobalDisabled_(){let e=this.get("parent");return!!e&&e.globalDisabled.rawValue||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(e){var t;let i=e.previousRawValue;null==i||i.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),null===(t=this.get("parent"))||void 0===t||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}const tc=ej("tbp");class tv{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(tc()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(tc("c")),this.element.appendChild(i),this.containerElement=i}}const tm=ej("tbi");class tb{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(tm()),t.viewProps.bindClassModifiers(this.element),eS(t.props,"selected",e=>{e?this.element.classList.add(tm(void 0,"sel")):this.element.classList.remove(tm(void 0,"sel"))});let i=e.createElement("button");i.classList.add(tm("b")),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;let n=e.createElement("div");n.classList.add(tm("t")),eJ(t.props.value("title"),n),this.buttonElement.appendChild(n),this.titleElement=n}}class tg{constructor(e,t){this.emitter=new w,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new tb(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class t_ extends e6{constructor(e,t){let i=new tv(e,{viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:new te({blade:t.blade,element:i.containerElement,viewProps:t.viewProps}),view:i})),this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new tg(e,{props:t.itemProps,viewProps:tu.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.props=t.props,eS(this.props,"selected",e=>{this.itemController.props.set("selected",e),this.viewProps.set("hidden",!e)})}get itemController(){return this.ic_}importState(e){return eg(e,e=>super.importState(e),e=>({selected:e.required.boolean,title:e.required.string}),e=>(this.ic_.props.set("selected",e.selected),this.ic_.props.set("title",e.title),!0))}exportState(){return e_(()=>super.exportState(),{selected:this.ic_.props.get("selected"),title:this.ic_.props.get("title")})}onItemClick_(){this.props.set("selected",!0)}}class tw extends e5{constructor(e,t){super(e,t),this.emitter_=new w,this.onSelect_=this.onSelect_.bind(this),this.pool_=t,this.rackApi_.on("change",e=>{this.emitter_.emit("change",e)}),this.controller.tab.selectedIndex.emitter.on("change",this.onSelect_)}get pages(){return this.rackApi_.children}addPage(e){let t=new t_(this.controller.view.element.ownerDocument,{blade:tt(),itemProps:P.fromObject({selected:!1,title:e.title}),props:P.fromObject({selected:!1}),viewProps:tu.create()}),i=this.pool_.createApi(t);return this.rackApi_.add(i,e.index)}removePage(e){this.rackApi_.remove(this.rackApi_.children[e])}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)},{key:t}),this}off(e,t){return this.emitter_.off(e,t),this}onSelect_(e){this.emitter_.emit("select",new eh(this,e.rawValue))}}class tf extends e5{get title(){var e;return null!==(e=this.controller.itemController.props.get("title"))&&void 0!==e?e:""}set title(e){this.controller.itemController.props.set("title",e)}get selected(){return this.controller.props.get("selected")}set selected(e){this.controller.props.set("selected",e)}get children(){return this.rackApi_.children}addButton(e){return this.rackApi_.addButton(e)}addFolder(e){return this.rackApi_.addFolder(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addBinding(e,t,i){return this.rackApi_.addBinding(e,t,i)}addBlade(e){return this.rackApi_.addBlade(e)}}class ty{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=C(!0),this.selectedIndex=C(-1),this.items_=[]}add(e,t){let i=null!=t?t:this.items_.length;this.items_.splice(i,0,e),e.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(e){let t=this.items_.indexOf(e);t<0||(this.items_.splice(t,1),e.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(0===this.items_.length)return this.selectedIndex.rawValue=-1,void(this.empty.rawValue=!0);let e=this.items_.findIndex(e=>e.rawValue);e<0?(this.items_.forEach((e,t)=>{e.rawValue=0===t}),this.selectedIndex.rawValue=0):(this.items_.forEach((t,i)=>{t.rawValue=i===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){let t=this.items_.findIndex(t=>t===e.sender);this.items_.forEach((e,i)=>{e.rawValue=i===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const tx=ej("tab");class tC{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(tx(),to()),t.viewProps.bindClassModifiers(this.element),eD(t.empty,eG(this.element,tx(void 0,"nop")));let i=e.createElement("div");i.classList.add(tx("t")),this.element.appendChild(i),this.itemsElement=i;let n=e.createElement("div");n.classList.add(tx("i")),this.element.appendChild(n);let s=e.createElement("div");s.classList.add(tx("c")),this.element.appendChild(s),this.contentsElement=s}}class tP extends e6{constructor(e,t){let i=new ty,n=new tC(e,{empty:i.empty,viewProps:t.viewProps});super({blade:t.blade,rackController:new te({blade:t.blade,element:n.contentsElement,viewProps:t.viewProps}),view:n}),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);let s=this.rackController.rack;s.emitter.on("add",this.onRackAdd_),s.emitter.on("remove",this.onRackRemove_),this.tab=i}add(e,t){this.rackController.rack.add(e,t)}remove(e){this.rackController.rack.remove(this.rackController.rack.children[e])}onRackAdd_(e){if(!e.root)return;let t=e.bladeController;ek(this.view.itemsElement,t.itemController.view.element,e.index),t.itemController.viewProps.set("parent",this.viewProps),this.tab.add(t.props.value("selected"))}onRackRemove_(e){if(!e.root)return;let t=e.bladeController;eV(t.itemController.view.element),t.itemController.viewProps.set("parent",null),this.tab.remove(t.props.value("selected"))}}const tE=e1({id:"tab",type:"blade",accept(e){let t=eb(e,e=>({pages:e.required.array(e.required.object({title:e.required.string})),view:e.required.constant("tab")}));return t&&0!==t.pages.length?{params:t}:null},controller(e){let t=new tP(e.document,{blade:e.blade,viewProps:e.viewProps});return e.params.pages.forEach(i=>{let n=new t_(e.document,{blade:tt(),itemProps:P.fromObject({selected:!1,title:i.title}),props:P.fromObject({selected:!1}),viewProps:tu.create()});t.add(n)}),t},api:e=>e.controller instanceof tP?new tw(e.controller,e.pool):e.controller instanceof t_?new tf(e.controller,e.pool):null});class tk extends ed{get options(){return this.controller.valueController.props.get("options")}set options(e){this.controller.valueController.props.set("options",e)}}class tV{constructor(){this.disabled=!1,this.emitter=new w}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class tL{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new w,this.interval_=t,this.setTimer_()}get disabled(){return this.disabled_}set disabled(e){this.disabled_=e,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(null===this.timerId_)return;let e=this.doc_.defaultView;e&&e.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;let e=this.doc_.defaultView;e&&(this.timerId_=e.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class tM{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((e,t)=>t.constrain(e),e)}}function tD(e,t){if(e instanceof t)return e;if(e instanceof tM){let i=e.constraints.reduce((e,i)=>e||(i instanceof t?i:null),null);if(i)return i}return null}class tS{constructor(e){this.values=P.fromObject({options:e})}constrain(e){let t=this.values.get("options");return 0===t.length?e:t.filter(t=>t.value===e).length>0?e:t[0].value}}function tj(e){var t;return Array.isArray(e)?null===(t=eb({items:e},e=>({items:e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))})))||void 0===t?void 0:t.items:"object"==typeof e?em.required.raw(e).value:void 0}function tT(e){if(Array.isArray(e))return e;let t=[];return Object.keys(e).forEach(i=>{t.push({text:i,value:e[i]})}),t}function tI(e){return p(e)?null:new tS(tT(e))}const tO=ej("lst");class tA{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(tO()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("select");i.classList.add(tO("s")),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.selectElement=i;let n=e.createElement("div");n.classList.add(tO("m")),n.appendChild(eE(e,"dropdown")),this.element.appendChild(n),t.value.emitter.on("change",this.onValueChange_),this.value_=t.value,eS(this.props_,"options",t=>{eL(this.selectElement),t.forEach(t=>{let i=e.createElement("option");i.textContent=t.text,this.selectElement.appendChild(i)}),this.update_()})}update_(){let e=this.props_.get("options").map(e=>e.value);this.selectElement.selectedIndex=e.indexOf(this.value_.rawValue)}onValueChange_(){this.update_()}}class tR{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new tA(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){let t=e.currentTarget;this.value.rawValue=this.props.get("options")[t.selectedIndex].value}importProps(e){return eg(e,null,e=>({options:e.required.custom(tj)}),e=>(this.props.set("options",tT(e.options)),!0))}exportProps(){return e_(null,{options:this.props.get("options")})}}const tK=ej("pop");class tz{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(tK()),t.viewProps.bindClassModifiers(this.element),eD(t.shows,eG(this.element,tK(void 0,"v")))}}class tB{constructor(e,t){this.shows=C(!1),this.viewProps=t.viewProps,this.view=new tz(e,{shows:this.shows,viewProps:this.viewProps})}}const tN=ej("txt");class tF{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(tN()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);let i=e.createElement("input");i.classList.add(tN("i")),i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,t.value.emitter.on("change",this.onChange_),this.value_=t.value,this.refresh()}refresh(){let e=this.props_.get("formatter");this.inputElement.value=e(this.value_.rawValue)}onChange_(){this.refresh()}}class tU{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=t.parser,this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new tF(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){let t=e.currentTarget.value,i=this.parser_(t);p(i)||(this.value.rawValue=i),this.view.refresh()}}function tH(e){return"false"!==e&&!!e}function t$(e){return String(e)}const tq=J(0);function tG(e){return tq(e)+"%"}function tJ(e){return String(e)}function tY(e){return e}function tX({primary:e,secondary:t,forward:i,backward:n}){let s=!1;function r(e){s||(s=!0,e(),s=!1)}e.emitter.on("change",n=>{r(()=>{t.setRawValue(i(e.rawValue,t.rawValue),n.options)})}),t.emitter.on("change",s=>{r(()=>{e.setRawValue(n(e.rawValue,t.rawValue),s.options)}),r(()=>{t.setRawValue(i(e.rawValue,t.rawValue),s.options)})}),r(()=>{t.setRawValue(i(e.rawValue,t.rawValue),{forceEmit:!1,last:!0})})}function tZ(e,t){let i=e*(t.altKey?.1:1)*(t.shiftKey?10:1);return t.upKey?+i:t.downKey?-i:0}function tW(e){return{altKey:e.altKey,downKey:"ArrowDown"===e.key,shiftKey:e.shiftKey,upKey:"ArrowUp"===e.key}}function tQ(e){return{altKey:e.altKey,downKey:"ArrowLeft"===e.key,shiftKey:e.shiftKey,upKey:"ArrowRight"===e.key}}function t0(e){return"ArrowUp"===e||"ArrowDown"===e||"ArrowLeft"===e||"ArrowRight"===e}function t1(e,t){var i,n;let s=t.ownerDocument.defaultView,r=t.getBoundingClientRect();return{x:e.pageX-((null!==(i=s&&s.scrollX)&&void 0!==i?i:0)+r.left),y:e.pageY-((null!==(n=s&&s.scrollY)&&void 0!==n?n:0)+r.top)}}class t2{constructor(e){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=e,this.emitter=new w,e.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),e.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),e.addEventListener("touchend",this.onTouchEnd_),e.addEventListener("mousedown",this.onMouseDown_)}computePosition_(e){let t=this.elem_.getBoundingClientRect();return{bounds:{width:t.width,height:t.height},point:e?{x:e.x,y:e.y}:null}}onMouseDown_(e){var t;e.preventDefault(),null===(t=e.currentTarget)||void 0===t||t.focus();let i=this.elem_.ownerDocument;i.addEventListener("mousemove",this.onDocumentMouseMove_),i.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t1(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t1(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseUp_(e){let t=this.elem_.ownerDocument;t.removeEventListener("mousemove",this.onDocumentMouseMove_),t.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(t1(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();let t=e.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-i.left,y:t.clientY-i.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){let t=e.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-i.left,y:t.clientY-i.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;let i=null!==(t=e.targetTouches.item(0))&&void 0!==t?t:this.lastTouch_,n=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(i?{x:i.clientX-n.left,y:i.clientY-n.top}:void 0),sender:this,shiftKey:e.shiftKey})}}const t3=ej("txt");class t5{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(t3(),t3(void 0,"num")),t.arrayPosition&&this.element.classList.add(t3(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("input");i.classList.add(t3("i")),i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=t.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(t3()),this.inputElement.classList.add(t3("i"));let n=e.createElement("div");n.classList.add(t3("k")),this.element.appendChild(n),this.knobElement=n;let s=e.createElementNS(ey,"svg");s.classList.add(t3("g")),this.knobElement.appendChild(s);let r=e.createElementNS(ey,"path");r.classList.add(t3("gb")),s.appendChild(r),this.guideBodyElem_=r;let o=e.createElementNS(ey,"path");o.classList.add(t3("gh")),s.appendChild(o),this.guideHeadElem_=o;let l=e.createElement("div");l.classList.add(ej("tt")()),this.knobElement.appendChild(l),this.tooltipElem_=l,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(null===e.rawValue)return void this.element.classList.remove(t3(void 0,"drg"));this.element.classList.add(t3(void 0,"drg"));let t=e.rawValue/this.props_.get("pointerScale"),i=t+(t>0?-1:t<0?1:0),n=Z(-i,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",`M ${i+n},0 L${i},4 L${i+n},8 M ${t},-1 L${t},9`),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${t},4`);let s=this.props_.get("formatter");this.tooltipElem_.textContent=s(this.value.rawValue),this.tooltipElem_.style.left=`${t}px`}refresh(){let e=this.props_.get("formatter");this.inputElement.value=e(this.value.rawValue)}onChange_(){this.refresh()}}class t6{constructor(e,t){var i;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.parser_=t.parser,this.props=t.props,this.sliderProps_=null!==(i=t.sliderProps)&&void 0!==i?i:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=C(null),this.view=new t5(e,{arrayPosition:t.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);let n=new t2(this.view.knobElement);n.emitter.on("down",this.onPointerDown_),n.emitter.on("move",this.onPointerMove_),n.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var t,i;let n=null===(t=this.sliderProps_)||void 0===t?void 0:t.get("min"),s=null===(i=this.sliderProps_)||void 0===i?void 0:i.get("max"),r=e;return void 0!==n&&(r=Math.max(r,n)),void 0!==s&&(r=Math.min(r,s)),r}onInputChange_(e){let t=e.currentTarget.value,i=this.parser_(t);p(i)||(this.value.rawValue=this.constrainValue_(i)),this.view.refresh()}onInputKeyDown_(e){let t=tZ(this.props.get("keyScale"),tW(e));0!==t&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){0!==tZ(this.props.get("keyScale"),tW(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(e){if(!e.point)return null;let t=e.point.x-e.bounds.width/2;return this.constrainValue_(this.originRawValue_+t*this.props.get("pointerScale"))}onPointerMove_(e){let t=this.computeDraggingValue_(e.data);null!==t&&(this.value.setRawValue(t,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(e){let t=this.computeDraggingValue_(e.data);null!==t&&(this.value.setRawValue(t,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}const t4=ej("sld");class t9{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(t4()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(t4("t")),t.viewProps.bindTabIndex(i),this.element.appendChild(i),this.trackElement=i;let n=e.createElement("div");n.classList.add(t4("k")),this.trackElement.appendChild(n),this.knobElement=n,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){let e=Z(Y(this.value.rawValue,this.props_.get("min"),this.props_.get("max"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class t8{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.props=t.props,this.view=new t9(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new t2(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){e.point&&this.value.setRawValue(Y(Z(e.point.x,0,e.bounds.width),0,e.bounds.width,this.props.get("min"),this.props.get("max")),t)}onPointerDownOrMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){let t=tZ(this.props.get("keyScale"),tQ(e));0!==t&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){0!==tZ(this.props.get("keyScale"),tQ(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const t7=ej("sldtxt");class ie{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(t7());let i=e.createElement("div");i.classList.add(t7("s")),this.sliderView_=t.sliderView,i.appendChild(this.sliderView_.element),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(t7("t")),this.textView_=t.textView,n.appendChild(this.textView_.element),this.element.appendChild(n)}}class it{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new t8(e,{props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new t6(e,{parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new ie(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}importProps(e){return eg(e,null,e=>({max:e.required.number,min:e.required.number}),e=>{let t=this.sliderC_.props;return t.set("max",e.max),t.set("min",e.min),!0})}exportProps(){let e=this.sliderC_.props;return e_(null,{max:e.get("max"),min:e.get("min")})}}function ii(e){return{sliderProps:new P({keyScale:e.keyScale,max:e.max,min:e.min}),textProps:new P({formatter:C(e.formatter),keyScale:e.keyScale,pointerScale:C(e.pointerScale)})}}const is="cnt-usz";function ir(e){return en(e)}function io(e){if(u(e))return eb(e,ir)}function il(e,t){if(!e)return;let i=[],n=ee(e,t);n&&i.push(n);let s=et(e);return s&&i.push(s),new tM(i)}function ia(e){if("inline"===e||"popup"===e)return e}function ih(e,t){e.write(t)}const ip=ej("ckb");class id{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(ip()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("label");i.classList.add(ip("l")),this.element.appendChild(i),this.labelElement=i;let n=e.createElement("input");n.classList.add(ip("i")),n.type="checkbox",this.labelElement.appendChild(n),this.inputElement=n,t.viewProps.bindDisabled(this.inputElement);let s=e.createElement("div");s.classList.add(ip("w")),this.labelElement.appendChild(s);let r=eE(e,"check");s.appendChild(r),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class iu{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.onLabelMouseDown_=this.onLabelMouseDown_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new id(e,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.labelElement.addEventListener("mousedown",this.onLabelMouseDown_)}onInputChange_(e){let t=e.currentTarget;this.value.rawValue=t.checked,e.preventDefault(),e.stopPropagation()}onLabelMouseDown_(e){e.preventDefault()}}const ic=e1({id:"input-bool",type:"input",accept:(e,t)=>{if("boolean"!=typeof e)return null;let i=eb(t,e=>({options:e.optional.custom(tj),readonly:e.optional.constant(!1)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>tH,constraint:e=>(function(e){let t=[],i=tI(e.options);return i&&t.push(i),new tM(t)})(e.params),writer:e=>ih},controller:e=>{let t=e.document,i=e.value,n=e.constraint,s=n&&tD(n,tS);return s?new tR(t,{props:new P({options:s.values.value("options")}),value:i,viewProps:e.viewProps}):new iu(t,{value:i,viewProps:e.viewProps})},api:e=>"boolean"!=typeof e.controller.value.rawValue?null:e.controller.valueController instanceof tR?new tk(e.controller):null}),iv=ej("col");class im{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(iv()),t.foldable.bindExpandedClass(this.element,iv(void 0,"expanded")),eS(t.foldable,"completed",eG(this.element,iv(void 0,"cpl")));let i=e.createElement("div");i.classList.add(iv("h")),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(iv("s")),i.appendChild(n),this.swatchElement=n;let s=e.createElement("div");if(s.classList.add(iv("t")),i.appendChild(s),this.textElement=s,"inline"===t.pickerLayout){let t=e.createElement("div");t.classList.add(iv("p")),this.element.appendChild(t),this.pickerElement=t}else this.pickerElement=null}}function ib(e,t,i){let n,s,r;let o=(e%360+360)%360,l=Z(t/100,0,1),a=Z(i/100,0,1),h=a*l,p=h*(1-Math.abs(o/60%2-1)),d=a-h;return[n,s,r]=o>=0&&o<60?[h,p,0]:o>=60&&o<120?[p,h,0]:o>=120&&o<180?[0,h,p]:o>=180&&o<240?[0,p,h]:o>=240&&o<300?[p,0,h]:[h,0,p],[255*(n+d),255*(s+d),255*(r+d)]}function ig(e){return[e[0],e[1],e[2]]}function i_(e,t){return[e[0],e[1],e[2],t]}const iw={hsl:{hsl:(e,t,i)=>[e,t,i],hsv:function(e,t,i){let n=i+t*(100-Math.abs(2*i-100))/200;return[e,0!==n?t*(100-Math.abs(2*i-100))/n:0,i+t*(100-Math.abs(2*i-100))/200]},rgb:function(e,t,i){let n,s,r;let o=(e%360+360)%360,l=Z(t/100,0,1),a=Z(i/100,0,1),h=(1-Math.abs(2*a-1))*l,p=h*(1-Math.abs(o/60%2-1)),d=a-h/2;return[n,s,r]=o>=0&&o<60?[h,p,0]:o>=60&&o<120?[p,h,0]:o>=120&&o<180?[0,h,p]:o>=180&&o<240?[0,p,h]:o>=240&&o<300?[p,0,h]:[h,0,p],[255*(n+d),255*(s+d),255*(r+d)]}},hsv:{hsl:function(e,t,i){let n=100-Math.abs(i*(200-t)/100-100);return[e,0!==n?t*i/n:0,i*(200-t)/200]},hsv:(e,t,i)=>[e,t,i],rgb:ib},rgb:{hsl:function(e,t,i){let n=Z(e/255,0,1),s=Z(t/255,0,1),r=Z(i/255,0,1),o=Math.max(n,s,r),l=Math.min(n,s,r),a=o-l,h=0,p=0;return 0!==a&&(p=a/(1-Math.abs(o+l-1)),h=(h=n===o?(s-r)/a:s===o?2+(r-n)/a:4+(n-s)/a)/6+(h<0?1:0)),[360*h,100*p,(l+o)/2*100]},hsv:function(e,t,i){let n=Z(e/255,0,1),s=Z(t/255,0,1),r=Z(i/255,0,1),o=Math.max(n,s,r),l=o-Math.min(n,s,r);return[0===l?0:o===n?((s-r)/l%6+6)%6*60:o===s?60*((r-n)/l+2):60*((n-s)/l+4),100*(0===o?0:l/o),100*o]},rgb:(e,t,i)=>[e,t,i]}};function iy(e,t){return["float"===t?1:"rgb"===e?255:360,"float"===t?1:"rgb"===e?255:100,"float"===t?1:"rgb"===e?255:100]}function ix(e,t,i){var n,s,r;let o=iy(t,i);return["rgb"===t?Z(e[0],0,o[0]):(s=e[0])===(r=o[0])?r:(s%r+r)%r,Z(e[1],0,o[1]),Z(e[2],0,o[2]),Z(null!==(n=e[3])&&void 0!==n?n:1,0,1)]}function iC(e,t,i,n){let s=iy(t,i),r=iy(t,n);return e.map((e,t)=>e/s[t]*r[t])}function iP(e,t,i){let n=iC(e,t.mode,t.type,"int");return iC(iw[t.mode][i.mode](...n),i.mode,"int",i.type)}class iE{static black(){return new iE([0,0,0],"rgb")}constructor(e,t){this.type="int",this.mode=t,this.comps_=ix(e,t,this.type)}getComponents(e){return i_(iP(ig(this.comps_),{mode:this.mode,type:this.type},{mode:null!=e?e:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){let e=this.getComponents("rgb");return{r:e[0],g:e[1],b:e[2],a:e[3]}}}const ik=ej("colp");class iV{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(ik()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(ik("hsv"));let n=e.createElement("div");n.classList.add(ik("sv")),this.svPaletteView_=t.svPaletteView,n.appendChild(this.svPaletteView_.element),i.appendChild(n);let s=e.createElement("div");s.classList.add(ik("h")),this.hPaletteView_=t.hPaletteView,s.appendChild(this.hPaletteView_.element),i.appendChild(s),this.element.appendChild(i);let r=e.createElement("div");if(r.classList.add(ik("rgb")),this.textsView_=t.textsView,r.appendChild(this.textsView_.element),this.element.appendChild(r),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};let i=e.createElement("div");i.classList.add(ik("a"));let n=e.createElement("div");n.classList.add(ik("ap")),n.appendChild(this.alphaViews_.palette.element),i.appendChild(n);let s=e.createElement("div");s.classList.add(ik("at")),s.appendChild(this.alphaViews_.text.element),i.appendChild(s),this.element.appendChild(i)}}get allFocusableElements(){let e=[this.svPaletteView_.element,this.hPaletteView_.element,this.textsView_.modeSelectElement,...this.textsView_.inputViews.map(e=>e.inputElement)];return this.alphaViews_&&e.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),e}}function iL(e){return"int"===e?"int":"float"===e?"float":void 0}function iM(e){return eb(e,e=>({color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(iL)}),expanded:e.optional.boolean,picker:e.optional.custom(ia),readonly:e.optional.constant(!1)}))}function iD(e){return e?.1:1}function iS(e){var t;return null===(t=e.color)||void 0===t?void 0:t.type}class ij{constructor(e,t){this.type="float",this.mode=t,this.comps_=ix(e,t,this.type)}getComponents(e){return i_(iP(ig(this.comps_),{mode:this.mode,type:this.type},{mode:null!=e?e:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){let e=this.getComponents("rgb");return{r:e[0],g:e[1],b:e[2],a:e[3]}}}const iT={int:(e,t)=>new iE(e,t),float:(e,t)=>new ij(e,t)};function iI(e,t){if(e.type===t)return e;if("int"===e.type&&"float"===t)return function(e){let t=e.getComponents(),i=iy(e.mode,"int");return new ij([Y(t[0],0,i[0],0,1),Y(t[1],0,i[1],0,1),Y(t[2],0,i[2],0,1),t[3]],e.mode)}(e);if("float"===e.type&&"int"===t)return function(e){let t=e.getComponents(),i=iy(e.mode,"int");return new iE([Math.round(Y(t[0],0,1,0,i[0])),Math.round(Y(t[1],0,1,0,i[1])),Math.round(Y(t[2],0,1,0,i[2])),t[3]],e.mode)}(e);throw g.shouldNeverHappen()}function iO(e,t){let i=e.match(/^(.+)%$/);return i?Math.min(.01*parseFloat(i[1])*t,t):Math.min(parseFloat(e),t)}const iA={deg:e=>e,grad:e=>360*e/400,rad:e=>360*e/(2*Math.PI),turn:e=>360*e};function iR(e){let t=e.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!t)return parseFloat(e);let i=parseFloat(t[1]);return iA[t[2]](i)}function iK(e){let t=e.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[iO(t[1],255),iO(t[2],255),iO(t[3],255)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function iz(e){let t=iK(e);return t?new iE(t,"rgb"):null}function iB(e){let t=e.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[iO(t[1],255),iO(t[2],255),iO(t[3],255),iO(t[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function iN(e){let t=iB(e);return t?new iE(t,"rgb"):null}function iF(e){let t=e.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[iR(t[1]),iO(t[2],100),iO(t[3],100)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function iU(e){let t=iF(e);return t?new iE(t,"hsl"):null}function iH(e){let t=e.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[iR(t[1]),iO(t[2],100),iO(t[3],100),iO(t[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function i$(e){let t=iH(e);return t?new iE(t,"hsl"):null}function iq(e){let t=e.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(t)return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)];let i=e.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)]:null}function iG(e){let t=iq(e);return t?new iE(t,"rgb"):null}function iJ(e){let t=e.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(t)return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16),Y(parseInt(t[4]+t[4],16),0,255,0,1)];let i=e.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16),Y(parseInt(i[4],16),0,255,0,1)]:null}function iY(e){let t=iJ(e);return t?new iE(t,"rgb"):null}function iX(e){let t=e.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!t)return null;let i=[parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function iZ(e){return t=>{let i=iX(t);return i?iT[e](i,"rgb"):null}}function iW(e){let t=e.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!t)return null;let i=[parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3]),parseFloat(t[4])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function iQ(e){return t=>{let i=iW(t);return i?iT[e](i,"rgb"):null}}const i0=[{parser:iq,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:iJ,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:iK,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:iB,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:iF,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:iH,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:iX,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:iW,result:{alpha:!0,mode:"rgb",notation:"object"}}];function i1(e){let t=[iG,iY,iz,iN,iU,i$];"int"===e&&t.push(iZ("int"),iQ("int")),"float"===e&&t.push(iZ("float"),iQ("float"));let i=e=>t.reduce((t,i)=>null!==t?t:i(e),null);return t=>{let n=i(t);return n?iI(n,e):null}}function i2(e){let t=i1("int");if("string"!=typeof e)return iE.black();let i=t(e);return null!=i?i:iE.black()}function i3(e){let t=Z(Math.floor(e),0,255).toString(16);return 1===t.length?`0${t}`:t}function i5(e,t="#"){return`${t}${ig(e.getComponents("rgb")).map(i3).join("")}`}function i6(e,t="#"){let i=e.getComponents("rgb");return`${t}${[i[0],i[1],i[2],255*i[3]].map(i3).join("")}`}function i4(e){let t=J(0);return`rgb(${ig(iI(e,"int").getComponents("rgb")).map(e=>t(e)).join(", ")})`}function i9(e){let t=J(2),i=J(0);return`rgba(${iI(e,"int").getComponents("rgb").map((e,n)=>(3===n?t:i)(e)).join(", ")})`}function i8(e,t){let i=J("float"===t?2:0),n=["r","g","b"];return`{${ig(iI(e,t).getComponents("rgb")).map((e,t)=>`${n[t]}: ${i(e)}`).join(", ")}}`}function i7(e,t){let i=J(2),n=J("float"===t?2:0),s=["r","g","b","a"];return`{${iI(e,t).getComponents("rgb").map((e,t)=>`${s[t]}: ${(3===t?i:n)(e)}`).join(", ")}}`}const ne=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:i5},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:i6},{format:{alpha:!1,mode:"rgb",notation:"func",type:"int"},stringifier:i4},{format:{alpha:!0,mode:"rgb",notation:"func",type:"int"},stringifier:i9},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:function(e){let t=[J(0),tG,tG];return`hsl(${ig(iI(e,"int").getComponents("hsl")).map((e,i)=>t[i](e)).join(", ")})`}},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:function(e){let t=[J(0),tG,tG,J(2)];return`hsla(${iI(e,"int").getComponents("hsl").map((e,i)=>t[i](e)).join(", ")})`}},...["int","float"].reduce((e,t)=>[...e,{format:{alpha:!1,mode:"rgb",notation:"object",type:t},stringifier:e=>i8(e,t)},{format:{alpha:!0,mode:"rgb",notation:"object",type:t},stringifier:e=>i7(e,t)}],[])];function nt(e){return ne.reduce((t,i)=>{var n;return t||((n=i.format).alpha===e.alpha&&n.mode===e.mode&&n.notation===e.notation&&n.type===e.type?i.stringifier:null)},null)}const ni=ej("apl");class nn{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(ni()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);let i=e.createElement("div");i.classList.add(ni("b")),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(ni("c")),i.appendChild(n),this.colorElem_=n;let s=e.createElement("div");s.classList.add(ni("m")),this.element.appendChild(s),this.markerElem_=s;let r=e.createElement("div");r.classList.add(ni("p")),this.markerElem_.appendChild(r),this.previewElem_=r,this.update_()}update_(){let e=this.value.rawValue,t=e.getComponents("rgb"),i=new iE([t[0],t[1],t[2],0],"rgb"),n=new iE([t[0],t[1],t[2],255],"rgb"),s=["to right",i9(i),i9(n)];this.colorElem_.style.background=`linear-gradient(${s.join(",")})`,this.previewElem_.style.backgroundColor=i9(e);let r=Y(t[3],0,1,0,100);this.markerElem_.style.left=`${r}%`}onValueChange_(){this.update_()}}class ns{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new nn(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new t2(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;let i=e.point.x/e.bounds.width,[n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new iE([n,s,r,i],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){let t=tZ(iD(!0),tQ(e));if(0===t)return;let[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new iE([i,n,s,r+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){0!==tZ(iD(!0),tQ(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const nr=ej("coltxt");class no{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(nr()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(nr("m")),this.modeElem_=function(e){let t=e.createElement("select");return t.appendChild([{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"},{text:"HEX",value:"hex"}].reduce((t,i)=>{let n=e.createElement("option");return n.textContent=i.text,n.value=i.value,t.appendChild(n),t},e.createDocumentFragment())),t}(e),this.modeElem_.classList.add(nr("ms")),i.appendChild(this.modeSelectElement),t.viewProps.bindDisabled(this.modeElem_);let n=e.createElement("div");n.classList.add(nr("mm")),n.appendChild(eE(e,"dropdown")),i.appendChild(n),this.element.appendChild(i);let s=e.createElement("div");s.classList.add(nr("w")),this.element.appendChild(s),this.inputsElem_=s,this.inputViews_=t.inputViews,this.applyInputViews_(),eD(t.mode,e=>{this.modeElem_.value=e})}get modeSelectElement(){return this.modeElem_}get inputViews(){return this.inputViews_}set inputViews(e){this.inputViews_=e,this.applyInputViews_()}applyInputViews_(){eL(this.inputsElem_);let e=this.element.ownerDocument;this.inputViews_.forEach(t=>{let i=e.createElement("div");i.classList.add(nr("c")),i.appendChild(t.element),this.inputsElem_.appendChild(i)})}}class nl{constructor(e,t){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=t.colorType,this.value=t.value,this.viewProps=t.viewProps,this.colorMode=C(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(e),this.view=new no(e,{mode:this.colorMode,inputViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view],viewProps:this.viewProps}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(e){let t=this.colorMode.rawValue;return"hex"!==t?function(e,t){let i={colorMode:t.colorMode,colorType:t.colorType,parser:H,viewProps:t.viewProps};return[0,1,2].map(n=>{let s=new t6(e,{arrayPosition:0===n?"fst":2===n?"lst":"mid",parser:i.parser,props:P.fromObject({formatter:J("float"===i.colorType?2:0),keyScale:iD(!1),pointerScale:"float"===i.colorType?.01:1}),value:C(0,{constraint:new E({min:0,max:iy(i.colorMode,i.colorType)[n]})}),viewProps:i.viewProps});return tX({primary:t.value,secondary:s.value,forward:e=>iI(e,t.colorType).getComponents(t.colorMode)[n],backward(e,i){var s;let r=t.colorMode,o=iI(e,t.colorType).getComponents(r);return o[n]=i,iI((s=i_(ig(o),o[3]),iT[t.colorType](s,r)),"int")}}),s})}(e,{colorMode:t,colorType:this.colorType_,value:this.value,viewProps:this.viewProps}):function(e,t){let i=new tU(e,{parser:i1("int"),props:P.fromObject({formatter:i5}),value:C(iE.black()),viewProps:t.viewProps});return tX({primary:t.value,secondary:i.value,forward:e=>new iE(ig(e.getComponents()),e.mode),backward:(e,t)=>new iE(i_(ig(t.getComponents(e.mode)),e.getComponents()[3]),e.mode)}),[i]}(e,{value:this.value,viewProps:this.viewProps})}onModeSelectChange_(e){let t=e.currentTarget;this.colorMode.rawValue=t.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.inputViews=this.ccs_.map(e=>e.view)}}const na=ej("hpl");class nh{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(na()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);let i=e.createElement("div");i.classList.add(na("c")),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(na("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){let[e]=this.value.rawValue.getComponents("hsv");this.markerElem_.style.backgroundColor=i4(new iE([e,100,100],"hsv"));let t=Y(e,0,360,0,100);this.markerElem_.style.left=`${t}%`}onValueChange_(){this.update_()}}class np{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new nh(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new t2(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;let i=Y(Z(e.point.x,0,e.bounds.width),0,e.bounds.width,0,360),[,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new iE([i,n,s,r],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){let t=tZ(iD(!1),tQ(e));if(0===t)return;let[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new iE([i+t,n,s,r],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){0!==tZ(iD(!1),tQ(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const nd=ej("svp");class nu{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(nd()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);let i=e.createElement("canvas");i.height=64,i.width=64,i.classList.add(nd("c")),this.element.appendChild(i),this.canvasElement=i;let n=e.createElement("div");n.classList.add(nd("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){let e=function(e){let t=e.ownerDocument.defaultView;return t&&"document"in t?e.getContext("2d",{willReadFrequently:!0}):null}(this.canvasElement);if(!e)return;let t=this.value.rawValue.getComponents("hsv"),i=this.canvasElement.width,n=this.canvasElement.height,s=e.getImageData(0,0,i,n),r=s.data;for(let e=0;ee.getComponents()[3],backward:(e,t)=>{let i=e.getComponents();return i[3]=t,new iE(i,e.mode)}}),this.textsC_=new nl(e,{colorType:t.colorType,value:this.value,viewProps:this.viewProps}),this.view=new iV(e,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:t.supportsAlpha,svPaletteView:this.svPaletteC_.view,textsView:this.textsC_.view,viewProps:this.viewProps})}get textsController(){return this.textsC_}}const nm=ej("colsw");class nb{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.element=e.createElement("div"),this.element.classList.add(nm()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(nm("sw")),this.element.appendChild(i),this.swatchElem_=i;let n=e.createElement("button");n.classList.add(nm("b")),t.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n,this.update_()}update_(){let e=this.value.rawValue;this.swatchElem_.style.backgroundColor=i6(e)}onValueChange_(){this.update_()}}class ng{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new nb(e,{value:this.value,viewProps:this.viewProps})}}class n_{constructor(e,t){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=ti.create(t.expanded),this.swatchC_=new ng(e,{value:this.value,viewProps:this.viewProps});let i=this.swatchC_.view.buttonElement;i.addEventListener("blur",this.onButtonBlur_),i.addEventListener("click",this.onButtonClick_),this.textC_=new tU(e,{parser:t.parser,props:P.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new im(e,{foldable:this.foldable_,pickerLayout:t.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_="popup"===t.pickerLayout?new tB(e,{viewProps:this.viewProps}):null;let n=new nv(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});n.view.allFocusableElements.forEach(e=>{e.addEventListener("blur",this.onPopupChildBlur_),e.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=n,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(n.view.element),tX({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:e=>e,backward:(e,t)=>t})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),ts(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;let t=this.view.element,i=e.relatedTarget;i&&t.contains(i)||(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;let t=this.popC_.view.element,i=eM(e);i&&t.contains(i)||i&&i===this.swatchC_.view.buttonElement&&!eC(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?"Escape"===e.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===e.key&&this.swatchC_.view.buttonElement.focus()}}function nw(e){return ig(e.getComponents("rgb")).reduce((e,t)=>e<<8|255&Math.floor(t),0)}function nf(e){return e.getComponents("rgb").reduce((e,t,i)=>e<<8|255&Math.floor(3===i?255*t:t),0)>>>0}function ny(e){return"number"!=typeof e?iE.black():new iE([e>>16&255,e>>8&255,255&e],"rgb")}function nx(e){return"number"!=typeof e?iE.black():new iE([e>>24&255,e>>16&255,e>>8&255,Y(255&e,0,255,0,1)],"rgb")}function nC(e,t){return"object"==typeof e&&!p(e)&&t in e&&"number"==typeof e[t]}function nP(e){return nC(e,"r")&&nC(e,"g")&&nC(e,"b")}function nE(e){return nP(e)&&nC(e,"a")}function nk(e,t){if(e.mode!==t.mode||e.type!==t.type)return!1;let i=e.getComponents(),n=t.getComponents();for(let e=0;e{var i;if("number"!=typeof e||!("color"in t||"color"===t.view))return null;let n=iM(t);return n?{initialValue:e,params:Object.assign(Object.assign({},n),{supportsAlpha:!!(null===(i=null==t?void 0:t.color)||void 0===i?void 0:i.alpha)})}:null},binding:{reader:e=>e.params.supportsAlpha?nx:ny,equals:nk,writer:e=>(function(e){let t=e?nf:nw;return(e,i)=>{ih(e,t(i))}})(e.params.supportsAlpha)},controller:e=>{var t,i;return new n_(e.document,{colorType:"int",expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,formatter:e.params.supportsAlpha?e=>i6(e,"0x"):e=>i5(e,"0x"),parser:i1("int"),pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",supportsAlpha:e.params.supportsAlpha,value:e.value,viewProps:e.viewProps})}}),nM=e1({id:"input-color-object",type:"input",accept:(e,t)=>{var i;if(!nP(e))return null;let n=iM(t);return n?{initialValue:e,params:Object.assign(Object.assign({},n),{colorType:null!==(i=iS(t))&&void 0!==i?i:"int"})}:null},binding:{reader:e=>{var t;return t=e.params.colorType,e=>{let i=nP(e)?"int"===t?new iE(nV(e),"rgb"):"float"===t?new ij(nV(e),"rgb"):iI(iE.black(),"int"):iI(iE.black(),t);return iI(i,"int")}},equals:nk,writer:e=>{var t,i;return t=nE(e.initialValue),i=e.params.colorType,(e,n)=>{t?function(e,t,i){let n=iI(t,i).toRgbaObject();e.writeProperty("r",n.r),e.writeProperty("g",n.g),e.writeProperty("b",n.b),e.writeProperty("a",n.a)}(e,n,i):function(e,t,i){let n=iI(t,i).toRgbaObject();e.writeProperty("r",n.r),e.writeProperty("g",n.g),e.writeProperty("b",n.b)}(e,n,i)}}},controller:e=>{var t,i,n;let s=nE(e.initialValue);return new n_(e.document,{colorType:e.params.colorType,expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,formatter:(n=e.params.colorType,e=>s?i7(e,n):i8(e,n)),parser:i1("int"),pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",supportsAlpha:s,value:e.value,viewProps:e.viewProps})}}),nD=e1({id:"input-color-string",type:"input",accept:(e,t)=>{if("string"!=typeof e||"text"===t.view)return null;let i=function(e,t="int"){let i=i0.reduce((t,{parser:i,result:n})=>t||(i(e)?n:null),null);return i?"hex"===i.notation&&"float"!==t?Object.assign(Object.assign({},i),{type:"int"}):"func"===i.notation?Object.assign(Object.assign({},i),{type:t}):null:null}(e,iS(t));if(!i)return null;let n=nt(i);if(!n)return null;let s=iM(t);return s?{initialValue:e,params:Object.assign(Object.assign({},s),{format:i,stringifier:n})}:null},binding:{reader:()=>i2,equals:nk,writer:e=>{let t=function(e){let t=nt(e);return t?(e,i)=>{ih(e,t(i))}:null}(e.params.format);if(!t)throw g.notBindable();return t}},controller:e=>{var t,i;return new n_(e.document,{colorType:e.params.format.type,expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,formatter:e.params.stringifier,parser:i1("int"),pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",supportsAlpha:e.params.format.alpha,value:e.value,viewProps:e.viewProps})}});class nS{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){let t=this.asm_.toComponents(e).map((e,t)=>{var i,n;return null!==(n=null===(i=this.components[t])||void 0===i?void 0:i.constrain(e))&&void 0!==n?n:e});return this.asm_.fromComponents(t)}}const nj=ej("pndtxt");class nT{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(nj()),this.textViews.forEach(t=>{let i=e.createElement("div");i.classList.add(nj("a")),i.appendChild(t.element),this.element.appendChild(i)})}}class nI{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((i,n)=>new t6(e,{arrayPosition:0===n?"fst":n===t.axes.length-1?"lst":"mid",parser:t.parser,props:t.axes[n].textProps,value:C(0,{constraint:t.axes[n].constraint}),viewProps:t.viewProps})),this.acs_.forEach((e,i)=>{tX({primary:this.value,secondary:e.value,forward:e=>t.assembly.toComponents(e)[i],backward:(e,n)=>{let s=t.assembly.toComponents(e);return s[i]=n,t.assembly.fromComponents(s)}})}),this.view=new nT(e,{textViews:this.acs_.map(e=>e.view)})}get textControllers(){return this.acs_}}class nO extends ed{get max(){return this.controller.valueController.sliderController.props.get("max")}set max(e){this.controller.valueController.sliderController.props.set("max",e)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(e){this.controller.valueController.sliderController.props.set("min",e)}}const nA=e1({id:"input-number",type:"input",accept:(e,t)=>{if("number"!=typeof e)return null;let i=eb(t,e=>Object.assign(Object.assign({},en(e)),{options:e.optional.custom(tj),readonly:e.optional.constant(!1)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>q,constraint:e=>(function(e,t){let i=[],n=ee(e,t);n&&i.push(n);let s=et(e);s&&i.push(s);let r=tI(e.options);return r&&i.push(r),new tM(i)})(e.params,e.initialValue),writer:e=>ih},controller:e=>{let t=e.value,i=e.constraint,n=i&&tD(i,tS);if(n)return new tR(e.document,{props:new P({options:n.values.value("options")}),value:t,viewProps:e.viewProps});let s=ei(e.params,t.rawValue),r=i&&tD(i,E);return r?new it(e.document,Object.assign(Object.assign({},ii(Object.assign(Object.assign({},s),{keyScale:C(s.keyScale),max:r.values.value("max"),min:r.values.value("min")}))),{parser:H,value:t,viewProps:e.viewProps})):new t6(e.document,{parser:H,props:P.fromObject(s),value:t,viewProps:e.viewProps})},api:e=>"number"!=typeof e.controller.value.rawValue?null:e.controller.valueController instanceof it?new nO(e.controller):e.controller.valueController instanceof tR?new tk(e.controller):null});class nR{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(p(e))return!1;let t=e.x,i=e.y;return"number"==typeof t&&"number"==typeof i}static equals(e,t){return e.x===t.x&&e.y===t.y}toObject(){return{x:this.x,y:this.y}}}const nK={toComponents:e=>e.getComponents(),fromComponents:e=>new nR(...e)},nz=ej("p2d");class nB{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(nz()),t.viewProps.bindClassModifiers(this.element),eD(t.expanded,eG(this.element,nz(void 0,"expanded")));let i=e.createElement("div");i.classList.add(nz("h")),this.element.appendChild(i);let n=e.createElement("button");n.classList.add(nz("b")),n.appendChild(eE(e,"p2dpad")),t.viewProps.bindDisabled(n),i.appendChild(n),this.buttonElement=n;let s=e.createElement("div");if(s.classList.add(nz("t")),i.appendChild(s),this.textElement=s,"inline"===t.pickerLayout){let t=e.createElement("div");t.classList.add(nz("p")),this.element.appendChild(t),this.pickerElement=t}else this.pickerElement=null}}const nN=ej("p2dp");class nF{constructor(e,t){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onPropsChange_=this.onPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onPropsChange_),this.element=e.createElement("div"),this.element.classList.add(nN()),"popup"===t.layout&&this.element.classList.add(nN(void 0,"p")),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(nN("p")),t.viewProps.bindTabIndex(i),this.element.appendChild(i),this.padElement=i;let n=e.createElementNS(ey,"svg");n.classList.add(nN("g")),this.padElement.appendChild(n),this.svgElem_=n;let s=e.createElementNS(ey,"line");s.classList.add(nN("ax")),s.setAttributeNS(null,"x1","0"),s.setAttributeNS(null,"y1","50%"),s.setAttributeNS(null,"x2","100%"),s.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(s);let r=e.createElementNS(ey,"line");r.classList.add(nN("ax")),r.setAttributeNS(null,"x1","50%"),r.setAttributeNS(null,"y1","0"),r.setAttributeNS(null,"x2","50%"),r.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(r);let o=e.createElementNS(ey,"line");o.classList.add(nN("l")),o.setAttributeNS(null,"x1","50%"),o.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(o),this.lineElem_=o;let l=e.createElement("div");l.classList.add(nN("m")),this.padElement.appendChild(l),this.markerElem_=l,t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){let[e,t]=this.value.rawValue.getComponents(),i=this.props_.get("max"),n=Y(e,-i,+i,0,100),s=Y(t,-i,+i,0,100),r=this.props_.get("invertsY")?100-s:s;this.lineElem_.setAttributeNS(null,"x2",`${n}%`),this.lineElem_.setAttributeNS(null,"y2",`${r}%`),this.markerElem_.style.left=`${n}%`,this.markerElem_.style.top=`${r}%`}onValueChange_(){this.update_()}onPropsChange_(){this.update_()}onFoldableChange_(){this.update_()}}function nU(e,t,i){return[tZ(t[0],tQ(e)),tZ(t[1],tW(e))*(i?1:-1)]}class nH{constructor(e,t){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new nF(e,{layout:t.layout,props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new t2(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;let i=this.props.get("max"),n=Y(e.point.x,0,e.bounds.width,-i,+i),s=Y(this.props.get("invertsY")?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-i,+i);this.value.setRawValue(new nR(n,s),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onPadKeyDown_(e){t0(e.key)&&e.preventDefault();let[t,i]=nU(e,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===t&&0===i||this.value.setRawValue(new nR(this.value.rawValue.x+t,this.value.rawValue.y+i),{forceEmit:!1,last:!1})}onPadKeyUp_(e){let[t,i]=nU(e,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===t&&0===i||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class n${constructor(e,t){var i,n;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=ti.create(t.expanded),this.popC_="popup"===t.pickerLayout?new tB(e,{viewProps:this.viewProps}):null;let s=new nH(e,{layout:t.pickerLayout,props:new P({invertsY:C(t.invertsY),max:C(t.max),xKeyScale:t.axes[0].textProps.value("keyScale"),yKeyScale:t.axes[1].textProps.value("keyScale")}),value:this.value,viewProps:this.viewProps});s.view.allFocusableElements.forEach(e=>{e.addEventListener("blur",this.onPopupChildBlur_),e.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=s,this.textC_=new nI(e,{assembly:nK,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new nB(e,{expanded:this.foldable_.value("expanded"),pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),null===(i=this.view.buttonElement)||void 0===i||i.addEventListener("blur",this.onPadButtonBlur_),null===(n=this.view.buttonElement)||void 0===n||n.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),tX({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:e=>e,backward:(e,t)=>t})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),ts(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onPadButtonBlur_(e){if(!this.popC_)return;let t=this.view.element,i=e.relatedTarget;i&&t.contains(i)||(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;let t=this.popC_.view.element,i=eM(e);i&&t.contains(i)||i&&i===this.view.buttonElement&&!eC(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?"Escape"===e.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===e.key&&this.view.buttonElement.focus()}}function nq(e){return nR.isObject(e)?new nR(e.x,e.y):new nR}function nG(e,t){e.writeProperty("x",t.x),e.writeProperty("y",t.y)}function nJ(e,t){var i,n;return p(e.min)&&p(e.max)?Math.max(10*Math.abs(W(e)),10*Math.abs(t)):Math.max(Math.abs(null!==(i=e.min)&&void 0!==i?i:0),Math.abs(null!==(n=e.max)&&void 0!==n?n:0))}const nY=e1({id:"input-point2d",type:"input",accept:(e,t)=>{if(!nR.isObject(e))return null;let i=eb(t,e=>Object.assign(Object.assign({},ir(e)),{expanded:e.optional.boolean,picker:e.optional.custom(ia),readonly:e.optional.constant(!1),x:e.optional.custom(io),y:e.optional.object(Object.assign(Object.assign({},ir(e)),{inverted:e.optional.boolean}))}));return i?{initialValue:e,params:i}:null},binding:{reader:()=>nq,constraint:e=>{var t,i;return t=e.params,i=e.initialValue,new nS({assembly:nK,components:[il(Object.assign(Object.assign({},t),t.x),i.x),il(Object.assign(Object.assign({},t),t.y),i.y)]})},equals:nR.equals,writer:()=>nG},controller:e=>{var t,i,n,s,r,o;let l=e.document,a=e.value,h=e.constraint,p=[e.params.x,e.params.y];return new n$(l,{axes:a.rawValue.getComponents().map((t,i)=>{var n;return es({constraint:h.components[i],initialValue:t,params:v(e.params,null!==(n=p[i])&&void 0!==n?n:{})})}),expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,invertsY:function(e){if(!("y"in e))return!1;let t=e.y;return!!t&&"inverted"in t&&!!t.inverted}(e.params),max:(n=e.params,s=a.rawValue,Math.max(nJ(v(n,null!==(r=n.x)&&void 0!==r?r:{}),s.x),nJ(v(n,null!==(o=n.y)&&void 0!==o?o:{}),s.y))),parser:H,pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",value:a,viewProps:e.viewProps})}});class nX{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.z=i}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(p(e))return!1;let t=e.x,i=e.y,n=e.z;return"number"==typeof t&&"number"==typeof i&&"number"==typeof n}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z}toObject(){return{x:this.x,y:this.y,z:this.z}}}const nZ={toComponents:e=>e.getComponents(),fromComponents:e=>new nX(...e)};function nW(e){return nX.isObject(e)?new nX(e.x,e.y,e.z):new nX}function nQ(e,t){e.writeProperty("x",t.x),e.writeProperty("y",t.y),e.writeProperty("z",t.z)}const n0=e1({id:"input-point3d",type:"input",accept:(e,t)=>{if(!nX.isObject(e))return null;let i=eb(t,e=>Object.assign(Object.assign({},ir(e)),{readonly:e.optional.constant(!1),x:e.optional.custom(io),y:e.optional.custom(io),z:e.optional.custom(io)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>nW,constraint:e=>{var t,i;return t=e.params,i=e.initialValue,new nS({assembly:nZ,components:[il(Object.assign(Object.assign({},t),t.x),i.x),il(Object.assign(Object.assign({},t),t.y),i.y),il(Object.assign(Object.assign({},t),t.z),i.z)]})},equals:nX.equals,writer:e=>nQ},controller:e=>{let t=e.value,i=e.constraint,n=[e.params.x,e.params.y,e.params.z];return new nI(e.document,{assembly:nZ,axes:t.rawValue.getComponents().map((t,s)=>{var r;return es({constraint:i.components[s],initialValue:t,params:v(e.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:H,value:t,viewProps:e.viewProps})}});class n1{constructor(e=0,t=0,i=0,n=0){this.x=e,this.y=t,this.z=i,this.w=n}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(p(e))return!1;let t=e.x,i=e.y,n=e.z,s=e.w;return"number"==typeof t&&"number"==typeof i&&"number"==typeof n&&"number"==typeof s}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}}const n2={toComponents:e=>e.getComponents(),fromComponents:e=>new n1(...e)};function n3(e){return n1.isObject(e)?new n1(e.x,e.y,e.z,e.w):new n1}function n5(e,t){e.writeProperty("x",t.x),e.writeProperty("y",t.y),e.writeProperty("z",t.z),e.writeProperty("w",t.w)}const n6=e1({id:"input-point4d",type:"input",accept:(e,t)=>{if(!n1.isObject(e))return null;let i=eb(t,e=>Object.assign(Object.assign({},ir(e)),{readonly:e.optional.constant(!1),w:e.optional.custom(io),x:e.optional.custom(io),y:e.optional.custom(io),z:e.optional.custom(io)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>n3,constraint:e=>{var t,i;return t=e.params,i=e.initialValue,new nS({assembly:n2,components:[il(Object.assign(Object.assign({},t),t.x),i.x),il(Object.assign(Object.assign({},t),t.y),i.y),il(Object.assign(Object.assign({},t),t.z),i.z),il(Object.assign(Object.assign({},t),t.w),i.w)]})},equals:n1.equals,writer:e=>n5},controller:e=>{let t=e.value,i=e.constraint,n=[e.params.x,e.params.y,e.params.z,e.params.w];return new nI(e.document,{assembly:n2,axes:t.rawValue.getComponents().map((t,s)=>{var r;return es({constraint:i.components[s],initialValue:t,params:v(e.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:H,value:t,viewProps:e.viewProps})}}),n4=e1({id:"input-string",type:"input",accept:(e,t)=>{if("string"!=typeof e)return null;let i=eb(t,e=>({readonly:e.optional.constant(!1),options:e.optional.custom(tj)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>tJ,constraint:e=>(function(e){let t=[],i=tI(e.options);return i&&t.push(i),new tM(t)})(e.params),writer:e=>ih},controller:e=>{let t=e.document,i=e.value,n=e.constraint,s=n&&tD(n,tS);return s?new tR(t,{props:new P({options:s.values.value("options")}),value:i,viewProps:e.viewProps}):new tU(t,{parser:e=>e,props:P.fromObject({formatter:tY}),value:i,viewProps:e.viewProps})},api:e=>"string"!=typeof e.controller.value.rawValue?null:e.controller.valueController instanceof tR?new tk(e.controller):null}),n9={monitor:{defaultInterval:200,defaultRows:3}},n8=ej("mll");class n7{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(n8()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("textarea");i.classList.add(n8("i")),i.style.height=`calc(var(--${is}) * ${t.rows})`,i.readOnly=!0,t.viewProps.bindDisabled(i),this.element.appendChild(i),this.textareaElem_=i,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){let e=this.textareaElem_,t=e.scrollTop===e.scrollHeight-e.clientHeight,i=[];this.value.rawValue.forEach(e=>{void 0!==e&&i.push(this.formatter_(e))}),e.textContent=i.join("\n"),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class se{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new n7(e,{formatter:t.formatter,rows:t.rows,value:this.value,viewProps:this.viewProps})}}const st=ej("sgl");class si{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(st()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("input");i.classList.add(st("i")),i.readOnly=!0,i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){let e=this.value.rawValue,t=e[e.length-1];this.inputElement.value=void 0!==t?this.formatter_(t):""}onValueUpdate_(){this.update_()}}class sn{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new si(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}const ss=e1({id:"monitor-bool",type:"monitor",accept:(e,t)=>{if("boolean"!=typeof e)return null;let i=eb(t,e=>({readonly:e.required.constant(!0),rows:e.optional.number}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>tH},controller:e=>{var t;return 1===e.value.rawValue.length?new sn(e.document,{formatter:t$,value:e.value,viewProps:e.viewProps}):new se(e.document,{formatter:t$,rows:null!==(t=e.params.rows)&&void 0!==t?t:n9.monitor.defaultRows,value:e.value,viewProps:e.viewProps})}});class sr extends ed{get max(){return this.controller.valueController.props.get("max")}set max(e){this.controller.valueController.props.set("max",e)}get min(){return this.controller.valueController.props.get("min")}set min(e){this.controller.valueController.props.set("min",e)}}const so=ej("grl");class sl{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(so()),t.viewProps.bindClassModifiers(this.element),this.formatter_=t.formatter,this.props_=t.props,this.cursor_=t.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);let i=e.createElementNS(ey,"svg");i.classList.add(so("g")),i.style.height=`calc(var(--${is}) * ${t.rows})`,this.element.appendChild(i),this.svgElem_=i;let n=e.createElementNS(ey,"polyline");this.svgElem_.appendChild(n),this.lineElem_=n;let s=e.createElement("div");s.classList.add(so("t"),ej("tt")()),this.element.appendChild(s),this.tooltipElem_=s,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}get graphElement(){return this.svgElem_}update_(){let{clientWidth:e,clientHeight:t}=this.element,i=this.value.rawValue.length-1,n=this.props_.get("min"),s=this.props_.get("max"),r=[];this.value.rawValue.forEach((o,l)=>{if(void 0===o)return;let a=Y(l,0,i,0,e),h=Y(o,n,s,t,0);r.push([a,h].join(","))}),this.lineElem_.setAttributeNS(null,"points",r.join(" "));let o=this.tooltipElem_,l=this.value.rawValue[this.cursor_.rawValue];if(void 0===l)return void o.classList.remove(so("t","a"));let a=Y(this.cursor_.rawValue,0,i,0,e),h=Y(l,n,s,t,0);o.style.left=`${a}px`,o.style.top=`${h}px`,o.textContent=`${this.formatter_(l)}`,o.classList.contains(so("t","a"))||(o.classList.add(so("t","a"),so("t","in")),ex(o),o.classList.remove(so("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class sa{constructor(e,t){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.cursor_=C(-1),this.view=new sl(e,{cursor:this.cursor_,formatter:t.formatter,rows:t.rows,props:this.props,value:this.value,viewProps:this.viewProps}),eC(e)){let e=new t2(this.view.element);e.emitter.on("down",this.onGraphPointerDown_),e.emitter.on("move",this.onGraphPointerMove_),e.emitter.on("up",this.onGraphPointerUp_)}else this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_)}importProps(e){return eg(e,null,e=>({max:e.required.number,min:e.required.number}),e=>(this.props.set("max",e.max),this.props.set("min",e.min),!0))}exportProps(){return e_(null,{max:this.props.get("max"),min:this.props.get("min")})}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){let{clientWidth:t}=this.view.element;this.cursor_.rawValue=Math.floor(Y(e.offsetX,0,t,0,this.value.rawValue.length))}onGraphPointerDown_(e){this.onGraphPointerMove_(e)}onGraphPointerMove_(e){e.data.point?this.cursor_.rawValue=Math.floor(Y(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length)):this.cursor_.rawValue=-1}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function sh(e){return p(e.format)?J(2):e.format}function sp(e){return"graph"===e.view}const sd=e1({id:"monitor-number",type:"monitor",accept:(e,t)=>{if("number"!=typeof e)return null;let i=eb(t,e=>({format:e.optional.function,max:e.optional.number,min:e.optional.number,readonly:e.required.constant(!0),rows:e.optional.number,view:e.optional.string}));return i?{initialValue:e,params:i}:null},binding:{defaultBufferSize:e=>sp(e)?64:1,reader:e=>q},controller:e=>{var t,i,n,s;return sp(e.params)?new sa(e.document,{formatter:sh(e.params),rows:null!==(t=e.params.rows)&&void 0!==t?t:n9.monitor.defaultRows,props:P.fromObject({max:null!==(i=e.params.max)&&void 0!==i?i:100,min:null!==(n=e.params.min)&&void 0!==n?n:0}),value:e.value,viewProps:e.viewProps}):1===e.value.rawValue.length?new sn(e.document,{formatter:sh(e.params),value:e.value,viewProps:e.viewProps}):new se(e.document,{formatter:sh(e.params),rows:null!==(s=e.params.rows)&&void 0!==s?s:n9.monitor.defaultRows,value:e.value,viewProps:e.viewProps})},api:e=>e.controller.valueController instanceof sa?new sr(e.controller):null}),su=e1({id:"monitor-string",type:"monitor",accept:(e,t)=>{if("string"!=typeof e)return null;let i=eb(t,e=>({multiline:e.optional.boolean,readonly:e.required.constant(!0),rows:e.optional.number}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>tJ},controller:e=>{var t;let i=e.value;return i.rawValue.length>1||e.params.multiline?new se(e.document,{formatter:tY,rows:null!==(t=e.params.rows)&&void 0!==t?t:n9.monitor.defaultRows,value:i,viewProps:e.viewProps}):new sn(e.document,{formatter:tY,value:i,viewProps:e.viewProps})}});class sc{constructor(e){this.target=e.target,this.reader_=e.reader,this.writer_=e.writer}read(){return this.reader_(this.target.read())}write(e){this.writer_(this.target,e)}inject(e){this.write(this.reader_(e))}}class sv{constructor(e){this.target=e.target,this.reader_=e.reader}read(){return this.reader_(this.target.read())}}class sm{constructor(e){this.pluginsMap_={blades:[],inputs:[],monitors:[]},this.apiCache_=e}getAll(){return[...this.pluginsMap_.blades,...this.pluginsMap_.inputs,...this.pluginsMap_.monitors]}register(e,t){var i;if(!(i=t.core)||i.major!==e0.major)throw g.notCompatible(e,t.id);"blade"===t.type?this.pluginsMap_.blades.unshift(t):"input"===t.type?this.pluginsMap_.inputs.unshift(t):"monitor"===t.type&&this.pluginsMap_.monitors.unshift(t)}createInput_(e,t,i){return this.pluginsMap_.inputs.reduce((n,s)=>null!=n?n:function(e,t){var i;let n=e.accept(t.target.read(),t.params);if(p(n))return null;let s={target:t.target,initialValue:n.initialValue,params:n.params},r=eb(t.params,e=>({disabled:e.optional.boolean,hidden:e.optional.boolean,label:e.optional.string,tag:e.optional.string})),o=e.binding.reader(s),l=e.binding.constraint?e.binding.constraint(s):void 0,a=new sc({reader:o,target:t.target,writer:e.binding.writer(s)}),h=new eu(C(o(n.initialValue),{constraint:l,equals:e.binding.equals}),a),d=e.controller({constraint:l,document:t.document,initialValue:n.initialValue,params:n.params,value:h,viewProps:tu.create({disabled:null==r?void 0:r.disabled,hidden:null==r?void 0:r.hidden})});return new eF(t.document,{blade:tt(),props:P.fromObject({label:"label"in t.params?null!==(i=null==r?void 0:r.label)&&void 0!==i?i:null:t.target.key}),tag:null==r?void 0:r.tag,value:h,valueController:d})}(s,{document:e,target:t,params:i}),null)}createMonitor_(e,t,i){return this.pluginsMap_.monitors.reduce((n,s)=>null!=n?n:function(e,t){var i,n,s,r,o;let l=e.accept(t.target.read(),t.params);if(p(l))return null;let a={target:t.target,initialValue:l.initialValue,params:l.params},h=eb(t.params,e=>({bufferSize:e.optional.number,disabled:e.optional.boolean,hidden:e.optional.boolean,interval:e.optional.number,label:e.optional.string})),d=e.binding.reader(a),u=null!==(n=null!==(i=null==h?void 0:h.bufferSize)&&void 0!==i?i:e.binding.defaultBufferSize&&e.binding.defaultBufferSize(l.params))&&void 0!==n?n:1,c=new eH({binding:new sv({reader:d,target:t.target}),bufferSize:u,ticker:(r=t.document,0===(o=null==h?void 0:h.interval)?new tV:new tL(r,null!=o?o:n9.monitor.defaultInterval))}),v=e.controller({document:t.document,params:l.params,value:c,viewProps:tu.create({disabled:null==h?void 0:h.disabled,hidden:null==h?void 0:h.hidden})});return v.viewProps.bindDisabled(c.ticker),v.viewProps.handleDispose(()=>{c.ticker.dispose()}),new e$(t.document,{blade:tt(),props:P.fromObject({label:"label"in t.params?null!==(s=null==h?void 0:h.label)&&void 0!==s?s:null:t.target.key}),value:c,valueController:v})}(s,{document:e,params:i,target:t}),null)}createBinding(e,t,i){if(p(t.read()))throw new g({context:{key:t.key},type:"nomatchingcontroller"});let n=this.createInput_(e,t,i);if(n)return n;let s=this.createMonitor_(e,t,i);if(s)return s;throw new g({context:{key:t.key},type:"nomatchingcontroller"})}createBlade(e,t){let i=this.pluginsMap_.blades.reduce((i,n)=>null!=i?i:function(e,t){let i=e.accept(t.params);if(!i)return null;let n=eb(t.params,e=>({disabled:e.optional.boolean,hidden:e.optional.boolean}));return e.controller({blade:tt(),document:t.document,params:Object.assign(Object.assign({},i.params),{disabled:null==n?void 0:n.disabled,hidden:null==n?void 0:n.hidden}),viewProps:tu.create({disabled:null==n?void 0:n.disabled,hidden:null==n?void 0:n.hidden})})}(n,{document:e,params:t}),null);if(!i)throw new g({type:"nomatchingview",context:{params:t}});return i}createInputBindingApi_(e){let t=this.pluginsMap_.inputs.reduce((t,i)=>{var n,s;return t||(null!==(s=null===(n=i.api)||void 0===n?void 0:n.call(i,{controller:e}))&&void 0!==s?s:null)},null);return this.apiCache_.add(e,null!=t?t:new ed(e))}createMonitorBindingApi_(e){let t=this.pluginsMap_.monitors.reduce((t,i)=>{var n,s;return t||(null!==(s=null===(n=i.api)||void 0===n?void 0:n.call(i,{controller:e}))&&void 0!==s?s:null)},null);return this.apiCache_.add(e,null!=t?t:new ed(e))}createBindingApi(e){if(this.apiCache_.has(e))return this.apiCache_.get(e);if(ew(e)&&function(e){if(!("binding"in e))return!1;let t=e.binding;return m(t)&&"read"in t&&"write"in t}(e.value))return this.createInputBindingApi_(e);if(ew(e)&&function(e){if(!("binding"in e))return!1;let t=e.binding;return m(t)&&"read"in t&&!("write"in t)}(e.value))return this.createMonitorBindingApi_(e);throw g.shouldNeverHappen()}createApi(e){if(this.apiCache_.has(e))return this.apiCache_.get(e);if(ew(e)&&ef(e.value))return this.createBindingApi(e);let t=this.pluginsMap_.blades.reduce((t,i)=>null!=t?t:i.api({controller:e,pool:this}),null);if(!t)throw g.shouldNeverHappen();return this.apiCache_.add(e,t)}}const sb=new class{constructor(){this.map_=new Map}get(e){var t;return null!==(t=this.map_.get(e))&&void 0!==t?t:null}has(e){return this.map_.has(e)}add(e,t){return this.map_.set(e,t),e.viewProps.handleDispose(()=>{this.map_.delete(e)}),t}};class sg extends er{constructor(e){super(e),this.emitter_=new w,this.controller.value.emitter.on("change",e=>{this.emitter_.emit("change",new el(this,e.rawValue))})}get label(){return this.controller.labelController.props.get("label")}set label(e){this.controller.labelController.props.set("label",e)}get options(){return this.controller.valueController.props.get("options")}set options(e){this.controller.valueController.props.set("options",e)}get value(){return this.controller.value.rawValue}set value(e){this.controller.value.rawValue=e}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)},{key:t}),this}off(e,t){return this.emitter_.off(e,t),this}}class s_ extends er{}class sw extends er{constructor(e){super(e),this.emitter_=new w,this.controller.value.emitter.on("change",e=>{this.emitter_.emit("change",new el(this,e.rawValue))})}get label(){return this.controller.labelController.props.get("label")}set label(e){this.controller.labelController.props.set("label",e)}get max(){return this.controller.valueController.sliderController.props.get("max")}set max(e){this.controller.valueController.sliderController.props.set("max",e)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(e){this.controller.valueController.sliderController.props.set("min",e)}get value(){return this.controller.value.rawValue}set value(e){this.controller.value.rawValue=e}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)},{key:t}),this}off(e,t){return this.emitter_.off(e,t),this}}class sf extends er{constructor(e){super(e),this.emitter_=new w,this.controller.value.emitter.on("change",e=>{this.emitter_.emit("change",new el(this,e.rawValue))})}get label(){return this.controller.labelController.props.get("label")}set label(e){this.controller.labelController.props.set("label",e)}get formatter(){return this.controller.valueController.props.get("formatter")}set formatter(e){this.controller.valueController.props.set("formatter",e)}get value(){return this.controller.value.rawValue}set value(e){this.controller.value.rawValue=e}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)},{key:t}),this}off(e,t){return this.emitter_.off(e,t),this}}const sy={id:"list",type:"blade",core:e0,accept(e){let t=eb(e,e=>({options:e.required.custom(tj),value:e.required.raw,view:e.required.constant("list"),label:e.optional.string}));return t?{params:t}:null},controller(e){let t=new tS(tT(e.params.options)),i=C(e.params.value,{constraint:t}),n=new tR(e.document,{props:new P({options:t.values.value("options")}),value:i,viewProps:e.viewProps});return new ez(e.document,{blade:e.blade,props:P.fromObject({label:e.params.label}),value:i,valueController:n})},api:e=>e.controller instanceof ez&&e.controller.valueController instanceof tR?new sg(e.controller):null};class sx extends tr{constructor(e,t){super(e,t)}get element(){return this.controller.view.element}}class sC extends ta{constructor(e,t){super(e,{expanded:t.expanded,blade:t.blade,props:t.props,root:!0,viewProps:t.viewProps})}}const sP=ej("spr");class sE{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(sP()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("hr");i.classList.add(sP("r")),this.element.appendChild(i)}}class sk extends eK{constructor(e,t){super(Object.assign(Object.assign({},t),{view:new sE(e,{viewProps:t.viewProps})}))}}const sV={id:"separator",type:"blade",core:e0,accept(e){let t=eb(e,e=>({view:e.required.constant("separator")}));return t?{params:t}:null},controller:e=>new sk(e.document,{blade:e.blade,viewProps:e.viewProps}),api:e=>e.controller instanceof sk?new s_(e.controller):null},sL={id:"slider",type:"blade",core:e0,accept(e){let t=eb(e,e=>({max:e.required.number,min:e.required.number,view:e.required.constant("slider"),format:e.optional.function,label:e.optional.string,value:e.optional.number}));return t?{params:t}:null},controller(e){var t,i;let n=null!==(t=e.params.value)&&void 0!==t?t:0,s=new E({max:e.params.max,min:e.params.min}),r=C(n,{constraint:s}),o=new it(e.document,Object.assign(Object.assign({},ii({formatter:null!==(i=e.params.format)&&void 0!==i?i:G,keyScale:C(1),max:s.values.value("max"),min:s.values.value("min"),pointerScale:Q(e.params,n)})),{parser:H,value:r,viewProps:e.viewProps}));return new ez(e.document,{blade:e.blade,props:P.fromObject({label:e.params.label}),value:r,valueController:o})},api:e=>e.controller instanceof ez&&e.controller.valueController instanceof it?new sw(e.controller):null},sM={id:"text",type:"blade",core:e0,accept(e){let t=eb(e,e=>({parse:e.required.function,value:e.required.raw,view:e.required.constant("text"),format:e.optional.function,label:e.optional.string}));return t?{params:t}:null},controller(e){var t;let i=C(e.params.value),n=new tU(e.document,{parser:e.params.parse,props:P.fromObject({formatter:null!==(t=e.params.format)&&void 0!==t?t:e=>String(e)}),value:i,viewProps:e.viewProps});return new ez(e.document,{blade:e.blade,props:P.fromObject({label:e.params.label}),value:i,valueController:n})},api:e=>e.controller instanceof ez&&e.controller.valueController instanceof tU?new sf(e.controller):null};new eQ("4.0.3");var sD={};function sS(e){return null==e}function sj(e){return null!==e&&"object"==typeof e}function sT(e){return null!==e&&"object"==typeof e}function sI(e,t){if(e.length!==t.length)return!1;for(let i=0;i{let s=e[n],r=t[n];return sT(s)&&sT(r)?Object.assign(Object.assign({},i),{[n]:sO(s,r)}):Object.assign(Object.assign({},i),{[n]:n in t?r:s})},{})}t(sD,"ButtonCellApi",()=>a3),t(sD,"ButtonGridApi",()=>a6),t(sD,"ButtonGridController",()=>a4),t(sD,"CubicBezierApi",()=>a7),t(sD,"CubicBezier",()=>he),t(sD,"CubicBezierAssembly",()=>ht),t(sD,"CubicBezierView",()=>ho),t(sD,"CubicBezierPickerView",()=>ha),t(sD,"CubicBezierGraphView",()=>hd),t(sD,"CubicBezierPreviewView",()=>hc),t(sD,"CubicBezierGraphController",()=>hm),t(sD,"CubicBezierPickerController",()=>hb),t(sD,"CubicBezierController",()=>hg),t(sD,"FpsGraphBladeApi",()=>hw),t(sD,"Fpswatch",()=>hf),t(sD,"FpsView",()=>hx),t(sD,"FpsGraphController",()=>hC),t(sD,"Interval",()=>hk),t(sD,"IntervalAssembly",()=>hV),t(sD,"IntervalConstraint",()=>hL),t(sD,"RangeSliderTextView",()=>hD),t(sD,"RangeSliderView",()=>hj),t(sD,"RangeSliderController",()=>hT),t(sD,"RangeSliderTextController",()=>hI),t(sD,"RadioCellApi",()=>hK),t(sD,"TpRadioGridChangeEvent",()=>hz),t(sD,"RadioGridApi",()=>hB),t(sD,"RadioView",()=>hF),t(sD,"RadioController",()=>hU),t(sD,"RadioGridController",()=>hH),t(sD,"id",()=>hY),t(sD,"css",()=>hX),t(sD,"plugins",()=>hZ);const sA={alreadydisposed:()=>"View has been already disposed",invalidparams:e=>`Invalid parameters for '${e.name}'`,nomatchingcontroller:e=>`No matching controller for '${e.key}'`,nomatchingview:e=>`No matching view for '${JSON.stringify(e.params)}'`,notbindable:()=>"Value is not bindable",notcompatible:e=>`Not compatible with plugin '${e.id}'`,propertynotfound:e=>`Property '${e.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class sR{static alreadyDisposed(){return new sR({type:"alreadydisposed"})}static notBindable(){return new sR({type:"notbindable"})}static notCompatible(e,t){return new sR({type:"notcompatible",context:{id:`${e}.${t}`}})}static propertyNotFound(e){return new sR({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new sR({type:"shouldneverhappen"})}constructor(e){var t;this.message=null!==(t=sA[e.type](e.context))&&void 0!==t?t:"Unexpected error",this.name=this.constructor.name,this.stack=Error(this.message).stack,this.type=e.type}toString(){return this.message}}class sK{constructor(e,t){this.obj_=e,this.key=t}static isBindable(e){return null!==e&&("object"==typeof e||"function"==typeof e)}read(){return this.obj_[this.key]}write(e){this.obj_[this.key]=e}writeProperty(e,t){let i=this.read();if(!sK.isBindable(i))throw sR.notBindable();if(!(e in i))throw sR.propertyNotFound(e);i[e]=t}}class sz{constructor(){this.observers_={}}on(e,t){let i=this.observers_[e];return i||(i=this.observers_[e]=[]),i.push({handler:t}),this}off(e,t){let i=this.observers_[e];return i&&(this.observers_[e]=i.filter(e=>e.handler!==t)),this}emit(e,t){let i=this.observers_[e];i&&i.forEach(e=>{e.handler(t)})}}class sB{constructor(e,t){var i;this.constraint_=null==t?void 0:t.constraint,this.equals_=null!==(i=null==t?void 0:t.equals)&&void 0!==i?i:(e,t)=>e===t,this.emitter=new sz,this.rawValue_=e}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){let i=null!=t?t:{forceEmit:!1,last:!0},n=this.constraint_?this.constraint_.constrain(e):e,s=this.rawValue_;(!this.equals_(s,n)||i.forceEmit)&&(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=n,this.emitter.emit("change",{options:i,previousRawValue:s,rawValue:n,sender:this}))}}class sN{constructor(e){this.emitter=new sz,this.value_=e}get rawValue(){return this.value_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){let i=null!=t?t:{forceEmit:!1,last:!0},n=this.value_;(n!==e||i.forceEmit)&&(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:i,previousRawValue:n,rawValue:this.value_,sender:this}))}}class sF{constructor(e){this.emitter=new sz,this.onValueBeforeChange_=this.onValueBeforeChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.value_=e,this.value_.emitter.on("beforechange",this.onValueBeforeChange_),this.value_.emitter.on("change",this.onValueChange_)}get rawValue(){return this.value_.rawValue}onValueBeforeChange_(e){this.emitter.emit("beforechange",Object.assign(Object.assign({},e),{sender:this}))}onValueChange_(e){this.emitter.emit("change",Object.assign(Object.assign({},e),{sender:this}))}}function sU(e,t){let i=null==t?void 0:t.constraint,n=null==t?void 0:t.equals;return i||n?new sB(e,t):new sN(e)}class sH{constructor(e){for(let t in this.emitter=new sz,this.valMap_=e,this.valMap_)this.valMap_[t].emitter.on("change",()=>{this.emitter.emit("change",{key:t,sender:this})})}static createCore(e){return Object.keys(e).reduce((t,i)=>Object.assign(t,{[i]:sU(e[i])}),{})}static fromObject(e){return new sH(this.createCore(e))}get(e){return this.valMap_[e].rawValue}set(e,t){this.valMap_[e].rawValue=t}value(e){return this.valMap_[e]}}class s${constructor(e){this.values=sH.fromObject({max:e.max,min:e.min})}constrain(e){let t=this.values.get("max");return Math.min(Math.max(e,this.values.get("min")),t)}}class sq{constructor(e){this.values=sH.fromObject({max:e.max,min:e.min})}constrain(e){let t=this.values.get("max"),i=this.values.get("min"),n=e;return sS(i)||(n=Math.max(n,i)),sS(t)||(n=Math.min(n,t)),n}}class sG{constructor(e,t=0){this.step=e,this.origin=t}constrain(e){let t=this.origin%this.step;return t+Math.round((e-t)/this.step)*this.step}}class sJ{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const sY={"**":(e,t)=>Math.pow(e,t),"*":(e,t)=>e*t,"/":(e,t)=>e/t,"%":(e,t)=>e%t,"+":(e,t)=>e+t,"-":(e,t)=>e-t,"<<":(e,t)=>e<>":(e,t)=>e>>t,">>>":(e,t)=>e>>>t,"&":(e,t)=>e&t,"^":(e,t)=>e^t,"|":(e,t)=>e|t};class sX{constructor(e,t,i){this.left=t,this.operator=e,this.right=i}evaluate(){let e=sY[this.operator];if(!e)throw Error(`unexpected binary operator: '${this.operator}`);return e(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const sZ={"+":e=>e,"-":e=>-e,"~":e=>~e};class sW{constructor(e,t){this.operator=e,this.expression=t}evaluate(){let e=sZ[this.operator];if(!e)throw Error(`unexpected unary operator: '${this.operator}`);return e(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function sQ(e){return(t,i)=>{for(let n=0;n>>",">>"],["&"],["^"],["|"]].reduce((e,t)=>(i,n)=>{let s=e(i,n);if(!s)return null;n=s.cursor;let r=s.evaluable;for(;;){let s=function(e,t,i){i+=s0(t,i).length;let n=e.filter(e=>t.startsWith(e,i))[0];return n?(i+=n.length,{cursor:i+=s0(t,i).length,operator:n}):null}(t,i,n);if(!s)break;let o=e(i,n=s.cursor);if(!o)return null;n=o.cursor,r=new sX(s.operator,r,o.evaluable)}return r?{cursor:n,evaluable:r}:null},function e(t,i){var n,s;let r=null!==(s=function(e,t){let i=s4(e,t);return t+=i.length,""===i?null:{evaluable:new sJ(i),cursor:t}}(t,n=i))&&void 0!==s?s:function(e,t){let i=e.substr(t,1);if(t+=i.length,"("!==i)return null;let n=s8(e,t);if(!n)return null;t=n.cursor,t+=s0(e,t).length;let s=e.substr(t,1);return t+=s.length,")"!==s?null:{evaluable:n.evaluable,cursor:t}}(t,n);if(r)return r;let o=t.substr(i,1);if(i+=o.length,"+"!==o&&"-"!==o&&"~"!==o)return null;let l=e(t,i);return l?{cursor:i=l.cursor,evaluable:new sW(o,l.evaluable)}:null});function s8(e,t){return t+=s0(e,t).length,s9(e,t)}function s7(e){var t;let i=function(e){let t=s8(e,0);return t?t.cursor+s0(e,t.cursor).length!==e.length?null:t.evaluable:null}(e);return null!==(t=null==i?void 0:i.evaluate())&&void 0!==t?t:null}function re(e){if("number"==typeof e)return e;if("string"==typeof e){let t=s7(e);if(!sS(t))return t}return 0}function rt(e){return t=>t.toFixed(Math.max(Math.min(e,20),0))}function ri(e,t,i,n,s){return n+(e-t)/(i-t)*(s-n)}function rn(e){return String(e.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function rs(e,t,i){return Math.min(Math.max(e,t),i)}function rr(e){var t;return null!==(t=e.step)&&void 0!==t?t:1}function ro(e,t){return sS(e.step)?null:new sG(e.step,t)}function rl(e){return sS(e.max)||sS(e.min)?sS(e.max)&&sS(e.min)?null:new sq({max:e.max,min:e.min}):new s$({max:e.max,min:e.min})}function ra(e,t){var i,n,s;return{formatter:null!==(i=e.format)&&void 0!==i?i:rt(sS(e.step)?Math.max(rn(t),2):rn(e.step)),keyScale:null!==(n=e.keyScale)&&void 0!==n?n:rr(e),pointerScale:null!==(s=e.pointerScale)&&void 0!==s?s:function(e,t){var i;let n=Math.abs(null!==(i=e.step)&&void 0!==i?i:t);return 0===n?.1:Math.pow(10,Math.floor(Math.log10(n))-1)}(e,t)}}function rh(e){return{format:e.optional.function,keyScale:e.optional.number,max:e.optional.number,min:e.optional.number,pointerScale:e.optional.number,step:e.optional.number}}function rp(e){return{constraint:e.constraint,textProps:sH.fromObject(ra(e.params,e.initialValue))}}class rd{constructor(e){this.controller=e}get element(){return this.controller.view.element}get disabled(){return this.controller.viewProps.get("disabled")}set disabled(e){this.controller.viewProps.set("disabled",e)}get hidden(){return this.controller.viewProps.get("hidden")}set hidden(e){this.controller.viewProps.set("hidden",e)}dispose(){this.controller.viewProps.set("disposed",!0)}importState(e){return this.controller.importState(e)}exportState(){return this.controller.exportState()}}class ru{constructor(e){this.target=e}}class rc extends ru{constructor(e,t,i){super(e),this.value=t,this.last=null==i||i}}class rv extends ru{constructor(e,t){super(e),this.expanded=t}}class rm extends ru{constructor(e,t){super(e),this.index=t}}class rb extends rd{constructor(e){super(e),this.onValueChange_=this.onValueChange_.bind(this),this.emitter_=new sz,this.controller.value.emitter.on("change",this.onValueChange_)}get label(){return this.controller.labelController.props.get("label")}set label(e){this.controller.labelController.props.set("label",e)}get key(){return this.controller.value.binding.target.key}get tag(){return this.controller.tag}set tag(e){this.controller.tag=e}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)}),this}refresh(){this.controller.value.fetch()}onValueChange_(e){let t=this.controller.value;this.emitter_.emit("change",new rc(this,t.binding.target.read(),e.options.last))}}function rg(e){return t=>i=>{if(!t&&void 0===i)return{succeeded:!1,value:void 0};if(t&&void 0===i)return{succeeded:!0,value:void 0};let n=e(i);return void 0!==n?{succeeded:!0,value:n}:{succeeded:!1,value:void 0}}}function r_(e){return{custom:t=>rg(t)(e),boolean:rg(e=>"boolean"==typeof e?e:void 0)(e),number:rg(e=>"number"==typeof e?e:void 0)(e),string:rg(e=>"string"==typeof e?e:void 0)(e),function:rg(e=>"function"==typeof e?e:void 0)(e),constant:t=>rg(e=>e===t?t:void 0)(e),raw:rg(e=>e)(e),object:t=>rg(e=>{if(null!==e&&"object"==typeof e)return Object.keys(t).reduce((i,n)=>{if(void 0===i)return;let s=(0,t[n])(e[n]);return s.succeeded?Object.assign(Object.assign({},i),{[n]:s.value}):void 0},{})})(e),array:t=>rg(e=>{if(Array.isArray(e))return e.reduce((e,i)=>{if(void 0===e)return;let n=t(i);return n.succeeded&&void 0!==n.value?[...e,n.value]:void 0},[])})(e)}}const rw={optional:r_(!0),required:r_(!1)};function rf(e,t){let i=t(rw),n=rw.required.object(i)(e);return n.succeeded?n.value:void 0}function ry(e,t,i,n){if(t&&!t(e))return!1;let s=rf(e,i);return!!s&&n(s)}function rx(e,t){var i;return sO(null!==(i=null==e?void 0:e())&&void 0!==i?i:{},t)}function rC(e){return"value"in e}const rP="http://www.w3.org/2000/svg";function rE(e){e.offsetHeight}function rk(e){return void 0!==e.ontouchstart}const rV={check:'',dropdown:'',p2dpad:''};function rL(e,t){let i=e.createElementNS(rP,"svg");return i.innerHTML=rV[t],i}function rM(e,t,i){e.insertBefore(t,e.children[i])}function rD(e){e.parentElement&&e.parentElement.removeChild(e)}function rS(e){for(;e.children.length>0;)e.removeChild(e.children[0])}function rj(e){return e.relatedTarget?e.relatedTarget:"explicitOriginalTarget"in e?e.explicitOriginalTarget:null}function rT(e,t){e.emitter.on("change",e=>{t(e.rawValue)}),t(e.rawValue)}function rI(e,t,i){rT(e.value(t),i)}function rO(e){return(t,i)=>["tp","-",e,"v",t?`_${t}`:"",i?`-${i}`:""].join("")}const rA=rO("lbl");class rR{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(rA()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(rA("l")),rI(t.props,"label",t=>{sS(t)?this.element.classList.add(rA(void 0,"nol")):(this.element.classList.remove(rA(void 0,"nol")),function(e){for(;e.childNodes.length>0;)e.removeChild(e.childNodes[0])}(i),i.appendChild(function(e,t){let i=e.createDocumentFragment();return t.split("\n").map(t=>e.createTextNode(t)).forEach((t,n)=>{n>0&&i.appendChild(e.createElement("br")),i.appendChild(t)}),i}(e,t)))}),this.element.appendChild(i),this.labelElement=i;let n=e.createElement("div");n.classList.add(rA("v")),this.element.appendChild(n),this.valueElement=n}}class rK{constructor(e,t){this.props=t.props,this.valueController=t.valueController,this.viewProps=t.valueController.viewProps,this.view=new rR(e,{props:t.props,viewProps:this.viewProps}),this.view.valueElement.appendChild(this.valueController.view.element)}importProps(e){return ry(e,null,e=>({label:e.optional.string}),e=>(this.props.set("label",e.label),!0))}exportProps(){return rx(null,{label:this.props.get("label")})}}const rz=rO(""),rB={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class rN{constructor(e){this.parent_=null,this.blade=e.blade,this.view=e.view,this.viewProps=e.viewProps;let t=this.view.element;this.blade.value("positions").emitter.on("change",()=>{["veryfirst","first","last","verylast"].forEach(e=>{t.classList.remove(rz(void 0,rB[e]))}),this.blade.get("positions").forEach(e=>{t.classList.add(rz(void 0,rB[e]))})}),this.viewProps.handleDispose(()=>{rD(t)})}get parent(){return this.parent_}set parent(e){this.parent_=e,this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}importState(e){return ry(e,null,e=>({disabled:e.required.boolean,hidden:e.required.boolean}),e=>(this.viewProps.importState(e),!0))}exportState(){return rx(null,Object.assign({},this.viewProps.exportState()))}}class rF extends rN{constructor(e,t){if(t.value!==t.valueController.value)throw sR.shouldNeverHappen();let i=t.valueController.viewProps,n=new rK(e,{blade:t.blade,props:t.props,valueController:t.valueController});super(Object.assign(Object.assign({},t),{view:new rR(e,{props:t.props,viewProps:i}),viewProps:i})),this.labelController=n,this.value=t.value,this.valueController=t.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}importState(e){return ry(e,t=>{var i,n,s;return super.importState(t)&&this.labelController.importProps(t)&&(null===(s=null===(n=(i=this.valueController).importProps)||void 0===n?void 0:n.call(i,e))||void 0===s||s)},e=>({value:e.optional.raw}),e=>(e.value&&(this.value.rawValue=e.value),!0))}exportState(){var e,t,i;return rx(()=>super.exportState(),Object.assign(Object.assign({value:this.value.rawValue},this.labelController.exportProps()),null!==(i=null===(t=(e=this.valueController).exportProps)||void 0===t?void 0:t.call(e))&&void 0!==i?i:{}))}}function rU(e,t){for(;e.length{i(new ru(this))}),this}}function r$(e,t){return i=>{i?e.classList.add(t):e.classList.remove(t)}}function rq(e,t){rT(e,e=>{t.textContent=null!=e?e:""})}const rG=rO("btn");class rJ{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(rG()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("button");i.classList.add(rG("b")),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;let n=e.createElement("div");n.classList.add(rG("t")),rq(t.props.value("title"),n),this.buttonElement.appendChild(n)}}class rY{constructor(e,t){this.emitter=new sz,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new rJ(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}importProps(e){return ry(e,null,e=>({title:e.optional.string}),e=>(this.props.set("title",e.title),!0))}exportProps(){return rx(null,{title:this.props.get("title")})}onClick_(){this.emitter.emit("click",{sender:this})}}class rX extends rN{constructor(e,t){let i=new rY(e,{props:t.buttonProps,viewProps:t.viewProps}),n=new rK(e,{blade:t.blade,props:t.labelProps,valueController:i});super({blade:t.blade,view:n.view,viewProps:t.viewProps}),this.buttonController=i,this.labelController=n}importState(e){return ry(e,e=>super.importState(e)&&this.buttonController.importProps(e)&&this.labelController.importProps(e),()=>({}),()=>!0)}exportState(){return rx(()=>super.exportState(),Object.assign(Object.assign({},this.buttonController.exportProps()),this.labelController.exportProps()))}}const rZ=new class{constructor(e){let[t,i]=e.split("-"),n=t.split(".");this.major=parseInt(n[0],10),this.minor=parseInt(n[1],10),this.patch=parseInt(n[2],10),this.prerelease=null!=i?i:null}toString(){let e=[this.major,this.minor,this.patch].join(".");return null!==this.prerelease?[e,this.prerelease].join("-"):e}}("2.0.1");function rW(e){return Object.assign({core:rZ},e)}rW({id:"button",type:"blade",accept(e){let t=rf(e,e=>({title:e.required.string,view:e.required.constant("button"),label:e.optional.string}));return t?{params:t}:null},controller:e=>new rX(e.document,{blade:e.blade,buttonProps:sH.fromObject({title:e.params.title}),labelProps:sH.fromObject({label:e.params.label}),viewProps:e.viewProps}),api:e=>e.controller instanceof rX?new rH(e.controller):null});class rQ{constructor(e,t){this.onRackValueChange_=this.onRackValueChange_.bind(this),this.controller_=e,this.emitter_=new sz,this.pool_=t,this.controller_.rack.emitter.on("valuechange",this.onRackValueChange_)}get children(){return this.controller_.rack.children.map(e=>this.pool_.createApi(e))}addBinding(e,t,i){let n=null!=i?i:{},s=this.controller_.element.ownerDocument,r=this.pool_.createBinding(s,function(e,t){if(!sK.isBindable(e))throw sR.notBindable();return new sK(e,t)}(e,t),n),o=this.pool_.createBindingApi(r);return this.add(o,n.index)}addFolder(e){return this.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}addButton(e){return this.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}addTab(e){return this.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}add(e,t){let i=e.controller;return this.controller_.rack.add(i,t),e}remove(e){this.controller_.rack.remove(e.controller)}addBlade(e){let t=this.controller_.element.ownerDocument,i=this.pool_.createBlade(t,e),n=this.pool_.createApi(i);return this.add(n,e.index)}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)}),this}refresh(){this.children.forEach(e=>{sj(e)&&"refresh"in e&&"function"==typeof e.refresh&&e.refresh()})}onRackValueChange_(e){let t=e.bladeController,i=this.pool_.createApi(t),n=!function(e){if(!sj(e)||!("binding"in e))return!1;let t=e.binding;return!!sj(t)&&"target"in t}(t.value)?null:t.value.binding;this.emitter_.emit("change",new rc(i,n?n.target.read():t.value.rawValue,e.options.last))}}class r0 extends rd{constructor(e,t){super(e),this.rackApi_=new rQ(e.rackController,t)}refresh(){this.rackApi_.refresh()}}class r1 extends rN{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}importState(e){return ry(e,e=>super.importState(e),e=>({children:e.required.array(e.required.raw)}),e=>this.rackController.rack.children.every((t,i)=>t.importState(e.children[i])))}exportState(){return rx(()=>super.exportState(),{children:this.rackController.rack.children.map(e=>e.exportState())})}}function r2(e){return"rackController"in e}class r3{constructor(e){this.emitter=new sz,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=e}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(e){for(let t of this.allItems())if(e(t))return t;return null}includes(e){return this.cache_.has(e)}add(e,t){if(this.includes(e))throw sR.shouldNeverHappen();let i=void 0!==t?t:this.items_.length;this.items_.splice(i,0,e),this.cache_.add(e);let n=this.extract_(e);n&&(n.emitter.on("add",this.onSubListAdd_),n.emitter.on("remove",this.onSubListRemove_),n.allItems().forEach(e=>{this.cache_.add(e)})),this.emitter.emit("add",{index:i,item:e,root:this,target:this})}remove(e){let t=this.items_.indexOf(e);if(t<0)return;this.items_.splice(t,1),this.cache_.delete(e);let i=this.extract_(e);i&&(i.allItems().forEach(e=>{this.cache_.delete(e)}),i.emitter.off("add",this.onSubListAdd_),i.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:t,item:e,root:this,target:this})}onSubListAdd_(e){this.cache_.add(e.item),this.emitter.emit("add",{index:e.index,item:e.item,root:this,target:e.target})}onSubListRemove_(e){this.cache_.delete(e.item),this.emitter.emit("remove",{index:e.index,item:e.item,root:this,target:e.target})}}function r5(e){return r2(e)?e.rackController.rack.bcSet_:null}class r6{constructor(e){var t,i;this.emitter=new sz,this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onRackLayout_=this.onRackLayout_.bind(this),this.onRackValueChange_=this.onRackValueChange_.bind(this),this.blade_=null!==(t=e.blade)&&void 0!==t?t:null,null===(i=this.blade_)||void 0===i||i.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=e.viewProps,this.bcSet_=new r3(r5),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,t){var i;null===(i=e.parent)||void 0===i||i.remove(e),e.parent=this,this.bcSet_.add(e,t)}remove(e){e.parent=null,this.bcSet_.remove(e)}find(e){return this.bcSet_.allItems().filter(e)}onSetAdd_(e){this.updatePositions_();let t=e.target===e.root;if(this.emitter.emit("add",{bladeController:e.item,index:e.index,root:t,sender:this}),!t)return;let i=e.item;if(i.viewProps.emitter.on("change",this.onChildViewPropsChange_),i.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),i.viewProps.handleDispose(this.onChildDispose_),rC(i))i.value.emitter.on("change",this.onChildValueChange_);else if(r2(i)){let e=i.rackController.rack;if(e){let t=e.emitter;t.on("layout",this.onRackLayout_),t.on("valuechange",this.onRackValueChange_)}}}onSetRemove_(e){this.updatePositions_();let t=e.target===e.root;if(this.emitter.emit("remove",{bladeController:e.item,root:t,sender:this}),!t)return;let i=e.item;if(rC(i))i.value.emitter.off("change",this.onChildValueChange_);else if(r2(i)){let e=i.rackController.rack;if(e){let t=e.emitter;t.off("layout",this.onRackLayout_),t.off("valuechange",this.onRackValueChange_)}}}updatePositions_(){let e=this.bcSet_.items.filter(e=>!e.viewProps.get("hidden")),t=e[0],i=e[e.length-1];this.bcSet_.items.forEach(e=>{let n=[];e===t&&(n.push("first"),this.blade_&&!this.blade_.get("positions").includes("veryfirst")||n.push("veryfirst")),e===i&&(n.push("last"),this.blade_&&!this.blade_.get("positions").includes("verylast")||n.push("verylast")),e.blade.set("positions",n)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(e=>e.viewProps.get("disposed")).forEach(e=>{this.bcSet_.remove(e)})}onChildValueChange_(e){let t=function(e,t){for(let i=0;i{for(let e=this.rack.children.length-1;e>=0;e--)this.rack.children[e].viewProps.set("disposed",!0)})}onRackAdd_(e){e.root&&rM(this.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.root&&rD(e.bladeController.view.element)}}function r9(){return new sH({positions:sU([],{equals:sI})})}class r8 extends sH{constructor(e){super(e)}static create(e){return new r8(sH.createCore({completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null}))}get styleExpanded(){var e;return null!==(e=this.get("temporaryExpanded"))&&void 0!==e?e:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";let e=this.get("expandedHeight");return this.get("shouldFixHeight")&&!sS(e)?`${e}px`:"auto"}bindExpandedClass(e,t){let i=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};rI(this,"expanded",i),rI(this,"temporaryExpanded",i)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function r7(e,t){t.style.height=e.styleHeight}function oe(e,t){e.value("expanded").emitter.on("beforechange",()=>{if(e.set("completed",!1),sS(e.get("expandedHeight"))){let i;let n=(i=0,function(e,t){let i=e.style.transition;e.style.transition="none",t(),e.style.transition=i}(t,()=>{e.set("expandedHeight",null),e.set("temporaryExpanded",!0),rE(t),i=t.clientHeight,e.set("temporaryExpanded",null),rE(t)}),i);n>0&&e.set("expandedHeight",n)}e.set("shouldFixHeight",!0),rE(t)}),e.emitter.on("change",()=>{r7(e,t)}),r7(e,t),t.addEventListener("transitionend",t=>{"height"===t.propertyName&&e.cleanUpTransition()})}class ot extends r0{constructor(e,t){super(e,t),this.emitter_=new sz,this.controller.foldable.value("expanded").emitter.on("change",e=>{this.emitter_.emit("fold",new rv(this,e.sender.rawValue))}),this.rackApi_.on("change",e=>{this.emitter_.emit("change",e)})}get expanded(){return this.controller.foldable.get("expanded")}set expanded(e){this.controller.foldable.set("expanded",e)}get title(){return this.controller.props.get("title")}set title(e){this.controller.props.set("title",e)}get children(){return this.rackApi_.children}addBinding(e,t,i){return this.rackApi_.addBinding(e,t,i)}addFolder(e){return this.rackApi_.addFolder(e)}addButton(e){return this.rackApi_.addButton(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){return this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addBlade(e){return this.rackApi_.addBlade(e)}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)}),this}}const oi=rO("cnt");class on{constructor(e,t){var i;this.className_=rO(null!==(i=t.viewName)&&void 0!==i?i:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),oi()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),rI(this.foldable_,"completed",r$(this.element,this.className_(void 0,"cpl")));let n=e.createElement("button");n.classList.add(this.className_("b")),rI(t.props,"title",e=>{sS(e)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),t.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n;let s=e.createElement("div");s.classList.add(this.className_("i")),this.element.appendChild(s);let r=e.createElement("div");r.classList.add(this.className_("t")),rq(t.props.value("title"),r),this.buttonElement.appendChild(r),this.titleElement=r;let o=e.createElement("div");o.classList.add(this.className_("m")),this.buttonElement.appendChild(o);let l=e.createElement("div");l.classList.add(this.className_("c")),this.element.appendChild(l),this.containerElement=l}}class os extends r1{constructor(e,t){var i;let n=r8.create(null===(i=t.expanded)||void 0===i||i),s=new on(e,{foldable:n,props:t.props,viewName:t.root?"rot":void 0,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:new r4({blade:t.blade,element:s.containerElement,root:t.root,viewProps:t.viewProps}),view:s})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=t.props,this.foldable=n,oe(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}importState(e){return ry(e,e=>super.importState(e),e=>({expanded:e.required.boolean,title:e.optional.string}),e=>(this.foldable.set("expanded",e.expanded),this.props.set("title",e.title),!0))}exportState(){return rx(()=>super.exportState(),{expanded:this.foldable.get("expanded"),title:this.props.get("title")})}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}rW({id:"folder",type:"blade",accept(e){let t=rf(e,e=>({title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean}));return t?{params:t}:null},controller:e=>new os(e.document,{blade:e.blade,expanded:e.params.expanded,props:sH.fromObject({title:e.params.title}),viewProps:e.viewProps}),api:e=>e.controller instanceof os?new ot(e.controller,e.pool):null});const or=rO("");function oo(e,t){return r$(e,or(void 0,t))}class ol extends sH{constructor(e){var t,i;super(e),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=[new sF(i=sU(this.getGlobalDisabled_())),(e,t)=>{i.setRawValue(e,t)}],this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),null===(t=this.get("parent"))||void 0===t||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(e){var t,i,n;let s=null!=e?e:{};return new ol(sH.createCore({disabled:null!==(t=s.disabled)&&void 0!==t&&t,disposed:!1,hidden:null!==(i=s.hidden)&&void 0!==i&&i,parent:null!==(n=s.parent)&&void 0!==n?n:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(e){rT(this.globalDisabled_,oo(e,"disabled")),rI(this,"hidden",oo(e,"hidden"))}bindDisabled(e){rT(this.globalDisabled_,t=>{e.disabled=t})}bindTabIndex(e){rT(this.globalDisabled_,t=>{e.tabIndex=t?-1:0})}handleDispose(e){this.value("disposed").emitter.on("change",t=>{t&&e()})}importState(e){this.set("disabled",e.disabled),this.set("hidden",e.hidden)}exportState(){return{disabled:this.get("disabled"),hidden:this.get("hidden")}}getGlobalDisabled_(){let e=this.get("parent");return!!e&&e.globalDisabled.rawValue||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(e){var t;let i=e.previousRawValue;null==i||i.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),null===(t=this.get("parent"))||void 0===t||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}const oa=rO("tbp");class oh{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(oa()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(oa("c")),this.element.appendChild(i),this.containerElement=i}}const op=rO("tbi");class od{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(op()),t.viewProps.bindClassModifiers(this.element),rI(t.props,"selected",e=>{e?this.element.classList.add(op(void 0,"sel")):this.element.classList.remove(op(void 0,"sel"))});let i=e.createElement("button");i.classList.add(op("b")),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;let n=e.createElement("div");n.classList.add(op("t")),rq(t.props.value("title"),n),this.buttonElement.appendChild(n),this.titleElement=n}}class ou{constructor(e,t){this.emitter=new sz,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new od(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class oc extends r1{constructor(e,t){let i=new oh(e,{viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:new r4({blade:t.blade,element:i.containerElement,viewProps:t.viewProps}),view:i})),this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new ou(e,{props:t.itemProps,viewProps:ol.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.props=t.props,rI(this.props,"selected",e=>{this.itemController.props.set("selected",e),this.viewProps.set("hidden",!e)})}get itemController(){return this.ic_}importState(e){return ry(e,e=>super.importState(e),e=>({selected:e.required.boolean,title:e.required.string}),e=>(this.ic_.props.set("selected",e.selected),this.ic_.props.set("title",e.title),!0))}exportState(){return rx(()=>super.exportState(),{selected:this.ic_.props.get("selected"),title:this.ic_.props.get("title")})}onItemClick_(){this.props.set("selected",!0)}}class ov extends r0{constructor(e,t){super(e,t),this.emitter_=new sz,this.onSelect_=this.onSelect_.bind(this),this.pool_=t,this.rackApi_.on("change",e=>{this.emitter_.emit("change",e)}),this.controller.tab.selectedIndex.emitter.on("change",this.onSelect_)}get pages(){return this.rackApi_.children}addPage(e){let t=new oc(this.controller.view.element.ownerDocument,{blade:r9(),itemProps:sH.fromObject({selected:!1,title:e.title}),props:sH.fromObject({selected:!1}),viewProps:ol.create()}),i=this.pool_.createApi(t);return this.rackApi_.add(i,e.index)}removePage(e){this.rackApi_.remove(this.rackApi_.children[e])}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)}),this}onSelect_(e){this.emitter_.emit("select",new rm(this,e.rawValue))}}class om extends r0{get title(){var e;return null!==(e=this.controller.itemController.props.get("title"))&&void 0!==e?e:""}set title(e){this.controller.itemController.props.set("title",e)}get selected(){return this.controller.props.get("selected")}set selected(e){this.controller.props.set("selected",e)}get children(){return this.rackApi_.children}addButton(e){return this.rackApi_.addButton(e)}addFolder(e){return this.rackApi_.addFolder(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addBinding(e,t,i){return this.rackApi_.addBinding(e,t,i)}addBlade(e){return this.rackApi_.addBlade(e)}}class ob{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=sU(!0),this.selectedIndex=sU(-1),this.items_=[]}add(e,t){let i=null!=t?t:this.items_.length;this.items_.splice(i,0,e),e.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(e){let t=this.items_.indexOf(e);t<0||(this.items_.splice(t,1),e.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(0===this.items_.length)return this.selectedIndex.rawValue=-1,void(this.empty.rawValue=!0);let e=this.items_.findIndex(e=>e.rawValue);e<0?(this.items_.forEach((e,t)=>{e.rawValue=0===t}),this.selectedIndex.rawValue=0):(this.items_.forEach((t,i)=>{t.rawValue=i===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){let t=this.items_.findIndex(t=>t===e.sender);this.items_.forEach((e,i)=>{e.rawValue=i===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const og=rO("tab");class o_{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(og(),oi()),t.viewProps.bindClassModifiers(this.element),rT(t.empty,r$(this.element,og(void 0,"nop")));let i=e.createElement("div");i.classList.add(og("t")),this.element.appendChild(i),this.itemsElement=i;let n=e.createElement("div");n.classList.add(og("i")),this.element.appendChild(n);let s=e.createElement("div");s.classList.add(og("c")),this.element.appendChild(s),this.contentsElement=s}}class ow extends r1{constructor(e,t){let i=new ob,n=new o_(e,{empty:i.empty,viewProps:t.viewProps});super({blade:t.blade,rackController:new r4({blade:t.blade,element:n.contentsElement,viewProps:t.viewProps}),view:n}),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);let s=this.rackController.rack;s.emitter.on("add",this.onRackAdd_),s.emitter.on("remove",this.onRackRemove_),this.tab=i}add(e,t){this.rackController.rack.add(e,t)}remove(e){this.rackController.rack.remove(this.rackController.rack.children[e])}onRackAdd_(e){if(!e.root)return;let t=e.bladeController;rM(this.view.itemsElement,t.itemController.view.element,e.index),t.itemController.viewProps.set("parent",this.viewProps),this.tab.add(t.props.value("selected"))}onRackRemove_(e){if(!e.root)return;let t=e.bladeController;rD(t.itemController.view.element),t.itemController.viewProps.set("parent",null),this.tab.remove(t.props.value("selected"))}}rW({id:"tab",type:"blade",accept(e){let t=rf(e,e=>({pages:e.required.array(e.required.object({title:e.required.string})),view:e.required.constant("tab")}));return t&&0!==t.pages.length?{params:t}:null},controller(e){let t=new ow(e.document,{blade:e.blade,viewProps:e.viewProps});return e.params.pages.forEach(i=>{let n=new oc(e.document,{blade:r9(),itemProps:sH.fromObject({selected:!1,title:i.title}),props:sH.fromObject({selected:!1}),viewProps:ol.create()});t.add(n)}),t},api:e=>e.controller instanceof ow?new ov(e.controller,e.pool):e.controller instanceof oc?new om(e.controller,e.pool):null});class of extends rb{get options(){return this.controller.valueController.props.get("options")}set options(e){this.controller.valueController.props.set("options",e)}}class oy{constructor(){this.disabled=!1,this.emitter=new sz}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class ox{constructor(e,t){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=e,this.emitter=new sz,this.interval_=t,this.setTimer_()}get disabled(){return this.disabled_}set disabled(e){this.disabled_=e,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(null===this.timerId_)return;let e=this.doc_.defaultView;e&&e.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;let e=this.doc_.defaultView;e&&(this.timerId_=e.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class oC{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((e,t)=>t.constrain(e),e)}}function oP(e,t){if(e instanceof t)return e;if(e instanceof oC){let i=e.constraints.reduce((e,i)=>e||(i instanceof t?i:null),null);if(i)return i}return null}class oE{constructor(e){this.values=sH.fromObject({options:e})}constrain(e){let t=this.values.get("options");return 0===t.length?e:t.filter(t=>t.value===e).length>0?e:t[0].value}}function ok(e){var t;return Array.isArray(e)?null===(t=rf({items:e},e=>({items:e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))})))||void 0===t?void 0:t.items:"object"==typeof e?rw.required.raw(e).value:void 0}function oV(e){if(Array.isArray(e))return e;let t=[];return Object.keys(e).forEach(i=>{t.push({text:i,value:e[i]})}),t}function oL(e){return sS(e)?null:new oE(oV(e))}const oM=rO("lst");class oD{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(oM()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("select");i.classList.add(oM("s")),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.selectElement=i;let n=e.createElement("div");n.classList.add(oM("m")),n.appendChild(rL(e,"dropdown")),this.element.appendChild(n),t.value.emitter.on("change",this.onValueChange_),this.value_=t.value,rI(this.props_,"options",t=>{rS(this.selectElement),t.forEach(t=>{let i=e.createElement("option");i.textContent=t.text,this.selectElement.appendChild(i)}),this.update_()})}update_(){let e=this.props_.get("options").map(e=>e.value);this.selectElement.selectedIndex=e.indexOf(this.value_.rawValue)}onValueChange_(){this.update_()}}class oS{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new oD(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){let t=e.currentTarget;this.value.rawValue=this.props.get("options")[t.selectedIndex].value}importProps(e){return ry(e,null,e=>({options:e.required.custom(ok)}),e=>(this.props.set("options",oV(e.options)),!0))}exportProps(){return rx(null,{options:this.props.get("options")})}}const oj=rO("pop");class oT{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(oj()),t.viewProps.bindClassModifiers(this.element),rT(t.shows,r$(this.element,oj(void 0,"v")))}}class oI{constructor(e,t){this.shows=sU(!1),this.viewProps=t.viewProps,this.view=new oT(e,{shows:this.shows,viewProps:this.viewProps})}}const oO=rO("txt");class oA{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(oO()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);let i=e.createElement("input");i.classList.add(oO("i")),i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,t.value.emitter.on("change",this.onChange_),this.value_=t.value,this.refresh()}refresh(){let e=this.props_.get("formatter");this.inputElement.value=e(this.value_.rawValue)}onChange_(){this.refresh()}}class oR{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=t.parser,this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new oA(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){let t=e.currentTarget.value,i=this.parser_(t);sS(i)||(this.value.rawValue=i),this.view.refresh()}}function oK(e){return"false"!==e&&!!e}function oz(e){return String(e)}const oB=rt(0);function oN(e){return oB(e)+"%"}function oF(e){return String(e)}function oU(e){return e}function oH({primary:e,secondary:t,forward:i,backward:n}){let s=!1;function r(e){s||(s=!0,e(),s=!1)}e.emitter.on("change",n=>{r(()=>{t.setRawValue(i(e.rawValue,t.rawValue),n.options)})}),t.emitter.on("change",s=>{r(()=>{e.setRawValue(n(e.rawValue,t.rawValue),s.options)}),r(()=>{t.setRawValue(i(e.rawValue,t.rawValue),s.options)})}),r(()=>{t.setRawValue(i(e.rawValue,t.rawValue),{forceEmit:!1,last:!0})})}function o$(e,t){let i=e*(t.altKey?.1:1)*(t.shiftKey?10:1);return t.upKey?+i:t.downKey?-i:0}function oq(e){return{altKey:e.altKey,downKey:"ArrowDown"===e.key,shiftKey:e.shiftKey,upKey:"ArrowUp"===e.key}}function oG(e){return{altKey:e.altKey,downKey:"ArrowLeft"===e.key,shiftKey:e.shiftKey,upKey:"ArrowRight"===e.key}}function oJ(e){return"ArrowUp"===e||"ArrowDown"===e||"ArrowLeft"===e||"ArrowRight"===e}function oY(e,t){var i,n;let s=t.ownerDocument.defaultView,r=t.getBoundingClientRect();return{x:e.pageX-((null!==(i=s&&s.scrollX)&&void 0!==i?i:0)+r.left),y:e.pageY-((null!==(n=s&&s.scrollY)&&void 0!==n?n:0)+r.top)}}class oX{constructor(e){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=e,this.emitter=new sz,e.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),e.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),e.addEventListener("touchend",this.onTouchEnd_),e.addEventListener("mousedown",this.onMouseDown_)}computePosition_(e){let t=this.elem_.getBoundingClientRect();return{bounds:{width:t.width,height:t.height},point:e?{x:e.x,y:e.y}:null}}onMouseDown_(e){var t;e.preventDefault(),null===(t=e.currentTarget)||void 0===t||t.focus();let i=this.elem_.ownerDocument;i.addEventListener("mousemove",this.onDocumentMouseMove_),i.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(oY(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(oY(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseUp_(e){let t=this.elem_.ownerDocument;t.removeEventListener("mousemove",this.onDocumentMouseMove_),t.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(oY(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();let t=e.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-i.left,y:t.clientY-i.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){let t=e.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-i.left,y:t.clientY-i.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;let i=null!==(t=e.targetTouches.item(0))&&void 0!==t?t:this.lastTouch_,n=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(i?{x:i.clientX-n.left,y:i.clientY-n.top}:void 0),sender:this,shiftKey:e.shiftKey})}}const oZ=rO("txt");class oW{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(oZ(),oZ(void 0,"num")),t.arrayPosition&&this.element.classList.add(oZ(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("input");i.classList.add(oZ("i")),i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=t.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(oZ()),this.inputElement.classList.add(oZ("i"));let n=e.createElement("div");n.classList.add(oZ("k")),this.element.appendChild(n),this.knobElement=n;let s=e.createElementNS(rP,"svg");s.classList.add(oZ("g")),this.knobElement.appendChild(s);let r=e.createElementNS(rP,"path");r.classList.add(oZ("gb")),s.appendChild(r),this.guideBodyElem_=r;let o=e.createElementNS(rP,"path");o.classList.add(oZ("gh")),s.appendChild(o),this.guideHeadElem_=o;let l=e.createElement("div");l.classList.add(rO("tt")()),this.knobElement.appendChild(l),this.tooltipElem_=l,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(null===e.rawValue)return void this.element.classList.remove(oZ(void 0,"drg"));this.element.classList.add(oZ(void 0,"drg"));let t=e.rawValue/this.props_.get("pointerScale"),i=t+(t>0?-1:t<0?1:0),n=rs(-i,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",`M ${i+n},0 L${i},4 L${i+n},8 M ${t},-1 L${t},9`),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${t},4`);let s=this.props_.get("formatter");this.tooltipElem_.textContent=s(this.value.rawValue),this.tooltipElem_.style.left=`${t}px`}refresh(){let e=this.props_.get("formatter");this.inputElement.value=e(this.value.rawValue)}onChange_(){this.refresh()}}class oQ{constructor(e,t){var i;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.parser_=t.parser,this.props=t.props,this.sliderProps_=null!==(i=t.sliderProps)&&void 0!==i?i:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=sU(null),this.view=new oW(e,{arrayPosition:t.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);let n=new oX(this.view.knobElement);n.emitter.on("down",this.onPointerDown_),n.emitter.on("move",this.onPointerMove_),n.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var t,i;let n=null===(t=this.sliderProps_)||void 0===t?void 0:t.get("min"),s=null===(i=this.sliderProps_)||void 0===i?void 0:i.get("max"),r=e;return void 0!==n&&(r=Math.max(r,n)),void 0!==s&&(r=Math.min(r,s)),r}onInputChange_(e){let t=e.currentTarget.value,i=this.parser_(t);sS(i)||(this.value.rawValue=this.constrainValue_(i)),this.view.refresh()}onInputKeyDown_(e){let t=o$(this.props.get("keyScale"),oq(e));0!==t&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){0!==o$(this.props.get("keyScale"),oq(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(e){if(!e.point)return null;let t=e.point.x-e.bounds.width/2;return this.constrainValue_(this.originRawValue_+t*this.props.get("pointerScale"))}onPointerMove_(e){let t=this.computeDraggingValue_(e.data);null!==t&&(this.value.setRawValue(t,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(e){let t=this.computeDraggingValue_(e.data);null!==t&&(this.value.setRawValue(t,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}const o0=rO("sld");class o1{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(o0()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(o0("t")),t.viewProps.bindTabIndex(i),this.element.appendChild(i),this.trackElement=i;let n=e.createElement("div");n.classList.add(o0("k")),this.trackElement.appendChild(n),this.knobElement=n,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){let e=rs(ri(this.value.rawValue,this.props_.get("min"),this.props_.get("max"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class o2{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.props=t.props,this.view=new o1(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new oX(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){e.point&&this.value.setRawValue(ri(rs(e.point.x,0,e.bounds.width),0,e.bounds.width,this.props.get("min"),this.props.get("max")),t)}onPointerDownOrMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){let t=o$(this.props.get("keyScale"),oG(e));0!==t&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){0!==o$(this.props.get("keyScale"),oG(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const o3=rO("sldtxt");class o5{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(o3());let i=e.createElement("div");i.classList.add(o3("s")),this.sliderView_=t.sliderView,i.appendChild(this.sliderView_.element),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(o3("t")),this.textView_=t.textView,n.appendChild(this.textView_.element),this.element.appendChild(n)}}class o6{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new o2(e,{props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new oQ(e,{parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new o5(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}importProps(e){return ry(e,null,e=>({max:e.required.number,min:e.required.number}),e=>{let t=this.sliderC_.props;return t.set("max",e.max),t.set("min",e.min),!0})}exportProps(){let e=this.sliderC_.props;return rx(null,{max:e.get("max"),min:e.get("min")})}}const o4="cnt-usz";class o9{constructor(e,t){let i=rO(t.viewName);this.element=e.createElement("div"),this.element.classList.add(i()),t.viewProps.bindClassModifiers(this.element)}}function o8(e){return rh(e)}function o7(e){if(sT(e))return rf(e,o8)}function le(e,t){if(!e)return;let i=[],n=ro(e,t);n&&i.push(n);let s=rl(e);return s&&i.push(s),new oC(i)}function lt(e){if("inline"===e||"popup"===e)return e}function li(e,t){e.write(t)}const ln=rO("ckb");class ls{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(ln()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("label");i.classList.add(ln("l")),this.element.appendChild(i);let n=e.createElement("input");n.classList.add(ln("i")),n.type="checkbox",i.appendChild(n),this.inputElement=n,t.viewProps.bindDisabled(this.inputElement);let s=e.createElement("div");s.classList.add(ln("w")),i.appendChild(s);let r=rL(e,"check");s.appendChild(r),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class lr{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new ls(e,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){let t=e.currentTarget;this.value.rawValue=t.checked}}rW({id:"input-bool",type:"input",accept:(e,t)=>{if("boolean"!=typeof e)return null;let i=rf(t,e=>({options:e.optional.custom(ok),readonly:e.optional.constant(!1)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>oK,constraint:e=>(function(e){let t=[],i=oL(e.options);return i&&t.push(i),new oC(t)})(e.params),writer:e=>li},controller:e=>{let t=e.document,i=e.value,n=e.constraint,s=n&&oP(n,oE);return s?new oS(t,{props:new sH({options:s.values.value("options")}),value:i,viewProps:e.viewProps}):new lr(t,{value:i,viewProps:e.viewProps})},api:e=>"boolean"!=typeof e.controller.value.rawValue?null:e.controller.valueController instanceof oS?new of(e.controller):null});const lo=rO("col");class ll{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(lo()),t.foldable.bindExpandedClass(this.element,lo(void 0,"expanded")),rI(t.foldable,"completed",r$(this.element,lo(void 0,"cpl")));let i=e.createElement("div");i.classList.add(lo("h")),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(lo("s")),i.appendChild(n),this.swatchElement=n;let s=e.createElement("div");if(s.classList.add(lo("t")),i.appendChild(s),this.textElement=s,"inline"===t.pickerLayout){let t=e.createElement("div");t.classList.add(lo("p")),this.element.appendChild(t),this.pickerElement=t}else this.pickerElement=null}}function la(e,t,i){let n,s,r;let o=(e%360+360)%360,l=rs(t/100,0,1),a=rs(i/100,0,1),h=a*l,p=h*(1-Math.abs(o/60%2-1)),d=a-h;return[n,s,r]=o>=0&&o<60?[h,p,0]:o>=60&&o<120?[p,h,0]:o>=120&&o<180?[0,h,p]:o>=180&&o<240?[0,p,h]:o>=240&&o<300?[p,0,h]:[h,0,p],[255*(n+d),255*(s+d),255*(r+d)]}function lh(e){return[e[0],e[1],e[2]]}function lp(e,t){return[e[0],e[1],e[2],t]}const ld={hsl:{hsl:(e,t,i)=>[e,t,i],hsv:function(e,t,i){let n=i+t*(100-Math.abs(2*i-100))/200;return[e,0!==n?t*(100-Math.abs(2*i-100))/n:0,i+t*(100-Math.abs(2*i-100))/200]},rgb:function(e,t,i){let n,s,r;let o=(e%360+360)%360,l=rs(t/100,0,1),a=rs(i/100,0,1),h=(1-Math.abs(2*a-1))*l,p=h*(1-Math.abs(o/60%2-1)),d=a-h/2;return[n,s,r]=o>=0&&o<60?[h,p,0]:o>=60&&o<120?[p,h,0]:o>=120&&o<180?[0,h,p]:o>=180&&o<240?[0,p,h]:o>=240&&o<300?[p,0,h]:[h,0,p],[255*(n+d),255*(s+d),255*(r+d)]}},hsv:{hsl:function(e,t,i){let n=100-Math.abs(i*(200-t)/100-100);return[e,0!==n?t*i/n:0,i*(200-t)/200]},hsv:(e,t,i)=>[e,t,i],rgb:la},rgb:{hsl:function(e,t,i){let n=rs(e/255,0,1),s=rs(t/255,0,1),r=rs(i/255,0,1),o=Math.max(n,s,r),l=Math.min(n,s,r),a=o-l,h=0,p=0;return 0!==a&&(p=a/(1-Math.abs(o+l-1)),h=(h=n===o?(s-r)/a:s===o?2+(r-n)/a:4+(n-s)/a)/6+(h<0?1:0)),[360*h,100*p,(l+o)/2*100]},hsv:function(e,t,i){let n=rs(e/255,0,1),s=rs(t/255,0,1),r=rs(i/255,0,1),o=Math.max(n,s,r),l=o-Math.min(n,s,r);return[0===l?0:o===n?((s-r)/l%6+6)%6*60:o===s?60*((r-n)/l+2):60*((n-s)/l+4),100*(0===o?0:l/o),100*o]},rgb:(e,t,i)=>[e,t,i]}};function lu(e,t){return["float"===t?1:"rgb"===e?255:360,"float"===t?1:"rgb"===e?255:100,"float"===t?1:"rgb"===e?255:100]}function lc(e,t,i){var n,s,r;let o=lu(t,i);return["rgb"===t?rs(e[0],0,o[0]):(s=e[0])===(r=o[0])?r:(s%r+r)%r,rs(e[1],0,o[1]),rs(e[2],0,o[2]),rs(null!==(n=e[3])&&void 0!==n?n:1,0,1)]}function lv(e,t,i,n){let s=lu(t,i),r=lu(t,n);return e.map((e,t)=>e/s[t]*r[t])}function lm(e,t,i){let n=lv(e,t.mode,t.type,"int");return lv(ld[t.mode][i.mode](...n),i.mode,"int",i.type)}class lb{static black(){return new lb([0,0,0],"rgb")}constructor(e,t){this.type="int",this.mode=t,this.comps_=lc(e,t,this.type)}getComponents(e){return lp(lm(lh(this.comps_),{mode:this.mode,type:this.type},{mode:null!=e?e:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){let e=this.getComponents("rgb");return{r:e[0],g:e[1],b:e[2],a:e[3]}}}const lg=rO("colp");class l_{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(lg()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(lg("hsv"));let n=e.createElement("div");n.classList.add(lg("sv")),this.svPaletteView_=t.svPaletteView,n.appendChild(this.svPaletteView_.element),i.appendChild(n);let s=e.createElement("div");s.classList.add(lg("h")),this.hPaletteView_=t.hPaletteView,s.appendChild(this.hPaletteView_.element),i.appendChild(s),this.element.appendChild(i);let r=e.createElement("div");if(r.classList.add(lg("rgb")),this.textsView_=t.textsView,r.appendChild(this.textsView_.element),this.element.appendChild(r),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};let i=e.createElement("div");i.classList.add(lg("a"));let n=e.createElement("div");n.classList.add(lg("ap")),n.appendChild(this.alphaViews_.palette.element),i.appendChild(n);let s=e.createElement("div");s.classList.add(lg("at")),s.appendChild(this.alphaViews_.text.element),i.appendChild(s),this.element.appendChild(i)}}get allFocusableElements(){let e=[this.svPaletteView_.element,this.hPaletteView_.element,this.textsView_.modeSelectElement,...this.textsView_.inputViews.map(e=>e.inputElement)];return this.alphaViews_&&e.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),e}}function lw(e){return"int"===e?"int":"float"===e?"float":void 0}function lf(e){return rf(e,e=>({color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(lw)}),expanded:e.optional.boolean,picker:e.optional.custom(lt),readonly:e.optional.constant(!1)}))}function ly(e){return e?.1:1}function lx(e){var t;return null===(t=e.color)||void 0===t?void 0:t.type}class lC{constructor(e,t){this.type="float",this.mode=t,this.comps_=lc(e,t,this.type)}getComponents(e){return lp(lm(lh(this.comps_),{mode:this.mode,type:this.type},{mode:null!=e?e:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){let e=this.getComponents("rgb");return{r:e[0],g:e[1],b:e[2],a:e[3]}}}const lP={int:(e,t)=>new lb(e,t),float:(e,t)=>new lC(e,t)};function lE(e,t){if(e.type===t)return e;if("int"===e.type&&"float"===t)return function(e){let t=e.getComponents(),i=lu(e.mode,"int");return new lC([ri(t[0],0,i[0],0,1),ri(t[1],0,i[1],0,1),ri(t[2],0,i[2],0,1),t[3]],e.mode)}(e);if("float"===e.type&&"int"===t)return function(e){let t=e.getComponents(),i=lu(e.mode,"int");return new lb([Math.round(ri(t[0],0,1,0,i[0])),Math.round(ri(t[1],0,1,0,i[1])),Math.round(ri(t[2],0,1,0,i[2])),t[3]],e.mode)}(e);throw sR.shouldNeverHappen()}function lk(e,t){let i=e.match(/^(.+)%$/);return i?Math.min(.01*parseFloat(i[1])*t,t):Math.min(parseFloat(e),t)}const lV={deg:e=>e,grad:e=>360*e/400,rad:e=>360*e/(2*Math.PI),turn:e=>360*e};function lL(e){let t=e.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!t)return parseFloat(e);let i=parseFloat(t[1]);return lV[t[2]](i)}function lM(e){let t=e.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[lk(t[1],255),lk(t[2],255),lk(t[3],255)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function lD(e){let t=lM(e);return t?new lb(t,"rgb"):null}function lS(e){let t=e.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[lk(t[1],255),lk(t[2],255),lk(t[3],255),lk(t[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function lj(e){let t=lS(e);return t?new lb(t,"rgb"):null}function lT(e){let t=e.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[lL(t[1]),lk(t[2],100),lk(t[3],100)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function lI(e){let t=lT(e);return t?new lb(t,"hsl"):null}function lO(e){let t=e.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[lL(t[1]),lk(t[2],100),lk(t[3],100),lk(t[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function lA(e){let t=lO(e);return t?new lb(t,"hsl"):null}function lR(e){let t=e.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(t)return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)];let i=e.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)]:null}function lK(e){let t=lR(e);return t?new lb(t,"rgb"):null}function lz(e){let t=e.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(t)return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16),ri(parseInt(t[4]+t[4],16),0,255,0,1)];let i=e.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16),ri(parseInt(i[4],16),0,255,0,1)]:null}function lB(e){let t=lz(e);return t?new lb(t,"rgb"):null}function lN(e){let t=e.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!t)return null;let i=[parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function lF(e){return t=>{let i=lN(t);return i?lP[e](i,"rgb"):null}}function lU(e){let t=e.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!t)return null;let i=[parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3]),parseFloat(t[4])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function lH(e){return t=>{let i=lU(t);return i?lP[e](i,"rgb"):null}}const l$=[{parser:lR,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:lz,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:lM,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:lS,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:lT,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:lO,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:lN,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:lU,result:{alpha:!0,mode:"rgb",notation:"object"}}];function lq(e){let t=[lK,lB,lD,lj,lI,lA];"int"===e&&t.push(lF("int"),lH("int")),"float"===e&&t.push(lF("float"),lH("float"));let i=e=>t.reduce((t,i)=>null!==t?t:i(e),null);return t=>{let n=i(t);return n?lE(n,e):null}}function lG(e){let t=lq("int");if("string"!=typeof e)return lb.black();let i=t(e);return null!=i?i:lb.black()}function lJ(e){let t=rs(Math.floor(e),0,255).toString(16);return 1===t.length?`0${t}`:t}function lY(e,t="#"){return`${t}${lh(e.getComponents("rgb")).map(lJ).join("")}`}function lX(e,t="#"){let i=e.getComponents("rgb");return`${t}${[i[0],i[1],i[2],255*i[3]].map(lJ).join("")}`}function lZ(e){let t=rt(0);return`rgb(${lh(lE(e,"int").getComponents("rgb")).map(e=>t(e)).join(", ")})`}function lW(e){let t=rt(2),i=rt(0);return`rgba(${lE(e,"int").getComponents("rgb").map((e,n)=>(3===n?t:i)(e)).join(", ")})`}function lQ(e,t){let i=rt("float"===t?2:0),n=["r","g","b"];return`{${lh(lE(e,t).getComponents("rgb")).map((e,t)=>`${n[t]}: ${i(e)}`).join(", ")}}`}function l0(e,t){let i=rt(2),n=rt("float"===t?2:0),s=["r","g","b","a"];return`{${lE(e,t).getComponents("rgb").map((e,t)=>`${s[t]}: ${(3===t?i:n)(e)}`).join(", ")}}`}const l1=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:lY},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:lX},{format:{alpha:!1,mode:"rgb",notation:"func",type:"int"},stringifier:lZ},{format:{alpha:!0,mode:"rgb",notation:"func",type:"int"},stringifier:lW},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:function(e){let t=[rt(0),oN,oN];return`hsl(${lh(lE(e,"int").getComponents("hsl")).map((e,i)=>t[i](e)).join(", ")})`}},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:function(e){let t=[rt(0),oN,oN,rt(2)];return`hsla(${lE(e,"int").getComponents("hsl").map((e,i)=>t[i](e)).join(", ")})`}},...["int","float"].reduce((e,t)=>[...e,{format:{alpha:!1,mode:"rgb",notation:"object",type:t},stringifier:e=>lQ(e,t)},{format:{alpha:!0,mode:"rgb",notation:"object",type:t},stringifier:e=>l0(e,t)}],[])];function l2(e){return l1.reduce((t,i)=>{var n;return t||((n=i.format).alpha===e.alpha&&n.mode===e.mode&&n.notation===e.notation&&n.type===e.type?i.stringifier:null)},null)}const l3=rO("apl");class l5{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(l3()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);let i=e.createElement("div");i.classList.add(l3("b")),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(l3("c")),i.appendChild(n),this.colorElem_=n;let s=e.createElement("div");s.classList.add(l3("m")),this.element.appendChild(s),this.markerElem_=s;let r=e.createElement("div");r.classList.add(l3("p")),this.markerElem_.appendChild(r),this.previewElem_=r,this.update_()}update_(){let e=this.value.rawValue,t=e.getComponents("rgb"),i=new lb([t[0],t[1],t[2],0],"rgb"),n=new lb([t[0],t[1],t[2],255],"rgb"),s=["to right",lW(i),lW(n)];this.colorElem_.style.background=`linear-gradient(${s.join(",")})`,this.previewElem_.style.backgroundColor=lW(e);let r=ri(t[3],0,1,0,100);this.markerElem_.style.left=`${r}%`}onValueChange_(){this.update_()}}class l6{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new l5(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new oX(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;let i=e.point.x/e.bounds.width,[n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new lb([n,s,r,i],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){let t=o$(ly(!0),oG(e));if(0===t)return;let[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new lb([i,n,s,r+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){0!==o$(ly(!0),oG(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const l4=rO("coltxt");class l9{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(l4()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(l4("m")),this.modeElem_=function(e){let t=e.createElement("select");return t.appendChild([{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"},{text:"HEX",value:"hex"}].reduce((t,i)=>{let n=e.createElement("option");return n.textContent=i.text,n.value=i.value,t.appendChild(n),t},e.createDocumentFragment())),t}(e),this.modeElem_.classList.add(l4("ms")),i.appendChild(this.modeSelectElement),t.viewProps.bindDisabled(this.modeElem_);let n=e.createElement("div");n.classList.add(l4("mm")),n.appendChild(rL(e,"dropdown")),i.appendChild(n),this.element.appendChild(i);let s=e.createElement("div");s.classList.add(l4("w")),this.element.appendChild(s),this.inputsElem_=s,this.inputViews_=t.inputViews,this.applyInputViews_(),rT(t.mode,e=>{this.modeElem_.value=e})}get modeSelectElement(){return this.modeElem_}get inputViews(){return this.inputViews_}set inputViews(e){this.inputViews_=e,this.applyInputViews_()}applyInputViews_(){rS(this.inputsElem_);let e=this.element.ownerDocument;this.inputViews_.forEach(t=>{let i=e.createElement("div");i.classList.add(l4("c")),i.appendChild(t.element),this.inputsElem_.appendChild(i)})}}class l8{constructor(e,t){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=t.colorType,this.value=t.value,this.viewProps=t.viewProps,this.colorMode=sU(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(e),this.view=new l9(e,{mode:this.colorMode,inputViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view],viewProps:this.viewProps}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(e){let t=this.colorMode.rawValue;return"hex"!==t?function(e,t){let i={colorMode:t.colorMode,colorType:t.colorType,parser:s7,viewProps:t.viewProps};return[0,1,2].map(n=>{let s=new oQ(e,{arrayPosition:0===n?"fst":2===n?"lst":"mid",parser:i.parser,props:sH.fromObject({formatter:rt("float"===i.colorType?2:0),keyScale:ly(!1),pointerScale:"float"===i.colorType?.01:1}),value:sU(0,{constraint:new s$({min:0,max:lu(i.colorMode,i.colorType)[n]})}),viewProps:i.viewProps});return oH({primary:t.value,secondary:s.value,forward:e=>lE(e,t.colorType).getComponents(t.colorMode)[n],backward(e,i){var s;let r=t.colorMode,o=lE(e,t.colorType).getComponents(r);return o[n]=i,lE((s=lp(lh(o),o[3]),lP[t.colorType](s,r)),"int")}}),s})}(e,{colorMode:t,colorType:this.colorType_,value:this.value,viewProps:this.viewProps}):function(e,t){let i=new oR(e,{parser:lq("int"),props:sH.fromObject({formatter:lY}),value:sU(lb.black()),viewProps:t.viewProps});return oH({primary:t.value,secondary:i.value,forward:e=>new lb(lh(e.getComponents()),e.mode),backward:(e,t)=>new lb(lp(lh(t.getComponents(e.mode)),e.getComponents()[3]),e.mode)}),[i]}(e,{value:this.value,viewProps:this.viewProps})}onModeSelectChange_(e){let t=e.currentTarget;this.colorMode.rawValue=t.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.inputViews=this.ccs_.map(e=>e.view)}}const l7=rO("hpl");class ae{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(l7()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);let i=e.createElement("div");i.classList.add(l7("c")),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(l7("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){let[e]=this.value.rawValue.getComponents("hsv");this.markerElem_.style.backgroundColor=lZ(new lb([e,100,100],"hsv"));let t=ri(e,0,360,0,100);this.markerElem_.style.left=`${t}%`}onValueChange_(){this.update_()}}class at{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new ae(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new oX(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;let i=ri(rs(e.point.x,0,e.bounds.width),0,e.bounds.width,0,360),[,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new lb([i,n,s,r],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){let t=o$(ly(!1),oG(e));if(0===t)return;let[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new lb([i+t,n,s,r],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){0!==o$(ly(!1),oG(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const ai=rO("svp");class an{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(ai()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);let i=e.createElement("canvas");i.height=64,i.width=64,i.classList.add(ai("c")),this.element.appendChild(i),this.canvasElement=i;let n=e.createElement("div");n.classList.add(ai("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){let e=function(e){let t=e.ownerDocument.defaultView;return t&&"document"in t?e.getContext("2d",{willReadFrequently:!0}):null}(this.canvasElement);if(!e)return;let t=this.value.rawValue.getComponents("hsv"),i=this.canvasElement.width,n=this.canvasElement.height,s=e.getImageData(0,0,i,n),r=s.data;for(let e=0;ee.getComponents()[3],backward:(e,t)=>{let i=e.getComponents();return i[3]=t,new lb(i,e.mode)}}),this.textsC_=new l8(e,{colorType:t.colorType,value:this.value,viewProps:this.viewProps}),this.view=new l_(e,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:t.supportsAlpha,svPaletteView:this.svPaletteC_.view,textsView:this.textsC_.view,viewProps:this.viewProps})}get textsController(){return this.textsC_}}const ao=rO("colsw");class al{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.element=e.createElement("div"),this.element.classList.add(ao()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(ao("sw")),this.element.appendChild(i),this.swatchElem_=i;let n=e.createElement("button");n.classList.add(ao("b")),t.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n,this.update_()}update_(){let e=this.value.rawValue;this.swatchElem_.style.backgroundColor=lX(e)}onValueChange_(){this.update_()}}class aa{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new al(e,{value:this.value,viewProps:this.viewProps})}}class ah{constructor(e,t){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=r8.create(t.expanded),this.swatchC_=new aa(e,{value:this.value,viewProps:this.viewProps});let i=this.swatchC_.view.buttonElement;i.addEventListener("blur",this.onButtonBlur_),i.addEventListener("click",this.onButtonClick_),this.textC_=new oR(e,{parser:t.parser,props:sH.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new ll(e,{foldable:this.foldable_,pickerLayout:t.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_="popup"===t.pickerLayout?new oI(e,{viewProps:this.viewProps}):null;let n=new ar(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});n.view.allFocusableElements.forEach(e=>{e.addEventListener("blur",this.onPopupChildBlur_),e.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=n,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(n.view.element),oH({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:e=>e,backward:(e,t)=>t})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),oe(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;let t=this.view.element,i=e.relatedTarget;i&&t.contains(i)||(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;let t=this.popC_.view.element,i=rj(e);i&&t.contains(i)||i&&i===this.swatchC_.view.buttonElement&&!rk(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?"Escape"===e.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===e.key&&this.swatchC_.view.buttonElement.focus()}}function ap(e){return lh(e.getComponents("rgb")).reduce((e,t)=>e<<8|255&Math.floor(t),0)}function ad(e){return e.getComponents("rgb").reduce((e,t,i)=>e<<8|255&Math.floor(3===i?255*t:t),0)>>>0}function au(e){return"number"!=typeof e?lb.black():new lb([e>>16&255,e>>8&255,255&e],"rgb")}function ac(e){return"number"!=typeof e?lb.black():new lb([e>>24&255,e>>16&255,e>>8&255,ri(255&e,0,255,0,1)],"rgb")}function av(e,t){return"object"==typeof e&&!sS(e)&&t in e&&"number"==typeof e[t]}function am(e){return av(e,"r")&&av(e,"g")&&av(e,"b")}function ab(e){return am(e)&&av(e,"a")}function ag(e,t){if(e.mode!==t.mode||e.type!==t.type)return!1;let i=e.getComponents(),n=t.getComponents();for(let e=0;e{var i;if("number"!=typeof e||!("color"in t||"color"===t.view))return null;let n=lf(t);return n?{initialValue:e,params:Object.assign(Object.assign({},n),{supportsAlpha:!!(null===(i=null==t?void 0:t.color)||void 0===i?void 0:i.alpha)})}:null},binding:{reader:e=>e.params.supportsAlpha?ac:au,equals:ag,writer:e=>(function(e){let t=e?ad:ap;return(e,i)=>{li(e,t(i))}})(e.params.supportsAlpha)},controller:e=>{var t,i;return new ah(e.document,{colorType:"int",expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,formatter:e.params.supportsAlpha?e=>lX(e,"0x"):e=>lY(e,"0x"),parser:lq("int"),pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",supportsAlpha:e.params.supportsAlpha,value:e.value,viewProps:e.viewProps})}}),rW({id:"input-color-object",type:"input",accept:(e,t)=>{var i;if(!am(e))return null;let n=lf(t);return n?{initialValue:e,params:Object.assign(Object.assign({},n),{colorType:null!==(i=lx(t))&&void 0!==i?i:"int"})}:null},binding:{reader:e=>{var t;return t=e.params.colorType,e=>{let i=am(e)?"int"===t?new lb(a_(e),"rgb"):"float"===t?new lC(a_(e),"rgb"):lE(lb.black(),"int"):lE(lb.black(),t);return lE(i,"int")}},equals:ag,writer:e=>{var t,i;return t=ab(e.initialValue),i=e.params.colorType,(e,n)=>{t?function(e,t,i){let n=lE(t,i).toRgbaObject();e.writeProperty("r",n.r),e.writeProperty("g",n.g),e.writeProperty("b",n.b),e.writeProperty("a",n.a)}(e,n,i):function(e,t,i){let n=lE(t,i).toRgbaObject();e.writeProperty("r",n.r),e.writeProperty("g",n.g),e.writeProperty("b",n.b)}(e,n,i)}}},controller:e=>{var t,i,n;let s=ab(e.initialValue);return new ah(e.document,{colorType:e.params.colorType,expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,formatter:(n=e.params.colorType,e=>s?l0(e,n):lQ(e,n)),parser:lq("int"),pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",supportsAlpha:s,value:e.value,viewProps:e.viewProps})}}),rW({id:"input-color-string",type:"input",accept:(e,t)=>{if("string"!=typeof e||"text"===t.view)return null;let i=function(e,t="int"){let i=l$.reduce((t,{parser:i,result:n})=>t||(i(e)?n:null),null);return i?"hex"===i.notation&&"float"!==t?Object.assign(Object.assign({},i),{type:"int"}):"func"===i.notation?Object.assign(Object.assign({},i),{type:t}):null:null}(e,lx(t));if(!i)return null;let n=l2(i);if(!n)return null;let s=lf(t);return s?{initialValue:e,params:Object.assign(Object.assign({},s),{format:i,stringifier:n})}:null},binding:{reader:()=>lG,equals:ag,writer:e=>{let t=function(e){let t=l2(e);return t?(e,i)=>{li(e,t(i))}:null}(e.params.format);if(!t)throw sR.notBindable();return t}},controller:e=>{var t,i;return new ah(e.document,{colorType:e.params.format.type,expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,formatter:e.params.stringifier,parser:lq("int"),pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",supportsAlpha:e.params.format.alpha,value:e.value,viewProps:e.viewProps})}});class aw{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){let t=this.asm_.toComponents(e).map((e,t)=>{var i,n;return null!==(n=null===(i=this.components[t])||void 0===i?void 0:i.constrain(e))&&void 0!==n?n:e});return this.asm_.fromComponents(t)}}const af=rO("pndtxt");class ay{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(af()),this.textViews.forEach(t=>{let i=e.createElement("div");i.classList.add(af("a")),i.appendChild(t.element),this.element.appendChild(i)})}}class ax{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((i,n)=>new oQ(e,{arrayPosition:0===n?"fst":n===t.axes.length-1?"lst":"mid",parser:t.parser,props:t.axes[n].textProps,value:sU(0,{constraint:t.axes[n].constraint}),viewProps:t.viewProps})),this.acs_.forEach((e,i)=>{oH({primary:this.value,secondary:e.value,forward:e=>t.assembly.toComponents(e)[i],backward:(e,n)=>{let s=t.assembly.toComponents(e);return s[i]=n,t.assembly.fromComponents(s)}})}),this.view=new ay(e,{textViews:this.acs_.map(e=>e.view)})}get textControllers(){return this.acs_}}class aC extends rb{get max(){return this.controller.valueController.sliderController.props.get("max")}set max(e){this.controller.valueController.sliderController.props.set("max",e)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(e){this.controller.valueController.sliderController.props.set("min",e)}}rW({id:"input-number",type:"input",accept:(e,t)=>{if("number"!=typeof e)return null;let i=rf(t,e=>Object.assign(Object.assign({},rh(e)),{options:e.optional.custom(ok),readonly:e.optional.constant(!1)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>re,constraint:e=>(function(e,t){let i=[],n=ro(e,t);n&&i.push(n);let s=rl(e);s&&i.push(s);let r=oL(e.options);return r&&i.push(r),new oC(i)})(e.params,e.initialValue),writer:e=>li},controller:e=>{var t;let i=e.value,n=e.constraint,s=n&&oP(n,oE);if(s)return new oS(e.document,{props:new sH({options:s.values.value("options")}),value:i,viewProps:e.viewProps});let r=ra(e.params,i.rawValue),o=n&&oP(n,s$);return o?new o6(e.document,Object.assign(Object.assign({},{sliderProps:new sH({keyScale:(t=Object.assign(Object.assign({},r),{keyScale:sU(r.keyScale),max:o.values.value("max"),min:o.values.value("min")})).keyScale,max:t.max,min:t.min}),textProps:new sH({formatter:sU(t.formatter),keyScale:t.keyScale,pointerScale:sU(t.pointerScale)})}),{parser:s7,value:i,viewProps:e.viewProps})):new oQ(e.document,{parser:s7,props:sH.fromObject(r),value:i,viewProps:e.viewProps})},api:e=>"number"!=typeof e.controller.value.rawValue?null:e.controller.valueController instanceof o6?new aC(e.controller):e.controller.valueController instanceof oS?new of(e.controller):null});class aP{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(sS(e))return!1;let t=e.x,i=e.y;return"number"==typeof t&&"number"==typeof i}static equals(e,t){return e.x===t.x&&e.y===t.y}toObject(){return{x:this.x,y:this.y}}}const aE={toComponents:e=>e.getComponents(),fromComponents:e=>new aP(...e)},ak=rO("p2d");class aV{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ak()),t.viewProps.bindClassModifiers(this.element),rT(t.expanded,r$(this.element,ak(void 0,"expanded")));let i=e.createElement("div");i.classList.add(ak("h")),this.element.appendChild(i);let n=e.createElement("button");n.classList.add(ak("b")),n.appendChild(rL(e,"p2dpad")),t.viewProps.bindDisabled(n),i.appendChild(n),this.buttonElement=n;let s=e.createElement("div");if(s.classList.add(ak("t")),i.appendChild(s),this.textElement=s,"inline"===t.pickerLayout){let t=e.createElement("div");t.classList.add(ak("p")),this.element.appendChild(t),this.pickerElement=t}else this.pickerElement=null}}const aL=rO("p2dp");class aM{constructor(e,t){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onPropsChange_=this.onPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onPropsChange_),this.element=e.createElement("div"),this.element.classList.add(aL()),"popup"===t.layout&&this.element.classList.add(aL(void 0,"p")),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(aL("p")),t.viewProps.bindTabIndex(i),this.element.appendChild(i),this.padElement=i;let n=e.createElementNS(rP,"svg");n.classList.add(aL("g")),this.padElement.appendChild(n),this.svgElem_=n;let s=e.createElementNS(rP,"line");s.classList.add(aL("ax")),s.setAttributeNS(null,"x1","0"),s.setAttributeNS(null,"y1","50%"),s.setAttributeNS(null,"x2","100%"),s.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(s);let r=e.createElementNS(rP,"line");r.classList.add(aL("ax")),r.setAttributeNS(null,"x1","50%"),r.setAttributeNS(null,"y1","0"),r.setAttributeNS(null,"x2","50%"),r.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(r);let o=e.createElementNS(rP,"line");o.classList.add(aL("l")),o.setAttributeNS(null,"x1","50%"),o.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(o),this.lineElem_=o;let l=e.createElement("div");l.classList.add(aL("m")),this.padElement.appendChild(l),this.markerElem_=l,t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){let[e,t]=this.value.rawValue.getComponents(),i=this.props_.get("max"),n=ri(e,-i,+i,0,100),s=ri(t,-i,+i,0,100),r=this.props_.get("invertsY")?100-s:s;this.lineElem_.setAttributeNS(null,"x2",`${n}%`),this.lineElem_.setAttributeNS(null,"y2",`${r}%`),this.markerElem_.style.left=`${n}%`,this.markerElem_.style.top=`${r}%`}onValueChange_(){this.update_()}onPropsChange_(){this.update_()}onFoldableChange_(){this.update_()}}function aD(e,t,i){return[o$(t[0],oG(e)),o$(t[1],oq(e))*(i?1:-1)]}class aS{constructor(e,t){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new aM(e,{layout:t.layout,props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new oX(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;let i=this.props.get("max"),n=ri(e.point.x,0,e.bounds.width,-i,+i),s=ri(this.props.get("invertsY")?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-i,+i);this.value.setRawValue(new aP(n,s),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onPadKeyDown_(e){oJ(e.key)&&e.preventDefault();let[t,i]=aD(e,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===t&&0===i||this.value.setRawValue(new aP(this.value.rawValue.x+t,this.value.rawValue.y+i),{forceEmit:!1,last:!1})}onPadKeyUp_(e){let[t,i]=aD(e,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===t&&0===i||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class aj{constructor(e,t){var i,n;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=r8.create(t.expanded),this.popC_="popup"===t.pickerLayout?new oI(e,{viewProps:this.viewProps}):null;let s=new aS(e,{layout:t.pickerLayout,props:new sH({invertsY:sU(t.invertsY),max:sU(t.max),xKeyScale:t.axes[0].textProps.value("keyScale"),yKeyScale:t.axes[1].textProps.value("keyScale")}),value:this.value,viewProps:this.viewProps});s.view.allFocusableElements.forEach(e=>{e.addEventListener("blur",this.onPopupChildBlur_),e.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=s,this.textC_=new ax(e,{assembly:aE,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new aV(e,{expanded:this.foldable_.value("expanded"),pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),null===(i=this.view.buttonElement)||void 0===i||i.addEventListener("blur",this.onPadButtonBlur_),null===(n=this.view.buttonElement)||void 0===n||n.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),oH({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:e=>e,backward:(e,t)=>t})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),oe(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onPadButtonBlur_(e){if(!this.popC_)return;let t=this.view.element,i=e.relatedTarget;i&&t.contains(i)||(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;let t=this.popC_.view.element,i=rj(e);i&&t.contains(i)||i&&i===this.view.buttonElement&&!rk(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?"Escape"===e.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===e.key&&this.view.buttonElement.focus()}}function aT(e){return aP.isObject(e)?new aP(e.x,e.y):new aP}function aI(e,t){e.writeProperty("x",t.x),e.writeProperty("y",t.y)}function aO(e,t){var i,n;return sS(e.min)&&sS(e.max)?Math.max(10*Math.abs(rr(e)),10*Math.abs(t)):Math.max(Math.abs(null!==(i=e.min)&&void 0!==i?i:0),Math.abs(null!==(n=e.max)&&void 0!==n?n:0))}rW({id:"input-point2d",type:"input",accept:(e,t)=>{if(!aP.isObject(e))return null;let i=rf(t,e=>Object.assign(Object.assign({},o8(e)),{expanded:e.optional.boolean,picker:e.optional.custom(lt),readonly:e.optional.constant(!1),x:e.optional.custom(o7),y:e.optional.object(Object.assign(Object.assign({},o8(e)),{inverted:e.optional.boolean}))}));return i?{initialValue:e,params:i}:null},binding:{reader:()=>aT,constraint:e=>{var t,i;return t=e.params,i=e.initialValue,new aw({assembly:aE,components:[le(Object.assign(Object.assign({},t),t.x),i.x),le(Object.assign(Object.assign({},t),t.y),i.y)]})},equals:aP.equals,writer:()=>aI},controller:e=>{var t,i,n,s,r,o;let l=e.document,a=e.value,h=e.constraint,p=[e.params.x,e.params.y];return new aj(l,{axes:a.rawValue.getComponents().map((t,i)=>{var n;return rp({constraint:h.components[i],initialValue:t,params:sO(e.params,null!==(n=p[i])&&void 0!==n?n:{})})}),expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,invertsY:function(e){if(!("y"in e))return!1;let t=e.y;return!!t&&"inverted"in t&&!!t.inverted}(e.params),max:(n=e.params,s=a.rawValue,Math.max(aO(sO(n,null!==(r=n.x)&&void 0!==r?r:{}),s.x),aO(sO(n,null!==(o=n.y)&&void 0!==o?o:{}),s.y))),parser:s7,pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",value:a,viewProps:e.viewProps})}});class aA{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.z=i}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(sS(e))return!1;let t=e.x,i=e.y,n=e.z;return"number"==typeof t&&"number"==typeof i&&"number"==typeof n}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z}toObject(){return{x:this.x,y:this.y,z:this.z}}}const aR={toComponents:e=>e.getComponents(),fromComponents:e=>new aA(...e)};function aK(e){return aA.isObject(e)?new aA(e.x,e.y,e.z):new aA}function az(e,t){e.writeProperty("x",t.x),e.writeProperty("y",t.y),e.writeProperty("z",t.z)}rW({id:"input-point3d",type:"input",accept:(e,t)=>{if(!aA.isObject(e))return null;let i=rf(t,e=>Object.assign(Object.assign({},o8(e)),{readonly:e.optional.constant(!1),x:e.optional.custom(o7),y:e.optional.custom(o7),z:e.optional.custom(o7)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>aK,constraint:e=>{var t,i;return t=e.params,i=e.initialValue,new aw({assembly:aR,components:[le(Object.assign(Object.assign({},t),t.x),i.x),le(Object.assign(Object.assign({},t),t.y),i.y),le(Object.assign(Object.assign({},t),t.z),i.z)]})},equals:aA.equals,writer:e=>az},controller:e=>{let t=e.value,i=e.constraint,n=[e.params.x,e.params.y,e.params.z];return new ax(e.document,{assembly:aR,axes:t.rawValue.getComponents().map((t,s)=>{var r;return rp({constraint:i.components[s],initialValue:t,params:sO(e.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:s7,value:t,viewProps:e.viewProps})}});class aB{constructor(e=0,t=0,i=0,n=0){this.x=e,this.y=t,this.z=i,this.w=n}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(sS(e))return!1;let t=e.x,i=e.y,n=e.z,s=e.w;return"number"==typeof t&&"number"==typeof i&&"number"==typeof n&&"number"==typeof s}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}}const aN={toComponents:e=>e.getComponents(),fromComponents:e=>new aB(...e)};function aF(e){return aB.isObject(e)?new aB(e.x,e.y,e.z,e.w):new aB}function aU(e,t){e.writeProperty("x",t.x),e.writeProperty("y",t.y),e.writeProperty("z",t.z),e.writeProperty("w",t.w)}rW({id:"input-point4d",type:"input",accept:(e,t)=>{if(!aB.isObject(e))return null;let i=rf(t,e=>Object.assign(Object.assign({},o8(e)),{readonly:e.optional.constant(!1),w:e.optional.custom(o7),x:e.optional.custom(o7),y:e.optional.custom(o7),z:e.optional.custom(o7)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>aF,constraint:e=>{var t,i;return t=e.params,i=e.initialValue,new aw({assembly:aN,components:[le(Object.assign(Object.assign({},t),t.x),i.x),le(Object.assign(Object.assign({},t),t.y),i.y),le(Object.assign(Object.assign({},t),t.z),i.z),le(Object.assign(Object.assign({},t),t.w),i.w)]})},equals:aB.equals,writer:e=>aU},controller:e=>{let t=e.value,i=e.constraint,n=[e.params.x,e.params.y,e.params.z,e.params.w];return new ax(e.document,{assembly:aN,axes:t.rawValue.getComponents().map((t,s)=>{var r;return rp({constraint:i.components[s],initialValue:t,params:sO(e.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:s7,value:t,viewProps:e.viewProps})}}),rW({id:"input-string",type:"input",accept:(e,t)=>{if("string"!=typeof e)return null;let i=rf(t,e=>({readonly:e.optional.constant(!1),options:e.optional.custom(ok)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>oF,constraint:e=>(function(e){let t=[],i=oL(e.options);return i&&t.push(i),new oC(t)})(e.params),writer:e=>li},controller:e=>{let t=e.document,i=e.value,n=e.constraint,s=n&&oP(n,oE);return s?new oS(t,{props:new sH({options:s.values.value("options")}),value:i,viewProps:e.viewProps}):new oR(t,{parser:e=>e,props:sH.fromObject({formatter:oU}),value:i,viewProps:e.viewProps})},api:e=>"string"!=typeof e.controller.value.rawValue?null:e.controller.valueController instanceof oS?new of(e.controller):null});const aH={defaultInterval:200,defaultRows:3},a$=rO("mll");class aq{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(a$()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("textarea");i.classList.add(a$("i")),i.style.height=`calc(var(--${o4}) * ${t.rows})`,i.readOnly=!0,t.viewProps.bindDisabled(i),this.element.appendChild(i),this.textareaElem_=i,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){let e=this.textareaElem_,t=e.scrollTop===e.scrollHeight-e.clientHeight,i=[];this.value.rawValue.forEach(e=>{void 0!==e&&i.push(this.formatter_(e))}),e.textContent=i.join("\n"),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class aG{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new aq(e,{formatter:t.formatter,rows:t.rows,value:this.value,viewProps:this.viewProps})}}const aJ=rO("sgl");class aY{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(aJ()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("input");i.classList.add(aJ("i")),i.readOnly=!0,i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){let e=this.value.rawValue,t=e[e.length-1];this.inputElement.value=void 0!==t?this.formatter_(t):""}onValueUpdate_(){this.update_()}}class aX{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new aY(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}rW({id:"monitor-bool",type:"monitor",accept:(e,t)=>{if("boolean"!=typeof e)return null;let i=rf(t,e=>({readonly:e.required.constant(!0),rows:e.optional.number}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>oK},controller:e=>{var t;return 1===e.value.rawValue.length?new aX(e.document,{formatter:oz,value:e.value,viewProps:e.viewProps}):new aG(e.document,{formatter:oz,rows:null!==(t=e.params.rows)&&void 0!==t?t:aH.defaultRows,value:e.value,viewProps:e.viewProps})}});class aZ extends rb{get max(){return this.controller.valueController.props.get("max")}set max(e){this.controller.valueController.props.set("max",e)}get min(){return this.controller.valueController.props.get("min")}set min(e){this.controller.valueController.props.set("min",e)}}const aW=rO("grl");class aQ{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(aW()),t.viewProps.bindClassModifiers(this.element),this.formatter_=t.formatter,this.props_=t.props,this.cursor_=t.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);let i=e.createElementNS(rP,"svg");i.classList.add(aW("g")),i.style.height=`calc(var(--${o4}) * ${t.rows})`,this.element.appendChild(i),this.svgElem_=i;let n=e.createElementNS(rP,"polyline");this.svgElem_.appendChild(n),this.lineElem_=n;let s=e.createElement("div");s.classList.add(aW("t"),rO("tt")()),this.element.appendChild(s),this.tooltipElem_=s,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}get graphElement(){return this.svgElem_}update_(){let e=this.svgElem_.getBoundingClientRect(),t=this.value.rawValue.length-1,i=this.props_.get("min"),n=this.props_.get("max"),s=[];this.value.rawValue.forEach((r,o)=>{if(void 0===r)return;let l=ri(o,0,t,0,e.width),a=ri(r,i,n,e.height,0);s.push([l,a].join(","))}),this.lineElem_.setAttributeNS(null,"points",s.join(" "));let r=this.tooltipElem_,o=this.value.rawValue[this.cursor_.rawValue];if(void 0===o)return void r.classList.remove(aW("t","a"));let l=ri(this.cursor_.rawValue,0,t,0,e.width),a=ri(o,i,n,e.height,0);r.style.left=`${l}px`,r.style.top=`${a}px`,r.textContent=`${this.formatter_(o)}`,r.classList.contains(aW("t","a"))||(r.classList.add(aW("t","a"),aW("t","in")),rE(r),r.classList.remove(aW("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class a0{constructor(e,t){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.cursor_=sU(-1),this.view=new aQ(e,{cursor:this.cursor_,formatter:t.formatter,rows:t.rows,props:this.props,value:this.value,viewProps:this.viewProps}),rk(e)){let e=new oX(this.view.element);e.emitter.on("down",this.onGraphPointerDown_),e.emitter.on("move",this.onGraphPointerMove_),e.emitter.on("up",this.onGraphPointerUp_)}else this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_)}importProps(e){return ry(e,null,e=>({max:e.required.number,min:e.required.number}),e=>(this.props.set("max",e.max),this.props.set("min",e.min),!0))}exportProps(){return rx(null,{max:this.props.get("max"),min:this.props.get("min")})}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){let t=this.view.element.getBoundingClientRect();this.cursor_.rawValue=Math.floor(ri(e.offsetX,0,t.width,0,this.value.rawValue.length))}onGraphPointerDown_(e){this.onGraphPointerMove_(e)}onGraphPointerMove_(e){e.data.point?this.cursor_.rawValue=Math.floor(ri(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length)):this.cursor_.rawValue=-1}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function a1(e){return sS(e.format)?rt(2):e.format}function a2(e){return"graph"===e.view}rW({id:"monitor-number",type:"monitor",accept:(e,t)=>{if("number"!=typeof e)return null;let i=rf(t,e=>({format:e.optional.function,max:e.optional.number,min:e.optional.number,readonly:e.required.constant(!0),rows:e.optional.number,view:e.optional.string}));return i?{initialValue:e,params:i}:null},binding:{defaultBufferSize:e=>a2(e)?64:1,reader:e=>re},controller:e=>{var t,i,n,s;return a2(e.params)?new a0(e.document,{formatter:a1(e.params),rows:null!==(t=e.params.rows)&&void 0!==t?t:aH.defaultRows,props:sH.fromObject({max:null!==(i=e.params.max)&&void 0!==i?i:100,min:null!==(n=e.params.min)&&void 0!==n?n:0}),value:e.value,viewProps:e.viewProps}):1===e.value.rawValue.length?new aX(e.document,{formatter:a1(e.params),value:e.value,viewProps:e.viewProps}):new aG(e.document,{formatter:a1(e.params),rows:null!==(s=e.params.rows)&&void 0!==s?s:aH.defaultRows,value:e.value,viewProps:e.viewProps})},api:e=>e.controller.valueController instanceof a0?new aZ(e.controller):null}),rW({id:"monitor-string",type:"monitor",accept:(e,t)=>{if("string"!=typeof e)return null;let i=rf(t,e=>({multiline:e.optional.boolean,readonly:e.required.constant(!0),rows:e.optional.number}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>oF},controller:e=>{var t;let i=e.value;return i.rawValue.length>1||e.params.multiline?new aG(e.document,{formatter:oU,rows:null!==(t=e.params.rows)&&void 0!==t?t:aH.defaultRows,value:i,viewProps:e.viewProps}):new aX(e.document,{formatter:oU,value:i,viewProps:e.viewProps})}});class a3{constructor(e){this.controller_=e}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(e){this.controller_.viewProps.set("disabled",e)}get title(){var e;return null!==(e=this.controller_.props.get("title"))&&void 0!==e?e:""}set title(e){this.controller_.props.set("title",e)}on(e,t){let i=t.bind(this);return this.controller_.emitter.on(e,()=>{i(new ru(this))}),this}}class a5 extends ru{constructor(e,t,i){super(e),this.cell=t,this.index=i}}class a6 extends rd{constructor(e){super(e),this.cellToApiMap_=new Map,this.emitter_=new sz;let t=this.controller.valueController;t.cellControllers.forEach((e,i)=>{let n=new a3(e);this.cellToApiMap_.set(e,n),e.emitter.on("click",()=>{let e=i%t.size[0],s=Math.floor(i/t.size[0]);this.emitter_.emit("click",{event:new a5(this,n,[e,s])})})})}cell(e,t){let i=this.controller.valueController,n=i.cellControllers[t*i.size[0]+e];return this.cellToApiMap_.get(n)}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e.event)}),this}}class a4{constructor(e,t){this.size=t.size;let[i,n]=this.size,s=[];for(let r=0;r{this.cellCs_.forEach(e=>{e.viewProps.set("disposed",!0)})}),this.view=new o9(e,{viewProps:this.viewProps,viewName:"btngrid"}),this.view.element.style.gridTemplateColumns=`repeat(${i}, 1fr)`,this.cellCs_.forEach(e=>{this.view.element.appendChild(e.view.element)})}get cellControllers(){return this.cellCs_}}class a9 extends rN{constructor(e,t){let i=t.valueController,n=new rK(e,{blade:t.blade,props:t.labelProps,valueController:i});super({blade:t.blade,view:n.view,viewProps:i.viewProps}),this.valueController=i,this.labelController=n}}const a8=rW({id:"buttongrid",type:"blade",accept(e){let t=rf(e,e=>({cells:e.required.function,size:e.required.array(e.required.number),view:e.required.constant("buttongrid"),label:e.optional.string}));return t?{params:t}:null},controller:e=>new a9(e.document,{blade:e.blade,labelProps:sH.fromObject({label:e.params.label}),valueController:new a4(e.document,{cellConfig:e.params.cells,size:e.params.size})}),api:e=>e.controller instanceof a9?new a6(e.controller):null});class a7 extends rd{get label(){return this.controller.labelController.props.get("label")}set label(e){this.controller.labelController.props.set("label",e)}get value(){return this.controller.valueController.value.rawValue}set value(e){this.controller.valueController.value.rawValue=e}on(e,t){let i=t.bind(this);return this.controller.valueController.value.emitter.on(e,e=>{i(new rc(this,e.rawValue,e.options.last))}),this}}class he{constructor(e=0,t=0,i=1,n=1){this.cache_=[],this.comps_=[e,t,i,n]}get x1(){return this.comps_[0]}get y1(){return this.comps_[1]}get x2(){return this.comps_[2]}get y2(){return this.comps_[3]}static isObject(e){return!sS(e)&&!!Array.isArray(e)&&"number"==typeof e[0]&&"number"==typeof e[1]&&"number"==typeof e[2]&&"number"==typeof e[3]}static equals(e,t){return e.x1===t.x1&&e.y1===t.y1&&e.x2===t.x2&&e.y2===t.y2}curve(e){var t,i,n,s;let r=0*(1-e)+this.x1*e,o=0*(1-e)+this.y1*e,l=this.x1*(1-e)+this.x2*e,a=this.y1*(1-e)+this.y2*e,h=this.x2*(1-e)+1*e,p=this.y2*(1-e)+1*e;return[(t=r*(1-e)+l*e,i=l*(1-e)+h*e,t*(1-e)+i*e),(n=o*(1-e)+a*e,s=a*(1-e)+p*e,n*(1-e)+s*e)]}y(e){if(0===this.cache_.length){let e=[];for(let t=0;t<100;t++)e.push(function(e,t){let i=.25,n=.5,s=-1;for(let r=0;r<20;r++){let[r,o]=e.curve(n);if(n+=i*(rMath.abs(t-r))break}return s}(this,ri(t,0,99,0,1)));this.cache_=e}return this.cache_[Math.round(ri(rs(e,0,1),0,1,0,99))]}toObject(){return[this.comps_[0],this.comps_[1],this.comps_[2],this.comps_[3]]}}const ht={toComponents:e=>e.toObject(),fromComponents:e=>new he(...e)};function hi(e){let t=rt(2);return`cubic-bezier(${e.toObject().map(e=>t(e)).join(", ")})`}const hn=[0,.5,.5,1];function hs(e){let t=e.match(/^cubic-bezier\s*\(\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*,\s*([0-9.]+)\s*\)$/);if(!t)return new he(...hn);let i=[t[1],t[2],t[3],t[4]].reduce((e,t)=>{if(!e)return null;let i=Number(t);return isNaN(i)?null:[...e,i]},[]);return new he(...null!=i?i:hn)}const hr=rO("cbz");class ho{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(hr()),t.viewProps.bindClassModifiers(this.element),t.foldable.bindExpandedClass(this.element,hr(void 0,"expanded")),rI(t.foldable,"completed",r$(this.element,hr(void 0,"cpl")));let i=e.createElement("div");i.classList.add(hr("h")),this.element.appendChild(i);let n=e.createElement("button");n.classList.add(hr("b")),t.viewProps.bindDisabled(n);let s=e.createElementNS(rP,"svg");s.innerHTML='',n.appendChild(s),i.appendChild(n),this.buttonElement=n;let r=e.createElement("div");if(r.classList.add(hr("t")),i.appendChild(r),this.textElement=r,"inline"===t.pickerLayout){let t=e.createElement("div");t.classList.add(hr("p")),this.element.appendChild(t),this.pickerElement=t}else this.pickerElement=null}}const hl=rO("cbzp");class ha{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(hl()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(hl("g")),this.element.appendChild(i),this.graphElement=i;let n=e.createElement("div");n.classList.add(hl("t")),this.element.appendChild(n),this.textElement=n}}function hh(e,t){let i=new MutationObserver(e=>{for(let n of e)"childList"===n.type&&n.addedNodes.forEach(e=>{e.contains(e)&&(t(),i.disconnect())})}),n=e.ownerDocument;i.observe(n.body,{attributes:!0,childList:!0,subtree:!0})}const hp=rO("cbzg");class hd{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(hp()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);let i=e.createElement("div");i.classList.add(hp("p")),this.element.appendChild(i),this.previewElement=i;let n=e.createElementNS(rP,"svg");n.classList.add(hp("g")),this.element.appendChild(n),this.svgElem_=n;let s=e.createElementNS(rP,"path");s.classList.add(hp("u")),this.svgElem_.appendChild(s),this.guideElem_=s;let r=e.createElementNS(rP,"polyline");r.classList.add(hp("l")),this.svgElem_.appendChild(r),this.lineElem_=r,this.handleElems_=[e.createElement("div"),e.createElement("div")],this.handleElems_.forEach(e=>{e.classList.add(hp("h")),this.element.appendChild(e)}),this.vectorElems_=[e.createElementNS(rP,"line"),e.createElementNS(rP,"line")],this.vectorElems_.forEach(e=>{e.classList.add(hp("v")),this.svgElem_.appendChild(e)}),this.value_=t.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.sel_=t.selection,this.handleElems_.forEach((e,t)=>{var i,n;rT(this.sel_,(i=e=>e===t,n=r$(e,hp("h","sel")),e=>n(i(e))))}),hh(this.element,()=>{this.refresh()})}getVertMargin_(e){return .25*e}valueToPosition(e,t){let i=this.element.getBoundingClientRect(),n=i.width,s=i.height,r=this.getVertMargin_(s);return{x:ri(e,0,1,0,n),y:ri(t,0,1,s-r,r)}}positionToValue(e,t){let i=this.element.getBoundingClientRect(),n=i.width,s=i.height,r=this.getVertMargin_(s);return{x:rs(ri(e,0,n,0,1),0,1),y:ri(t,s-r,r,0,1)}}refresh(){this.guideElem_.setAttributeNS(null,"d",[0,1].map(e=>{let t=this.valueToPosition(0,e),i=this.valueToPosition(1,e);return`M ${t.x},${t.y} L ${i.x},${i.y}`}).join(" "));let e=this.value_.rawValue,t=[],i=0;for(;;){let n=this.valueToPosition(...e.curve(i));if(t.push([n.x,n.y].join(",")),i>=1)break;i=Math.min(i+.05,1)}this.lineElem_.setAttributeNS(null,"points",t.join(" "));let n=e.toObject();[0,1].forEach(e=>{let t=this.valueToPosition(e,e),i=this.valueToPosition(n[2*e],n[2*e+1]),s=this.vectorElems_[e];s.setAttributeNS(null,"x1",String(t.x)),s.setAttributeNS(null,"y1",String(t.y)),s.setAttributeNS(null,"x2",String(i.x)),s.setAttributeNS(null,"y2",String(i.y));let r=this.handleElems_[e];r.style.left=`${i.x}px`,r.style.top=`${i.y}px`})}onValueChange_(){this.refresh()}}const hu=rO("cbzprv");class hc{constructor(e,t){this.stopped_=!0,this.startTime_=-1,this.onDispose_=this.onDispose_.bind(this),this.onTimer_=this.onTimer_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(hu()),t.viewProps.bindClassModifiers(this.element);let i=e.createElementNS(rP,"svg");i.classList.add(hu("g")),this.element.appendChild(i),this.svgElem_=i;let n=e.createElementNS(rP,"path");n.classList.add(hu("t")),this.svgElem_.appendChild(n),this.ticksElem_=n;let s=e.createElement("div");s.classList.add(hu("m")),this.element.appendChild(s),this.markerElem_=s,this.value_=t.value,this.value_.emitter.on("change",this.onValueChange_),t.viewProps.handleDispose(this.onDispose_),hh(this.element,()=>{this.refresh()})}play(){this.stop(),this.updateMarker_(0),this.markerElem_.classList.add(hu("m","a")),this.startTime_=(new Date).getTime()+400,this.stopped_=!1,requestAnimationFrame(this.onTimer_)}stop(){this.stopped_=!0,this.markerElem_.classList.remove(hu("m","a"))}onDispose_(){this.stop()}updateMarker_(e){let t=this.value_.rawValue.y(rs(e,0,1));this.markerElem_.style.left=100*t+"%"}refresh(){let e=this.svgElem_.getBoundingClientRect(),t=e.width,i=e.height,n=[],s=this.value_.rawValue;for(let e=0;e<24;e++){let r=ri(e,0,23,0,1),o=ri(s.y(r),0,1,0,t);n.push(`M ${o},0 v${i}`)}this.ticksElem_.setAttributeNS(null,"d",n.join(" "))}onTimer_(){if(null===this.startTime_)return;let e=(new Date).getTime()-this.startTime_;this.updateMarker_(e/1e3),e>1400&&this.stop(),this.stopped_||requestAnimationFrame(this.onTimer_)}onValueChange_(){this.refresh(),this.play()}}function hv(e,t,i,n){let s=i-e,r=n-t;return Math.sqrt(s*s+r*r)}class hm{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.keyScale_=t.keyScale,this.value=t.value,this.sel_=sU(0),this.viewProps=t.viewProps,this.view=new hd(e,{selection:this.sel_,value:this.value,viewProps:this.viewProps}),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_),this.prevView_=new hc(e,{value:this.value,viewProps:this.viewProps}),this.prevView_.element.addEventListener("mousedown",e=>{e.stopImmediatePropagation(),e.preventDefault(),this.prevView_.play()}),this.view.previewElement.appendChild(this.prevView_.element);let i=new oX(this.view.element);i.emitter.on("down",this.onPointerDown_),i.emitter.on("move",this.onPointerMove_),i.emitter.on("up",this.onPointerUp_)}refresh(){this.view.refresh(),this.prevView_.refresh(),this.prevView_.play()}updateValue_(e,t,i){let n=this.sel_.rawValue,s=this.value.rawValue.toObject(),r=this.view.positionToValue(e.x,e.y),o=t?function(e,t,i,n){let s=hv(e,t,i,n),r=Math.round(Math.atan2(n-t,i-e)/(Math.PI/4))*Math.PI/4;return{x:e+Math.cos(r)*s,y:t+Math.sin(r)*s}}(n,n,r.x,r.y):r;s[2*n]=o.x,s[2*n+1]=o.y,this.value.setRawValue(new he(...s),i)}onPointerDown_(e){let t=e.data;if(!t.point)return;let i=this.value.rawValue,n=this.view.valueToPosition(i.x1,i.y1),s=hv(t.point.x,t.point.y,n.x,n.y),r=this.view.valueToPosition(i.x2,i.y2),o=hv(t.point.x,t.point.y,r.x,r.y);this.sel_.rawValue=s<=o?0:1,this.updateValue_(t.point,e.shiftKey,{forceEmit:!1,last:!1})}onPointerMove_(e){let t=e.data;t.point&&this.updateValue_(t.point,e.shiftKey,{forceEmit:!1,last:!1})}onPointerUp_(e){let t=e.data;t.point&&this.updateValue_(t.point,e.shiftKey,{forceEmit:!0,last:!0})}onKeyDown_(e){oJ(e.key)&&e.preventDefault();let t=this.sel_.rawValue,i=this.value.rawValue.toObject(),n=this.keyScale_.rawValue;i[2*t]+=o$(n,oG(e)),i[2*t+1]+=o$(n,oq(e)),this.value.setRawValue(new he(...i),{forceEmit:!1,last:!1})}onKeyUp_(e){oJ(e.key)&&e.preventDefault();let t=this.keyScale_.rawValue,i=o$(t,oG(e)),n=o$(t,oq(e));0===i&&0===n||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class hb{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new ha(e,{viewProps:this.viewProps}),this.gc_=new hm(e,{keyScale:t.axis.textProps.value("keyScale"),value:this.value,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.gc_.view.element);let i=Object.assign(Object.assign({},t.axis),{constraint:new sq({max:1,min:0})}),n=Object.assign(Object.assign({},t.axis),{constraint:void 0});this.tc_=new ax(e,{assembly:ht,axes:[i,n,i,n],parser:s7,value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element)}get allFocusableElements(){return[this.gc_.view.element,...this.tc_.view.textViews.map(e=>e.inputElement)]}refresh(){this.gc_.refresh()}}class hg{constructor(e,t){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=r8.create(t.expanded),this.view=new ho(e,{foldable:this.foldable_,pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("blur",this.onButtonBlur_),this.view.buttonElement.addEventListener("click",this.onButtonClick_),this.tc_=new oR(e,{parser:hs,props:sH.fromObject({formatter:hi}),value:this.value,viewProps:this.viewProps}),this.view.textElement.appendChild(this.tc_.view.element),this.popC_="popup"===t.pickerLayout?new oI(e,{viewProps:this.viewProps}):null;let i=new hb(e,{axis:t.axis,value:this.value,viewProps:this.viewProps});i.allFocusableElements.forEach(e=>{e.addEventListener("blur",this.onPopupChildBlur_),e.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=i,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),rT(this.popC_.shows,e=>{e&&i.refresh()}),oH({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:e=>e,backward:(e,t)=>t})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),oe(this.foldable_,this.view.pickerElement))}onButtonBlur_(e){if(!this.popC_)return;let t=e.relatedTarget;t&&this.popC_.view.element.contains(t)||(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;let t=this.popC_.view.element,i=rj(e);i&&t.contains(i)||i&&i===this.view.buttonElement&&!rk(t.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_&&"Escape"===e.key&&(this.popC_.shows.rawValue=!1)}}const h_=rW({id:"cubicbezier",type:"blade",accept(e){let t=rf(e,e=>({value:e.required.array(e.required.number),view:e.required.constant("cubicbezier"),expanded:e.optional.boolean,label:e.optional.string,picker:e.optional.custom(e=>"inline"===e||"popup"===e?e:void 0)}));return t?{params:t}:null},controller(e){var t,i;let n=sU(new he(...e.params.value),{constraint:new aw({assembly:ht,components:[0,1,2,3].map(e=>e%2==0?new sq({min:0,max:1}):void 0)}),equals:he.equals}),s=new hg(e.document,{axis:{textProps:sH.fromObject({keyScale:.1,pointerScale:.01,formatter:rt(2)})},expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",value:n,viewProps:e.viewProps});return new rF(e.document,{blade:e.blade,props:sH.fromObject({label:e.params.label}),value:n,valueController:s})},api:e=>e.controller instanceof rF&&e.controller.valueController instanceof hg?new a7(e.controller):null});class hw extends rd{begin(){this.controller.valueController.begin()}end(){this.controller.valueController.end()}}class hf{constructor(){this.start_=null,this.duration_=0,this.fps_=null,this.frameCount_=0,this.timestamps_=[]}get duration(){return this.duration_}get fps(){return this.fps_}begin(e){this.start_=e.getTime()}calculateFps_(e){if(0===this.timestamps_.length)return null;let t=this.timestamps_[0];return 1e3*(this.frameCount_-t.frameCount)/(e-t.time)}compactTimestamps_(){if(this.timestamps_.length<=20)return;let e=this.timestamps_.length-20;this.timestamps_.splice(0,e);let t=this.timestamps_[0].frameCount;this.timestamps_.forEach(e=>{e.frameCount-=t}),this.frameCount_-=t}end(e){if(null===this.start_)return;let t=e.getTime();this.duration_=t-this.start_,this.start_=null,this.fps_=this.calculateFps_(t),this.timestamps_.push({frameCount:this.frameCount_,time:t}),++this.frameCount_,this.compactTimestamps_()}}const hy=rO("fps");class hx{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(hy()),t.viewProps.bindClassModifiers(this.element),this.graphElement=e.createElement("div"),this.graphElement.classList.add(hy("g")),this.element.appendChild(this.graphElement);let i=e.createElement("div");i.classList.add(hy("l")),this.element.appendChild(i);let n=e.createElement("span");n.classList.add(hy("v")),n.textContent="--",i.appendChild(n),this.valueElement=n;let s=e.createElement("span");s.classList.add(hy("u")),s.textContent="FPS",i.appendChild(s)}}class hC{constructor(e,t){this.stopwatch_=new hf,this.onTick_=this.onTick_.bind(this),this.ticker_=t.ticker,this.ticker_.emitter.on("tick",this.onTick_),this.value_=t.value,this.viewProps=t.viewProps,this.view=new hx(e,{viewProps:this.viewProps}),this.graphC_=new a0(e,{formatter:rt(0),props:sH.fromObject({max:t.maxValue,min:t.minValue}),rows:t.rows,value:this.value_,viewProps:this.viewProps}),this.view.graphElement.appendChild(this.graphC_.view.element),this.viewProps.handleDispose(()=>{this.graphC_.viewProps.set("disposed",!0),this.ticker_.dispose()})}begin(){this.stopwatch_.begin(new Date)}end(){this.stopwatch_.end(new Date)}onTick_(){let e=this.stopwatch_.fps;if(null!==e){let t=this.value_.rawValue;this.value_.rawValue=function(e,t){let i=[...function(e){let t=e.indexOf(void 0);return t<0?e:e.slice(0,t)}(e),t];return i.length>e.length?i.splice(0,i.length-e.length):rU(i,e.length),i}(t,e),this.view.valueElement.textContent=e.toFixed(0)}}}class hP extends rN{constructor(e,t){let i=t.valueController,n=new rK(e,{blade:t.blade,props:t.labelProps,valueController:i});super({blade:t.blade,view:n.view,viewProps:i.viewProps}),this.valueController=i,this.labelController=n}}const hE=rW({id:"fpsgraph",type:"blade",accept(e){let t=rf(e,e=>({view:e.required.constant("fpsgraph"),interval:e.optional.number,label:e.optional.string,rows:e.optional.number,max:e.optional.number,min:e.optional.number}));return t?{params:t}:null},controller(e){var t,i,n,s,r;let o=null!==(t=e.params.interval)&&void 0!==t?t:500;return new hP(e.document,{blade:e.blade,labelProps:sH.fromObject({label:e.params.label}),valueController:new hC(e.document,{rows:null!==(i=e.params.rows)&&void 0!==i?i:2,maxValue:null!==(n=e.params.max)&&void 0!==n?n:90,minValue:null!==(s=e.params.min)&&void 0!==s?s:0,ticker:(r=e.document,0===o?new oy:new ox(r,null!=o?o:aH.defaultInterval)),value:sU(function(e){let t=[];return rU(t,80),t}(0)),viewProps:e.viewProps})})},api:e=>e.controller instanceof hP?new hw(e.controller):null});class hk{constructor(e,t){this.min=e,this.max=t}static isObject(e){if("object"!=typeof e||null===e)return!1;let t=e.min,i=e.max;return"number"==typeof t&&"number"==typeof i}static equals(e,t){return e.min===t.min&&e.max===t.max}get length(){return this.max-this.min}toObject(){return{min:this.min,max:this.max}}}const hV={fromComponents:e=>new hk(e[0],e[1]),toComponents:e=>[e.min,e.max]};class hL{constructor(e){this.edge=e}constrain(e){var t,i,n,s,r,o,l,a;if(e.min<=e.max)return new hk(null!==(i=null===(t=this.edge)||void 0===t?void 0:t.constrain(e.min))&&void 0!==i?i:e.min,null!==(s=null===(n=this.edge)||void 0===n?void 0:n.constrain(e.max))&&void 0!==s?s:e.max);let h=(e.min+e.max)/2;return new hk(null!==(o=null===(r=this.edge)||void 0===r?void 0:r.constrain(h))&&void 0!==o?o:h,null!==(a=null===(l=this.edge)||void 0===l?void 0:l.constrain(h))&&void 0!==a?a:h)}}const hM=rO("rsltxt");class hD{constructor(e,t){this.sliderView_=t.sliderView,this.textView_=t.textView,this.element=e.createElement("div"),this.element.classList.add(hM());let i=e.createElement("div");i.classList.add(hM("s")),i.appendChild(this.sliderView_.element),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(hM("t")),n.appendChild(this.textView_.element),this.element.appendChild(n)}}const hS=rO("rsl");class hj{constructor(e,t){this.onSliderPropsChange_=this.onSliderPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.sliderProps_=t.sliderProps,this.sliderProps_.emitter.on("change",this.onSliderPropsChange_),this.element=e.createElement("div"),this.element.classList.add(hS()),t.viewProps.bindClassModifiers(this.element),this.value_=t.value,this.value_.emitter.on("change",this.onValueChange_);let i=e.createElement("div");i.classList.add(hS("t")),this.element.appendChild(i),this.trackElement=i;let n=e.createElement("div");n.classList.add(hS("b")),i.appendChild(n),this.barElement=n;let s=["min","max"].map(t=>{let n=e.createElement("div");return n.classList.add(hS("k"),hS("k",t)),i.appendChild(n),n});this.knobElements=[s[0],s[1]],this.update_()}valueToX_(e){return 100*rs(ri(e,this.sliderProps_.get("min"),this.sliderProps_.get("max"),0,1),0,1)}update_(){let e=this.value_.rawValue;0===e.length?this.element.classList.add(hS(void 0,"zero")):this.element.classList.remove(hS(void 0,"zero"));let t=[this.valueToX_(e.min),this.valueToX_(e.max)];this.barElement.style.left=`${t[0]}%`,this.barElement.style.right=100-t[1]+"%",this.knobElements.forEach((e,i)=>{e.style.left=`${t[i]}%`})}onSliderPropsChange_(){this.update_()}onValueChange_(){this.update_()}}class hT{constructor(e,t){this.grabbing_=null,this.grabOffset_=0,this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.sliderProps=t.sliderProps,this.viewProps=t.viewProps,this.value=t.value,this.view=new hj(e,{sliderProps:this.sliderProps,value:this.value,viewProps:t.viewProps});let i=new oX(this.view.trackElement);i.emitter.on("down",this.onPointerDown_),i.emitter.on("move",this.onPointerMove_),i.emitter.on("up",this.onPointerUp_)}ofs_(){return"min"===this.grabbing_?this.view.knobElements[0].getBoundingClientRect().width/2:"max"===this.grabbing_?-this.view.knobElements[1].getBoundingClientRect().width/2:0}valueFromData_(e){return e.point?ri((e.point.x+this.ofs_())/e.bounds.width,0,1,this.sliderProps.get("min"),this.sliderProps.get("max")):null}onPointerDown_(e){if(!e.data.point)return;let t=e.data.point.x/e.data.bounds.width,i=this.value.rawValue,n=this.sliderProps.get("min"),s=this.sliderProps.get("max"),r=ri(i.min,n,s,0,1),o=ri(i.max,n,s,0,1);.025>=Math.abs(o-t)?this.grabbing_="max":.025>=Math.abs(r-t)?this.grabbing_="min":t>=r&&t<=o?(this.grabbing_="length",this.grabOffset_=ri(t-r,0,1,0,s-n)):to&&(this.grabbing_="max",this.onPointerMove_(e))}applyPointToValue_(e,t){let i=this.valueFromData_(e);if(null===i)return;let n=this.sliderProps.get("min"),s=this.sliderProps.get("max");if("min"===this.grabbing_)this.value.setRawValue(new hk(i,this.value.rawValue.max),t);else if("max"===this.grabbing_)this.value.setRawValue(new hk(this.value.rawValue.min,i),t);else if("length"===this.grabbing_){let e=this.value.rawValue.length,r=i-this.grabOffset_,o=r+e;rs&&(r=s-e,o=s),this.value.setRawValue(new hk(r,o),t)}}onPointerMove_(e){this.applyPointToValue_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.applyPointToValue_(e.data,{forceEmit:!0,last:!0}),this.grabbing_=null}}class hI{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sc_=new hT(e,t);let i={constraint:t.constraint,textProps:t.textProps};this.tc_=new ax(e,{assembly:hV,axes:[i,i],parser:t.parser,value:this.value,viewProps:t.viewProps}),this.view=new hD(e,{sliderView:this.sc_.view,textView:this.tc_.view})}get textController(){return this.tc_}}function hO(e){return hk.isObject(e)?new hk(e.min,e.max):new hk(0,0)}function hA(e,t){e.writeProperty("max",t.max),e.writeProperty("min",t.min)}const hR=rW({id:"input-interval",type:"input",accept:(e,t)=>{if(!hk.isObject(e))return null;let i=rf(t,e=>Object.assign(Object.assign({},rh(e)),{readonly:e.optional.constant(!1)}));return i?{initialValue:new hk(e.min,e.max),params:i}:null},binding:{reader:e=>hO,constraint:e=>(function(e){let t=[],i=rl(e);i&&t.push(i);let n=ro(e);return n&&t.push(n),new hL(new oC(t))})(e.params),equals:hk.equals,writer:e=>hA},controller(e){let t=e.value,i=e.constraint;if(!(i instanceof hL))throw sR.shouldNeverHappen();let n=(t.rawValue.min+t.rawValue.max)/2,s=sH.fromObject(ra(e.params,n)),r=i.edge&&oP(i.edge,s$);if(r)return new hI(e.document,{constraint:i.edge,parser:s7,sliderProps:new sH({keyScale:s.value("keyScale"),max:r.values.value("max"),min:r.values.value("min")}),textProps:s,value:t,viewProps:e.viewProps});let o={constraint:i.edge,textProps:s};return new ax(e.document,{assembly:hV,axes:[o,o],parser:s7,value:t,viewProps:e.viewProps})}});class hK{constructor(e){this.controller_=e}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(e){this.controller_.viewProps.set("disabled",e)}get title(){var e;return null!==(e=this.controller_.props.get("title"))&&void 0!==e?e:""}set title(e){this.controller_.props.set("title",e)}}class hz extends rc{constructor(e,t,i,n,s){super(e,n,s),this.cell=t,this.index=i}}class hB extends rd{constructor(e){super(e),this.cellToApiMap_=new Map,this.controller.valueController.cellControllers.forEach(e=>{let t=new hK(e);this.cellToApiMap_.set(e,t)})}get value(){return this.controller.value}cell(e,t){let i=this.controller.valueController,n=i.cellControllers[t*i.size[0]+e];return this.cellToApiMap_.get(n)}on(e,t){let i=t.bind(this);this.controller.value.emitter.on(e,e=>{let t=this.controller.valueController,n=t.findCellByValue(e.rawValue);if(!n)return;let s=this.cellToApiMap_.get(n);if(!s)return;let r=t.cellControllers.indexOf(n);i(new hz(this,s,[r%t.size[0],Math.floor(r/t.size[0])],e.rawValue))})}}const hN=rO("rad");class hF{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(hN()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("label");i.classList.add(hN("l")),this.element.appendChild(i);let n=e.createElement("input");n.classList.add(hN("i")),n.name=t.name,n.type="radio",t.viewProps.bindDisabled(n),i.appendChild(n),this.inputElement=n;let s=e.createElement("div");s.classList.add(hN("b")),i.appendChild(s);let r=e.createElement("div");r.classList.add(hN("t")),s.appendChild(r),rI(t.props,"title",e=>{r.textContent=e})}}class hU{constructor(e,t){this.props=t.props,this.viewProps=t.viewProps,this.view=new hF(e,{name:t.name,props:this.props,viewProps:this.viewProps})}}class hH{constructor(e,t){this.cellCs_=[],this.cellValues_=[],this.onCellInputChange_=this.onCellInputChange_.bind(this),this.size=t.size;let[i,n]=this.size;for(let s=0;s{let t=this.findCellByValue(e);t&&(t.view.inputElement.checked=!0)}),this.viewProps=ol.create(),this.view=new o9(e,{viewProps:this.viewProps,viewName:"radgrid"}),this.view.element.style.gridTemplateColumns=`repeat(${i}, 1fr)`,this.cellCs_.forEach(e=>{e.view.inputElement.addEventListener("change",this.onCellInputChange_),this.view.element.appendChild(e.view.element)})}get cellControllers(){return this.cellCs_}findCellByValue(e){let t=this.cellValues_.findIndex(t=>t===e);return t<0?null:this.cellCs_[t]}onCellInputChange_(e){let t=e.currentTarget,i=this.cellCs_.findIndex(e=>e.view.inputElement===t);i<0||(this.value.rawValue=this.cellValues_[i])}}const h$=rW({id:"radiogrid",type:"blade",accept(e){let t=rf(e,e=>({cells:e.required.function,groupName:e.required.string,size:e.required.array(e.required.number),value:e.required.raw,view:e.required.constant("radiogrid"),label:e.optional.string}));return t?{params:t}:null},controller(e){let t=sU(e.params.value);return new rF(e.document,{blade:e.blade,props:sH.fromObject({label:e.params.label}),value:t,valueController:new hH(e.document,{groupName:e.params.groupName,cellConfig:e.params.cells,size:e.params.size,value:t})})},api:e=>e.controller instanceof rF&&e.controller.valueController instanceof hH?new hB(e.controller):null});function hq(e){return rW({id:"input-radiogrid",type:"input",accept(t,i){if(!e.isType(t))return null;let n=rf(i,e=>({cells:e.required.function,groupName:e.required.string,size:e.required.array(e.required.number),view:e.required.constant("radiogrid")}));return n?{initialValue:t,params:n}:null},binding:e.binding,controller:e=>new hH(e.document,{cellConfig:e.params.cells,groupName:e.params.groupName,size:e.params.size,value:e.value})})}const hG=hq({isType:e=>"number"==typeof e,binding:{reader:e=>re,writer:e=>li}}),hJ=hq({isType:e=>"string"==typeof e,binding:{reader:e=>oF,writer:e=>li}}),hY="essentials",hX='.tp-cbzgv,.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-radv_b,.tp-rslv_k,.tp-cbzv_b{background-color:var(--btn-bg);border-radius:var(--bld-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--cnt-usz);line-height:var(--cnt-usz);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-radv_b:hover,.tp-rslv_k:hover,.tp-cbzv_b:hover{background-color:var(--btn-bg-h)}.tp-radv_b:focus,.tp-rslv_k:focus,.tp-cbzv_b:focus{background-color:var(--btn-bg-f)}.tp-radv_b:active,.tp-rslv_k:active,.tp-cbzv_b:active{background-color:var(--btn-bg-a)}.tp-radv_b:disabled,.tp-rslv_k:disabled,.tp-cbzv_b:disabled{opacity:.5}.tp-cbzgv{background-color:var(--in-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--cnt-usz);line-height:var(--cnt-usz);min-width:0;width:100%}.tp-cbzgv:hover{background-color:var(--in-bg-h)}.tp-cbzgv:focus{background-color:var(--in-bg-f)}.tp-cbzgv:active{background-color:var(--in-bg-a)}.tp-cbzgv:disabled{opacity:.5}.tp-btngridv{border-radius:var(--bld-br);display:grid;overflow:hidden;gap:2px}.tp-btngridv.tp-v-disabled{opacity:.5}.tp-btngridv .tp-btnv_b:disabled{opacity:1}.tp-btngridv .tp-btnv_b:disabled .tp-btnv_t{opacity:.5}.tp-btngridv .tp-btnv_b{border-radius:0}.tp-cbzv{position:relative}.tp-cbzv_h{display:flex}.tp-cbzv_b{margin-right:4px;position:relative;width:var(--cnt-usz)}.tp-cbzv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-cbzv_b svg path{stroke:var(--bs-bg);stroke-width:2}.tp-cbzv_t{flex:1}.tp-cbzv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-cbzv.tp-cbzv-expanded .tp-cbzv_p{margin-top:var(--cnt-usp);opacity:1}.tp-cbzv.tp-cbzv-cpl .tp-cbzv_p{overflow:visible}.tp-cbzv .tp-popv{left:calc(-1*var(--cnt-hp));position:absolute;right:calc(-1*var(--cnt-hp));top:var(--cnt-usz)}.tp-cbzpv_t{margin-top:var(--cnt-usp)}.tp-cbzgv{height:auto;overflow:hidden;position:relative}.tp-cbzgv.tp-v-disabled{opacity:.5}.tp-cbzgv_p{left:16px;position:absolute;right:16px;top:0}.tp-cbzgv_g{cursor:pointer;display:block;height:calc(var(--cnt-usz)*5);width:100%}.tp-cbzgv_u{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_l{fill:rgba(0,0,0,0);stroke:var(--in-fg)}.tp-cbzgv_v{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-cbzgv_h{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;pointer-events:none;position:absolute;width:4px}.tp-cbzgv:focus .tp-cbzgv_h-sel{background-color:var(--in-fg);border-width:0}.tp-cbzprvv{cursor:pointer;height:4px;padding:4px 0;position:relative}.tp-cbzprvv_g{display:block;height:100%;overflow:visible;width:100%}.tp-cbzprvv_t{opacity:.5;stroke:var(--mo-fg)}.tp-cbzprvv_m{background-color:var(--mo-fg);border-radius:50%;height:4px;margin-left:-2px;margin-top:-2px;opacity:0;position:absolute;top:50%;transition:opacity .2s ease-out;width:4px}.tp-cbzprvv_m.tp-cbzprvv_m-a{opacity:1}.tp-fpsv{position:relative}.tp-fpsv_l{bottom:4px;color:var(--mo-fg);line-height:1;right:4px;pointer-events:none;position:absolute}.tp-fpsv_u{margin-left:.2em;opacity:.7}.tp-rslv{cursor:pointer;padding-left:8px;padding-right:8px}.tp-rslv.tp-v-disabled{opacity:.5}.tp-rslv_t{height:calc(var(--cnt-usz));position:relative}.tp-rslv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:-4px;right:-4px}.tp-rslv_b{bottom:0;top:0;position:absolute}.tp-rslv_b::before{background-color:var(--in-fg);content:"";height:2px;margin-top:-1px;position:absolute;top:50%;left:0;right:0}.tp-rslv_k{height:calc(var(--cnt-usz) - 8px);margin-top:calc((var(--cnt-usz) - 8px)/-2);position:absolute;top:50%;width:8px}.tp-rslv_k.tp-rslv_k-min{margin-left:-8px}.tp-rslv_k.tp-rslv_k-max{margin-left:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-min{border-bottom-right-radius:0;border-top-right-radius:0}.tp-rslv.tp-rslv-zero .tp-rslv_k.tp-rslv_k-max{border-bottom-left-radius:0;border-top-left-radius:0}.tp-rsltxtv{display:flex}.tp-rsltxtv_s{flex:1}.tp-rsltxtv_t{flex:1;margin-left:4px}.tp-radv_l{display:block;position:relative}.tp-radv_i{left:0;opacity:0;position:absolute;top:0}.tp-radv_b{opacity:.5}.tp-radv_i:hover+.tp-radv_b{background-color:var(--btn-bg-h)}.tp-radv_i:focus+.tp-radv_b{background-color:var(--btn-bg-f)}.tp-radv_i:active+.tp-radv_b{background-color:var(--btn-bg-a)}.tp-radv_i:checked+.tp-radv_b{opacity:1}.tp-radv_t{bottom:0;color:inherit;left:0;overflow:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0}.tp-radv_i:disabled+.tp-radv_b>.tp-radv_t{opacity:.5}.tp-radgridv{border-radius:var(--bld-br);display:grid;overflow:hidden;gap:2px}.tp-radgridv.tp-v-disabled{opacity:.5}.tp-radgridv .tp-radv_b{border-radius:0}',hZ=[a8,h_,hE,hR,h$,hq({isType:e=>"boolean"==typeof e,binding:{reader:e=>oK,writer:e=>li}}),hG,hJ];var hW={};function hQ(e){return null==e}function h0(e){return null!==e&&"object"==typeof e}function h1(e){return null!==e&&"object"==typeof e}function h2(e,t){if(e.length!==t.length)return!1;for(let i=0;i{let s=e[n],r=t[n];return h1(s)&&h1(r)?Object.assign(Object.assign({},i),{[n]:h3(s,r)}):Object.assign(Object.assign({},i),{[n]:n in t?r:s})},{})}t(hW,"id",()=>vm),t(hW,"css",()=>vb),t(hW,"plugins",()=>vg);const h5={alreadydisposed:()=>"View has been already disposed",invalidparams:e=>`Invalid parameters for '${e.name}'`,nomatchingcontroller:e=>`No matching controller for '${e.key}'`,nomatchingview:e=>`No matching view for '${JSON.stringify(e.params)}'`,notbindable:()=>"Value is not bindable",notcompatible:e=>`Not compatible with plugin '${e.id}'`,propertynotfound:e=>`Property '${e.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class h6{static alreadyDisposed(){return new h6({type:"alreadydisposed"})}static notBindable(){return new h6({type:"notbindable"})}static notCompatible(e,t){return new h6({type:"notcompatible",context:{id:`${e}.${t}`}})}static propertyNotFound(e){return new h6({type:"propertynotfound",context:{name:e}})}static shouldNeverHappen(){return new h6({type:"shouldneverhappen"})}constructor(e){var t;this.message=null!==(t=h5[e.type](e.context))&&void 0!==t?t:"Unexpected error",this.name=this.constructor.name,this.stack=Error(this.message).stack,this.type=e.type}toString(){return this.message}}class h4{constructor(e,t){this.obj_=e,this.key=t}static isBindable(e){return null!==e&&("object"==typeof e||"function"==typeof e)}read(){return this.obj_[this.key]}write(e){this.obj_[this.key]=e}writeProperty(e,t){let i=this.read();if(!h4.isBindable(i))throw h6.notBindable();if(!(e in i))throw h6.propertyNotFound(e);i[e]=t}}class h9{constructor(){this.observers_={}}on(e,t,i){var n;let s=this.observers_[e];return s||(s=this.observers_[e]=[]),s.push({handler:t,key:null!==(n=null==i?void 0:i.key)&&void 0!==n?n:t}),this}off(e,t){let i=this.observers_[e];return i&&(this.observers_[e]=i.filter(e=>e.key!==t)),this}emit(e,t){let i=this.observers_[e];i&&i.forEach(e=>{e.handler(t)})}}class h8{constructor(e,t){var i;this.constraint_=null==t?void 0:t.constraint,this.equals_=null!==(i=null==t?void 0:t.equals)&&void 0!==i?i:(e,t)=>e===t,this.emitter=new h9,this.rawValue_=e}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){let i=null!=t?t:{forceEmit:!1,last:!0},n=this.constraint_?this.constraint_.constrain(e):e,s=this.rawValue_;(!this.equals_(s,n)||i.forceEmit)&&(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=n,this.emitter.emit("change",{options:i,previousRawValue:s,rawValue:n,sender:this}))}}class h7{constructor(e){this.emitter=new h9,this.value_=e}get rawValue(){return this.value_}set rawValue(e){this.setRawValue(e,{forceEmit:!1,last:!0})}setRawValue(e,t){let i=null!=t?t:{forceEmit:!1,last:!0},n=this.value_;(n!==e||i.forceEmit)&&(this.emitter.emit("beforechange",{sender:this}),this.value_=e,this.emitter.emit("change",{options:i,previousRawValue:n,rawValue:this.value_,sender:this}))}}class pe{constructor(e){this.emitter=new h9,this.onValueBeforeChange_=this.onValueBeforeChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.value_=e,this.value_.emitter.on("beforechange",this.onValueBeforeChange_),this.value_.emitter.on("change",this.onValueChange_)}get rawValue(){return this.value_.rawValue}onValueBeforeChange_(e){this.emitter.emit("beforechange",Object.assign(Object.assign({},e),{sender:this}))}onValueChange_(e){this.emitter.emit("change",Object.assign(Object.assign({},e),{sender:this}))}}function pt(e,t){let i=null==t?void 0:t.constraint,n=null==t?void 0:t.equals;return i||n?new h8(e,t):new h7(e)}class pi{constructor(e){for(let t in this.emitter=new h9,this.valMap_=e,this.valMap_)this.valMap_[t].emitter.on("change",()=>{this.emitter.emit("change",{key:t,sender:this})})}static createCore(e){return Object.keys(e).reduce((t,i)=>Object.assign(t,{[i]:pt(e[i])}),{})}static fromObject(e){return new pi(this.createCore(e))}get(e){return this.valMap_[e].rawValue}set(e,t){this.valMap_[e].rawValue=t}value(e){return this.valMap_[e]}}class pn{constructor(e){this.values=pi.fromObject({max:e.max,min:e.min})}constrain(e){let t=this.values.get("max");return Math.min(Math.max(e,this.values.get("min")),t)}}class ps{constructor(e){this.values=pi.fromObject({max:e.max,min:e.min})}constrain(e){let t=this.values.get("max"),i=this.values.get("min"),n=e;return hQ(i)||(n=Math.max(n,i)),hQ(t)||(n=Math.min(n,t)),n}}class pr{constructor(e,t=0){this.step=e,this.origin=t}constrain(e){let t=this.origin%this.step,i=Math.round((e-t)/this.step);return t+i*this.step}}class po{constructor(e){this.text=e}evaluate(){return Number(this.text)}toString(){return this.text}}const pl={"**":(e,t)=>Math.pow(e,t),"*":(e,t)=>e*t,"/":(e,t)=>e/t,"%":(e,t)=>e%t,"+":(e,t)=>e+t,"-":(e,t)=>e-t,"<<":(e,t)=>e<>":(e,t)=>e>>t,">>>":(e,t)=>e>>>t,"&":(e,t)=>e&t,"^":(e,t)=>e^t,"|":(e,t)=>e|t};class pa{constructor(e,t,i){this.left=t,this.operator=e,this.right=i}evaluate(){let e=pl[this.operator];if(!e)throw Error(`unexpected binary operator: '${this.operator}`);return e(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const ph={"+":e=>e,"-":e=>-e,"~":e=>~e};class pp{constructor(e,t){this.operator=e,this.expression=t}evaluate(){let e=ph[this.operator];if(!e)throw Error(`unexpected unary operator: '${this.operator}`);return e(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function pd(e){return(t,i)=>{for(let n=0;n>>",">>"],["&"],["^"],["|"]].reduce((e,t)=>(i,n)=>{let s=e(i,n);if(!s)return null;n=s.cursor;let r=s.evaluable;for(;;){let s=function(e,t,i){i+=pu(t,i).length;let n=e.filter(e=>t.startsWith(e,i))[0];return n?(i+=n.length,{cursor:i+=pu(t,i).length,operator:n}):null}(t,i,n);if(!s)break;let o=e(i,n=s.cursor);if(!o)return null;n=o.cursor,r=new pa(s.operator,r,o.evaluable)}return r?{cursor:n,evaluable:r}:null},function e(t,i){var n,s;let r=null!==(s=function(e,t){let i=p_(e,t);return(t+=i.length,""===i)?null:{evaluable:new po(i),cursor:t}}(t,n=i))&&void 0!==s?s:function(e,t){let i=e.substr(t,1);if(t+=i.length,"("!==i)return null;let n=pf(e,t);if(!n)return null;t=n.cursor,t+=pu(e,t).length;let s=e.substr(t,1);return(t+=s.length,")"!==s)?null:{evaluable:n.evaluable,cursor:t}}(t,n);if(r)return r;let o=t.substr(i,1);if(i+=o.length,"+"!==o&&"-"!==o&&"~"!==o)return null;let l=e(t,i);return l?{cursor:i=l.cursor,evaluable:new pp(o,l.evaluable)}:null});function pf(e,t){return t+=pu(e,t).length,pw(e,t)}function py(e){var t;let i=function(e){let t=pf(e,0);return t&&t.cursor+pu(e,t.cursor).length===e.length?t.evaluable:null}(e);return null!==(t=null==i?void 0:i.evaluate())&&void 0!==t?t:null}function px(e){if("number"==typeof e)return e;if("string"==typeof e){let t=py(e);if(!hQ(t))return t}return 0}function pC(e){return t=>t.toFixed(Math.max(Math.min(e,20),0))}function pP(e,t,i,n,s){return n+(e-t)/(i-t)*(s-n)}function pE(e){return String(e.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function pk(e,t,i){return Math.min(Math.max(e,t),i)}function pV(e){var t;return null!==(t=e.step)&&void 0!==t?t:1}function pL(e,t){return hQ(e.step)?null:new pr(e.step,t)}function pM(e){return hQ(e.max)||hQ(e.min)?hQ(e.max)&&hQ(e.min)?null:new ps({max:e.max,min:e.min}):new pn({max:e.max,min:e.min})}function pD(e,t){var i,n,s;return{formatter:null!==(i=e.format)&&void 0!==i?i:pC(hQ(e.step)?Math.max(pE(t),2):pE(e.step)),keyScale:null!==(n=e.keyScale)&&void 0!==n?n:pV(e),pointerScale:null!==(s=e.pointerScale)&&void 0!==s?s:function(e,t){var i;let n=Math.abs(null!==(i=e.step)&&void 0!==i?i:t);return 0===n?.1:Math.pow(10,Math.floor(Math.log10(n))-1)}(e,t)}}function pS(e){return{format:e.optional.function,keyScale:e.optional.number,max:e.optional.number,min:e.optional.number,pointerScale:e.optional.number,step:e.optional.number}}function pj(e){return{constraint:e.constraint,textProps:pi.fromObject(pD(e.params,e.initialValue))}}class pT{constructor(e){this.controller=e}get element(){return this.controller.view.element}get disabled(){return this.controller.viewProps.get("disabled")}set disabled(e){this.controller.viewProps.set("disabled",e)}get hidden(){return this.controller.viewProps.get("hidden")}set hidden(e){this.controller.viewProps.set("hidden",e)}dispose(){this.controller.viewProps.set("disposed",!0)}importState(e){return this.controller.importState(e)}exportState(){return this.controller.exportState()}}class pI{constructor(e){this.target=e}}class pO extends pI{constructor(e,t,i){super(e),this.value=t,this.last=null==i||i}}class pA extends pI{constructor(e,t){super(e),this.expanded=t}}class pR extends pI{constructor(e,t){super(e),this.index=t}}class pK extends pI{constructor(e,t){super(e),this.native=t}}class pz extends pT{constructor(e){super(e),this.onValueChange_=this.onValueChange_.bind(this),this.emitter_=new h9,this.controller.value.emitter.on("change",this.onValueChange_)}get label(){return this.controller.labelController.props.get("label")}set label(e){this.controller.labelController.props.set("label",e)}get key(){return this.controller.value.binding.target.key}get tag(){return this.controller.tag}set tag(e){this.controller.tag=e}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)},{key:t}),this}off(e,t){return this.emitter_.off(e,t),this}refresh(){this.controller.value.fetch()}onValueChange_(e){let t=this.controller.value;this.emitter_.emit("change",new pO(this,t.binding.target.read(),e.options.last))}}function pB(e){return t=>i=>{if(!t&&void 0===i)return{succeeded:!1,value:void 0};if(t&&void 0===i)return{succeeded:!0,value:void 0};let n=e(i);return void 0!==n?{succeeded:!0,value:n}:{succeeded:!1,value:void 0}}}function pN(e){return{custom:t=>pB(t)(e),boolean:pB(e=>"boolean"==typeof e?e:void 0)(e),number:pB(e=>"number"==typeof e?e:void 0)(e),string:pB(e=>"string"==typeof e?e:void 0)(e),function:pB(e=>"function"==typeof e?e:void 0)(e),constant:t=>pB(e=>e===t?t:void 0)(e),raw:pB(e=>e)(e),object:t=>pB(e=>{if(null!==e&&"object"==typeof e)return Object.keys(t).reduce((i,n)=>{if(void 0===i)return;let s=(0,t[n])(e[n]);return s.succeeded?Object.assign(Object.assign({},i),{[n]:s.value}):void 0},{})})(e),array:t=>pB(e=>{if(Array.isArray(e))return e.reduce((e,i)=>{if(void 0===e)return;let n=t(i);if(n.succeeded&&void 0!==n.value)return[...e,n.value]},[])})(e)}}const pF={optional:pN(!0),required:pN(!1)};function pU(e,t){let i=t(pF),n=pF.required.object(i)(e);return n.succeeded?n.value:void 0}function pH(e,t,i,n){if(t&&!t(e))return!1;let s=pU(e,i);return!!s&&n(s)}function p$(e,t){var i;return h3(null!==(i=null==e?void 0:e())&&void 0!==i?i:{},t)}function pq(e){return"value"in e}const pG="http://www.w3.org/2000/svg";function pJ(e){e.offsetHeight}function pY(e){return void 0!==e.ontouchstart}const pX={check:'',dropdown:'',p2dpad:''};function pZ(e,t){let i=e.createElementNS(pG,"svg");return i.innerHTML=pX[t],i}function pW(e,t,i){e.insertBefore(t,e.children[i])}function pQ(e){e.parentElement&&e.parentElement.removeChild(e)}function p0(e){for(;e.children.length>0;)e.removeChild(e.children[0])}function p1(e){return e.relatedTarget?e.relatedTarget:"explicitOriginalTarget"in e?e.explicitOriginalTarget:null}function p2(e,t){e.emitter.on("change",e=>{t(e.rawValue)}),t(e.rawValue)}function p3(e,t,i){p2(e.value(t),i)}function p5(e){return(t,i)=>["tp","-",e,"v",t?`_${t}`:"",i?`-${i}`:""].join("")}const p6=p5("lbl");class p4{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(p6()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(p6("l")),p3(t.props,"label",t=>{hQ(t)?this.element.classList.add(p6(void 0,"nol")):(this.element.classList.remove(p6(void 0,"nol")),function(e){for(;e.childNodes.length>0;)e.removeChild(e.childNodes[0])}(i),i.appendChild(function(e,t){let i=e.createDocumentFragment();return t.split("\n").map(t=>e.createTextNode(t)).forEach((t,n)=>{n>0&&i.appendChild(e.createElement("br")),i.appendChild(t)}),i}(e,t)))}),this.element.appendChild(i),this.labelElement=i;let n=e.createElement("div");n.classList.add(p6("v")),this.element.appendChild(n),this.valueElement=n}}class p9{constructor(e,t){this.props=t.props,this.valueController=t.valueController,this.viewProps=t.valueController.viewProps,this.view=new p4(e,{props:t.props,viewProps:this.viewProps}),this.view.valueElement.appendChild(this.valueController.view.element)}importProps(e){return pH(e,null,e=>({label:e.optional.string}),e=>(this.props.set("label",e.label),!0))}exportProps(){return p$(null,{label:this.props.get("label")})}}const p8=p5(""),p7={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class de{constructor(e){this.parent_=null,this.blade=e.blade,this.view=e.view,this.viewProps=e.viewProps;let t=this.view.element;this.blade.value("positions").emitter.on("change",()=>{["veryfirst","first","last","verylast"].forEach(e=>{t.classList.remove(p8(void 0,p7[e]))}),this.blade.get("positions").forEach(e=>{t.classList.add(p8(void 0,p7[e]))})}),this.viewProps.handleDispose(()=>{pQ(t)})}get parent(){return this.parent_}set parent(e){this.parent_=e,this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}importState(e){return pH(e,null,e=>({disabled:e.required.boolean,hidden:e.required.boolean}),e=>(this.viewProps.importState(e),!0))}exportState(){return p$(null,Object.assign({},this.viewProps.exportState()))}}class dt extends pT{get label(){return this.controller.labelController.props.get("label")}set label(e){this.controller.labelController.props.set("label",e)}get title(){var e;return null!==(e=this.controller.buttonController.props.get("title"))&&void 0!==e?e:""}set title(e){this.controller.buttonController.props.set("title",e)}on(e,t){let i=t.bind(this);return this.controller.buttonController.emitter.on(e,e=>{i(new pK(this,e.nativeEvent))}),this}off(e,t){return this.controller.buttonController.emitter.off(e,t),this}}function di(e,t){return i=>{i?e.classList.add(t):e.classList.remove(t)}}function dn(e,t){p2(e,e=>{t.textContent=null!=e?e:""})}const ds=p5("btn");class dr{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(ds()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("button");i.classList.add(ds("b")),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;let n=e.createElement("div");n.classList.add(ds("t")),dn(t.props.value("title"),n),this.buttonElement.appendChild(n)}}class dl{constructor(e,t){this.emitter=new h9,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new dr(e,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}importProps(e){return pH(e,null,e=>({title:e.optional.string}),e=>(this.props.set("title",e.title),!0))}exportProps(){return p$(null,{title:this.props.get("title")})}onClick_(e){this.emitter.emit("click",{nativeEvent:e,sender:this})}}class da extends de{constructor(e,t){let i=new dl(e,{props:t.buttonProps,viewProps:t.viewProps}),n=new p9(e,{blade:t.blade,props:t.labelProps,valueController:i});super({blade:t.blade,view:n.view,viewProps:t.viewProps}),this.buttonController=i,this.labelController=n}importState(e){return pH(e,e=>super.importState(e)&&this.buttonController.importProps(e)&&this.labelController.importProps(e),()=>({}),()=>!0)}exportState(){return p$(()=>super.exportState(),Object.assign(Object.assign({},this.buttonController.exportProps()),this.labelController.exportProps()))}}const dh=new class{constructor(e){let[t,i]=e.split("-"),n=t.split(".");this.major=parseInt(n[0],10),this.minor=parseInt(n[1],10),this.patch=parseInt(n[2],10),this.prerelease=null!=i?i:null}toString(){let e=[this.major,this.minor,this.patch].join(".");return null!==this.prerelease?[e,this.prerelease].join("-"):e}}("2.0.4");function dp(e){return Object.assign({core:dh},e)}dp({id:"button",type:"blade",accept(e){let t=pU(e,e=>({title:e.required.string,view:e.required.constant("button"),label:e.optional.string}));return t?{params:t}:null},controller:e=>new da(e.document,{blade:e.blade,buttonProps:pi.fromObject({title:e.params.title}),labelProps:pi.fromObject({label:e.params.label}),viewProps:e.viewProps}),api:e=>e.controller instanceof da?new dt(e.controller):null});class dd{constructor(e,t){this.onRackValueChange_=this.onRackValueChange_.bind(this),this.controller_=e,this.emitter_=new h9,this.pool_=t,this.controller_.rack.emitter.on("valuechange",this.onRackValueChange_)}get children(){return this.controller_.rack.children.map(e=>this.pool_.createApi(e))}addBinding(e,t,i){let n=null!=i?i:{},s=this.controller_.element.ownerDocument,r=this.pool_.createBinding(s,function(e,t){if(!h4.isBindable(e))throw h6.notBindable();return new h4(e,t)}(e,t),n),o=this.pool_.createBindingApi(r);return this.add(o,n.index)}addFolder(e){return this.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}addButton(e){return this.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}addTab(e){return this.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}add(e,t){let i=e.controller;return this.controller_.rack.add(i,t),e}remove(e){this.controller_.rack.remove(e.controller)}addBlade(e){let t=this.controller_.element.ownerDocument,i=this.pool_.createBlade(t,e),n=this.pool_.createApi(i);return this.add(n,e.index)}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)},{key:t}),this}off(e,t){return this.emitter_.off(e,t),this}refresh(){this.children.forEach(e=>{h0(e)&&"refresh"in e&&"function"==typeof e.refresh&&e.refresh()})}onRackValueChange_(e){var t,i;let n=e.bladeController,s=this.pool_.createApi(n),r=h0(t=n.value)&&"binding"in t&&h0(i=t.binding)&&"target"in i?n.value.binding:null;this.emitter_.emit("change",new pO(s,r?r.target.read():n.value.rawValue,e.options.last))}}class du extends pT{constructor(e,t){super(e),this.rackApi_=new dd(e.rackController,t)}refresh(){this.rackApi_.refresh()}}class dc extends de{constructor(e){super({blade:e.blade,view:e.view,viewProps:e.rackController.viewProps}),this.rackController=e.rackController}importState(e){return pH(e,e=>super.importState(e),e=>({children:e.required.array(e.required.raw)}),e=>this.rackController.rack.children.every((t,i)=>t.importState(e.children[i])))}exportState(){return p$(()=>super.exportState(),{children:this.rackController.rack.children.map(e=>e.exportState())})}}function dv(e){return"rackController"in e}class dm{constructor(e){this.emitter=new h9,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=e}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(e){for(let t of this.allItems())if(e(t))return t;return null}includes(e){return this.cache_.has(e)}add(e,t){if(this.includes(e))throw h6.shouldNeverHappen();let i=void 0!==t?t:this.items_.length;this.items_.splice(i,0,e),this.cache_.add(e);let n=this.extract_(e);n&&(n.emitter.on("add",this.onSubListAdd_),n.emitter.on("remove",this.onSubListRemove_),n.allItems().forEach(e=>{this.cache_.add(e)})),this.emitter.emit("add",{index:i,item:e,root:this,target:this})}remove(e){let t=this.items_.indexOf(e);if(t<0)return;this.items_.splice(t,1),this.cache_.delete(e);let i=this.extract_(e);i&&(i.allItems().forEach(e=>{this.cache_.delete(e)}),i.emitter.off("add",this.onSubListAdd_),i.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:t,item:e,root:this,target:this})}onSubListAdd_(e){this.cache_.add(e.item),this.emitter.emit("add",{index:e.index,item:e.item,root:this,target:e.target})}onSubListRemove_(e){this.cache_.delete(e.item),this.emitter.emit("remove",{index:e.index,item:e.item,root:this,target:e.target})}}function db(e){return dv(e)?e.rackController.rack.bcSet_:null}class dg{constructor(e){var t,i;this.emitter=new h9,this.onBladePositionsChange_=this.onBladePositionsChange_.bind(this),this.onSetAdd_=this.onSetAdd_.bind(this),this.onSetRemove_=this.onSetRemove_.bind(this),this.onChildDispose_=this.onChildDispose_.bind(this),this.onChildPositionsChange_=this.onChildPositionsChange_.bind(this),this.onChildValueChange_=this.onChildValueChange_.bind(this),this.onChildViewPropsChange_=this.onChildViewPropsChange_.bind(this),this.onRackLayout_=this.onRackLayout_.bind(this),this.onRackValueChange_=this.onRackValueChange_.bind(this),this.blade_=null!==(t=e.blade)&&void 0!==t?t:null,null===(i=this.blade_)||void 0===i||i.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=e.viewProps,this.bcSet_=new dm(db),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(e,t){var i;null===(i=e.parent)||void 0===i||i.remove(e),e.parent=this,this.bcSet_.add(e,t)}remove(e){e.parent=null,this.bcSet_.remove(e)}find(e){return this.bcSet_.allItems().filter(e)}onSetAdd_(e){this.updatePositions_();let t=e.target===e.root;if(this.emitter.emit("add",{bladeController:e.item,index:e.index,root:t,sender:this}),!t)return;let i=e.item;if(i.viewProps.emitter.on("change",this.onChildViewPropsChange_),i.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),i.viewProps.handleDispose(this.onChildDispose_),pq(i))i.value.emitter.on("change",this.onChildValueChange_);else if(dv(i)){let e=i.rackController.rack;if(e){let t=e.emitter;t.on("layout",this.onRackLayout_),t.on("valuechange",this.onRackValueChange_)}}}onSetRemove_(e){this.updatePositions_();let t=e.target===e.root;if(this.emitter.emit("remove",{bladeController:e.item,root:t,sender:this}),!t)return;let i=e.item;if(pq(i))i.value.emitter.off("change",this.onChildValueChange_);else if(dv(i)){let e=i.rackController.rack;if(e){let t=e.emitter;t.off("layout",this.onRackLayout_),t.off("valuechange",this.onRackValueChange_)}}}updatePositions_(){let e=this.bcSet_.items.filter(e=>!e.viewProps.get("hidden")),t=e[0],i=e[e.length-1];this.bcSet_.items.forEach(e=>{let n=[];e===t&&(n.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&n.push("veryfirst")),e===i&&(n.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&n.push("verylast")),e.blade.set("positions",n)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(e){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(e=>e.viewProps.get("disposed")).forEach(e=>{this.bcSet_.remove(e)})}onChildValueChange_(e){let t=function(e,t){for(let i=0;i{for(let e=this.rack.children.length-1;e>=0;e--)this.rack.children[e].viewProps.set("disposed",!0)})}onRackAdd_(e){e.root&&pW(this.element,e.bladeController.view.element,e.index)}onRackRemove_(e){e.root&&pQ(e.bladeController.view.element)}}function dw(){return new pi({positions:pt([],{equals:h2})})}class df extends pi{constructor(e){super(e)}static create(e){return new df(pi.createCore({completed:!0,expanded:e,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null}))}get styleExpanded(){var e;return null!==(e=this.get("temporaryExpanded"))&&void 0!==e?e:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";let e=this.get("expandedHeight");return this.get("shouldFixHeight")&&!hQ(e)?`${e}px`:"auto"}bindExpandedClass(e,t){let i=()=>{this.styleExpanded?e.classList.add(t):e.classList.remove(t)};p3(this,"expanded",i),p3(this,"temporaryExpanded",i)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function dy(e,t){t.style.height=e.styleHeight}function dx(e,t){e.value("expanded").emitter.on("beforechange",()=>{if(e.set("completed",!1),hQ(e.get("expandedHeight"))){let i;let n=(i=0,function(e,t){let i=e.style.transition;e.style.transition="none",t(),e.style.transition=i}(t,()=>{e.set("expandedHeight",null),e.set("temporaryExpanded",!0),pJ(t),i=t.clientHeight,e.set("temporaryExpanded",null),pJ(t)}),i);n>0&&e.set("expandedHeight",n)}e.set("shouldFixHeight",!0),pJ(t)}),e.emitter.on("change",()=>{dy(e,t)}),dy(e,t),t.addEventListener("transitionend",t=>{"height"===t.propertyName&&e.cleanUpTransition()})}class dC extends du{constructor(e,t){super(e,t),this.emitter_=new h9,this.controller.foldable.value("expanded").emitter.on("change",e=>{this.emitter_.emit("fold",new pA(this,e.sender.rawValue))}),this.rackApi_.on("change",e=>{this.emitter_.emit("change",e)})}get expanded(){return this.controller.foldable.get("expanded")}set expanded(e){this.controller.foldable.set("expanded",e)}get title(){return this.controller.props.get("title")}set title(e){this.controller.props.set("title",e)}get children(){return this.rackApi_.children}addBinding(e,t,i){return this.rackApi_.addBinding(e,t,i)}addFolder(e){return this.rackApi_.addFolder(e)}addButton(e){return this.rackApi_.addButton(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){return this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addBlade(e){return this.rackApi_.addBlade(e)}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)},{key:t}),this}off(e,t){return this.emitter_.off(e,t),this}}const dP=p5("cnt");class dE{constructor(e,t){var i;this.className_=p5(null!==(i=t.viewName)&&void 0!==i?i:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),dP()),t.viewProps.bindClassModifiers(this.element),this.foldable_=t.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),p3(this.foldable_,"completed",di(this.element,this.className_(void 0,"cpl")));let n=e.createElement("button");n.classList.add(this.className_("b")),p3(t.props,"title",e=>{hQ(e)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),t.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n;let s=e.createElement("div");s.classList.add(this.className_("i")),this.element.appendChild(s);let r=e.createElement("div");r.classList.add(this.className_("t")),dn(t.props.value("title"),r),this.buttonElement.appendChild(r),this.titleElement=r;let o=e.createElement("div");o.classList.add(this.className_("m")),this.buttonElement.appendChild(o);let l=e.createElement("div");l.classList.add(this.className_("c")),this.element.appendChild(l),this.containerElement=l}}class dk extends dc{constructor(e,t){var i;let n=df.create(null===(i=t.expanded)||void 0===i||i),s=new dE(e,{foldable:n,props:t.props,viewName:t.root?"rot":void 0,viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:new d_({blade:t.blade,element:s.containerElement,root:t.root,viewProps:t.viewProps}),view:s})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=t.props,this.foldable=n,dx(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}importState(e){return pH(e,e=>super.importState(e),e=>({expanded:e.required.boolean,title:e.optional.string}),e=>(this.foldable.set("expanded",e.expanded),this.props.set("title",e.title),!0))}exportState(){return p$(()=>super.exportState(),{expanded:this.foldable.get("expanded"),title:this.props.get("title")})}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}dp({id:"folder",type:"blade",accept(e){let t=pU(e,e=>({title:e.required.string,view:e.required.constant("folder"),expanded:e.optional.boolean}));return t?{params:t}:null},controller:e=>new dk(e.document,{blade:e.blade,expanded:e.params.expanded,props:pi.fromObject({title:e.params.title}),viewProps:e.viewProps}),api:e=>e.controller instanceof dk?new dC(e.controller,e.pool):null});const dV=p5("");function dL(e,t){return di(e,dV(void 0,t))}class dM extends pi{constructor(e){var t,i;super(e),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=[new pe(i=pt(this.getGlobalDisabled_())),(e,t)=>{i.setRawValue(e,t)}],this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),null===(t=this.get("parent"))||void 0===t||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(e){var t,i,n;let s=null!=e?e:{};return new dM(pi.createCore({disabled:null!==(t=s.disabled)&&void 0!==t&&t,disposed:!1,hidden:null!==(i=s.hidden)&&void 0!==i&&i,parent:null!==(n=s.parent)&&void 0!==n?n:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(e){p2(this.globalDisabled_,dL(e,"disabled")),p3(this,"hidden",dL(e,"hidden"))}bindDisabled(e){p2(this.globalDisabled_,t=>{e.disabled=t})}bindTabIndex(e){p2(this.globalDisabled_,t=>{e.tabIndex=t?-1:0})}handleDispose(e){this.value("disposed").emitter.on("change",t=>{t&&e()})}importState(e){this.set("disabled",e.disabled),this.set("hidden",e.hidden)}exportState(){return{disabled:this.get("disabled"),hidden:this.get("hidden")}}getGlobalDisabled_(){let e=this.get("parent");return!!e&&e.globalDisabled.rawValue||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(e){var t;let i=e.previousRawValue;null==i||i.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),null===(t=this.get("parent"))||void 0===t||t.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}const dD=p5("tbp");class dS{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(dD()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(dD("c")),this.element.appendChild(i),this.containerElement=i}}const dj=p5("tbi");class dT{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(dj()),t.viewProps.bindClassModifiers(this.element),p3(t.props,"selected",e=>{e?this.element.classList.add(dj(void 0,"sel")):this.element.classList.remove(dj(void 0,"sel"))});let i=e.createElement("button");i.classList.add(dj("b")),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;let n=e.createElement("div");n.classList.add(dj("t")),dn(t.props.value("title"),n),this.buttonElement.appendChild(n),this.titleElement=n}}class dI{constructor(e,t){this.emitter=new h9,this.onClick_=this.onClick_.bind(this),this.props=t.props,this.viewProps=t.viewProps,this.view=new dT(e,{props:t.props,viewProps:t.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class dO extends dc{constructor(e,t){let i=new dS(e,{viewProps:t.viewProps});super(Object.assign(Object.assign({},t),{rackController:new d_({blade:t.blade,element:i.containerElement,viewProps:t.viewProps}),view:i})),this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new dI(e,{props:t.itemProps,viewProps:dM.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.props=t.props,p3(this.props,"selected",e=>{this.itemController.props.set("selected",e),this.viewProps.set("hidden",!e)})}get itemController(){return this.ic_}importState(e){return pH(e,e=>super.importState(e),e=>({selected:e.required.boolean,title:e.required.string}),e=>(this.ic_.props.set("selected",e.selected),this.ic_.props.set("title",e.title),!0))}exportState(){return p$(()=>super.exportState(),{selected:this.ic_.props.get("selected"),title:this.ic_.props.get("title")})}onItemClick_(){this.props.set("selected",!0)}}class dA extends du{constructor(e,t){super(e,t),this.emitter_=new h9,this.onSelect_=this.onSelect_.bind(this),this.pool_=t,this.rackApi_.on("change",e=>{this.emitter_.emit("change",e)}),this.controller.tab.selectedIndex.emitter.on("change",this.onSelect_)}get pages(){return this.rackApi_.children}addPage(e){let t=new dO(this.controller.view.element.ownerDocument,{blade:dw(),itemProps:pi.fromObject({selected:!1,title:e.title}),props:pi.fromObject({selected:!1}),viewProps:dM.create()}),i=this.pool_.createApi(t);return this.rackApi_.add(i,e.index)}removePage(e){this.rackApi_.remove(this.rackApi_.children[e])}on(e,t){let i=t.bind(this);return this.emitter_.on(e,e=>{i(e)},{key:t}),this}off(e,t){return this.emitter_.off(e,t),this}onSelect_(e){this.emitter_.emit("select",new pR(this,e.rawValue))}}class dR extends du{get title(){var e;return null!==(e=this.controller.itemController.props.get("title"))&&void 0!==e?e:""}set title(e){this.controller.itemController.props.set("title",e)}get selected(){return this.controller.props.get("selected")}set selected(e){this.controller.props.set("selected",e)}get children(){return this.rackApi_.children}addButton(e){return this.rackApi_.addButton(e)}addFolder(e){return this.rackApi_.addFolder(e)}addTab(e){return this.rackApi_.addTab(e)}add(e,t){this.rackApi_.add(e,t)}remove(e){this.rackApi_.remove(e)}addBinding(e,t,i){return this.rackApi_.addBinding(e,t,i)}addBlade(e){return this.rackApi_.addBlade(e)}}class dK{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=pt(!0),this.selectedIndex=pt(-1),this.items_=[]}add(e,t){let i=null!=t?t:this.items_.length;this.items_.splice(i,0,e),e.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(e){let t=this.items_.indexOf(e);t<0||(this.items_.splice(t,1),e.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(0===this.items_.length){this.selectedIndex.rawValue=-1,this.empty.rawValue=!0;return}let e=this.items_.findIndex(e=>e.rawValue);e<0?(this.items_.forEach((e,t)=>{e.rawValue=0===t}),this.selectedIndex.rawValue=0):(this.items_.forEach((t,i)=>{t.rawValue=i===e}),this.selectedIndex.rawValue=e),this.empty.rawValue=!1}onItemSelectedChange_(e){if(e.rawValue){let t=this.items_.findIndex(t=>t===e.sender);this.items_.forEach((e,i)=>{e.rawValue=i===t}),this.selectedIndex.rawValue=t}else this.keepSelection_()}}const dz=p5("tab");class dB{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(dz(),dP()),t.viewProps.bindClassModifiers(this.element),p2(t.empty,di(this.element,dz(void 0,"nop")));let i=e.createElement("div");i.classList.add(dz("t")),this.element.appendChild(i),this.itemsElement=i;let n=e.createElement("div");n.classList.add(dz("i")),this.element.appendChild(n);let s=e.createElement("div");s.classList.add(dz("c")),this.element.appendChild(s),this.contentsElement=s}}class dN extends dc{constructor(e,t){let i=new dK,n=new dB(e,{empty:i.empty,viewProps:t.viewProps});super({blade:t.blade,rackController:new d_({blade:t.blade,element:n.contentsElement,viewProps:t.viewProps}),view:n}),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);let s=this.rackController.rack;s.emitter.on("add",this.onRackAdd_),s.emitter.on("remove",this.onRackRemove_),this.tab=i}add(e,t){this.rackController.rack.add(e,t)}remove(e){this.rackController.rack.remove(this.rackController.rack.children[e])}onRackAdd_(e){if(!e.root)return;let t=e.bladeController;pW(this.view.itemsElement,t.itemController.view.element,e.index),t.itemController.viewProps.set("parent",this.viewProps),this.tab.add(t.props.value("selected"))}onRackRemove_(e){if(!e.root)return;let t=e.bladeController;pQ(t.itemController.view.element),t.itemController.viewProps.set("parent",null),this.tab.remove(t.props.value("selected"))}}dp({id:"tab",type:"blade",accept(e){let t=pU(e,e=>({pages:e.required.array(e.required.object({title:e.required.string})),view:e.required.constant("tab")}));return t&&0!==t.pages.length?{params:t}:null},controller(e){let t=new dN(e.document,{blade:e.blade,viewProps:e.viewProps});return e.params.pages.forEach(i=>{let n=new dO(e.document,{blade:dw(),itemProps:pi.fromObject({selected:!1,title:i.title}),props:pi.fromObject({selected:!1}),viewProps:dM.create()});t.add(n)}),t},api:e=>e.controller instanceof dN?new dA(e.controller,e.pool):e.controller instanceof dO?new dR(e.controller,e.pool):null});class dF extends pz{get options(){return this.controller.valueController.props.get("options")}set options(e){this.controller.valueController.props.set("options",e)}}class dU{constructor(e){this.constraints=e}constrain(e){return this.constraints.reduce((e,t)=>t.constrain(e),e)}}function dH(e,t){if(e instanceof t)return e;if(e instanceof dU){let i=e.constraints.reduce((e,i)=>e||(i instanceof t?i:null),null);if(i)return i}return null}class d${constructor(e){this.values=pi.fromObject({options:e})}constrain(e){let t=this.values.get("options");return 0===t.length?e:t.filter(t=>t.value===e).length>0?e:t[0].value}}function dq(e){var t;return Array.isArray(e)?null===(t=pU({items:e},e=>({items:e.required.array(e.required.object({text:e.required.string,value:e.required.raw}))})))||void 0===t?void 0:t.items:"object"==typeof e?pF.required.raw(e).value:void 0}function dG(e){if(Array.isArray(e))return e;let t=[];return Object.keys(e).forEach(i=>{t.push({text:i,value:e[i]})}),t}function dJ(e){return hQ(e)?null:new d$(dG(e))}const dY=p5("lst");class dX{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.element=e.createElement("div"),this.element.classList.add(dY()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("select");i.classList.add(dY("s")),t.viewProps.bindDisabled(i),this.element.appendChild(i),this.selectElement=i;let n=e.createElement("div");n.classList.add(dY("m")),n.appendChild(pZ(e,"dropdown")),this.element.appendChild(n),t.value.emitter.on("change",this.onValueChange_),this.value_=t.value,p3(this.props_,"options",t=>{p0(this.selectElement),t.forEach(t=>{let i=e.createElement("option");i.textContent=t.text,this.selectElement.appendChild(i)}),this.update_()})}update_(){let e=this.props_.get("options").map(e=>e.value);this.selectElement.selectedIndex=e.indexOf(this.value_.rawValue)}onValueChange_(){this.update_()}}class dZ{constructor(e,t){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new dX(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(e){let t=e.currentTarget;this.value.rawValue=this.props.get("options")[t.selectedIndex].value}importProps(e){return pH(e,null,e=>({options:e.required.custom(dq)}),e=>(this.props.set("options",dG(e.options)),!0))}exportProps(){return p$(null,{options:this.props.get("options")})}}const dW=p5("pop");class dQ{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(dW()),t.viewProps.bindClassModifiers(this.element),p2(t.shows,di(this.element,dW(void 0,"v")))}}class d0{constructor(e,t){this.shows=pt(!1),this.viewProps=t.viewProps,this.view=new dQ(e,{shows:this.shows,viewProps:this.viewProps})}}const d1=p5("txt");class d2{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(d1()),t.viewProps.bindClassModifiers(this.element),this.props_=t.props,this.props_.emitter.on("change",this.onChange_);let i=e.createElement("input");i.classList.add(d1("i")),i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,t.value.emitter.on("change",this.onChange_),this.value_=t.value,this.refresh()}refresh(){let e=this.props_.get("formatter");this.inputElement.value=e(this.value_.rawValue)}onChange_(){this.refresh()}}class d3{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=t.parser,this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new d2(e,{props:t.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){let t=e.currentTarget.value,i=this.parser_(t);hQ(i)||(this.value.rawValue=i),this.view.refresh()}}function d5(e){return"false"!==e&&!!e}function d6(e){return String(e)}const d4=pC(0);function d9(e){return d4(e)+"%"}function d8(e){return String(e)}function d7(e){return e}function ue({primary:e,secondary:t,forward:i,backward:n}){let s=!1;function r(e){s||(s=!0,e(),s=!1)}e.emitter.on("change",n=>{r(()=>{t.setRawValue(i(e.rawValue,t.rawValue),n.options)})}),t.emitter.on("change",s=>{r(()=>{e.setRawValue(n(e.rawValue,t.rawValue),s.options)}),r(()=>{t.setRawValue(i(e.rawValue,t.rawValue),s.options)})}),r(()=>{t.setRawValue(i(e.rawValue,t.rawValue),{forceEmit:!1,last:!0})})}function ut(e,t){let i=e*(t.altKey?.1:1)*(t.shiftKey?10:1);return t.upKey?+i:t.downKey?-i:0}function ui(e){return{altKey:e.altKey,downKey:"ArrowDown"===e.key,shiftKey:e.shiftKey,upKey:"ArrowUp"===e.key}}function un(e){return{altKey:e.altKey,downKey:"ArrowLeft"===e.key,shiftKey:e.shiftKey,upKey:"ArrowRight"===e.key}}function us(e){return"ArrowUp"===e||"ArrowDown"===e||"ArrowLeft"===e||"ArrowRight"===e}function ur(e,t){var i,n;let s=t.ownerDocument.defaultView,r=t.getBoundingClientRect();return{x:e.pageX-((null!==(i=s&&s.scrollX)&&void 0!==i?i:0)+r.left),y:e.pageY-((null!==(n=s&&s.scrollY)&&void 0!==n?n:0)+r.top)}}class uo{constructor(e){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=e,this.emitter=new h9,e.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),e.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),e.addEventListener("touchend",this.onTouchEnd_),e.addEventListener("mousedown",this.onMouseDown_)}computePosition_(e){let t=this.elem_.getBoundingClientRect();return{bounds:{width:t.width,height:t.height},point:e?{x:e.x,y:e.y}:null}}onMouseDown_(e){var t;e.preventDefault(),null===(t=e.currentTarget)||void 0===t||t.focus();let i=this.elem_.ownerDocument;i.addEventListener("mousemove",this.onDocumentMouseMove_),i.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(ur(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseMove_(e){this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(ur(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onDocumentMouseUp_(e){let t=this.elem_.ownerDocument;t.removeEventListener("mousemove",this.onDocumentMouseMove_),t.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(ur(e,this.elem_)),sender:this,shiftKey:e.shiftKey})}onTouchStart_(e){e.preventDefault();let t=e.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-i.left,y:t.clientY-i.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchMove_(e){let t=e.targetTouches.item(0),i=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:e.altKey,data:this.computePosition_(t?{x:t.clientX-i.left,y:t.clientY-i.top}:void 0),sender:this,shiftKey:e.shiftKey}),this.lastTouch_=t}onTouchEnd_(e){var t;let i=null!==(t=e.targetTouches.item(0))&&void 0!==t?t:this.lastTouch_,n=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:e.altKey,data:this.computePosition_(i?{x:i.clientX-n.left,y:i.clientY-n.top}:void 0),sender:this,shiftKey:e.shiftKey})}}const ul=p5("txt");class ua{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(ul(),ul(void 0,"num")),t.arrayPosition&&this.element.classList.add(ul(void 0,t.arrayPosition)),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("input");i.classList.add(ul("i")),i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=t.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(ul()),this.inputElement.classList.add(ul("i"));let n=e.createElement("div");n.classList.add(ul("k")),this.element.appendChild(n),this.knobElement=n;let s=e.createElementNS(pG,"svg");s.classList.add(ul("g")),this.knobElement.appendChild(s);let r=e.createElementNS(pG,"path");r.classList.add(ul("gb")),s.appendChild(r),this.guideBodyElem_=r;let o=e.createElementNS(pG,"path");o.classList.add(ul("gh")),s.appendChild(o),this.guideHeadElem_=o;let l=e.createElement("div");l.classList.add(p5("tt")()),this.knobElement.appendChild(l),this.tooltipElem_=l,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.refresh()}onDraggingChange_(e){if(null===e.rawValue){this.element.classList.remove(ul(void 0,"drg"));return}this.element.classList.add(ul(void 0,"drg"));let t=e.rawValue/this.props_.get("pointerScale"),i=t+(t>0?-1:t<0?1:0),n=pk(-i,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",`M ${i+n},0 L${i},4 L${i+n},8 M ${t},-1 L${t},9`),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${t},4`);let s=this.props_.get("formatter");this.tooltipElem_.textContent=s(this.value.rawValue),this.tooltipElem_.style.left=`${t}px`}refresh(){let e=this.props_.get("formatter");this.inputElement.value=e(this.value.rawValue)}onChange_(){this.refresh()}}class uh{constructor(e,t){var i;this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.parser_=t.parser,this.props=t.props,this.sliderProps_=null!==(i=t.sliderProps)&&void 0!==i?i:null,this.value=t.value,this.viewProps=t.viewProps,this.dragging_=pt(null),this.view=new ua(e,{arrayPosition:t.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);let n=new uo(this.view.knobElement);n.emitter.on("down",this.onPointerDown_),n.emitter.on("move",this.onPointerMove_),n.emitter.on("up",this.onPointerUp_)}constrainValue_(e){var t,i;let n=null===(t=this.sliderProps_)||void 0===t?void 0:t.get("min"),s=null===(i=this.sliderProps_)||void 0===i?void 0:i.get("max"),r=e;return void 0!==n&&(r=Math.max(r,n)),void 0!==s&&(r=Math.min(r,s)),r}onInputChange_(e){let t=e.currentTarget.value,i=this.parser_(t);hQ(i)||(this.value.rawValue=this.constrainValue_(i)),this.view.refresh()}onInputKeyDown_(e){let t=ut(this.props.get("keyScale"),ui(e));0!==t&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+t),{forceEmit:!1,last:!1})}onInputKeyUp_(e){0!==ut(this.props.get("keyScale"),ui(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(e){if(!e.point)return null;let t=e.point.x-e.bounds.width/2;return this.constrainValue_(this.originRawValue_+t*this.props.get("pointerScale"))}onPointerMove_(e){let t=this.computeDraggingValue_(e.data);null!==t&&(this.value.setRawValue(t,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(e){let t=this.computeDraggingValue_(e.data);null!==t&&(this.value.setRawValue(t,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}const up=p5("sld");class ud{constructor(e,t){this.onChange_=this.onChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onChange_),this.element=e.createElement("div"),this.element.classList.add(up()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(up("t")),t.viewProps.bindTabIndex(i),this.element.appendChild(i),this.trackElement=i;let n=e.createElement("div");n.classList.add(up("k")),this.trackElement.appendChild(n),this.knobElement=n,t.value.emitter.on("change",this.onChange_),this.value=t.value,this.update_()}update_(){let e=pk(pP(this.value.rawValue,this.props_.get("min"),this.props_.get("max"),0,100),0,100);this.knobElement.style.width=`${e}%`}onChange_(){this.update_()}}class uu{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.props=t.props,this.view=new ud(e,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new uo(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){e.point&&this.value.setRawValue(pP(pk(e.point.x,0,e.bounds.width),0,e.bounds.width,this.props.get("min"),this.props.get("max")),t)}onPointerDownOrMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){let t=ut(this.props.get("keyScale"),un(e));0!==t&&this.value.setRawValue(this.value.rawValue+t,{forceEmit:!1,last:!1})}onKeyUp_(e){0!==ut(this.props.get("keyScale"),un(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const uc=p5("sldtxt");class uv{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(uc());let i=e.createElement("div");i.classList.add(uc("s")),this.sliderView_=t.sliderView,i.appendChild(this.sliderView_.element),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(uc("t")),this.textView_=t.textView,n.appendChild(this.textView_.element),this.element.appendChild(n)}}class um{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.sliderC_=new uu(e,{props:t.sliderProps,value:t.value,viewProps:this.viewProps}),this.textC_=new uh(e,{parser:t.parser,props:t.textProps,sliderProps:t.sliderProps,value:t.value,viewProps:t.viewProps}),this.view=new uv(e,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}importProps(e){return pH(e,null,e=>({max:e.required.number,min:e.required.number}),e=>{let t=this.sliderC_.props;return t.set("max",e.max),t.set("min",e.min),!0})}exportProps(){let e=this.sliderC_.props;return p$(null,{max:e.get("max"),min:e.get("min")})}}const ub="cnt-usz";function ug(e){return pS(e)}function u_(e){if(h1(e))return pU(e,ug)}function uw(e,t){if(!e)return;let i=[],n=pL(e,t);n&&i.push(n);let s=pM(e);return s&&i.push(s),new dU(i)}function uf(e){if("inline"===e||"popup"===e)return e}function uy(e,t){e.write(t)}const ux=p5("ckb");class uC{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.element=e.createElement("div"),this.element.classList.add(ux()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("label");i.classList.add(ux("l")),this.element.appendChild(i),this.labelElement=i;let n=e.createElement("input");n.classList.add(ux("i")),n.type="checkbox",this.labelElement.appendChild(n),this.inputElement=n,t.viewProps.bindDisabled(this.inputElement);let s=e.createElement("div");s.classList.add(ux("w")),this.labelElement.appendChild(s);let r=pZ(e,"check");s.appendChild(r),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class uP{constructor(e,t){this.onInputChange_=this.onInputChange_.bind(this),this.onLabelMouseDown_=this.onLabelMouseDown_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new uC(e,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.labelElement.addEventListener("mousedown",this.onLabelMouseDown_)}onInputChange_(e){let t=e.currentTarget;this.value.rawValue=t.checked,e.preventDefault(),e.stopPropagation()}onLabelMouseDown_(e){e.preventDefault()}}dp({id:"input-bool",type:"input",accept:(e,t)=>{if("boolean"!=typeof e)return null;let i=pU(t,e=>({options:e.optional.custom(dq),readonly:e.optional.constant(!1)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>d5,constraint:e=>(function(e){let t=[],i=dJ(e.options);return i&&t.push(i),new dU(t)})(e.params),writer:e=>uy},controller:e=>{let t=e.document,i=e.value,n=e.constraint,s=n&&dH(n,d$);return s?new dZ(t,{props:new pi({options:s.values.value("options")}),value:i,viewProps:e.viewProps}):new uP(t,{value:i,viewProps:e.viewProps})},api:e=>"boolean"!=typeof e.controller.value.rawValue?null:e.controller.valueController instanceof dZ?new dF(e.controller):null});const uE=p5("col");class uk{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(uE()),t.foldable.bindExpandedClass(this.element,uE(void 0,"expanded")),p3(t.foldable,"completed",di(this.element,uE(void 0,"cpl")));let i=e.createElement("div");i.classList.add(uE("h")),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(uE("s")),i.appendChild(n),this.swatchElement=n;let s=e.createElement("div");if(s.classList.add(uE("t")),i.appendChild(s),this.textElement=s,"inline"===t.pickerLayout){let t=e.createElement("div");t.classList.add(uE("p")),this.element.appendChild(t),this.pickerElement=t}else this.pickerElement=null}}function uV(e,t,i){let n,s,r;let o=(e%360+360)%360,l=pk(t/100,0,1),a=pk(i/100,0,1),h=a*l,p=h*(1-Math.abs(o/60%2-1)),d=a-h;return o>=0&&o<60?[n,s,r]=[h,p,0]:o>=60&&o<120?[n,s,r]=[p,h,0]:o>=120&&o<180?[n,s,r]=[0,h,p]:o>=180&&o<240?[n,s,r]=[0,p,h]:o>=240&&o<300?[n,s,r]=[p,0,h]:[n,s,r]=[h,0,p],[(n+d)*255,(s+d)*255,(r+d)*255]}function uL(e){return[e[0],e[1],e[2]]}function uM(e,t){return[e[0],e[1],e[2],t]}const uD={hsl:{hsl:(e,t,i)=>[e,t,i],hsv:function(e,t,i){let n=i+t*(100-Math.abs(2*i-100))/200;return[e,0!==n?t*(100-Math.abs(2*i-100))/n:0,i+t*(100-Math.abs(2*i-100))/200]},rgb:function(e,t,i){let n,s,r;let o=(e%360+360)%360,l=pk(t/100,0,1),a=pk(i/100,0,1),h=(1-Math.abs(2*a-1))*l,p=h*(1-Math.abs(o/60%2-1)),d=a-h/2;return o>=0&&o<60?[n,s,r]=[h,p,0]:o>=60&&o<120?[n,s,r]=[p,h,0]:o>=120&&o<180?[n,s,r]=[0,h,p]:o>=180&&o<240?[n,s,r]=[0,p,h]:o>=240&&o<300?[n,s,r]=[p,0,h]:[n,s,r]=[h,0,p],[(n+d)*255,(s+d)*255,(r+d)*255]}},hsv:{hsl:function(e,t,i){let n=100-Math.abs(i*(200-t)/100-100);return[e,0!==n?t*i/n:0,i*(200-t)/200]},hsv:(e,t,i)=>[e,t,i],rgb:uV},rgb:{hsl:function(e,t,i){let n=pk(e/255,0,1),s=pk(t/255,0,1),r=pk(i/255,0,1),o=Math.max(n,s,r),l=Math.min(n,s,r),a=o-l,h=0,p=0;return 0!==a&&(p=a/(1-Math.abs(o+l-1)),h=(h=n===o?(s-r)/a:s===o?2+(r-n)/a:4+(n-s)/a)/6+(h<0?1:0)),[360*h,100*p,(l+o)/2*100]},hsv:function(e,t,i){let n=pk(e/255,0,1),s=pk(t/255,0,1),r=pk(i/255,0,1),o=Math.max(n,s,r),l=o-Math.min(n,s,r);return[0===l?0:o===n?((s-r)/l%6+6)%6*60:o===s?60*((r-n)/l+2):60*((n-s)/l+4),100*(0===o?0:l/o),100*o]},rgb:(e,t,i)=>[e,t,i]}};function uS(e,t){return["float"===t?1:"rgb"===e?255:360,"float"===t?1:"rgb"===e?255:100,"float"===t?1:"rgb"===e?255:100]}function uj(e,t,i){var n,s,r;let o=uS(t,i);return["rgb"===t?pk(e[0],0,o[0]):(s=e[0])===(r=o[0])?r:(s%r+r)%r,pk(e[1],0,o[1]),pk(e[2],0,o[2]),pk(null!==(n=e[3])&&void 0!==n?n:1,0,1)]}function uT(e,t,i,n){let s=uS(t,i),r=uS(t,n);return e.map((e,t)=>e/s[t]*r[t])}function uI(e,t,i){let n=uT(e,t.mode,t.type,"int");return uT(uD[t.mode][i.mode](...n),i.mode,"int",i.type)}class uO{static black(){return new uO([0,0,0],"rgb")}constructor(e,t){this.type="int",this.mode=t,this.comps_=uj(e,t,this.type)}getComponents(e){return uM(uI(uL(this.comps_),{mode:this.mode,type:this.type},{mode:null!=e?e:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){let e=this.getComponents("rgb");return{r:e[0],g:e[1],b:e[2],a:e[3]}}}const uA=p5("colp");class uR{constructor(e,t){this.alphaViews_=null,this.element=e.createElement("div"),this.element.classList.add(uA()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(uA("hsv"));let n=e.createElement("div");n.classList.add(uA("sv")),this.svPaletteView_=t.svPaletteView,n.appendChild(this.svPaletteView_.element),i.appendChild(n);let s=e.createElement("div");s.classList.add(uA("h")),this.hPaletteView_=t.hPaletteView,s.appendChild(this.hPaletteView_.element),i.appendChild(s),this.element.appendChild(i);let r=e.createElement("div");if(r.classList.add(uA("rgb")),this.textsView_=t.textsView,r.appendChild(this.textsView_.element),this.element.appendChild(r),t.alphaViews){this.alphaViews_={palette:t.alphaViews.palette,text:t.alphaViews.text};let i=e.createElement("div");i.classList.add(uA("a"));let n=e.createElement("div");n.classList.add(uA("ap")),n.appendChild(this.alphaViews_.palette.element),i.appendChild(n);let s=e.createElement("div");s.classList.add(uA("at")),s.appendChild(this.alphaViews_.text.element),i.appendChild(s),this.element.appendChild(i)}}get allFocusableElements(){let e=[this.svPaletteView_.element,this.hPaletteView_.element,this.textsView_.modeSelectElement,...this.textsView_.inputViews.map(e=>e.inputElement)];return this.alphaViews_&&e.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),e}}function uK(e){return"int"===e?"int":"float"===e?"float":void 0}function uz(e){return pU(e,e=>({color:e.optional.object({alpha:e.optional.boolean,type:e.optional.custom(uK)}),expanded:e.optional.boolean,picker:e.optional.custom(uf),readonly:e.optional.constant(!1)}))}function uB(e){return e?.1:1}function uN(e){var t;return null===(t=e.color)||void 0===t?void 0:t.type}class uF{constructor(e,t){this.type="float",this.mode=t,this.comps_=uj(e,t,this.type)}getComponents(e){return uM(uI(uL(this.comps_),{mode:this.mode,type:this.type},{mode:null!=e?e:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){let e=this.getComponents("rgb");return{r:e[0],g:e[1],b:e[2],a:e[3]}}}const uU={int:(e,t)=>new uO(e,t),float:(e,t)=>new uF(e,t)};function uH(e,t){if(e.type===t)return e;if("int"===e.type&&"float"===t)return function(e){let t=e.getComponents(),i=uS(e.mode,"int");return new uF([pP(t[0],0,i[0],0,1),pP(t[1],0,i[1],0,1),pP(t[2],0,i[2],0,1),t[3]],e.mode)}(e);if("float"===e.type&&"int"===t)return function(e){let t=e.getComponents(),i=uS(e.mode,"int");return new uO([Math.round(pP(t[0],0,1,0,i[0])),Math.round(pP(t[1],0,1,0,i[1])),Math.round(pP(t[2],0,1,0,i[2])),t[3]],e.mode)}(e);throw h6.shouldNeverHappen()}function u$(e,t){let i=e.match(/^(.+)%$/);return i?Math.min(.01*parseFloat(i[1])*t,t):Math.min(parseFloat(e),t)}const uq={deg:e=>e,grad:e=>360*e/400,rad:e=>360*e/(2*Math.PI),turn:e=>360*e};function uG(e){let t=e.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!t)return parseFloat(e);let i=parseFloat(t[1]);return uq[t[2]](i)}function uJ(e){let t=e.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[u$(t[1],255),u$(t[2],255),u$(t[3],255)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function uY(e){let t=uJ(e);return t?new uO(t,"rgb"):null}function uX(e){let t=e.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[u$(t[1],255),u$(t[2],255),u$(t[3],255),u$(t[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function uZ(e){let t=uX(e);return t?new uO(t,"rgb"):null}function uW(e){let t=e.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[uG(t[1]),u$(t[2],100),u$(t[3],100)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function uQ(e){let t=uW(e);return t?new uO(t,"hsl"):null}function u0(e){let t=e.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!t)return null;let i=[uG(t[1]),u$(t[2],100),u$(t[3],100),u$(t[4],1)];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function u1(e){let t=u0(e);return t?new uO(t,"hsl"):null}function u2(e){let t=e.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(t)return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)];let i=e.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)]:null}function u3(e){let t=u2(e);return t?new uO(t,"rgb"):null}function u5(e){let t=e.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(t)return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16),pP(parseInt(t[4]+t[4],16),0,255,0,1)];let i=e.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return i?[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16),pP(parseInt(i[4],16),0,255,0,1)]:null}function u6(e){let t=u5(e);return t?new uO(t,"rgb"):null}function u4(e){let t=e.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!t)return null;let i=[parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])?null:i}function u9(e){return t=>{let i=u4(t);return i?uU[e](i,"rgb"):null}}function u8(e){let t=e.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!t)return null;let i=[parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3]),parseFloat(t[4])];return isNaN(i[0])||isNaN(i[1])||isNaN(i[2])||isNaN(i[3])?null:i}function u7(e){return t=>{let i=u8(t);return i?uU[e](i,"rgb"):null}}const ce=[{parser:u2,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:u5,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:uJ,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:uX,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:uW,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:u0,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:u4,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:u8,result:{alpha:!0,mode:"rgb",notation:"object"}}];function ct(e){let t=[u3,u6,uY,uZ,uQ,u1];"int"===e&&t.push(u9("int"),u7("int")),"float"===e&&t.push(u9("float"),u7("float"));let i=e=>t.reduce((t,i)=>null!==t?t:i(e),null);return t=>{let n=i(t);return n?uH(n,e):null}}function ci(e){let t=ct("int");if("string"!=typeof e)return uO.black();let i=t(e);return null!=i?i:uO.black()}function cn(e){let t=pk(Math.floor(e),0,255).toString(16);return 1===t.length?`0${t}`:t}function cs(e,t="#"){let i=uL(e.getComponents("rgb")).map(cn).join("");return`${t}${i}`}function cr(e,t="#"){let i=e.getComponents("rgb"),n=[i[0],i[1],i[2],255*i[3]].map(cn).join("");return`${t}${n}`}function co(e){let t=pC(0),i=uL(uH(e,"int").getComponents("rgb")).map(e=>t(e));return`rgb(${i.join(", ")})`}function cl(e){let t=pC(2),i=pC(0),n=uH(e,"int").getComponents("rgb").map((e,n)=>(3===n?t:i)(e));return`rgba(${n.join(", ")})`}function ca(e,t){let i=pC("float"===t?2:0),n=["r","g","b"],s=uL(uH(e,t).getComponents("rgb")).map((e,t)=>`${n[t]}: ${i(e)}`);return`{${s.join(", ")}}`}function ch(e,t){let i=pC(2),n=pC("float"===t?2:0),s=["r","g","b","a"],r=uH(e,t).getComponents("rgb").map((e,t)=>`${s[t]}: ${(3===t?i:n)(e)}`);return`{${r.join(", ")}}`}const cp=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:cs},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:cr},{format:{alpha:!1,mode:"rgb",notation:"func",type:"int"},stringifier:co},{format:{alpha:!0,mode:"rgb",notation:"func",type:"int"},stringifier:cl},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:function(e){let t=[pC(0),d9,d9],i=uL(uH(e,"int").getComponents("hsl")).map((e,i)=>t[i](e));return`hsl(${i.join(", ")})`}},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:function(e){let t=[pC(0),d9,d9,pC(2)],i=uH(e,"int").getComponents("hsl").map((e,i)=>t[i](e));return`hsla(${i.join(", ")})`}},...["int","float"].reduce((e,t)=>[...e,{format:{alpha:!1,mode:"rgb",notation:"object",type:t},stringifier:e=>ca(e,t)},{format:{alpha:!0,mode:"rgb",notation:"object",type:t},stringifier:e=>ch(e,t)}],[])];function cd(e){return cp.reduce((t,i)=>{var n;return t||((n=i.format).alpha===e.alpha&&n.mode===e.mode&&n.notation===e.notation&&n.type===e.type?i.stringifier:null)},null)}const cu=p5("apl");class cc{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(cu()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);let i=e.createElement("div");i.classList.add(cu("b")),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(cu("c")),i.appendChild(n),this.colorElem_=n;let s=e.createElement("div");s.classList.add(cu("m")),this.element.appendChild(s),this.markerElem_=s;let r=e.createElement("div");r.classList.add(cu("p")),this.markerElem_.appendChild(r),this.previewElem_=r,this.update_()}update_(){let e=this.value.rawValue,t=e.getComponents("rgb"),i=new uO([t[0],t[1],t[2],0],"rgb"),n=new uO([t[0],t[1],t[2],255],"rgb"),s=["to right",cl(i),cl(n)];this.colorElem_.style.background=`linear-gradient(${s.join(",")})`,this.previewElem_.style.backgroundColor=cl(e);let r=pP(t[3],0,1,0,100);this.markerElem_.style.left=`${r}%`}onValueChange_(){this.update_()}}class cv{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new cc(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new uo(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;let i=e.point.x/e.bounds.width,[n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new uO([n,s,r,i],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){let t=ut(uB(!0),un(e));if(0===t)return;let[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new uO([i,n,s,r+t],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){0!==ut(uB(!0),un(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const cm=p5("coltxt");class cb{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(cm()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(cm("m")),this.modeElem_=function(e){let t=e.createElement("select");return t.appendChild([{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"},{text:"HEX",value:"hex"}].reduce((t,i)=>{let n=e.createElement("option");return n.textContent=i.text,n.value=i.value,t.appendChild(n),t},e.createDocumentFragment())),t}(e),this.modeElem_.classList.add(cm("ms")),i.appendChild(this.modeSelectElement),t.viewProps.bindDisabled(this.modeElem_);let n=e.createElement("div");n.classList.add(cm("mm")),n.appendChild(pZ(e,"dropdown")),i.appendChild(n),this.element.appendChild(i);let s=e.createElement("div");s.classList.add(cm("w")),this.element.appendChild(s),this.inputsElem_=s,this.inputViews_=t.inputViews,this.applyInputViews_(),p2(t.mode,e=>{this.modeElem_.value=e})}get modeSelectElement(){return this.modeElem_}get inputViews(){return this.inputViews_}set inputViews(e){this.inputViews_=e,this.applyInputViews_()}applyInputViews_(){p0(this.inputsElem_);let e=this.element.ownerDocument;this.inputViews_.forEach(t=>{let i=e.createElement("div");i.classList.add(cm("c")),i.appendChild(t.element),this.inputsElem_.appendChild(i)})}}class cg{constructor(e,t){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=t.colorType,this.value=t.value,this.viewProps=t.viewProps,this.colorMode=pt(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(e),this.view=new cb(e,{mode:this.colorMode,inputViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view],viewProps:this.viewProps}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(e){let t=this.colorMode.rawValue;return"hex"!==t?function(e,t){let i={colorMode:t.colorMode,colorType:t.colorType,parser:py,viewProps:t.viewProps};return[0,1,2].map(n=>{var s,r,o;let l=(s=e,r=i,new uh(s,{arrayPosition:0===(o=n)?"fst":2===o?"lst":"mid",parser:r.parser,props:pi.fromObject({formatter:pC("float"===r.colorType?2:0),keyScale:uB(!1),pointerScale:"float"===r.colorType?.01:1}),value:pt(0,{constraint:new pn({min:0,max:uS(r.colorMode,r.colorType)[o]})}),viewProps:r.viewProps}));return ue({primary:t.value,secondary:l.value,forward:e=>uH(e,t.colorType).getComponents(t.colorMode)[n],backward(e,i){var s;let r=t.colorMode,o=uH(e,t.colorType).getComponents(r);return o[n]=i,uH((s=uM(uL(o),o[3]),uU[t.colorType](s,r)),"int")}}),l})}(e,{colorMode:t,colorType:this.colorType_,value:this.value,viewProps:this.viewProps}):function(e,t){let i=new d3(e,{parser:ct("int"),props:pi.fromObject({formatter:cs}),value:pt(uO.black()),viewProps:t.viewProps});return ue({primary:t.value,secondary:i.value,forward:e=>new uO(uL(e.getComponents()),e.mode),backward:(e,t)=>new uO(uM(uL(t.getComponents(e.mode)),e.getComponents()[3]),e.mode)}),[i]}(e,{value:this.value,viewProps:this.viewProps})}onModeSelectChange_(e){let t=e.currentTarget;this.colorMode.rawValue=t.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.inputViews=this.ccs_.map(e=>e.view)}}const c_=p5("hpl");class cw{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(c_()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);let i=e.createElement("div");i.classList.add(c_("c")),this.element.appendChild(i);let n=e.createElement("div");n.classList.add(c_("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){let[e]=this.value.rawValue.getComponents("hsv");this.markerElem_.style.backgroundColor=co(new uO([e,100,100],"hsv"));let t=pP(e,0,360,0,100);this.markerElem_.style.left=`${t}%`}onValueChange_(){this.update_()}}class cf{constructor(e,t){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.view=new cw(e,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new uo(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;let i=pP(pk(e.point.x,0,e.bounds.width),0,e.bounds.width,0,360),[,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new uO([i,n,s,r],"hsv"),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onKeyDown_(e){let t=ut(uB(!1),un(e));if(0===t)return;let[i,n,s,r]=this.value.rawValue.getComponents("hsv");this.value.setRawValue(new uO([i+t,n,s,r],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(e){0!==ut(uB(!1),un(e))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const cy=p5("svp");class cx{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),this.value=t.value,this.value.emitter.on("change",this.onValueChange_),this.element=e.createElement("div"),this.element.classList.add(cy()),t.viewProps.bindClassModifiers(this.element),t.viewProps.bindTabIndex(this.element);let i=e.createElement("canvas");i.height=64,i.width=64,i.classList.add(cy("c")),this.element.appendChild(i),this.canvasElement=i;let n=e.createElement("div");n.classList.add(cy("m")),this.element.appendChild(n),this.markerElem_=n,this.update_()}update_(){let e=function(e){let t=e.ownerDocument.defaultView;return t&&"document"in t?e.getContext("2d",{willReadFrequently:!0}):null}(this.canvasElement);if(!e)return;let t=this.value.rawValue.getComponents("hsv"),i=this.canvasElement.width,n=this.canvasElement.height,s=e.getImageData(0,0,i,n),r=s.data;for(let e=0;ee.getComponents()[3],backward:(e,t)=>{let i=e.getComponents();return i[3]=t,new uO(i,e.mode)}}),this.textsC_=new cg(e,{colorType:t.colorType,value:this.value,viewProps:this.viewProps}),this.view=new uR(e,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:t.supportsAlpha,svPaletteView:this.svPaletteC_.view,textsView:this.textsC_.view,viewProps:this.viewProps})}get textsController(){return this.textsC_}}const cE=p5("colsw");class ck{constructor(e,t){this.onValueChange_=this.onValueChange_.bind(this),t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.element=e.createElement("div"),this.element.classList.add(cE()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(cE("sw")),this.element.appendChild(i),this.swatchElem_=i;let n=e.createElement("button");n.classList.add(cE("b")),t.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n,this.update_()}update_(){let e=this.value.rawValue;this.swatchElem_.style.backgroundColor=cr(e)}onValueChange_(){this.update_()}}class cV{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new ck(e,{value:this.value,viewProps:this.viewProps})}}class cL{constructor(e,t){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=df.create(t.expanded),this.swatchC_=new cV(e,{value:this.value,viewProps:this.viewProps});let i=this.swatchC_.view.buttonElement;i.addEventListener("blur",this.onButtonBlur_),i.addEventListener("click",this.onButtonClick_),this.textC_=new d3(e,{parser:t.parser,props:pi.fromObject({formatter:t.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new uk(e,{foldable:this.foldable_,pickerLayout:t.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_="popup"===t.pickerLayout?new d0(e,{viewProps:this.viewProps}):null;let n=new cP(e,{colorType:t.colorType,supportsAlpha:t.supportsAlpha,value:this.value,viewProps:this.viewProps});n.view.allFocusableElements.forEach(e=>{e.addEventListener("blur",this.onPopupChildBlur_),e.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=n,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(n.view.element),ue({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:e=>e,backward:(e,t)=>t})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),dx(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(e){if(!this.popC_)return;let t=this.view.element,i=e.relatedTarget;i&&t.contains(i)||(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;let t=this.popC_.view.element,i=p1(e);!(i&&t.contains(i))&&(!i||i!==this.swatchC_.view.buttonElement||pY(t.ownerDocument))&&(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?"Escape"===e.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===e.key&&this.swatchC_.view.buttonElement.focus()}}function cM(e){return uL(e.getComponents("rgb")).reduce((e,t)=>e<<8|255&Math.floor(t),0)}function cD(e){return e.getComponents("rgb").reduce((e,t,i)=>e<<8|255&Math.floor(3===i?255*t:t),0)>>>0}function cS(e){return"number"!=typeof e?uO.black():new uO([e>>16&255,e>>8&255,255&e],"rgb")}function cj(e){return"number"!=typeof e?uO.black():new uO([e>>24&255,e>>16&255,e>>8&255,pP(255&e,0,255,0,1)],"rgb")}function cT(e,t){return!("object"!=typeof e||hQ(e))&&t in e&&"number"==typeof e[t]}function cI(e){return cT(e,"r")&&cT(e,"g")&&cT(e,"b")}function cO(e){return cI(e)&&cT(e,"a")}function cA(e,t){if(e.mode!==t.mode||e.type!==t.type)return!1;let i=e.getComponents(),n=t.getComponents();for(let e=0;e{var i;if("number"!=typeof e||!("color"in t||"color"===t.view))return null;let n=uz(t);return n?{initialValue:e,params:Object.assign(Object.assign({},n),{supportsAlpha:null!==(i=null==t?void 0:t.color)&&void 0!==i&&!!i.alpha})}:null},binding:{reader:e=>e.params.supportsAlpha?cj:cS,equals:cA,writer:e=>(function(e){let t=e?cD:cM;return(e,i)=>{uy(e,t(i))}})(e.params.supportsAlpha)},controller:e=>{var t,i;return new cL(e.document,{colorType:"int",expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,formatter:e.params.supportsAlpha?e=>cr(e,"0x"):e=>cs(e,"0x"),parser:ct("int"),pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",supportsAlpha:e.params.supportsAlpha,value:e.value,viewProps:e.viewProps})}}),dp({id:"input-color-object",type:"input",accept:(e,t)=>{var i;if(!cI(e))return null;let n=uz(t);return n?{initialValue:e,params:Object.assign(Object.assign({},n),{colorType:null!==(i=uN(t))&&void 0!==i?i:"int"})}:null},binding:{reader:e=>{var t;return t=e.params.colorType,e=>{let i=cI(e)?"int"===t?new uO(cR(e),"rgb"):"float"===t?new uF(cR(e),"rgb"):uH(uO.black(),"int"):uH(uO.black(),t);return uH(i,"int")}},equals:cA,writer:e=>{var t,i;return t=cO(e.initialValue),i=e.params.colorType,(e,n)=>{t?function(e,t,i){let n=uH(t,i).toRgbaObject();e.writeProperty("r",n.r),e.writeProperty("g",n.g),e.writeProperty("b",n.b),e.writeProperty("a",n.a)}(e,n,i):function(e,t,i){let n=uH(t,i).toRgbaObject();e.writeProperty("r",n.r),e.writeProperty("g",n.g),e.writeProperty("b",n.b)}(e,n,i)}}},controller:e=>{var t,i,n;let s=cO(e.initialValue);return new cL(e.document,{colorType:e.params.colorType,expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,formatter:(n=e.params.colorType,e=>s?ch(e,n):ca(e,n)),parser:ct("int"),pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",supportsAlpha:s,value:e.value,viewProps:e.viewProps})}}),dp({id:"input-color-string",type:"input",accept:(e,t)=>{if("string"!=typeof e||"text"===t.view)return null;let i=function(e,t="int"){let i=ce.reduce((t,{parser:i,result:n})=>t||(i(e)?n:null),null);return i?"hex"===i.notation&&"float"!==t?Object.assign(Object.assign({},i),{type:"int"}):"func"===i.notation?Object.assign(Object.assign({},i),{type:t}):null:null}(e,uN(t));if(!i)return null;let n=cd(i);if(!n)return null;let s=uz(t);return s?{initialValue:e,params:Object.assign(Object.assign({},s),{format:i,stringifier:n})}:null},binding:{reader:()=>ci,equals:cA,writer:e=>{let t=function(e){let t=cd(e);return t?(e,i)=>{uy(e,t(i))}:null}(e.params.format);if(!t)throw h6.notBindable();return t}},controller:e=>{var t,i;return new cL(e.document,{colorType:e.params.format.type,expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,formatter:e.params.stringifier,parser:ct("int"),pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",supportsAlpha:e.params.format.alpha,value:e.value,viewProps:e.viewProps})}});class cK{constructor(e){this.components=e.components,this.asm_=e.assembly}constrain(e){let t=this.asm_.toComponents(e).map((e,t)=>{var i,n;return null!==(n=null===(i=this.components[t])||void 0===i?void 0:i.constrain(e))&&void 0!==n?n:e});return this.asm_.fromComponents(t)}}const cz=p5("pndtxt");class cB{constructor(e,t){this.textViews=t.textViews,this.element=e.createElement("div"),this.element.classList.add(cz()),this.textViews.forEach(t=>{let i=e.createElement("div");i.classList.add(cz("a")),i.appendChild(t.element),this.element.appendChild(i)})}}class cN{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.acs_=t.axes.map((i,n)=>new uh(e,{arrayPosition:0===n?"fst":n===t.axes.length-1?"lst":"mid",parser:t.parser,props:t.axes[n].textProps,value:pt(0,{constraint:t.axes[n].constraint}),viewProps:t.viewProps})),this.acs_.forEach((e,i)=>{ue({primary:this.value,secondary:e.value,forward:e=>t.assembly.toComponents(e)[i],backward:(e,n)=>{let s=t.assembly.toComponents(e);return s[i]=n,t.assembly.fromComponents(s)}})}),this.view=new cB(e,{textViews:this.acs_.map(e=>e.view)})}get textControllers(){return this.acs_}}class cF extends pz{get max(){return this.controller.valueController.sliderController.props.get("max")}set max(e){this.controller.valueController.sliderController.props.set("max",e)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(e){this.controller.valueController.sliderController.props.set("min",e)}}dp({id:"input-number",type:"input",accept:(e,t)=>{if("number"!=typeof e)return null;let i=pU(t,e=>Object.assign(Object.assign({},pS(e)),{options:e.optional.custom(dq),readonly:e.optional.constant(!1)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>px,constraint:e=>(function(e,t){let i=[],n=pL(e,t);n&&i.push(n);let s=pM(e);s&&i.push(s);let r=dJ(e.options);return r&&i.push(r),new dU(i)})(e.params,e.initialValue),writer:e=>uy},controller:e=>{let t=e.value,i=e.constraint,n=i&&dH(i,d$);if(n)return new dZ(e.document,{props:new pi({options:n.values.value("options")}),value:t,viewProps:e.viewProps});let s=pD(e.params,t.rawValue),r=i&&dH(i,pn);if(r){var o;return new um(e.document,Object.assign(Object.assign({},{sliderProps:new pi({keyScale:(o=Object.assign(Object.assign({},s),{keyScale:pt(s.keyScale),max:r.values.value("max"),min:r.values.value("min")})).keyScale,max:o.max,min:o.min}),textProps:new pi({formatter:pt(o.formatter),keyScale:o.keyScale,pointerScale:pt(o.pointerScale)})}),{parser:py,value:t,viewProps:e.viewProps}))}return new uh(e.document,{parser:py,props:pi.fromObject(s),value:t,viewProps:e.viewProps})},api:e=>"number"!=typeof e.controller.value.rawValue?null:e.controller.valueController instanceof um?new cF(e.controller):e.controller.valueController instanceof dZ?new dF(e.controller):null});class cU{constructor(e=0,t=0){this.x=e,this.y=t}getComponents(){return[this.x,this.y]}static isObject(e){if(hQ(e))return!1;let t=e.x,i=e.y;return"number"==typeof t&&"number"==typeof i}static equals(e,t){return e.x===t.x&&e.y===t.y}toObject(){return{x:this.x,y:this.y}}}const cH={toComponents:e=>e.getComponents(),fromComponents:e=>new cU(...e)},c$=p5("p2d");class cq{constructor(e,t){this.element=e.createElement("div"),this.element.classList.add(c$()),t.viewProps.bindClassModifiers(this.element),p2(t.expanded,di(this.element,c$(void 0,"expanded")));let i=e.createElement("div");i.classList.add(c$("h")),this.element.appendChild(i);let n=e.createElement("button");n.classList.add(c$("b")),n.appendChild(pZ(e,"p2dpad")),t.viewProps.bindDisabled(n),i.appendChild(n),this.buttonElement=n;let s=e.createElement("div");if(s.classList.add(c$("t")),i.appendChild(s),this.textElement=s,"inline"===t.pickerLayout){let t=e.createElement("div");t.classList.add(c$("p")),this.element.appendChild(t),this.pickerElement=t}else this.pickerElement=null}}const cG=p5("p2dp");class cJ{constructor(e,t){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onPropsChange_=this.onPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.props_=t.props,this.props_.emitter.on("change",this.onPropsChange_),this.element=e.createElement("div"),this.element.classList.add(cG()),"popup"===t.layout&&this.element.classList.add(cG(void 0,"p")),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("div");i.classList.add(cG("p")),t.viewProps.bindTabIndex(i),this.element.appendChild(i),this.padElement=i;let n=e.createElementNS(pG,"svg");n.classList.add(cG("g")),this.padElement.appendChild(n),this.svgElem_=n;let s=e.createElementNS(pG,"line");s.classList.add(cG("ax")),s.setAttributeNS(null,"x1","0"),s.setAttributeNS(null,"y1","50%"),s.setAttributeNS(null,"x2","100%"),s.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(s);let r=e.createElementNS(pG,"line");r.classList.add(cG("ax")),r.setAttributeNS(null,"x1","50%"),r.setAttributeNS(null,"y1","0"),r.setAttributeNS(null,"x2","50%"),r.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(r);let o=e.createElementNS(pG,"line");o.classList.add(cG("l")),o.setAttributeNS(null,"x1","50%"),o.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(o),this.lineElem_=o;let l=e.createElement("div");l.classList.add(cG("m")),this.padElement.appendChild(l),this.markerElem_=l,t.value.emitter.on("change",this.onValueChange_),this.value=t.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){let[e,t]=this.value.rawValue.getComponents(),i=this.props_.get("max"),n=pP(e,-i,+i,0,100),s=pP(t,-i,+i,0,100),r=this.props_.get("invertsY")?100-s:s;this.lineElem_.setAttributeNS(null,"x2",`${n}%`),this.lineElem_.setAttributeNS(null,"y2",`${r}%`),this.markerElem_.style.left=`${n}%`,this.markerElem_.style.top=`${r}%`}onValueChange_(){this.update_()}onPropsChange_(){this.update_()}onFoldableChange_(){this.update_()}}function cY(e,t,i){return[ut(t[0],un(e)),ut(t[1],ui(e))*(i?1:-1)]}class cX{constructor(e,t){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.view=new cJ(e,{layout:t.layout,props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new uo(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(e,t){if(!e.point)return;let i=this.props.get("max"),n=pP(e.point.x,0,e.bounds.width,-i,+i),s=pP(this.props.get("invertsY")?e.bounds.height-e.point.y:e.point.y,0,e.bounds.height,-i,+i);this.value.setRawValue(new cU(n,s),t)}onPointerDown_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerMove_(e){this.handlePointerEvent_(e.data,{forceEmit:!1,last:!1})}onPointerUp_(e){this.handlePointerEvent_(e.data,{forceEmit:!0,last:!0})}onPadKeyDown_(e){us(e.key)&&e.preventDefault();let[t,i]=cY(e,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));(0!==t||0!==i)&&this.value.setRawValue(new cU(this.value.rawValue.x+t,this.value.rawValue.y+i),{forceEmit:!1,last:!1})}onPadKeyUp_(e){let[t,i]=cY(e,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));(0!==t||0!==i)&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class cZ{constructor(e,t){var i,n;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=t.value,this.viewProps=t.viewProps,this.foldable_=df.create(t.expanded),this.popC_="popup"===t.pickerLayout?new d0(e,{viewProps:this.viewProps}):null;let s=new cX(e,{layout:t.pickerLayout,props:new pi({invertsY:pt(t.invertsY),max:pt(t.max),xKeyScale:t.axes[0].textProps.value("keyScale"),yKeyScale:t.axes[1].textProps.value("keyScale")}),value:this.value,viewProps:this.viewProps});s.view.allFocusableElements.forEach(e=>{e.addEventListener("blur",this.onPopupChildBlur_),e.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=s,this.textC_=new cN(e,{assembly:cH,axes:t.axes,parser:t.parser,value:this.value,viewProps:this.viewProps}),this.view=new cq(e,{expanded:this.foldable_.value("expanded"),pickerLayout:t.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),null===(i=this.view.buttonElement)||void 0===i||i.addEventListener("blur",this.onPadButtonBlur_),null===(n=this.view.buttonElement)||void 0===n||n.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),ue({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:e=>e,backward:(e,t)=>t})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),dx(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onPadButtonBlur_(e){if(!this.popC_)return;let t=this.view.element,i=e.relatedTarget;i&&t.contains(i)||(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(e){if(!this.popC_)return;let t=this.popC_.view.element,i=p1(e);!(i&&t.contains(i))&&(!i||i!==this.view.buttonElement||pY(t.ownerDocument))&&(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(e){this.popC_?"Escape"===e.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===e.key&&this.view.buttonElement.focus()}}function cW(e){return cU.isObject(e)?new cU(e.x,e.y):new cU}function cQ(e,t){e.writeProperty("x",t.x),e.writeProperty("y",t.y)}function c0(e,t){var i,n;return hQ(e.min)&&hQ(e.max)?Math.max(10*Math.abs(pV(e)),10*Math.abs(t)):Math.max(Math.abs(null!==(i=e.min)&&void 0!==i?i:0),Math.abs(null!==(n=e.max)&&void 0!==n?n:0))}dp({id:"input-point2d",type:"input",accept:(e,t)=>{if(!cU.isObject(e))return null;let i=pU(t,e=>Object.assign(Object.assign({},ug(e)),{expanded:e.optional.boolean,picker:e.optional.custom(uf),readonly:e.optional.constant(!1),x:e.optional.custom(u_),y:e.optional.object(Object.assign(Object.assign({},ug(e)),{inverted:e.optional.boolean}))}));return i?{initialValue:e,params:i}:null},binding:{reader:()=>cW,constraint:e=>{var t,i;return t=e.params,i=e.initialValue,new cK({assembly:cH,components:[uw(Object.assign(Object.assign({},t),t.x),i.x),uw(Object.assign(Object.assign({},t),t.y),i.y)]})},equals:cU.equals,writer:()=>cQ},controller:e=>{var t,i,n,s,r,o;let l=e.document,a=e.value,h=e.constraint,p=[e.params.x,e.params.y];return new cZ(l,{axes:a.rawValue.getComponents().map((t,i)=>{var n;return pj({constraint:h.components[i],initialValue:t,params:h3(e.params,null!==(n=p[i])&&void 0!==n?n:{})})}),expanded:null!==(t=e.params.expanded)&&void 0!==t&&t,invertsY:function(e){if(!("y"in e))return!1;let t=e.y;return!!t&&"inverted"in t&&!!t.inverted}(e.params),max:(n=e.params,s=a.rawValue,Math.max(c0(h3(n,null!==(r=n.x)&&void 0!==r?r:{}),s.x),c0(h3(n,null!==(o=n.y)&&void 0!==o?o:{}),s.y))),parser:py,pickerLayout:null!==(i=e.params.picker)&&void 0!==i?i:"popup",value:a,viewProps:e.viewProps})}});class c1{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.z=i}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(hQ(e))return!1;let t=e.x,i=e.y,n=e.z;return"number"==typeof t&&"number"==typeof i&&"number"==typeof n}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z}toObject(){return{x:this.x,y:this.y,z:this.z}}}const c2={toComponents:e=>e.getComponents(),fromComponents:e=>new c1(...e)};function c3(e){return c1.isObject(e)?new c1(e.x,e.y,e.z):new c1}function c5(e,t){e.writeProperty("x",t.x),e.writeProperty("y",t.y),e.writeProperty("z",t.z)}dp({id:"input-point3d",type:"input",accept:(e,t)=>{if(!c1.isObject(e))return null;let i=pU(t,e=>Object.assign(Object.assign({},ug(e)),{readonly:e.optional.constant(!1),x:e.optional.custom(u_),y:e.optional.custom(u_),z:e.optional.custom(u_)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>c3,constraint:e=>{var t,i;return t=e.params,i=e.initialValue,new cK({assembly:c2,components:[uw(Object.assign(Object.assign({},t),t.x),i.x),uw(Object.assign(Object.assign({},t),t.y),i.y),uw(Object.assign(Object.assign({},t),t.z),i.z)]})},equals:c1.equals,writer:e=>c5},controller:e=>{let t=e.value,i=e.constraint,n=[e.params.x,e.params.y,e.params.z];return new cN(e.document,{assembly:c2,axes:t.rawValue.getComponents().map((t,s)=>{var r;return pj({constraint:i.components[s],initialValue:t,params:h3(e.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:py,value:t,viewProps:e.viewProps})}});class c6{constructor(e=0,t=0,i=0,n=0){this.x=e,this.y=t,this.z=i,this.w=n}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(hQ(e))return!1;let t=e.x,i=e.y,n=e.z,s=e.w;return"number"==typeof t&&"number"==typeof i&&"number"==typeof n&&"number"==typeof s}static equals(e,t){return e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}}const c4={toComponents:e=>e.getComponents(),fromComponents:e=>new c6(...e)};function c9(e){return c6.isObject(e)?new c6(e.x,e.y,e.z,e.w):new c6}function c8(e,t){e.writeProperty("x",t.x),e.writeProperty("y",t.y),e.writeProperty("z",t.z),e.writeProperty("w",t.w)}dp({id:"input-point4d",type:"input",accept:(e,t)=>{if(!c6.isObject(e))return null;let i=pU(t,e=>Object.assign(Object.assign({},ug(e)),{readonly:e.optional.constant(!1),w:e.optional.custom(u_),x:e.optional.custom(u_),y:e.optional.custom(u_),z:e.optional.custom(u_)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>c9,constraint:e=>{var t,i;return t=e.params,i=e.initialValue,new cK({assembly:c4,components:[uw(Object.assign(Object.assign({},t),t.x),i.x),uw(Object.assign(Object.assign({},t),t.y),i.y),uw(Object.assign(Object.assign({},t),t.z),i.z),uw(Object.assign(Object.assign({},t),t.w),i.w)]})},equals:c6.equals,writer:e=>c8},controller:e=>{let t=e.value,i=e.constraint,n=[e.params.x,e.params.y,e.params.z,e.params.w];return new cN(e.document,{assembly:c4,axes:t.rawValue.getComponents().map((t,s)=>{var r;return pj({constraint:i.components[s],initialValue:t,params:h3(e.params,null!==(r=n[s])&&void 0!==r?r:{})})}),parser:py,value:t,viewProps:e.viewProps})}}),dp({id:"input-string",type:"input",accept:(e,t)=>{if("string"!=typeof e)return null;let i=pU(t,e=>({readonly:e.optional.constant(!1),options:e.optional.custom(dq)}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>d8,constraint:e=>(function(e){let t=[],i=dJ(e.options);return i&&t.push(i),new dU(t)})(e.params),writer:e=>uy},controller:e=>{let t=e.document,i=e.value,n=e.constraint,s=n&&dH(n,d$);return s?new dZ(t,{props:new pi({options:s.values.value("options")}),value:i,viewProps:e.viewProps}):new d3(t,{parser:e=>e,props:pi.fromObject({formatter:d7}),value:i,viewProps:e.viewProps})},api:e=>"string"!=typeof e.controller.value.rawValue?null:e.controller.valueController instanceof dZ?new dF(e.controller):null});const c7={monitor:{defaultInterval:200,defaultRows:3}},ve=p5("mll");class vt{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(ve()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("textarea");i.classList.add(ve("i")),i.style.height=`calc(var(--${ub}) * ${t.rows})`,i.readOnly=!0,t.viewProps.bindDisabled(i),this.element.appendChild(i),this.textareaElem_=i,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){let e=this.textareaElem_,t=e.scrollTop===e.scrollHeight-e.clientHeight,i=[];this.value.rawValue.forEach(e=>{void 0!==e&&i.push(this.formatter_(e))}),e.textContent=i.join("\n"),t&&(e.scrollTop=e.scrollHeight)}onValueUpdate_(){this.update_()}}class vi{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new vt(e,{formatter:t.formatter,rows:t.rows,value:this.value,viewProps:this.viewProps})}}const vn=p5("sgl");class vs{constructor(e,t){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=t.formatter,this.element=e.createElement("div"),this.element.classList.add(vn()),t.viewProps.bindClassModifiers(this.element);let i=e.createElement("input");i.classList.add(vn("i")),i.readOnly=!0,i.type="text",t.viewProps.bindDisabled(i),this.element.appendChild(i),this.inputElement=i,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}update_(){let e=this.value.rawValue,t=e[e.length-1];this.inputElement.value=void 0!==t?this.formatter_(t):""}onValueUpdate_(){this.update_()}}class vr{constructor(e,t){this.value=t.value,this.viewProps=t.viewProps,this.view=new vs(e,{formatter:t.formatter,value:this.value,viewProps:this.viewProps})}}dp({id:"monitor-bool",type:"monitor",accept:(e,t)=>{if("boolean"!=typeof e)return null;let i=pU(t,e=>({readonly:e.required.constant(!0),rows:e.optional.number}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>d5},controller:e=>{var t;return 1===e.value.rawValue.length?new vr(e.document,{formatter:d6,value:e.value,viewProps:e.viewProps}):new vi(e.document,{formatter:d6,rows:null!==(t=e.params.rows)&&void 0!==t?t:c7.monitor.defaultRows,value:e.value,viewProps:e.viewProps})}});class vo extends pz{get max(){return this.controller.valueController.props.get("max")}set max(e){this.controller.valueController.props.set("max",e)}get min(){return this.controller.valueController.props.get("min")}set min(e){this.controller.valueController.props.set("min",e)}}const vl=p5("grl");class va{constructor(e,t){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=e.createElement("div"),this.element.classList.add(vl()),t.viewProps.bindClassModifiers(this.element),this.formatter_=t.formatter,this.props_=t.props,this.cursor_=t.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);let i=e.createElementNS(pG,"svg");i.classList.add(vl("g")),i.style.height=`calc(var(--${ub}) * ${t.rows})`,this.element.appendChild(i),this.svgElem_=i;let n=e.createElementNS(pG,"polyline");this.svgElem_.appendChild(n),this.lineElem_=n;let s=e.createElement("div");s.classList.add(vl("t"),p5("tt")()),this.element.appendChild(s),this.tooltipElem_=s,t.value.emitter.on("change",this.onValueUpdate_),this.value=t.value,this.update_()}get graphElement(){return this.svgElem_}update_(){let{clientWidth:e,clientHeight:t}=this.element,i=this.value.rawValue.length-1,n=this.props_.get("min"),s=this.props_.get("max"),r=[];this.value.rawValue.forEach((o,l)=>{if(void 0===o)return;let a=pP(l,0,i,0,e),h=pP(o,n,s,t,0);r.push([a,h].join(","))}),this.lineElem_.setAttributeNS(null,"points",r.join(" "));let o=this.tooltipElem_,l=this.value.rawValue[this.cursor_.rawValue];if(void 0===l){o.classList.remove(vl("t","a"));return}let a=pP(this.cursor_.rawValue,0,i,0,e),h=pP(l,n,s,t,0);o.style.left=`${a}px`,o.style.top=`${h}px`,o.textContent=`${this.formatter_(l)}`,o.classList.contains(vl("t","a"))||(o.classList.add(vl("t","a"),vl("t","in")),pJ(o),o.classList.remove(vl("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class vh{constructor(e,t){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props=t.props,this.value=t.value,this.viewProps=t.viewProps,this.cursor_=pt(-1),this.view=new va(e,{cursor:this.cursor_,formatter:t.formatter,rows:t.rows,props:this.props,value:this.value,viewProps:this.viewProps}),pY(e)){let e=new uo(this.view.element);e.emitter.on("down",this.onGraphPointerDown_),e.emitter.on("move",this.onGraphPointerMove_),e.emitter.on("up",this.onGraphPointerUp_)}else this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_)}importProps(e){return pH(e,null,e=>({max:e.required.number,min:e.required.number}),e=>(this.props.set("max",e.max),this.props.set("min",e.min),!0))}exportProps(){return p$(null,{max:this.props.get("max"),min:this.props.get("min")})}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(e){let{clientWidth:t}=this.view.element;this.cursor_.rawValue=Math.floor(pP(e.offsetX,0,t,0,this.value.rawValue.length))}onGraphPointerDown_(e){this.onGraphPointerMove_(e)}onGraphPointerMove_(e){if(!e.data.point){this.cursor_.rawValue=-1;return}this.cursor_.rawValue=Math.floor(pP(e.data.point.x,0,e.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function vp(e){return hQ(e.format)?pC(2):e.format}function vd(e){return"graph"===e.view}dp({id:"monitor-number",type:"monitor",accept:(e,t)=>{if("number"!=typeof e)return null;let i=pU(t,e=>({format:e.optional.function,max:e.optional.number,min:e.optional.number,readonly:e.required.constant(!0),rows:e.optional.number,view:e.optional.string}));return i?{initialValue:e,params:i}:null},binding:{defaultBufferSize:e=>vd(e)?64:1,reader:e=>px},controller:e=>{var t,i,n,s;return vd(e.params)?new vh(e.document,{formatter:vp(e.params),rows:null!==(t=e.params.rows)&&void 0!==t?t:c7.monitor.defaultRows,props:pi.fromObject({max:null!==(i=e.params.max)&&void 0!==i?i:100,min:null!==(n=e.params.min)&&void 0!==n?n:0}),value:e.value,viewProps:e.viewProps}):1===e.value.rawValue.length?new vr(e.document,{formatter:vp(e.params),value:e.value,viewProps:e.viewProps}):new vi(e.document,{formatter:vp(e.params),rows:null!==(s=e.params.rows)&&void 0!==s?s:c7.monitor.defaultRows,value:e.value,viewProps:e.viewProps})},api:e=>e.controller.valueController instanceof vh?new vo(e.controller):null}),dp({id:"monitor-string",type:"monitor",accept:(e,t)=>{if("string"!=typeof e)return null;let i=pU(t,e=>({multiline:e.optional.boolean,readonly:e.required.constant(!0),rows:e.optional.number}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>d8},controller:e=>{var t;let i=e.value;return i.rawValue.length>1||e.params.multiline?new vi(e.document,{formatter:d7,rows:null!==(t=e.params.rows)&&void 0!==t?t:c7.monitor.defaultRows,value:i,viewProps:e.viewProps}):new vr(e.document,{formatter:d7,value:i,viewProps:e.viewProps})}});class vu{constructor(e,t,i){for(var n of(this.params=i,this.element=e.createElement("div"),this.canvas=e.createElement("canvas"),this.element.appendChild(this.canvas),this.element.style.position="relative",this.canvas.width=160,this.canvas.height=50,this.canvas.style.cursor="pointer",this.canvas.onclick=e=>alert(e),this.R_max=.495*this.canvas.height,this.R_min=.37*this.canvas.height,this.top_margin=18,this.bottom_margin=18,this.left_right_margin=0,this.linear_scale_image=this.compute_linear_scale_image(),this.circular_scale_image=this.compute_circular_scale_image(),this.left_label=e.createElement("span"),this.value_label=e.createElement("span"),this.right_label=e.createElement("span"),this.span_width=70,[this.left_label,this.value_label,this.right_label]))n.style.transition="0.2s linear left",n.style.color="#c8cad0",n.style.position="absolute",n.style.top=(this.canvas.height-13).toString()+"px",n.style.width=this.span_width.toString()+"px",this.element.appendChild(n);this.left_label.style.left="0px",this.value_label.style.textAlign="center",this.value_label.style.top="0px",this.right_label.style.right="0px",this.right_label.style.textAlign="right",this.left_tick1=e.createElement("span"),this.left_tick2=e.createElement("span"),this.value_tick1=e.createElement("span"),this.value_tick2=e.createElement("span"),this.right_tick1=e.createElement("span"),this.right_tick2=e.createElement("span"),this.circular_tick=e.createElement("span");var s=4;for(var n of[this.left_tick1,this.value_tick1,this.value_tick2,this.right_tick1,this.circular_tick])n.style.transition="0.2s linear left",n.style.position="absolute",n.style.height=s+"px",n.style.width="1px",n.style.backgroundColor="#c8cad0",this.element.appendChild(n);this.value_tick1.style.display="none",this.value_tick2.style.display="none",this.value_tick1.style.top=(this.top_margin-s).toString()+"px",this.value_tick2.style.top=(this.canvas.height-this.bottom_margin).toString()+"px",this.left_tick1.style.top=(this.canvas.height-this.bottom_margin).toString()+"px",this.left_tick1.style.left="0px",this.right_tick1.style.top=(this.canvas.height-this.bottom_margin).toString()+"px",this.right_tick1.style.right="0px";var r=this.canvas.width/2-.5,o=this.canvas.height/2-.5,s=2;this.circular_tick.style.transition="0.2s linear transform",this.circular_tick.style.width=this.R_min+"px",this.circular_tick.style.height=s+"px",this.circular_tick.style.left=r+"px",this.circular_tick.style.top=o-s/2+"px",this.circular_tick.style.transformOrigin="0px "+s/2+"px",t.viewProps.bindClassModifiers(this.element),this.value_=t.value,this.value_.emitter.on("change",this.onValueChange_.bind(this)),this.refresh_(),t.viewProps.handleDispose(()=>{console.log("TODO: dispose view")})}compute_linear_scale_image(e=0,t=100){let i=new Uint8ClampedArray(this.canvas.width*this.canvas.height*4);for(let s=this.left_right_margin;s0?this.params.labels[i][0]:this.params.display_unit(0,this.params.units[i],this.params.ranges[i],this.params.value_transforms[i],!1),this.right_label.innerHTML=this.params.labels[i].length>0?this.params.labels[i][1]:this.params.display_unit(1,this.params.units[i],this.params.ranges[i],this.params.value_transforms[i],!1);let n=this.canvas.getContext("2d");if(null!=n){if(0==e){if(0==e&&n.putImageData(this.linear_scale_image,0,0),t>=0){let e=t*(this.canvas.width-2*this.left_right_margin-1)+this.left_right_margin;this.value_label.innerHTML=this.params.display_unit(t,this.params.units[i],this.params.ranges[i],this.params.value_transforms[i]),this.value_label.style.left=(Math.min(Math.max(e,10),this.canvas.width-10)-this.span_width/2).toString()+"px",this.value_tick1.style.left=e.toString()+"px",this.value_tick2.style.left=e.toString()+"px",this.value_label.style.display="inline",this.value_tick1.style.display="inline",this.value_tick2.style.display="inline"}else this.value_label.style.display="none",this.value_tick1.style.display="none",this.value_tick2.style.display="none";this.left_tick1.style.display="inline",this.left_tick2.style.display="inline",this.right_tick1.style.display="inline",this.right_tick2.style.display="inline",this.circular_tick.style.display="none"}else 2==e&&(this.value_label.style.display="none",this.value_tick1.style.display="none",this.value_tick2.style.display="none",this.left_tick1.style.display="none",this.left_tick2.style.display="none",this.right_tick1.style.display="none",this.right_tick2.style.display="none",n.putImageData(this.circular_scale_image,0,0),t>=0?(this.circular_tick.style.transform="rotate("+(-180+360*t)+"deg)",this.circular_tick.style.display="inline"):this.circular_tick.style.display="none")}}onValueChange_(){this.refresh_()}}class vc{constructor(e,t,i){this.value=t.value,this.viewProps=t.viewProps,this.view=new vu(e,{value:this.value,viewProps:this.viewProps},i)}}const vv=dp({id:"input-template",type:"input",accept(e,t){let i=pU(t,e=>({view:e.required.constant("colormap"),units:e.optional.array(e.required.string),labels:e.optional.array(e.optional.array(e.required.string)),ranges:e.optional.array(e.optional.array(e.required.number)),display_unit:e.optional.function,value_transforms:e.optional.array(e.required.function),colormap1:e.optional.function,colormap2:e.optional.function}));return i?{initialValue:e,params:i}:null},binding:{reader:e=>e=>e,writer:e=>(e,t)=>{e.write(t)}},controller:e=>new vc(e.document,{value:e.value,viewProps:e.viewProps},e.params)}),vm="template",vb='.tp-tmpv{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-tmpv{background-color:var(--in-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--cnt-usz);line-height:var(--cnt-usz);min-width:0;width:100%}.tp-tmpv:hover{background-color:var(--in-bg-h)}.tp-tmpv:focus{background-color:var(--in-bg-f)}.tp-tmpv:active{background-color:var(--in-bg-a)}.tp-tmpv:disabled{opacity:.5}.tp-tmpv{cursor:pointer;display:grid;grid-template-columns:repeat(10, 1fr);grid-template-rows:repeat(auto-fit, 10px);height:calc(var(--cnt-usz)*3);overflow:hidden;position:relative}.tp-tmpv.tp-v-disabled{opacity:.5}.tp-tmpv_text{color:var(--in-fg);bottom:2px;font-size:.9em;line-height:.9;opacity:.5;position:absolute;right:2px}.tp-tmpv_dot{height:10px;line-height:10px;position:relative;text-align:center}.tp-tmpv_dot::before{background-color:var(--in-fg);content:"";border-radius:1px;height:2px;left:50%;margin-left:-1px;margin-top:-1px;position:absolute;top:50%;width:2px}.tp-tmpv_frac{background-color:var(--in-fg);border-radius:1px;height:2px;left:50%;margin-top:-1px;position:absolute;top:50%}',vg=[vv];var v_=document.getElementById("minimaps");function vw(){v_.style.height=document.body.clientHeight-90+"px",mP()}addEventListener("resize",e=>{vw()});var vf={};function vy(e){var t=document.createElement("div");return t.classList.add("zoom-button"),t.innerHTML=e,Number.isInteger(e)?t.onclick=t=>{vG.setZoom(e)}:(t.style.height="20px",t.style.lineHeight="20px",t.style.fontSize="18px","+"==e?(t.style.top="0px",t.style.borderRadius="7px 7px 0px 0px",t.style.borderBottom="1px solid var(--ui-bg-2)",t.onclick=e=>{vG.setZoom(vG.getZoom()+1)}):(t.style.top="99px",t.style.borderRadius="0px 0px 7px 7px",t.style.borderTop="1px solid var(--ui-bg-2)",t.onclick=e=>{vG.setZoom(vG.getZoom()-1)})),t}vf["+"]=vy("+"),document.getElementById("zoom_container").appendChild(vf["+"]);for(var vx=14;vx>=6;vx--)vf[vx]=vy(vx),document.getElementById("zoom_container").appendChild(vf[vx]);vf["-"]=vy("-"),document.getElementById("zoom_container").appendChild(vf["-"]),document.getElementById("zoom_container").style.height="119px";const vC=[[6,14],[],[9,14],[6,11],[6,11]];function vP(){let e=vG.getZoom();for(var t=21,i=14;i>=6;i--){let n=i==e?14:8;vf[i].style.top=t+"px",vf[i].style.height=n+"px",vf[i].style.lineHeight=n+"px",vf[i].style.fontSize=n-2+"px",ivC[vF.mode][1]?vf[i].style.visibility="hidden":(i==e?vf[i].style.color="#ffffff":vf[i].style.color=null,vf[i].style.visibility="visible"),t+=n}e==vC[vF.mode][1]?(vf["+"].style.cursor="initial",vf["+"].style.color="var(--ui-color2)"):(vf["+"].style.cursor="pointer",vf["+"].style.color=null),e==vC[vF.mode][0]?(vf["-"].style.cursor="initial",vf["-"].style.color="var(--ui-color2)"):(vf["-"].style.cursor="pointer",vf["-"].style.color=null)}const vE=new Date().getFullYear(),vk=[Object.assign(new Image,{src:"imgs/clusters.png"})],vV=new Date().getTimezoneOffset(),vL=[["nb tracks","#",[1,1e3],[],Utils.color_map,"number of GPS tracks",e=>Math.pow(e,1/.35)],["heading","°",[0,360],["",""],Utils.color_map_hsluv,"direction of movement",e=>e],["vario","m/s",[-1.4,.5],[],Utils.color_map,"vario",e=>e],["altitude","m",[500,3e3],[],Utils.color_map,"altitude",e=>e],["time","hh:mm",[600-vV,1020-vV],[],Utils.color_map,"time of day in your current local time ("+Strftime.strftime("%Zs",new Date)+")",e=>e],["progress","%",[0,100],["takeoff","landing"],Utils.color_map,"progress from takeoff to landing",e=>e],["duration","hh:mm",[18,360],[],Utils.color_map,"time from takeoff",e=>e],["speed","km/h",[32,52],[],Utils.color_map,"ground speed",e=>e],["dominance","%",[0,100],[],Utils.color_map,"local dominant flight path",e=>e],["","%",[0,100],[],Utils.color_map_coldhot,"",e=>e],["fly","%",[0,100],[],Utils.color_map_lightgray,"",e=>e],["thermals","%",[0,100],[],Utils.color_map,"",e=>e],["lighting","%",[0,100],[],Utils.color_map_lightgray,"",e=>e]];function vM(e,t,i,n,s=!0){if(e=(i[1]-i[0])*n(e)+i[0],i&&3==i.length&&(e=i[2](e)),"hh:mm"==t){var r=Math.floor((e=Math.round(e))/60),o=Math.floor(e)%60;return(r<10?"0":"")+r+":"+(o<10?"0":"")+o}if("°"==t){var l=Math.round(e);l=(540-l)%360;let i=["E","NE","N","NW","W","SW","S","SE"];for(var a=0;a<8;a++)if(l<=(1+2*a)*22.5)return i[a];return"E"+t}return"m/s"==t?(t=""+t+"",s&&e<=i[0])?"≤"+e.toFixed(1)+t:s&&e>=i[1]?"≥"+e.toFixed(1)+t:e.toFixed(1)+t:"#"==t?s&&e>=i[1]?"≥"+Math.round(e):Math.round(e):"%"==t?Math.round(e)+(t=""+t+""):(t=""+t+"",s&&e<=i[0])?"≤"+Math.round(e)+t:s&&e>=i[1]?"≥"+Math.round(e)+t:Math.round(e)+t}var vD=document.getElementById("tooltip"),vS=document.getElementById("tooltip_content"),vj=document.getElementById("tooltip_line"),vT=document.getElementById("tooltip_bubble");const vI=new URLSearchParams(window.location.search);function vO(e,t){vI.set(e,t),window.history.replaceState({},"",`${location.pathname}?${vI}`)}var vA=vI.get("date")?vI.get("date"):Strftime.strftime("%Y-%m-%d",new Date);const vR="?"+Math.random().toString();function vK(e,t=null){switch(e){case 0:return["data/tiles_cpp/{z}/{x}/{y}_2.png","data/tiles_cpp/{z}/{x}/{y}_3.png","data/tiles_cpp/{z}/{x}/{y}_4.png"];case 1:return[];case 2:return["data/tiles_cpp2/{z}/{x}/{y}_10.png","data/tiles_cpp2/{z}/{x}/{y}_11.png","data/tiles_cpp2/{z}/{x}/{y}_12.png"];case 3:return["data/tiles/elev_sa/{z}/{x}/{y}.png","data/tiles/thermals/{z}/{x}/{y}.png"];case 4:return["data/tiles/forecast/"+t+"/{z}/{x}/{y}_0.png"+vR]}}function vz(e,t=!0){vj.style.display=e?"block":"none",vT.style.display=e?"block":"none",tooltip_dot.style.display=t?"block":"none",tooltip_dot2.style.display=t?"block":"none"}vz(!1);class vB{constructor(e,t){this.images=[],this.PARAMS=e,this.mode=t;var i=Object.assign(document.createElement("canvas"),{width:128,height:1});this.context=i.getContext("2d",{willReadFrequently:!0});for(var n=0;nn?1:0})}tooltip_title.innerHTML=``;var o="";for(var l in vL)o+='
'+vL[l][0]+`: |
|
`;if(vS.innerHTML="",3==this.mode){this.clusters_image=vk[0];var i=Object.assign(document.createElement("canvas"),{width:32,height:32});this.mode_3_context=i.getContext("2d",{willReadFrequently:!0}),this.canvas2=Object.assign(document.createElement("canvas"),{width:96,height:32}),this.mode_3_context2=this.canvas2.getContext("2d",{willReadFrequently:!0});let e=vG.getCenter();this.update_sun_precomputation_if_needed(e.lat,e.lng),this.listener({latlng:{lat:e.lat,lng:e.lng}},vG.getZoom())}}update_sun_precomputation_if_needed(e,t){if(void 0===this.precomputed_sun||Math.abs(e-this.precomputed_sun_lat)+Math.abs(t-this.precomputed_sun_lon)>1){this.precomputed_sun=[];for(var i=0;i<3072;i++){var n=v2(e,t,Math.floor(i/96)/32,i%96/96,!1);this.precomputed_sun.push([n.azimuth,n.altitude])}this.precomputed_sun_lat=e,this.precomputed_sun_lon=t}}get_pixels(e,t,i,n,s,r=1){e>=vK(this.mode,vA).length&&(e=0);let o=vK(this.mode,vA)[e].replace("{z}",t).replace("{x}",i[0]).replace("{y}",i[1]);this.images[e].src!=o&&(this.images[e].src=o);try{this.context.drawImage(this.images[e],n,s,r,1,0,0,r,1)}catch(e){}return this.context.getImageData(0,0,r,1).data}get_data_mode_0(e,t,i,n){var s=this.get_pixels(0,n,e,t,i);if(!(s[2]>30))return null;{let t=Math.floor(21845.333333333332),i=256*s[0]+s[1],o=i%t*3;s=this.get_pixels(1+Math.floor(i/t),n,e,o%256,Math.floor(o/256),3);var r=DataDecoding.decode_data_block_0(s);return r.hc=i,r}}get_data_mode_1(e,t,i,n){var s=this.get_pixels(0,n,e,t,i);let r=s[0],o=s[1],l=Math.max(r,o);var a=256*s[2];if(!(l>30))return null;{a+=(s=this.get_pixels(1,n,e,t,i))[2];let l=256*(s=this.get_pixels(1,n,e,0,0))[0]+s[1];var h=1+2*DataDecoding.data_block_size*DataDecoding.tile_grid_resolution*DataDecoding.tile_grid_resolution+2*a+(o>r?1:0);let d=256*(s=this.get_pixels(1,n,e,h%256,Math.floor(h/256)))[0]+s[1];var h=1+2*DataDecoding.data_block_size*DataDecoding.tile_grid_resolution*DataDecoding.tile_grid_resolution+2*l+DataDecoding.data_block_size*d,p=DataDecoding.decode_data_block_1(this.get_pixels(1,n,e,h%256,Math.floor(h/256),DataDecoding.data_block_size));return p.hc=d,p}}get_data_mode_2(e,t,i,n){var s=this.get_pixels(0,n,e,t,i);if(!(s[0]>0))return null;{let l=256*(s=this.get_pixels(1,n,e,t,i))[1]+s[2],a=256*(s=this.get_pixels(2,n,e,0,0))[0]+s[1];var r=1+2*l+0;let h=256*(s=this.get_pixels(2,n,e,r%256,Math.floor(r/256),2))[0]+s[1];s[4],s[5];var r=1+2*a+6*h,o=DataDecoding.decode_data_block_2(this.get_pixels(2,n,e,r%256,Math.floor(r/256),6));return o.hc=l,o}}get_data_mode_3(e,t,i,n,s,r){if(!this.clusters_image.complete||0==this.clusters_image.naturalHeight)return null;this.update_sun_precomputation_if_needed(s,r);for(var o=this.get_pixels(0,n,e,t,i),l=o[0]/256*Math.PI*.5,a=(o[1]/256+o[2]/256/256)*2*Math.PI-Math.PI,o=this.get_pixels(1,n,e,t,i),h=o[0]+256*o[1],p=1.05*o[2]/255,d=0;d<32;d++)this.mode_3_context.drawImage(this.clusters_image,32*d,h,32,1,0,d,32,1);for(var u=this.mode_3_context.getImageData(0,0,32,32),c=this.mode_3_context.createImageData(96,32),v=Math.min(31,Math.floor((vF.datetime.y+.5)*32)),m=Math.min(95,Math.floor((vF.datetime.x+.5)*96)),b=128*v+4*Math.floor(m/3)+m%3,g={},_=0;_<1024;_++)for(var w=0;w<3;w++){var f,y=this.precomputed_sun[3*_+w],x=y[0],C=y[1],P=Math.cos(Math.PI/2-a-x)*Math.sin(l)*Math.sin(.5*Math.PI-C)+Math.cos(l)*Math.cos(.5*Math.PI-C);P=(Math.sign(C)+1)*.5*Math.min(Math.max(P,0),1),4*_+w==b&&(g={thermals:Math.min(1,p*u.data[4*_+w]/255),lighting:P}),vF.display_thermals?(P=.5+.5*P,f=Utils.color_map(p*u.data[4*_+w]/255)):(P=.3+.7*P,f={r:255,g:255,b:255}),c.data[(3*_+w)*4+0]=Math.floor(f.r*P),c.data[(3*_+w)*4+1]=Math.floor(f.g*P),c.data[(3*_+w)*4+2]=Math.floor(f.b*P),c.data[(3*_+w)*4+3]=255}this.mode_3_context2.putImageData(c,0,0);var E=this.canvas2.toDataURL();let k=-(r/360*160);return $("div.tp-p2dpv_p").css("background","url("+E+")"),$("div.tp-p2dpv_p").css("background-size","160px 160px"),$("div.tp-p2dpv_p").css("background-position",k+"px 0px"),g}get_data_mode_4(e,t,i,n,s,r){var o=this.get_pixels(0,n,e,t,i);return{fly:o[0]/255,thermals:o[1]/255}}listener(e,t){let i=Utils.deg2num(e.latlng.lat,e.latlng.lng,t);for(var n,s=0;s%',document.getElementById("tile_loading_count_bar").style.width=t+"%",0==this.counter){var i=document.getElementById("tile_loading_count");i.style.transitionDelay="0.25s",i.style.opacity=0,this.max=1}}},vY=null,vX=[null,null,null,null,null];function vZ(t,i=null,n=null){switch(i=i||vG,n=n||vA,i.options.minZoom=vC[t][0],i.options.maxZoom=vC[t][1],i.setZoom(Math.max(i.options.minZoom,Math.min(i.options.maxZoom,i.getZoom()))),null==vX[t]&&(vX[t]=function(t,i){switch(t){case 0:return new ShaderProgram(e(o),{uView:vF.view,uOpacity:vF.opacity,uBrightness:vF.brightness,uIntervalMin:vF.interval.min,uIntervalMax:vF.interval.max});case 2:return new ShaderProgram(e(l),{uZoom:i.getZoom(),uView:vF.view,uOpacity:vF.opacity,uBrightness:vF.brightness,uIntervalMin:vF.interval.min,uIntervalMax:vF.interval.max});case 3:{let t=i.getCenter(),n=v2(t.lat,t.lng,vF.date+.5,vF.time+.5);return new ShaderProgram(e(a),{uView:vF.view,uOpacity:vF.opacity,uBrightness:vF.brightness,uIntervalMin:vF.interval.min,uIntervalMax:vF.interval.max,uAltitude:n.altitude,uAzimuth:n.azimuth,uThermalDate:vF.date+.5,uThermalTime:vF.time+.5,uDisplayThermals:vF.display_thermals?1:-1})}case 4:{let t=i.getCenter(),n=v2(t.lat,t.lng,vF.date+.5,vF.time+.5);return new ShaderProgram(e(h),{uView:vF.view,uAltitude:n.altitude,uAzimuth:n.azimuth,uIntervalMin:vF.interval.min,uIntervalMax:vF.interval.max,uDisplayThermals:-1,uForecastDisplay:vF.forecast_display,uForecastTime:.5})}}}(t,i)),t){case 0:s={shaderProgram:vX[t],tileUrls:["https://tile.osm.ch/switzerland/{z}/{x}/{y}.png"].concat(vK(t)),default_tile_src:"imgs/default_tile_with_signature.png",tile_loading_progress:vJ};break;case 2:s={shaderProgram:vX[t],tileUrls:["https://tile.osm.ch/switzerland/{z}/{x}/{y}.png"].concat(vK(t)),default_tile_src:"imgs/default_tile.png",tile_loading_progress:vJ};break;case 3:{let e=i.getCenter();v2(e.lat,e.lng,vF.date+.5,vF.time+.5),s={shaderProgram:vX[t],tileUrls:["https://tile.osm.ch/switzerland/{z}/{x}/{y}.png"].concat(vK(t)),sharedImages:[vk[0]],default_tile_src:"imgs/default_tile.png",tile_loading_progress:vJ};break}case 4:{let e=i.getCenter();v2(e.lat,e.lng,vF.date+.5,vF.time+.5),s={shaderProgram:vX[t],tileUrls:["https://tile.osm.ch/switzerland/{z}/{x}/{y}.png"].concat(vK(t,n)),sharedImages:[],default_tile_src:"imgs/default_tile.png",tile_loading_progress:vJ}}}if(i==vG)(vY=L.tileLayer.gl(s)).on("load",function(){setTimeout(()=>{for(let e in vG._layers){if(vG._layers[e]==vY)break;vG.removeLayer(vG._layers[e])}},250)}),vY.addTo(i);else{var s,r=L.tileLayer.gl(s);return r.addTo(i),r}}function vW(e,t,i=!0){if(vY.setUniform(e,t),i&&vY.reRender(),4==vF.mode)for(var n of v5)null!=n.layer&&(n.layer.setUniform(e,t),i&&n.layer.reRender())}function vQ(e=null){v8.colors.expanded&&(vF.colormap={view:vF.view,value:null==e?vF.colormap.value:e,interval_min:vF.interval.min,interval_max:vF.interval.max},mi.refresh())}var v0=null;function v1(e){if(!vF.auto_interval||0==vF.mode)return;let t=DataDecoding.gather_tiles_min_max(e);0===t?(vF.interval.min=0,vF.interval.max=100):null===t?v0=setTimeout(v1,500,e):(vF.interval.min=100*t[0][vL[vF.view][0]],vF.interval.max=100*t[1][vL[vF.view][0]],vW("uIntervalMin",vF.interval.min,!1),vW("uIntervalMax",vF.interval.max),vQ())}function v2(e,t,i,n,s=!1){var r=new Date(Date.UTC(vE,0,1)+(Math.floor(86400*n)+86400*Math.floor(365*i))*1e3);return s&&(v8.date.label=Strftime.strftime("%d/%m",r),v8.time.label=Strftime.strftime("%H:%M",r)),SunCalc.getPosition(r,e,t)}function v3(e){0==vF.mode&&$("div.tp-radv_t").map(function(t){"dominance"==this.innerHTML&&(this.style.textDecoration=e<13?"line-through":"")})}var v5=[],v6=null;function v4(){var e=vG.getCenter(),t=vG.getZoom();for(var i of v5)i.map.setView(e,t-3,{animation:!1})}vG.on("zoomend",e=>{let t=vG.getZoom();vO("zoom",t),vP(),v3(t)}),vG.on("moveend",e=>{let t=vG.getCenter(),i=vG.getZoom();v0&&clearTimeout(v0),v0=setTimeout(v1,500,vG),4==vF.mode&&(null!=v6&&clearTimeout(v6),v6=setTimeout(v4,100)),vO("lat",t.lat.toFixed(5)),vO("lon",t.lng.toFixed(5)),Utils.setCookie("map_view",JSON.stringify({center:t,zoom:i}))}),vG.on("mouseout",e=>{vz(!1,!1)}),vG.on("dragstart",e=>{vD.style.display="none",hide_nodal()}),vG.on("dragend",e=>{vD.style.display="block"}),vG.on("mousemove",e=>{vD.style.transform="translateX("+e.containerPoint.x+"px) translateY("+e.containerPoint.y+"px)",vT.style.transform="translateX(-"+Math.max(0,e.containerPoint.x+vD.offsetWidth-15-document.getElementById("map").offsetWidth)+"px) translateY(-"+Math.max(0,e.containerPoint.y+vD.offsetHeight-15-document.getElementById("map").offsetHeight)+"px)"}),vG.whenReady(()=>vG.fire("moveend")),window.set_mode=function(e){[0,1,2,3,4].includes(e)&&(vF.mode=e,vZ(e),vO("mode",e),0==e&&(vF.interval.min=0,vF.interval.max=100,vW("uIntervalMin",vF.interval.min,!1),vW("uIntervalMax",vF.interval.max),vQ()),v8.data.hidden=e>2,v8.colors.hidden=e>2,v8.datetime.hidden=3!=e,v8.date.hidden=3!=e,v8.time.hidden=3!=e,v8.display_thermals.hidden=3!=e,v8.now_button.hidden=3!=e,v8.forecast_display.hidden=!0,v_.style.visibility=4==e?"visible":"hidden",vP(),v3(vG.getZoom()))};const v9=new class extends sx{constructor(e){var t,i;let n=null!=e?e:{},s=null!==(t=n.document)&&void 0!==t?t:globalThis.document,r=function(){let e=new sm(sb);return[nY,n0,n6,n4,nA,nD,nM,nL,ic,ss,su,sd,e2,th,tE].forEach(t=>{e.register("core",t)}),e}();super(new sC(s,{expanded:n.expanded,blade:tt(),props:P.fromObject({title:n.title}),viewProps:tu.create()}),r),this.pool_=r,this.containerElem_=null!==(i=n.container)&&void 0!==i?i:function(e){let t=e.createElement("div");return t.classList.add(ej("dfw")()),e.body&&e.body.appendChild(t),t}(s),this.containerElem_.appendChild(this.element),this.doc_=s,this.usesDefaultWrapper_=!n.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw g.alreadyDisposed();return this.doc_}dispose(){let e=this.containerElem_;if(!e)throw g.alreadyDisposed();if(this.usesDefaultWrapper_){let t=e.parentElement;t&&t.removeChild(e)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(e){e.css&&function(e,t,i){if(e.querySelector(`style[data-tp-style=${t}]`))return;let n=e.createElement("style");n.dataset.tpStyle=t,n.textContent=i,e.head.appendChild(n)}(this.document,`plugin-${e.id}`,e.css),("plugin"in e?[e.plugin]:"plugins"in e?e.plugins:[]).forEach(t=>{this.pool_.register(e.id,t)})}setUpDefaultPlugins_(){this.registerPlugin({id:"default",css:'.tp-tbiv_b,.tp-coltxtv_ms,.tp-colswv_b,.tp-ckbv_i,.tp-sglv_i,.tp-mllv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.tp-rotv_b,.tp-fldv_b,.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{background-color:var(--btn-bg);border-radius:var(--bld-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--cnt-usz);line-height:var(--cnt-usz);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-p2dv_b:hover,.tp-btnv_b:hover,.tp-lstv_s:hover{background-color:var(--btn-bg-h)}.tp-p2dv_b:focus,.tp-btnv_b:focus,.tp-lstv_s:focus{background-color:var(--btn-bg-f)}.tp-p2dv_b:active,.tp-btnv_b:active,.tp-lstv_s:active{background-color:var(--btn-bg-a)}.tp-p2dv_b:disabled,.tp-btnv_b:disabled,.tp-lstv_s:disabled{opacity:.5}.tp-rotv_c>.tp-cntv.tp-v-lst,.tp-tbpv_c>.tp-cntv.tp-v-lst,.tp-fldv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1*var(--cnt-vp))}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tbpv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_c{border-bottom-left-radius:0}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-tbpv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_b{border-bottom-left-radius:0}.tp-rotv_c>*:not(.tp-v-fst),.tp-tbpv_c>*:not(.tp-v-fst),.tp-fldv_c>*:not(.tp-v-fst){margin-top:var(--cnt-usp)}.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-tbpv_c>.tp-sprv:not(.tp-v-fst),.tp-fldv_c>.tp-sprv:not(.tp-v-fst),.tp-rotv_c>.tp-cntv:not(.tp-v-fst),.tp-tbpv_c>.tp-cntv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-vp)}.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tbpv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-tbpv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-vp)}.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tbpv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-fldv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-rotv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-tbpv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-tbpv_c>.tp-cntv,.tp-fldv_c>.tp-cntv{margin-left:4px}.tp-tbpv_c>.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--bld-br);border-bottom-left-radius:var(--bld-br)}.tp-tbpv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b{border-bottom-left-radius:0}.tp-tbpv_c .tp-fldv>.tp-fldv_c,.tp-fldv_c .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--bld-br)}.tp-tbpv_c>.tp-cntv+.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-cntv+.tp-fldv>.tp-fldv_b{border-top-left-radius:0}.tp-tbpv_c>.tp-cntv+.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-cntv+.tp-tabv>.tp-tabv_t{border-top-left-radius:0}.tp-tbpv_c>.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-tabv>.tp-tabv_t{border-top-left-radius:var(--bld-br)}.tp-tbpv_c .tp-tabv>.tp-tabv_c,.tp-fldv_c .tp-tabv>.tp-tabv_c{border-bottom-left-radius:var(--bld-br)}.tp-rotv_b,.tp-fldv_b{background-color:var(--cnt-bg);color:var(--cnt-fg);cursor:pointer;display:block;height:calc(var(--cnt-usz) + 4px);line-height:calc(var(--cnt-usz) + 4px);overflow:hidden;padding-left:var(--cnt-hp);padding-right:calc(4px + var(--cnt-usz) + var(--cnt-hp));position:relative;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%;transition:border-radius .2s ease-in-out .2s}.tp-rotv_b:hover,.tp-fldv_b:hover{background-color:var(--cnt-bg-h)}.tp-rotv_b:focus,.tp-fldv_b:focus{background-color:var(--cnt-bg-f)}.tp-rotv_b:active,.tp-fldv_b:active{background-color:var(--cnt-bg-a)}.tp-rotv_b:disabled,.tp-fldv_b:disabled{opacity:.5}.tp-rotv_m,.tp-fldv_m{background:linear-gradient(to left, var(--cnt-fg), var(--cnt-fg) 2px, transparent 2px, transparent 4px, var(--cnt-fg) 4px);border-radius:2px;bottom:0;content:"";display:block;height:6px;right:calc(var(--cnt-hp) + (var(--cnt-usz) + 4px - 6px)/2 - 2px);margin:auto;opacity:.5;position:absolute;top:0;transform:rotate(90deg);transition:transform .2s ease-in-out;width:6px}.tp-rotv.tp-rotv-expanded .tp-rotv_m,.tp-fldv.tp-fldv-expanded>.tp-fldv_b>.tp-fldv_m{transform:none}.tp-rotv_c,.tp-fldv_c{box-sizing:border-box;height:0;opacity:0;overflow:hidden;padding-bottom:0;padding-top:0;position:relative;transition:height .2s ease-in-out,opacity .2s linear,padding .2s ease-in-out}.tp-rotv.tp-rotv-cpl:not(.tp-rotv-expanded) .tp-rotv_c,.tp-fldv.tp-fldv-cpl:not(.tp-fldv-expanded)>.tp-fldv_c{display:none}.tp-rotv.tp-rotv-expanded .tp-rotv_c,.tp-fldv.tp-fldv-expanded>.tp-fldv_c{opacity:1;padding-bottom:var(--cnt-vp);padding-top:var(--cnt-vp);transform:none;overflow:visible;transition:height .2s ease-in-out,opacity .2s linear .2s,padding .2s ease-in-out}.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--cnt-usz);line-height:var(--cnt-usz);min-width:0;width:100%}.tp-txtv_i:hover,.tp-p2dpv_p:hover,.tp-colswv_sw:hover{background-color:var(--in-bg-h)}.tp-txtv_i:focus,.tp-p2dpv_p:focus,.tp-colswv_sw:focus{background-color:var(--in-bg-f)}.tp-txtv_i:active,.tp-p2dpv_p:active,.tp-colswv_sw:active{background-color:var(--in-bg-a)}.tp-txtv_i:disabled,.tp-p2dpv_p:disabled,.tp-colswv_sw:disabled{opacity:.5}.tp-lstv,.tp-coltxtv_m{position:relative}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m,.tp-coltxtv_mm{bottom:0;margin:auto;pointer-events:none;position:absolute;right:2px;top:0}.tp-lstv_m svg,.tp-coltxtv_mm svg{bottom:0;height:16px;margin:auto;position:absolute;right:0;top:0;width:16px}.tp-lstv_m svg path,.tp-coltxtv_mm svg path{fill:currentColor}.tp-sglv_i,.tp-mllv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--mo-fg);height:var(--cnt-usz);scrollbar-color:currentColor rgba(0,0,0,0);scrollbar-width:thin;width:100%}.tp-sglv_i::-webkit-scrollbar,.tp-mllv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-sglv_i::-webkit-scrollbar-corner,.tp-mllv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.tp-sglv_i::-webkit-scrollbar-thumb,.tp-mllv_i::-webkit-scrollbar-thumb,.tp-grlv_g::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:currentColor;border:rgba(0,0,0,0) solid 2px;border-radius:4px}.tp-pndtxtv,.tp-coltxtv_w{display:flex}.tp-pndtxtv_a,.tp-coltxtv_c{width:100%}.tp-pndtxtv_a+.tp-pndtxtv_a,.tp-coltxtv_c+.tp-pndtxtv_a,.tp-pndtxtv_a+.tp-coltxtv_c,.tp-coltxtv_c+.tp-coltxtv_c{margin-left:2px}.tp-rotv{--bs-bg: var(--tp-base-background-color, hsl(230, 7%, 17%));--bs-br: var(--tp-base-border-radius, 6px);--bs-ff: var(--tp-base-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--bld-br: var(--tp-blade-border-radius, 2px);--bld-hp: var(--tp-blade-horizontal-padding, 4px);--bld-vw: var(--tp-blade-value-width, 160px);--btn-bg: var(--tp-button-background-color, hsl(230, 7%, 70%));--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, hsl(230, 7%, 17%));--cnt-bg: var(--tp-container-background-color, rgba(187, 188, 196, 0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187, 188, 196, 0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187, 188, 196, 0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187, 188, 196, 0.15));--cnt-fg: var(--tp-container-foreground-color, hsl(230, 7%, 75%));--cnt-hp: var(--tp-container-horizontal-padding, 4px);--cnt-vp: var(--tp-container-vertical-padding, 4px);--cnt-usp: var(--tp-container-unit-spacing, 4px);--cnt-usz: var(--tp-container-unit-size, 20px);--in-bg: var(--tp-input-background-color, rgba(187, 188, 196, 0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187, 188, 196, 0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187, 188, 196, 0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187, 188, 196, 0.15));--in-fg: var(--tp-input-foreground-color, hsl(230, 7%, 75%));--lbl-fg: var(--tp-label-foreground-color, rgba(187, 188, 196, 0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0, 0, 0, 0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187, 188, 196, 0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(187, 188, 196, 0.1))}.tp-btnv_b{width:100%}.tp-btnv_t{text-align:center}.tp-ckbv_l{display:block;position:relative}.tp-ckbv_i{left:0;opacity:0;position:absolute;top:0}.tp-ckbv_w{background-color:var(--in-bg);border-radius:var(--bld-br);cursor:pointer;display:block;height:var(--cnt-usz);position:relative;width:var(--cnt-usz)}.tp-ckbv_w svg{bottom:0;display:block;height:16px;left:0;margin:auto;opacity:0;position:absolute;right:0;top:0;width:16px}.tp-ckbv_w svg path{fill:none;stroke:var(--in-fg);stroke-width:2}.tp-ckbv_i:hover+.tp-ckbv_w{background-color:var(--in-bg-h)}.tp-ckbv_i:focus+.tp-ckbv_w{background-color:var(--in-bg-f)}.tp-ckbv_i:active+.tp-ckbv_w{background-color:var(--in-bg-a)}.tp-ckbv_i:checked+.tp-ckbv_w svg{opacity:1}.tp-ckbv.tp-v-disabled .tp-ckbv_w{opacity:.5}.tp-colv{position:relative}.tp-colv_h{display:flex}.tp-colv_s{flex-grow:0;flex-shrink:0;width:var(--cnt-usz)}.tp-colv_t{flex:1;margin-left:4px}.tp-colv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-colv.tp-colv-expanded.tp-colv-cpl .tp-colv_p{overflow:visible}.tp-colv.tp-colv-expanded .tp-colv_p{margin-top:var(--cnt-usp);opacity:1}.tp-colv .tp-popv{left:calc(-1*var(--cnt-hp));right:calc(-1*var(--cnt-hp));top:var(--cnt-usz)}.tp-colpv_h,.tp-colpv_ap{margin-left:6px;margin-right:6px}.tp-colpv_h{margin-top:var(--cnt-usp)}.tp-colpv_rgb{display:flex;margin-top:var(--cnt-usp);width:100%}.tp-colpv_a{display:flex;margin-top:var(--cnt-vp);padding-top:calc(var(--cnt-vp) + 2px);position:relative}.tp-colpv_a::before{background-color:var(--grv-fg);content:"";height:2px;left:calc(-1*var(--cnt-hp));position:absolute;right:calc(-1*var(--cnt-hp));top:0}.tp-colpv.tp-v-disabled .tp-colpv_a::before{opacity:.5}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--bld-br);outline:none;overflow:hidden;position:relative}.tp-svpv.tp-v-disabled{opacity:.5}.tp-svpv_c{cursor:crosshair;display:block;height:calc(var(--cnt-usz)*4);width:100%}.tp-svpv_m{border-radius:100%;border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;filter:drop-shadow(0 0 1px rgba(0, 0, 0, 0.3));height:12px;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;width:12px}.tp-svpv:focus .tp-svpv_m{border-color:#fff}.tp-hplv{cursor:pointer;height:var(--cnt-usz);outline:none;position:relative}.tp-hplv.tp-v-disabled{opacity:.5}.tp-hplv_c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAABCAYAAABubagXAAAAQ0lEQVQoU2P8z8Dwn0GCgQEDi2OK/RBgYHjBgIpfovFh8j8YBIgzFGQxuqEgPhaDOT5gOhPkdCxOZeBg+IDFZZiGAgCaSSMYtcRHLgAAAABJRU5ErkJggg==);background-position:left top;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;position:absolute;top:50%;width:100%}.tp-hplv_m{border-radius:var(--bld-br);border:rgba(255,255,255,.75) solid 2px;box-shadow:0 0 2px rgba(0,0,0,.1);box-sizing:border-box;height:12px;left:50%;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;top:50%;width:12px}.tp-hplv:focus .tp-hplv_m{border-color:#fff}.tp-aplv{cursor:pointer;height:var(--cnt-usz);outline:none;position:relative;width:100%}.tp-aplv.tp-v-disabled{opacity:.5}.tp-aplv_b{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:4px 4px;background-position:0 0,2px 2px;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;overflow:hidden;position:absolute;top:50%;width:100%}.tp-aplv_c{bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv_m{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:12px 12px;background-position:0 0,6px 6px;border-radius:var(--bld-br);box-shadow:0 0 2px rgba(0,0,0,.1);height:12px;left:50%;margin-left:-6px;margin-top:-6px;overflow:hidden;pointer-events:none;position:absolute;top:50%;width:12px}.tp-aplv_p{border-radius:var(--bld-br);border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv:focus .tp-aplv_p{border-color:#fff}.tp-colswv{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:10px 10px;background-position:0 0,5px 5px;border-radius:var(--bld-br);overflow:hidden}.tp-colswv.tp-v-disabled{opacity:.5}.tp-colswv_sw{border-radius:0}.tp-colswv_b{cursor:pointer;display:block;height:var(--cnt-usz);left:0;position:absolute;top:0;width:var(--cnt-usz)}.tp-colswv_b:focus::after{border:rgba(255,255,255,.75) solid 2px;border-radius:var(--bld-br);bottom:0;content:"";display:block;left:0;position:absolute;right:0;top:0}.tp-coltxtv{display:flex;width:100%}.tp-coltxtv_m{margin-right:4px}.tp-coltxtv_ms{border-radius:var(--bld-br);color:var(--lbl-fg);cursor:pointer;height:var(--cnt-usz);line-height:var(--cnt-usz);padding:0 18px 0 4px}.tp-coltxtv_ms:hover{background-color:var(--in-bg-h)}.tp-coltxtv_ms:focus{background-color:var(--in-bg-f)}.tp-coltxtv_ms:active{background-color:var(--in-bg-a)}.tp-coltxtv_mm{color:var(--lbl-fg)}.tp-coltxtv.tp-v-disabled .tp-coltxtv_mm{opacity:.5}.tp-coltxtv_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv{position:relative}.tp-fldv_t{padding-left:4px}.tp-fldv_b:disabled .tp-fldv_m{display:none}.tp-fldv_c{padding-left:4px}.tp-fldv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--cnt-usz) + 4px);width:max(var(--bs-br),4px)}.tp-fldv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-fldv_b:hover+.tp-fldv_i{color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_i{color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_i{color:var(--cnt-bg-a)}.tp-fldv.tp-v-disabled>.tp-fldv_i{opacity:.5}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--cnt-usz)*3)}.tp-grlv_g polyline{fill:none;stroke:var(--mo-fg);stroke-linejoin:round}.tp-grlv_t{margin-top:-4px;transition:left .05s,top .05s;visibility:hidden}.tp-grlv_t.tp-grlv_t-a{visibility:visible}.tp-grlv_t.tp-grlv_t-in{transition:none}.tp-grlv.tp-v-disabled .tp-grlv_g{opacity:.5}.tp-grlv .tp-ttv{background-color:var(--mo-fg)}.tp-grlv .tp-ttv::before{border-top-color:var(--mo-fg)}.tp-lblv{align-items:center;display:flex;line-height:1.3;padding-left:var(--cnt-hp);padding-right:var(--cnt-hp)}.tp-lblv.tp-lblv-nol{display:block}.tp-lblv_l{color:var(--lbl-fg);flex:1;-webkit-hyphens:auto;hyphens:auto;overflow:hidden;padding-left:4px;padding-right:16px}.tp-lblv.tp-v-disabled .tp-lblv_l{opacity:.5}.tp-lblv.tp-lblv-nol .tp-lblv_l{display:none}.tp-lblv_v{align-self:flex-start;flex-grow:0;flex-shrink:0;width:var(--bld-vw)}.tp-lblv.tp-lblv-nol .tp-lblv_v{width:100%}.tp-lstv_s{padding:0 20px 0 var(--bld-hp);width:100%}.tp-lstv_m{color:var(--btn-fg)}.tp-sglv_i{padding-left:var(--bld-hp);padding-right:var(--bld-hp)}.tp-sglv.tp-v-disabled .tp-sglv_i{opacity:.5}.tp-mllv_i{display:block;height:calc(var(--cnt-usz)*3);line-height:var(--cnt-usz);padding-left:var(--bld-hp);padding-right:var(--bld-hp);resize:none;white-space:pre}.tp-mllv.tp-v-disabled .tp-mllv_i{opacity:.5}.tp-p2dv{position:relative}.tp-p2dv_h{display:flex}.tp-p2dv_b{height:var(--cnt-usz);margin-right:4px;position:relative;width:var(--cnt-usz)}.tp-p2dv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-p2dv_b svg path{stroke:currentColor;stroke-width:2}.tp-p2dv_b svg circle{fill:currentColor}.tp-p2dv_t{flex:1}.tp-p2dv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-p2dv.tp-p2dv-expanded .tp-p2dv_p{margin-top:var(--cnt-usp);opacity:1}.tp-p2dv .tp-popv{left:calc(-1*var(--cnt-hp));right:calc(-1*var(--cnt-hp));top:var(--cnt-usz)}.tp-p2dpv{padding-left:calc(var(--cnt-usz) + 4px)}.tp-p2dpv_p{cursor:crosshair;height:0;overflow:hidden;padding-bottom:100%;position:relative}.tp-p2dpv.tp-v-disabled .tp-p2dpv_p{opacity:.5}.tp-p2dpv_g{display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.tp-p2dpv_ax{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_l{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_m{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;position:absolute;width:4px}.tp-p2dpv_p:focus .tp-p2dpv_m{background-color:var(--in-fg);border-width:0}.tp-popv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);display:none;max-width:var(--bld-vw);padding:var(--cnt-vp) var(--cnt-hp);position:absolute;visibility:hidden;z-index:1000}.tp-popv.tp-popv-v{display:block;visibility:visible}.tp-sldv.tp-v-disabled{opacity:.5}.tp-sldv_t{box-sizing:border-box;cursor:pointer;height:var(--cnt-usz);margin:0 6px;outline:none;position:relative}.tp-sldv_t::before{background-color:var(--in-bg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin:auto;position:absolute;right:0;top:0}.tp-sldv_k{height:100%;left:0;position:absolute;top:0}.tp-sldv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin-bottom:auto;margin-top:auto;position:absolute;right:0;top:0}.tp-sldv_k::after{background-color:var(--btn-bg);border-radius:var(--bld-br);bottom:0;content:"";display:block;height:12px;margin-bottom:auto;margin-top:auto;position:absolute;right:-6px;top:0;width:12px}.tp-sldv_t:hover .tp-sldv_k::after{background-color:var(--btn-bg-h)}.tp-sldv_t:focus .tp-sldv_k::after{background-color:var(--btn-bg-f)}.tp-sldv_t:active .tp-sldv_k::after{background-color:var(--btn-bg-a)}.tp-sldtxtv{display:flex}.tp-sldtxtv_s{flex:2}.tp-sldtxtv_t{flex:1;margin-left:4px}.tp-tabv{position:relative}.tp-tabv_t{align-items:flex-end;color:var(--cnt-bg);display:flex;overflow:hidden;position:relative}.tp-tabv_t:hover{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus){color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active){color:var(--cnt-bg-a)}.tp-tabv_t::before{background-color:currentColor;bottom:0;content:"";height:2px;left:0;pointer-events:none;position:absolute;right:0}.tp-tabv.tp-v-disabled .tp-tabv_t::before{opacity:.5}.tp-tabv.tp-tabv-nop .tp-tabv_t{height:calc(var(--cnt-usz) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_t::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.tp-tabv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--cnt-usz) + 4px);width:max(var(--bs-br),4px)}.tp-tabv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-tabv_t:hover+.tp-tabv_i{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus)+.tp-tabv_i{color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active)+.tp-tabv_i{color:var(--cnt-bg-a)}.tp-tabv.tp-v-disabled>.tp-tabv_i{opacity:.5}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv.tp-v-disabled::before{opacity:.5}.tp-tbiv_b{display:block;padding-left:calc(var(--cnt-hp) + 4px);padding-right:calc(var(--cnt-hp) + 4px);position:relative;width:100%}.tp-tbiv_b:disabled{opacity:.5}.tp-tbiv_b::before{background-color:var(--cnt-bg);bottom:2px;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.tp-tbiv_b:hover::before{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus::before{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active::before{background-color:var(--cnt-bg-a)}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--cnt-usz) + 4px);line-height:calc(var(--cnt-usz) + 4px);opacity:.5;overflow:hidden;position:relative;text-overflow:ellipsis}.tp-tbiv.tp-tbiv-sel .tp-tbiv_t{opacity:1}.tp-tbpv_c{padding-bottom:var(--cnt-vp);padding-left:4px;padding-top:var(--cnt-vp)}.tp-txtv{position:relative}.tp-txtv_i{padding-left:var(--bld-hp);padding-right:var(--bld-hp)}.tp-txtv.tp-txtv-fst .tp-txtv_i{border-bottom-right-radius:0;border-top-right-radius:0}.tp-txtv.tp-txtv-mid .tp-txtv_i{border-radius:0}.tp-txtv.tp-txtv-lst .tp-txtv_i{border-bottom-left-radius:0;border-top-left-radius:0}.tp-txtv.tp-txtv-num .tp-txtv_i{text-align:right}.tp-txtv.tp-txtv-drg .tp-txtv_i{opacity:.3}.tp-txtv_k{cursor:pointer;height:100%;left:calc(var(--bld-hp) - 5px);position:absolute;top:0;width:12px}.tp-txtv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";height:calc(var(--cnt-usz) - 4px);left:50%;margin-bottom:auto;margin-left:-1px;margin-top:auto;opacity:.1;position:absolute;top:0;transition:border-radius .1s,height .1s,transform .1s,width .1s;width:2px}.tp-txtv_k:hover::before,.tp-txtv.tp-txtv-drg .tp-txtv_k::before{opacity:1}.tp-txtv.tp-txtv-drg .tp-txtv_k::before{border-radius:50%;height:4px;transform:translateX(-1px);width:4px}.tp-txtv_g{bottom:0;display:block;height:8px;left:50%;margin:auto;overflow:visible;pointer-events:none;position:absolute;top:0;visibility:hidden;width:100%}.tp-txtv.tp-txtv-drg .tp-txtv_g{visibility:visible}.tp-txtv_gb{fill:none;stroke:var(--in-fg);stroke-dasharray:1}.tp-txtv_gh{fill:none;stroke:var(--in-fg)}.tp-txtv .tp-ttv{margin-left:6px;visibility:hidden}.tp-txtv.tp-txtv-drg .tp-ttv{visibility:visible}.tp-ttv{background-color:var(--in-fg);border-radius:var(--bld-br);color:var(--bs-bg);padding:2px 4px;pointer-events:none;position:absolute;transform:translate(-50%, -100%)}.tp-ttv::before{border-color:var(--in-fg) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);border-style:solid;border-width:2px;box-sizing:border-box;content:"";font-size:.9em;height:4px;left:50%;margin-left:-2px;position:absolute;top:100%;width:4px}.tp-rotv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);font-family:var(--bs-ff);font-size:11px;font-weight:500;line-height:1;text-align:left}.tp-rotv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br);border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br);padding-left:calc(4px + var(--cnt-usz) + var(--cnt-hp));text-align:center}.tp-rotv.tp-rotv-expanded .tp-rotv_b{border-bottom-left-radius:0;border-bottom-right-radius:0;transition-delay:0s;transition-duration:0s}.tp-rotv.tp-rotv-not>.tp-rotv_b{display:none}.tp-rotv_b:disabled .tp-rotv_m{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst.tp-fldv-expanded>.tp-fldv_b{transition-delay:0s;transition-duration:0s}.tp-rotv_c .tp-fldv.tp-v-vlst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst{margin-top:calc(-1*var(--cnt-vp))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst>.tp-fldv_b{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1*var(--cnt-vp))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_t{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-v-disabled,.tp-rotv .tp-v-disabled{pointer-events:none}.tp-rotv.tp-v-hidden,.tp-rotv .tp-v-hidden{display:none}.tp-sprv_r{background-color:var(--grv-fg);border-width:0;display:block;height:2px;margin:0;width:100%}.tp-sprv.tp-v-disabled .tp-sprv_r{opacity:.5}',plugins:[sy,sV,sL,tE,sM]})}};var v8={};v9.registerPlugin(sD),v9.registerPlugin(hW),v9.addBinding(vF,"mode",{view:"radiogrid",groupName:"mode",label:"view",size:[2,2],cells:(e,t)=>({title:["tracks","","thermals","forecasts"][e%2+2*t],value:[0,2,3,4][e%2+2*t]})}).on("change",e=>{set_mode(e.value)}),v9.addBlade({view:"separator"}),v8.data=v9.addBinding(vF,"view",{view:"radiogrid",groupName:"view",label:"parameter",size:[2,5],cells:(e,t)=>({title:2*t+e{vF.view=e.value,vQ(.5),vW("uView",e.value),vO("view",e.value)}),v8.forecast_display=v9.addBinding(vF,"forecast_display",{view:"radiogrid",groupName:"forecast_display",label:"display",size:[2,2],cells:(e,t)=>({title:t+","+e,value:2*t+e})}).on("change",e=>{vF.forecast_display=e.value,vW("uForecastDisplay",e.value)});var v7=!0,me=!0;function mt(){let e=vG.getCenter();var t=v2(e.lat,e.lng,vF.datetime.y+.5,vF.datetime.x+.5,!0),i=t.azimuth,n=t.altitude;vW("uThermalDate",vF.datetime.y+.5,!1),vW("uThermalTime",vF.datetime.x+.5,!1),vW("uAltitude",n,!1),vW("uAzimuth",i)}v8.datetime=v9.addBinding(vF,"datetime",{label:"date/time",picker:"inline",expanded:!0,min:-.5,max:.5}).on("change",e=>{me&&(vF.date=vF.datetime.y,vF.time=vF.datetime.x,mt(),v7=!1,v8.date.refresh(),v8.time.refresh(),v7=!0)}),v8.time=v9.addBinding(vF,"time",{min:-.5,max:.5}).on("change",e=>{!e.last&&v7&&(vF.datetime.x=e.value,mt(),me=!1,v8.datetime.refresh(),me=!0)}),v8.date=v9.addBinding(vF,"date",{min:-.5,max:.5}).on("change",e=>{!e.last&&v7&&(vF.datetime.y=e.value,mt(),me=!1,v8.datetime.refresh(),me=!0)}),v8.now_button=v9.addButton({title:"now",label:""}).on("click",e=>{var t;vF.datetime={x:(t=(new Date().getTime()-Date.UTC(vE,0,1))/1e3)%86400/86400-.5,y:t/31536e3-.5},v8.datetime.refresh()}),v8.display_thermals=v9.addBinding(vF,"display_thermals",{label:"thermals"}).on("change",e=>{vW("uDisplayThermals",e.value?1:-1)}),v8.colors=v9.addFolder({title:"colors",expanded:!1});var mi=v8.colors.addBinding(vF,"colormap",{label:"color scale",view:"colormap",units:vL.map(e=>e[1]),ranges:vL.map(e=>e[2]),labels:vL.map(e=>e[3]),value_transforms:vL.map(e=>e[6]),display_unit:vM,colormap1:Utils.color_map,colormap2:Utils.color_map_hsluv_rgb});v8.colors.addBinding(vF,"interval",{min:0,max:100,step:1}).on("change",function(e){vW("uIntervalMin",e.value.min,!1),vW("uIntervalMax",e.value.max),vQ()}),v8.colors.addBinding(vF,"opacity",{min:0,max:1}).on("change",function(e){vW("uOpacity",e.value)}),v8.colors.addBinding(vF,"brightness",{min:0,max:1}).on("change",function(e){vW("uBrightness",e.value)}),window.change_forecast_day=function(e){for(var t of v5)t.date==e?(t.container.classList.add("selected"),t.label.classList.add("selected")):(t.container.classList.remove("selected"),t.label.classList.remove("selected"));vO("date",vA=e),set_mode(4)};var mn={tracks:"GPS tracks",skyways:"skyways (work in progress)",thermals:"AI-predicted probability of thermal presence given a date and time",forecasts:"Weather forecasts (work in progress)"};for(var ms of vL)ms[5]&&(mn[ms[0]]=ms[5]);var mr=document.getElementById("tooltip_menu");$("div.tp-radv_t").on("mouseout",function(e){mr.style.display="none"}),$("div.tp-radv_t").on("mouseenter",function(e){let t=e.currentTarget.innerHTML,i=e.currentTarget.getBoundingClientRect();if(mn[t]){var n;n="string"==typeof mn[t]||mn[t]instanceof String?mn[t]:mn[t][vF.mode],mr.innerHTML=''+t+'
'+n+"
",mr.style.display="block",mr.style.top=i.top-4+"px"}else mr.style.display="none"});var mo=[new vB(vF,0),new vB(vF,1),new vB(vF,2),new vB(vF,3),new vB(vF,4)];vG.on("mousemove",e=>{mo[vF.mode].listener(e,vG.getZoom())}),set_mode(vF.mode);var ml=Date.UTC(vE,0,1),ma=[];for(my=0;my<160;my++){var mh=new Date(ml+(my+.5)/160*31536e6).getTimezoneOffset();(0==my||mh!=ma[ma.length-1][1]||159==my)&&ma.push([my,mh])}for(var mp="",md=0;md\n',mu!=mc&&(mp+='\n')}const mw=new Date(vE,0,1);for(var mf=[new Date(mw.getFullYear(),2,mw.getFullYear()%4==0?19:20).getTime(),new Date(mw.getFullYear(),5,mw.getFullYear()%4==0?20:21).getTime(),new Date(mw.getFullYear(),8,mw.getFullYear()%4==0?22:23).getTime(),new Date(mw.getFullYear(),11,mw.getFullYear()%4==0?20:21).getTime()],md=0;md<4;md++){var my=(mf[md]-mw.getTime())/(new Date(vE,11,31,23,59).getTime()-mw.getTime())*100;mp+='\n'}mp+='',$("svg.tp-p2dpv_g").html(mp);var mx=!1;function mC(e,t=null){var i,n,s;let r=(i=e.container,n=v_.getBoundingClientRect(),(s=i.getBoundingClientRect()).topn.top);r&&(null===t||!0===t)?null==e.layer&&(e.layer=vZ(4,e.map,e.date)):r||null!==t&&!1!==t||null==e.layer||(e.map.removeLayer(e.layer),delete e.layer,e.layer=null)}function mP(){for(var e of v5)mC(e,!1);for(var e of v5)mC(e,!0)}window.hide_nodal=function(){v9.hidden=!1,4==vF.mode&&(v_.style.visibility="visible"),document.getElementById("nodal").style.display="none",mx=!1},window.toggle_nodal=function(){mx?hide_nodal():(v9.hidden=!0,v_.style.visibility="hidden",document.getElementById("nodal").style.display="block",mx=!0)},document.addEventListener("keydown",function(e){("Escape"===e.key||"Esc"===e.key)&&hide_nodal()}),window.download_png=function(){hide_nodal();var e=document.getElementById("map");let t=e.getBoundingClientRect();domtoimage.toPng(e).then(function(e){var i="image/png",n=document.createElement("canvas");n.width=t.width,n.height=t.height;var s=n.getContext("2d"),r=new Image;r.src=e,r.onload=function(){s.drawImage(r,0,0);var e=n.toDataURL(i),t=document.createElement("a");t.href=e,t.download="paraglidable.png",t.dataset.downloadurl=[i,t.download,t.href].join(":"),document.body.appendChild(t),t.click(),document.body.removeChild(t)}}).catch(function(e){console.error(e)})},window.update_minimap_time=function(e,t){},fetch("data/tiles/forecast/available.json").then(e=>e.text()).then(e=>{moment.locale(window.navigator.userLanguage||window.navigator.language);let t=JSON.parse(e);for(var i in t){var n=t[i],s=new Date(parseInt(n.split("-")[0]),parseInt(n.split("-")[1])-1,parseInt(n.split("-")[2])).getDay();i>0&&1==s&&function(){var e=document.createElement("div");e.setAttribute("class","minimap_week_separator"),v_.appendChild(e)}(),v5.push(function(e){var t=document.createElement("div");t.setAttribute("id","minimap_"+e),t.setAttribute("class","minimap"),t.setAttribute("onclick","change_forecast_day('"+e+"')"),t.setAttribute("onmousemove","update_minimap_time('"+e+"', event)"),e==vA&&t.classList.add("selected"),v_.appendChild(t);var i=document.createElement("div");i.setAttribute("class","minimap-label"),e==vA&&i.classList.add("selected");var n=moment(e);1>=n.diff(moment().startOf("day"),"days",!0)?i.innerHTML=n.calendar().split(" ")[0]+" "+n.format("DD/MM"):i.innerHTML=n.format("dddd DD/MM"),t.appendChild(i);var s=L.map("minimap_"+e,{minZoom:7,maxZoom:7,zoomControl:!1}).setView([46,8],7);s.dragging.disable(),s.touchZoom.disable(),s.doubleClickZoom.disable(),s.scrollWheelZoom.disable();var r={date:e,container:t,label:i,map:s,layer:null};return mC(r),r}(n))}v_.addEventListener("scroll",e=>{mP()})}),window.highlight_email=function(){document.getElementById("email1").classList.add("highlight"),document.getElementById("email2").classList.add("highlight"),setTimeout(()=>document.getElementById("email1").classList.remove("highlight"),400),setTimeout(()=>document.getElementById("email2").classList.remove("highlight"),400)},document.getElementById("email1").innerHTML="antoine@",document.getElementById("email2").innerHTML="paraglidable.com",vP(),v3(vG.getZoom()),vw();