UNPKG

tweakpane-plugin-inputs

Version:
1 lines 120 kB
function t(t){return null==t}function e(t){return null!==t&&"object"==typeof t}function n(t){return null!==t&&"object"==typeof t}function s(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}function i(t,e){return Array.from(new Set([...Object.keys(t),...Object.keys(e)])).reduce(((s,o)=>{const r=t[o],a=e[o];return n(r)&&n(a)?Object.assign(Object.assign({},s),{[o]:i(r,a)}):Object.assign(Object.assign({},s),{[o]:o in e?a:r})}),{})}const o={alreadydisposed:()=>"View has been already disposed",invalidparams:t=>`Invalid parameters for '${t.name}'`,nomatchingcontroller:t=>`No matching controller for '${t.key}'`,nomatchingview:t=>`No matching view for '${JSON.stringify(t.params)}'`,notbindable:()=>"Value is not bindable",notcompatible:t=>`Not compatible with plugin '${t.id}'`,propertynotfound:t=>`Property '${t.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class r{static alreadyDisposed(){return new r({type:"alreadydisposed"})}static notBindable(){return new r({type:"notbindable"})}static notCompatible(t,e){return new r({type:"notcompatible",context:{id:`${t}.${e}`}})}static propertyNotFound(t){return new r({type:"propertynotfound",context:{name:t}})}static shouldNeverHappen(){return new r({type:"shouldneverhappen"})}constructor(t){var e;this.message=null!==(e=o[t.type](t.context))&&void 0!==e?e:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=t.type}toString(){return this.message}}class a{constructor(t,e){this.obj_=t,this.key=e}static isBindable(t){return null!==t&&("object"==typeof t||"function"==typeof t)}read(){return this.obj_[this.key]}write(t){this.obj_[this.key]=t}writeProperty(t,e){const n=this.read();if(!a.isBindable(n))throw r.notBindable();if(!(t in n))throw r.propertyNotFound(t);n[t]=e}}class l{constructor(){this.observers_={}}on(t,e,n){var s;let i=this.observers_[t];return i||(i=this.observers_[t]=[]),i.push({handler:e,key:null!==(s=null==n?void 0:n.key)&&void 0!==s?s:e}),this}off(t,e){const n=this.observers_[t];return n&&(this.observers_[t]=n.filter((t=>t.key!==e))),this}emit(t,e){const n=this.observers_[t];n&&n.forEach((t=>{t.handler(e)}))}}class h{constructor(t,e){var n;this.constraint_=null==e?void 0:e.constraint,this.equals_=null!==(n=null==e?void 0:e.equals)&&void 0!==n?n:(t,e)=>t===e,this.emitter=new l,this.rawValue_=t}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(t){this.setRawValue(t,{forceEmit:!1,last:!0})}setRawValue(t,e){const n=null!=e?e:{forceEmit:!1,last:!0},s=this.constraint_?this.constraint_.constrain(t):t,i=this.rawValue_;(!this.equals_(i,s)||n.forceEmit)&&(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=s,this.emitter.emit("change",{options:n,previousRawValue:i,rawValue:s,sender:this}))}}class p{constructor(t){this.emitter=new l,this.value_=t}get rawValue(){return this.value_}set rawValue(t){this.setRawValue(t,{forceEmit:!1,last:!0})}setRawValue(t,e){const n=null!=e?e:{forceEmit:!1,last:!0},s=this.value_;(s!==t||n.forceEmit)&&(this.emitter.emit("beforechange",{sender:this}),this.value_=t,this.emitter.emit("change",{options:n,previousRawValue:s,rawValue:this.value_,sender:this}))}}class c{constructor(t){this.emitter=new l,this.onValueBeforeChange_=this.onValueBeforeChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.value_=t,this.value_.emitter.on("beforechange",this.onValueBeforeChange_),this.value_.emitter.on("change",this.onValueChange_)}get rawValue(){return this.value_.rawValue}onValueBeforeChange_(t){this.emitter.emit("beforechange",Object.assign(Object.assign({},t),{sender:this}))}onValueChange_(t){this.emitter.emit("change",Object.assign(Object.assign({},t),{sender:this}))}}function u(t,e){const n=null==e?void 0:e.constraint,s=null==e?void 0:e.equals;return n||s?new h(t,e):new p(t)}class d{constructor(t){this.emitter=new l,this.valMap_=t;for(const t in this.valMap_){this.valMap_[t].emitter.on("change",(()=>{this.emitter.emit("change",{key:t,sender:this})}))}}static createCore(t){return Object.keys(t).reduce(((e,n)=>Object.assign(e,{[n]:u(t[n])})),{})}static fromObject(t){const e=this.createCore(t);return new d(e)}get(t){return this.valMap_[t].rawValue}set(t,e){this.valMap_[t].rawValue=e}value(t){return this.valMap_[t]}}class v{constructor(t){this.values=d.fromObject({max:t.max,min:t.min})}constrain(t){const e=this.values.get("max"),n=this.values.get("min");return Math.min(Math.max(t,n),e)}}class m{constructor(t){this.values=d.fromObject({max:t.max,min:t.min})}constrain(e){const n=this.values.get("max"),s=this.values.get("min");let i=e;return t(s)||(i=Math.max(i,s)),t(n)||(i=Math.min(i,n)),i}}class w{constructor(t,e=0){this.step=t,this.origin=e}constrain(t){const e=this.origin%this.step;return e+Math.round((t-e)/this.step)*this.step}}class b{constructor(t){this.text=t}evaluate(){return Number(this.text)}toString(){return this.text}}const _={"**":(t,e)=>Math.pow(t,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,">>":(t,e)=>t>>e,">>>":(t,e)=>t>>>e,"&":(t,e)=>t&e,"^":(t,e)=>t^e,"|":(t,e)=>t|e};class g{constructor(t,e,n){this.left=e,this.operator=t,this.right=n}evaluate(){const t=_[this.operator];if(!t)throw new Error(`unexpected binary operator: '${this.operator}`);return t(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const f={"+":t=>t,"-":t=>-t,"~":t=>~t};class C{constructor(t,e){this.operator=t,this.expression=e}evaluate(){const t=f[this.operator];if(!t)throw new Error(`unexpected unary operator: '${this.operator}`);return t(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function y(t){return(e,n)=>{for(let s=0;s<t.length;s++){const i=t[s](e,n);if(""!==i)return i}return""}}function P(t,e){var n;const s=t.substr(e).match(/^\s+/);return null!==(n=s&&s[0])&&void 0!==n?n:""}function x(t,e){var n;const s=t.substr(e).match(/^[0-9]+/);return null!==(n=s&&s[0])&&void 0!==n?n:""}function E(t,e){const n=t.substr(e,1);if(e+=1,"e"!==n.toLowerCase())return"";const s=function(t,e){const n=x(t,e);if(""!==n)return n;const s=t.substr(e,1);if("-"!==s&&"+"!==s)return"";const i=x(t,e+=1);return""===i?"":s+i}(t,e);return""===s?"":n+s}function k(t,e){const n=t.substr(e,1);if("0"===n)return n;const s=function(t,e){const n=t.substr(e,1);return n.match(/^[1-9]$/)?n:""}(t,e);return e+=s.length,""===s?"":s+x(t,e)}const V=y([function(t,e){const n=k(t,e);if(e+=n.length,""===n)return"";const s=t.substr(e,1);if(e+=s.length,"."!==s)return"";const i=x(t,e);return n+s+i+E(t,e+=i.length)},function(t,e){const n=t.substr(e,1);if(e+=n.length,"."!==n)return"";const s=x(t,e);return e+=s.length,""===s?"":n+s+E(t,e)},function(t,e){const n=k(t,e);return e+=n.length,""===n?"":n+E(t,e)}]);const L=y([function(t,e){const n=t.substr(e,2);if(e+=n.length,"0b"!==n.toLowerCase())return"";const s=function(t,e){var n;const s=t.substr(e).match(/^[01]+/);return null!==(n=s&&s[0])&&void 0!==n?n:""}(t,e);return""===s?"":n+s},function(t,e){const n=t.substr(e,2);if(e+=n.length,"0o"!==n.toLowerCase())return"";const s=function(t,e){var n;const s=t.substr(e).match(/^[0-7]+/);return null!==(n=s&&s[0])&&void 0!==n?n:""}(t,e);return""===s?"":n+s},function(t,e){const n=t.substr(e,2);if(e+=n.length,"0x"!==n.toLowerCase())return"";const s=function(t,e){var n;const s=t.substr(e).match(/^[0-9a-f]+/i);return null!==(n=s&&s[0])&&void 0!==n?n:""}(t,e);return""===s?"":n+s}]),M=y([L,V]);function S(t,e){var n;return null!==(n=function(t,e){const n=M(t,e);return e+=n.length,""===n?null:{evaluable:new b(n),cursor:e}}(t,e))&&void 0!==n?n:function(t,e){const n=t.substr(e,1);if(e+=n.length,"("!==n)return null;const s=A(t,e);if(!s)return null;e=s.cursor,e+=P(t,e).length;const i=t.substr(e,1);return e+=i.length,")"!==i?null:{evaluable:s.evaluable,cursor:e}}(t,e)}function D(t,e,n){n+=P(e,n).length;const s=t.filter((t=>e.startsWith(t,n)))[0];return s?(n+=s.length,{cursor:n+=P(e,n).length,operator:s}):null}const j=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce(((t,e)=>function(t,e){return(n,s)=>{const i=t(n,s);if(!i)return null;s=i.cursor;let o=i.evaluable;for(;;){const i=D(e,n,s);if(!i)break;s=i.cursor;const r=t(n,s);if(!r)return null;s=r.cursor,o=new g(i.operator,o,r.evaluable)}return o?{cursor:s,evaluable:o}:null}}(t,e)),(function t(e,n){const s=S(e,n);if(s)return s;const i=e.substr(n,1);if(n+=i.length,"+"!==i&&"-"!==i&&"~"!==i)return null;const o=t(e,n);return o?{cursor:n=o.cursor,evaluable:new C(i,o.evaluable)}:null}));function A(t,e){return e+=P(t,e).length,j(t,e)}function O(t){var e;const n=function(t){const e=A(t,0);return e?e.cursor+P(t,e.cursor).length!==t.length?null:e.evaluable:null}(t);return null!==(e=null==n?void 0:n.evaluate())&&void 0!==e?e:null}function K(e){if("number"==typeof e)return e;if("string"==typeof e){const n=O(e);if(!t(n))return n}return 0}function R(t){return e=>e.toFixed(Math.max(Math.min(t,20),0))}function z(t,e,n,s,i){return s+(t-e)/(n-e)*(i-s)}function N(t){return String(t.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function I(t,e,n){return Math.min(Math.max(t,e),n)}function T(t,e){return(t%e+e)%e}function U(e,n){return t(e.step)?Math.max(N(n),2):N(e.step)}function B(t){var e;return null!==(e=t.step)&&void 0!==e?e:1}function F(t,e){var n;const s=Math.abs(null!==(n=t.step)&&void 0!==n?n:e);return 0===s?.1:Math.pow(10,Math.floor(Math.log10(s))-1)}function $(e,n){return t(e.step)?null:new w(e.step,n)}function q(e){return t(e.max)||t(e.min)?t(e.max)&&t(e.min)?null:new m({max:e.max,min:e.min}):new v({max:e.max,min:e.min})}function H(t,e){var n,s,i;return{formatter:null!==(n=t.format)&&void 0!==n?n:R(U(t,e)),keyScale:null!==(s=t.keyScale)&&void 0!==s?s:B(t),pointerScale:null!==(i=t.pointerScale)&&void 0!==i?i:F(t,e)}}function G(t){return{format:t.optional.function,keyScale:t.optional.number,max:t.optional.number,min:t.optional.number,pointerScale:t.optional.number,step:t.optional.number}}function Y(t){return{constraint:t.constraint,textProps:d.fromObject(H(t.params,t.initialValue))}}class X{constructor(t){this.controller=t}get element(){return this.controller.view.element}get disabled(){return this.controller.viewProps.get("disabled")}set disabled(t){this.controller.viewProps.set("disabled",t)}get hidden(){return this.controller.viewProps.get("hidden")}set hidden(t){this.controller.viewProps.set("hidden",t)}dispose(){this.controller.viewProps.set("disposed",!0)}importState(t){return this.controller.importState(t)}exportState(){return this.controller.exportState()}}class W{constructor(t){this.target=t}}class J extends W{constructor(t,e,n){super(t),this.value=e,this.last=null==n||n}}class Q extends W{constructor(t,e){super(t),this.expanded=e}}class Z extends W{constructor(t,e){super(t),this.index=e}}class tt extends W{constructor(t,e){super(t),this.native=e}}class et extends X{constructor(t){super(t),this.onValueChange_=this.onValueChange_.bind(this),this.emitter_=new l,this.controller.value.emitter.on("change",this.onValueChange_)}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get key(){return this.controller.value.binding.target.key}get tag(){return this.controller.tag}set tag(t){this.controller.tag=t}on(t,e){const n=e.bind(this);return this.emitter_.on(t,(t=>{n(t)}),{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}refresh(){this.controller.value.fetch()}onValueChange_(t){const e=this.controller.value;this.emitter_.emit("change",new J(this,e.binding.target.read(),t.options.last))}}function nt(t){return e=>n=>{if(!e&&void 0===n)return{succeeded:!1,value:void 0};if(e&&void 0===n)return{succeeded:!0,value:void 0};const s=t(n);return void 0!==s?{succeeded:!0,value:s}:{succeeded:!1,value:void 0}}}function st(t){return{custom:e=>nt(e)(t),boolean:nt((t=>"boolean"==typeof t?t:void 0))(t),number:nt((t=>"number"==typeof t?t:void 0))(t),string:nt((t=>"string"==typeof t?t:void 0))(t),function:nt((t=>"function"==typeof t?t:void 0))(t),constant:e=>nt((t=>t===e?e:void 0))(t),raw:nt((t=>t))(t),object:e=>nt((t=>{var n;if(null!==(n=t)&&"object"==typeof n)return function(t,e){return Object.keys(e).reduce(((n,s)=>{if(void 0===n)return;const i=(0,e[s])(t[s]);return i.succeeded?Object.assign(Object.assign({},n),{[s]:i.value}):void 0}),{})}(t,e)}))(t),array:e=>nt((t=>{var n;if(Array.isArray(t))return n=e,t.reduce(((t,e)=>{if(void 0===t)return;const s=n(e);return s.succeeded&&void 0!==s.value?[...t,s.value]:void 0}),[])}))(t)}}const it={optional:st(!0),required:st(!1)};function ot(t,e){const n=e(it),s=it.required.object(n)(t);return s.succeeded?s.value:void 0}function rt(t,e,n,s){if(e&&!e(t))return!1;const i=ot(t,n);return!!i&&s(i)}function at(t,e){var n;return i(null!==(n=null==t?void 0:t())&&void 0!==n?n:{},e)}function lt(t){return"value"in t}function ht(t){if(!e(t)||!("binding"in t))return!1;const n=t.binding;return!!e(s=n)&&"target"in s;var s}const pt="http://www.w3.org/2000/svg";function ct(t){t.offsetHeight}function ut(t){return void 0!==t.ontouchstart}const dt={check:'<path d="M2 8l4 4l8 -8"/>',dropdown:'<path d="M5 7h6l-3 3 z"/>',p2dpad:'<path d="M8 4v8"/><path d="M4 8h8"/><circle cx="12" cy="12" r="1.2"/>'};function vt(t,e){const n=t.createElementNS(pt,"svg");return n.innerHTML=dt[e],n}function mt(t,e,n){t.insertBefore(e,t.children[n])}function wt(t){t.parentElement&&t.parentElement.removeChild(t)}function bt(t){for(;t.children.length>0;)t.removeChild(t.children[0])}function _t(t){return t.relatedTarget?t.relatedTarget:"explicitOriginalTarget"in t?t.explicitOriginalTarget:null}function gt(t,e){t.emitter.on("change",(t=>{e(t.rawValue)})),e(t.rawValue)}function ft(t,e,n){gt(t.value(e),n)}const Ct="tp";function yt(t){return(e,n)=>[Ct,"-",t,"v",e?`_${e}`:"",n?`-${n}`:""].join("")}const Pt=yt("lbl");class xt{constructor(e,n){this.element=e.createElement("div"),this.element.classList.add(Pt()),n.viewProps.bindClassModifiers(this.element);const s=e.createElement("div");s.classList.add(Pt("l")),ft(n.props,"label",(n=>{t(n)?this.element.classList.add(Pt(void 0,"nol")):(this.element.classList.remove(Pt(void 0,"nol")),function(t){for(;t.childNodes.length>0;)t.removeChild(t.childNodes[0])}(s),s.appendChild(function(t,e){const n=t.createDocumentFragment();return e.split("\n").map((e=>t.createTextNode(e))).forEach(((e,s)=>{s>0&&n.appendChild(t.createElement("br")),n.appendChild(e)})),n}(e,n)))})),this.element.appendChild(s),this.labelElement=s;const i=e.createElement("div");i.classList.add(Pt("v")),this.element.appendChild(i),this.valueElement=i}}class Et{constructor(t,e){this.props=e.props,this.valueController=e.valueController,this.viewProps=e.valueController.viewProps,this.view=new xt(t,{props:e.props,viewProps:this.viewProps}),this.view.valueElement.appendChild(this.valueController.view.element)}importProps(t){return rt(t,null,(t=>({label:t.optional.string})),(t=>(this.props.set("label",t.label),!0)))}exportProps(){return at(null,{label:this.props.get("label")})}}const kt=yt(""),Vt={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Lt{constructor(t){this.parent_=null,this.blade=t.blade,this.view=t.view,this.viewProps=t.viewProps;const e=this.view.element;this.blade.value("positions").emitter.on("change",(()=>{["veryfirst","first","last","verylast"].forEach((t=>{e.classList.remove(kt(void 0,Vt[t]))})),this.blade.get("positions").forEach((t=>{e.classList.add(kt(void 0,Vt[t]))}))})),this.viewProps.handleDispose((()=>{wt(e)}))}get parent(){return this.parent_}set parent(t){this.parent_=t,this.viewProps.set("parent",this.parent_?this.parent_.viewProps:null)}importState(t){return rt(t,null,(t=>({disabled:t.required.boolean,hidden:t.required.boolean})),(t=>(this.viewProps.importState(t),!0)))}exportState(){return at(null,Object.assign({},this.viewProps.exportState()))}}class Mt extends X{get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get title(){var t;return null!==(t=this.controller.buttonController.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller.buttonController.props.set("title",t)}on(t,e){const n=e.bind(this);return this.controller.buttonController.emitter.on(t,(t=>{n(new tt(this,t.nativeEvent))})),this}off(t,e){return this.controller.buttonController.emitter.off(t,e),this}}function St(t,e){return n=>{!function(t,e,n){n?t.classList.add(e):t.classList.remove(e)}(t,e,n)}}function Dt(t,e){gt(t,(t=>{e.textContent=null!=t?t:""}))}const jt=yt("btn");class At{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(jt()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("button");n.classList.add(jt("b")),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n;const s=t.createElement("div");s.classList.add(jt("t")),Dt(e.props.value("title"),s),this.buttonElement.appendChild(s)}}class Ot{constructor(t,e){this.emitter=new l,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new At(t,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}importProps(t){return rt(t,null,(t=>({title:t.optional.string})),(t=>(this.props.set("title",t.title),!0)))}exportProps(){return at(null,{title:this.props.get("title")})}onClick_(t){this.emitter.emit("click",{nativeEvent:t,sender:this})}}class Kt extends Lt{constructor(t,e){const n=new Ot(t,{props:e.buttonProps,viewProps:e.viewProps}),s=new Et(t,{blade:e.blade,props:e.labelProps,valueController:n});super({blade:e.blade,view:s.view,viewProps:e.viewProps}),this.buttonController=n,this.labelController=s}importState(t){return rt(t,(t=>super.importState(t)&&this.buttonController.importProps(t)&&this.labelController.importProps(t)),(()=>({})),(()=>!0))}exportState(){return at((()=>super.exportState()),Object.assign(Object.assign({},this.buttonController.exportProps()),this.labelController.exportProps()))}}const Rt=new class{constructor(t){const[e,n]=t.split("-"),s=e.split(".");this.major=parseInt(s[0],10),this.minor=parseInt(s[1],10),this.patch=parseInt(s[2],10),this.prerelease=null!=n?n:null}toString(){const t=[this.major,this.minor,this.patch].join(".");return null!==this.prerelease?[t,this.prerelease].join("-"):t}}("2.0.3");function zt(t){return Object.assign({core:Rt},t)}zt({id:"button",type:"blade",accept(t){const e=ot(t,(t=>({title:t.required.string,view:t.required.constant("button"),label:t.optional.string})));return e?{params:e}:null},controller:t=>new Kt(t.document,{blade:t.blade,buttonProps:d.fromObject({title:t.params.title}),labelProps:d.fromObject({label:t.params.label}),viewProps:t.viewProps}),api:t=>t.controller instanceof Kt?new Mt(t.controller):null});class Nt{constructor(t,e){this.onRackValueChange_=this.onRackValueChange_.bind(this),this.controller_=t,this.emitter_=new l,this.pool_=e;this.controller_.rack.emitter.on("valuechange",this.onRackValueChange_)}get children(){return this.controller_.rack.children.map((t=>this.pool_.createApi(t)))}addBinding(t,e,n){const s=null!=n?n:{},i=this.controller_.element.ownerDocument,o=this.pool_.createBinding(i,function(t,e){if(!a.isBindable(t))throw r.notBindable();return new a(t,e)}(t,e),s),l=this.pool_.createBindingApi(o);return this.add(l,s.index)}addFolder(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"folder"}))}(this,t)}addButton(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"button"}))}(this,t)}addTab(t){return function(t,e){return t.addBlade(Object.assign(Object.assign({},e),{view:"tab"}))}(this,t)}add(t,e){const n=t.controller;return this.controller_.rack.add(n,e),t}remove(t){this.controller_.rack.remove(t.controller)}addBlade(t){const e=this.controller_.element.ownerDocument,n=this.pool_.createBlade(e,t),s=this.pool_.createApi(n);return this.add(s,t.index)}on(t,e){const n=e.bind(this);return this.emitter_.on(t,(t=>{n(t)}),{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}refresh(){this.children.forEach((t=>{var n;e(n=t)&&"refresh"in n&&"function"==typeof n.refresh&&t.refresh()}))}onRackValueChange_(t){const e=t.bladeController,n=this.pool_.createApi(e),s=ht(e.value)?e.value.binding:null;this.emitter_.emit("change",new J(n,s?s.target.read():e.value.rawValue,t.options.last))}}class It extends X{constructor(t,e){super(t),this.rackApi_=new Nt(t.rackController,e)}refresh(){this.rackApi_.refresh()}}class Tt extends Lt{constructor(t){super({blade:t.blade,view:t.view,viewProps:t.rackController.viewProps}),this.rackController=t.rackController}importState(t){return rt(t,(t=>super.importState(t)),(t=>({children:t.required.array(t.required.raw)})),(t=>this.rackController.rack.children.every(((e,n)=>e.importState(t.children[n])))))}exportState(){return at((()=>super.exportState()),{children:this.rackController.rack.children.map((t=>t.exportState()))})}}function Ut(t){return"rackController"in t}class Bt{constructor(t){this.emitter=new l,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=t}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(t){for(const e of this.allItems())if(t(e))return e;return null}includes(t){return this.cache_.has(t)}add(t,e){if(this.includes(t))throw r.shouldNeverHappen();const n=void 0!==e?e:this.items_.length;this.items_.splice(n,0,t),this.cache_.add(t);const s=this.extract_(t);s&&(s.emitter.on("add",this.onSubListAdd_),s.emitter.on("remove",this.onSubListRemove_),s.allItems().forEach((t=>{this.cache_.add(t)}))),this.emitter.emit("add",{index:n,item:t,root:this,target:this})}remove(t){const e=this.items_.indexOf(t);if(e<0)return;this.items_.splice(e,1),this.cache_.delete(t);const n=this.extract_(t);n&&(n.allItems().forEach((t=>{this.cache_.delete(t)})),n.emitter.off("add",this.onSubListAdd_),n.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:e,item:t,root:this,target:this})}onSubListAdd_(t){this.cache_.add(t.item),this.emitter.emit("add",{index:t.index,item:t.item,root:this,target:t.target})}onSubListRemove_(t){this.cache_.delete(t.item),this.emitter.emit("remove",{index:t.index,item:t.item,root:this,target:t.target})}}function Ft(t){return Ut(t)?t.rackController.rack.bcSet_:null}class $t{constructor(t){var e,n;this.emitter=new l,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!==(e=t.blade)&&void 0!==e?e:null,null===(n=this.blade_)||void 0===n||n.value("positions").emitter.on("change",this.onBladePositionsChange_),this.viewProps=t.viewProps,this.bcSet_=new Bt(Ft),this.bcSet_.emitter.on("add",this.onSetAdd_),this.bcSet_.emitter.on("remove",this.onSetRemove_)}get children(){return this.bcSet_.items}add(t,e){var n;null===(n=t.parent)||void 0===n||n.remove(t),t.parent=this,this.bcSet_.add(t,e)}remove(t){t.parent=null,this.bcSet_.remove(t)}find(t){return this.bcSet_.allItems().filter(t)}onSetAdd_(t){this.updatePositions_();const e=t.target===t.root;if(this.emitter.emit("add",{bladeController:t.item,index:t.index,root:e,sender:this}),!e)return;const n=t.item;if(n.viewProps.emitter.on("change",this.onChildViewPropsChange_),n.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),n.viewProps.handleDispose(this.onChildDispose_),lt(n))n.value.emitter.on("change",this.onChildValueChange_);else if(Ut(n)){const t=n.rackController.rack;if(t){const e=t.emitter;e.on("layout",this.onRackLayout_),e.on("valuechange",this.onRackValueChange_)}}}onSetRemove_(t){this.updatePositions_();const e=t.target===t.root;if(this.emitter.emit("remove",{bladeController:t.item,root:e,sender:this}),!e)return;const n=t.item;if(lt(n))n.value.emitter.off("change",this.onChildValueChange_);else if(Ut(n)){const t=n.rackController.rack;if(t){const e=t.emitter;e.off("layout",this.onRackLayout_),e.off("valuechange",this.onRackValueChange_)}}}updatePositions_(){const t=this.bcSet_.items.filter((t=>!t.viewProps.get("hidden"))),e=t[0],n=t[t.length-1];this.bcSet_.items.forEach((t=>{const s=[];t===e&&(s.push("first"),this.blade_&&!this.blade_.get("positions").includes("veryfirst")||s.push("veryfirst")),t===n&&(s.push("last"),this.blade_&&!this.blade_.get("positions").includes("verylast")||s.push("verylast")),t.blade.set("positions",s)}))}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(t){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter((t=>t.viewProps.get("disposed"))).forEach((t=>{this.bcSet_.remove(t)}))}onChildValueChange_(t){const e=function(t,e){for(let n=0;n<t.length;n++){const s=t[n];if(lt(s)&&s.value===e)return s}return null}(this.find(lt),t.sender);if(!e)throw r.alreadyDisposed();this.emitter.emit("valuechange",{bladeController:e,options:t.options,sender:this})}onRackLayout_(t){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onRackValueChange_(t){this.emitter.emit("valuechange",{bladeController:t.bladeController,options:t.options,sender:this})}onBladePositionsChange_(){this.updatePositions_()}}class qt{constructor(t){this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this),this.element=t.element,this.viewProps=t.viewProps;const e=new $t({blade:t.root?void 0:t.blade,viewProps:t.viewProps});e.emitter.on("add",this.onRackAdd_),e.emitter.on("remove",this.onRackRemove_),this.rack=e,this.viewProps.handleDispose((()=>{for(let t=this.rack.children.length-1;t>=0;t--){this.rack.children[t].viewProps.set("disposed",!0)}}))}onRackAdd_(t){t.root&&mt(this.element,t.bladeController.view.element,t.index)}onRackRemove_(t){t.root&&wt(t.bladeController.view.element)}}function Ht(){return new d({positions:u([],{equals:s})})}class Gt extends d{constructor(t){super(t)}static create(t){const e={completed:!0,expanded:t,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},n=d.createCore(e);return new Gt(n)}get styleExpanded(){var t;return null!==(t=this.get("temporaryExpanded"))&&void 0!==t?t:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const e=this.get("expandedHeight");return this.get("shouldFixHeight")&&!t(e)?`${e}px`:"auto"}bindExpandedClass(t,e){const n=()=>{this.styleExpanded?t.classList.add(e):t.classList.remove(e)};ft(this,"expanded",n),ft(this,"temporaryExpanded",n)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function Yt(t,e){e.style.height=t.styleHeight}function Xt(e,n){e.value("expanded").emitter.on("beforechange",(()=>{if(e.set("completed",!1),t(e.get("expandedHeight"))){const t=function(t,e){let n=0;return function(t,e){const n=t.style.transition;t.style.transition="none",e(),t.style.transition=n}(e,(()=>{t.set("expandedHeight",null),t.set("temporaryExpanded",!0),ct(e),n=e.clientHeight,t.set("temporaryExpanded",null),ct(e)})),n}(e,n);t>0&&e.set("expandedHeight",t)}e.set("shouldFixHeight",!0),ct(n)})),e.emitter.on("change",(()=>{Yt(e,n)})),Yt(e,n),n.addEventListener("transitionend",(t=>{"height"===t.propertyName&&e.cleanUpTransition()}))}class Wt extends It{constructor(t,e){super(t,e),this.emitter_=new l,this.controller.foldable.value("expanded").emitter.on("change",(t=>{this.emitter_.emit("fold",new Q(this,t.sender.rawValue))})),this.rackApi_.on("change",(t=>{this.emitter_.emit("change",t)}))}get expanded(){return this.controller.foldable.get("expanded")}set expanded(t){this.controller.foldable.set("expanded",t)}get title(){return this.controller.props.get("title")}set title(t){this.controller.props.set("title",t)}get children(){return this.rackApi_.children}addBinding(t,e,n){return this.rackApi_.addBinding(t,e,n)}addFolder(t){return this.rackApi_.addFolder(t)}addButton(t){return this.rackApi_.addButton(t)}addTab(t){return this.rackApi_.addTab(t)}add(t,e){return this.rackApi_.add(t,e)}remove(t){this.rackApi_.remove(t)}addBlade(t){return this.rackApi_.addBlade(t)}on(t,e){const n=e.bind(this);return this.emitter_.on(t,(t=>{n(t)}),{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}}const Jt=yt("cnt");class Qt{constructor(e,n){var s;this.className_=yt(null!==(s=n.viewName)&&void 0!==s?s:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),Jt()),n.viewProps.bindClassModifiers(this.element),this.foldable_=n.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),ft(this.foldable_,"completed",St(this.element,this.className_(void 0,"cpl")));const i=e.createElement("button");i.classList.add(this.className_("b")),ft(n.props,"title",(e=>{t(e)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))})),n.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i;const o=e.createElement("div");o.classList.add(this.className_("i")),this.element.appendChild(o);const r=e.createElement("div");r.classList.add(this.className_("t")),Dt(n.props.value("title"),r),this.buttonElement.appendChild(r),this.titleElement=r;const a=e.createElement("div");a.classList.add(this.className_("m")),this.buttonElement.appendChild(a);const l=e.createElement("div");l.classList.add(this.className_("c")),this.element.appendChild(l),this.containerElement=l}}class Zt extends Tt{constructor(t,e){var n;const s=Gt.create(null===(n=e.expanded)||void 0===n||n),i=new Qt(t,{foldable:s,props:e.props,viewName:e.root?"rot":void 0,viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new qt({blade:e.blade,element:i.containerElement,root:e.root,viewProps:e.viewProps}),view:i})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=e.props,this.foldable=s,Xt(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(t){return rt(t,(t=>super.importState(t)),(t=>({expanded:t.required.boolean,title:t.optional.string})),(t=>(this.foldable.set("expanded",t.expanded),this.props.set("title",t.title),!0)))}exportState(){return at((()=>super.exportState()),{expanded:this.foldable.get("expanded"),title:this.props.get("title")})}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}zt({id:"folder",type:"blade",accept(t){const e=ot(t,(t=>({title:t.required.string,view:t.required.constant("folder"),expanded:t.optional.boolean})));return e?{params:e}:null},controller:t=>new Zt(t.document,{blade:t.blade,expanded:t.params.expanded,props:d.fromObject({title:t.params.title}),viewProps:t.viewProps}),api:t=>t.controller instanceof Zt?new Wt(t.controller,t.pool):null});const te=yt("");function ee(t,e){return St(t,te(void 0,e))}class ne extends d{constructor(t){var e,n;super(t),this.onDisabledChange_=this.onDisabledChange_.bind(this),this.onParentChange_=this.onParentChange_.bind(this),this.onParentGlobalDisabledChange_=this.onParentGlobalDisabledChange_.bind(this),[this.globalDisabled_,this.setGlobalDisabled_]=(n=u(this.getGlobalDisabled_()),[new c(n),(t,e)=>{n.setRawValue(t,e)}]),this.value("disabled").emitter.on("change",this.onDisabledChange_),this.value("parent").emitter.on("change",this.onParentChange_),null===(e=this.get("parent"))||void 0===e||e.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_)}static create(t){var e,n,s;const i=null!=t?t:{};return new ne(d.createCore({disabled:null!==(e=i.disabled)&&void 0!==e&&e,disposed:!1,hidden:null!==(n=i.hidden)&&void 0!==n&&n,parent:null!==(s=i.parent)&&void 0!==s?s:null}))}get globalDisabled(){return this.globalDisabled_}bindClassModifiers(t){gt(this.globalDisabled_,ee(t,"disabled")),ft(this,"hidden",ee(t,"hidden"))}bindDisabled(t){gt(this.globalDisabled_,(e=>{t.disabled=e}))}bindTabIndex(t){gt(this.globalDisabled_,(e=>{t.tabIndex=e?-1:0}))}handleDispose(t){this.value("disposed").emitter.on("change",(e=>{e&&t()}))}importState(t){this.set("disabled",t.disabled),this.set("hidden",t.hidden)}exportState(){return{disabled:this.get("disabled"),hidden:this.get("hidden")}}getGlobalDisabled_(){const t=this.get("parent");return!!t&&t.globalDisabled.rawValue||this.get("disabled")}updateGlobalDisabled_(){this.setGlobalDisabled_(this.getGlobalDisabled_())}onDisabledChange_(){this.updateGlobalDisabled_()}onParentGlobalDisabledChange_(){this.updateGlobalDisabled_()}onParentChange_(t){var e;const n=t.previousRawValue;null==n||n.globalDisabled.emitter.off("change",this.onParentGlobalDisabledChange_),null===(e=this.get("parent"))||void 0===e||e.globalDisabled.emitter.on("change",this.onParentGlobalDisabledChange_),this.updateGlobalDisabled_()}}const se=yt("tbp");class ie{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(se()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("div");n.classList.add(se("c")),this.element.appendChild(n),this.containerElement=n}}const oe=yt("tbi");class re{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(oe()),e.viewProps.bindClassModifiers(this.element),ft(e.props,"selected",(t=>{t?this.element.classList.add(oe(void 0,"sel")):this.element.classList.remove(oe(void 0,"sel"))}));const n=t.createElement("button");n.classList.add(oe("b")),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n;const s=t.createElement("div");s.classList.add(oe("t")),Dt(e.props.value("title"),s),this.buttonElement.appendChild(s),this.titleElement=s}}class ae{constructor(t,e){this.emitter=new l,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new re(t,{props:e.props,viewProps:e.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class le extends Tt{constructor(t,e){const n=new ie(t,{viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new qt({blade:e.blade,element:n.containerElement,viewProps:e.viewProps}),view:n})),this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new ae(t,{props:e.itemProps,viewProps:ne.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.props=e.props,ft(this.props,"selected",(t=>{this.itemController.props.set("selected",t),this.viewProps.set("hidden",!t)}))}get itemController(){return this.ic_}importState(t){return rt(t,(t=>super.importState(t)),(t=>({selected:t.required.boolean,title:t.required.string})),(t=>(this.ic_.props.set("selected",t.selected),this.ic_.props.set("title",t.title),!0)))}exportState(){return at((()=>super.exportState()),{selected:this.ic_.props.get("selected"),title:this.ic_.props.get("title")})}onItemClick_(){this.props.set("selected",!0)}}class he extends It{constructor(t,e){super(t,e),this.emitter_=new l,this.onSelect_=this.onSelect_.bind(this),this.pool_=e,this.rackApi_.on("change",(t=>{this.emitter_.emit("change",t)})),this.controller.tab.selectedIndex.emitter.on("change",this.onSelect_)}get pages(){return this.rackApi_.children}addPage(t){const e=this.controller.view.element.ownerDocument,n=new le(e,{blade:Ht(),itemProps:d.fromObject({selected:!1,title:t.title}),props:d.fromObject({selected:!1}),viewProps:ne.create()}),s=this.pool_.createApi(n);return this.rackApi_.add(s,t.index)}removePage(t){this.rackApi_.remove(this.rackApi_.children[t])}on(t,e){const n=e.bind(this);return this.emitter_.on(t,(t=>{n(t)}),{key:e}),this}off(t,e){return this.emitter_.off(t,e),this}onSelect_(t){this.emitter_.emit("select",new Z(this,t.rawValue))}}class pe extends It{get title(){var t;return null!==(t=this.controller.itemController.props.get("title"))&&void 0!==t?t:""}set title(t){this.controller.itemController.props.set("title",t)}get selected(){return this.controller.props.get("selected")}set selected(t){this.controller.props.set("selected",t)}get children(){return this.rackApi_.children}addButton(t){return this.rackApi_.addButton(t)}addFolder(t){return this.rackApi_.addFolder(t)}addTab(t){return this.rackApi_.addTab(t)}add(t,e){this.rackApi_.add(t,e)}remove(t){this.rackApi_.remove(t)}addBinding(t,e,n){return this.rackApi_.addBinding(t,e,n)}addBlade(t){return this.rackApi_.addBlade(t)}}class ce{constructor(){this.onItemSelectedChange_=this.onItemSelectedChange_.bind(this),this.empty=u(!0),this.selectedIndex=u(-1),this.items_=[]}add(t,e){const n=null!=e?e:this.items_.length;this.items_.splice(n,0,t),t.emitter.on("change",this.onItemSelectedChange_),this.keepSelection_()}remove(t){const e=this.items_.indexOf(t);e<0||(this.items_.splice(e,1),t.emitter.off("change",this.onItemSelectedChange_),this.keepSelection_())}keepSelection_(){if(0===this.items_.length)return this.selectedIndex.rawValue=-1,void(this.empty.rawValue=!0);const t=this.items_.findIndex((t=>t.rawValue));t<0?(this.items_.forEach(((t,e)=>{t.rawValue=0===e})),this.selectedIndex.rawValue=0):(this.items_.forEach(((e,n)=>{e.rawValue=n===t})),this.selectedIndex.rawValue=t),this.empty.rawValue=!1}onItemSelectedChange_(t){if(t.rawValue){const e=this.items_.findIndex((e=>e===t.sender));this.items_.forEach(((t,n)=>{t.rawValue=n===e})),this.selectedIndex.rawValue=e}else this.keepSelection_()}}const ue=yt("tab");class de{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(ue(),Jt()),e.viewProps.bindClassModifiers(this.element),gt(e.empty,St(this.element,ue(void 0,"nop")));const n=t.createElement("div");n.classList.add(ue("t")),this.element.appendChild(n),this.itemsElement=n;const s=t.createElement("div");s.classList.add(ue("i")),this.element.appendChild(s);const i=t.createElement("div");i.classList.add(ue("c")),this.element.appendChild(i),this.contentsElement=i}}class ve extends Tt{constructor(t,e){const n=new ce,s=new de(t,{empty:n.empty,viewProps:e.viewProps});super({blade:e.blade,rackController:new qt({blade:e.blade,element:s.contentsElement,viewProps:e.viewProps}),view:s}),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const i=this.rackController.rack;i.emitter.on("add",this.onRackAdd_),i.emitter.on("remove",this.onRackRemove_),this.tab=n}add(t,e){this.rackController.rack.add(t,e)}remove(t){this.rackController.rack.remove(this.rackController.rack.children[t])}onRackAdd_(t){if(!t.root)return;const e=t.bladeController;mt(this.view.itemsElement,e.itemController.view.element,t.index),e.itemController.viewProps.set("parent",this.viewProps),this.tab.add(e.props.value("selected"))}onRackRemove_(t){if(!t.root)return;const e=t.bladeController;wt(e.itemController.view.element),e.itemController.viewProps.set("parent",null),this.tab.remove(e.props.value("selected"))}}zt({id:"tab",type:"blade",accept(t){const e=ot(t,(t=>({pages:t.required.array(t.required.object({title:t.required.string})),view:t.required.constant("tab")})));return e&&0!==e.pages.length?{params:e}:null},controller(t){const e=new ve(t.document,{blade:t.blade,viewProps:t.viewProps});return t.params.pages.forEach((n=>{const s=new le(t.document,{blade:Ht(),itemProps:d.fromObject({selected:!1,title:n.title}),props:d.fromObject({selected:!1}),viewProps:ne.create()});e.add(s)})),e},api:t=>t.controller instanceof ve?new he(t.controller,t.pool):t.controller instanceof le?new pe(t.controller,t.pool):null});class me extends et{get options(){return this.controller.valueController.props.get("options")}set options(t){this.controller.valueController.props.set("options",t)}}class we{constructor(t){this.constraints=t}constrain(t){return this.constraints.reduce(((t,e)=>e.constrain(t)),t)}}function be(t,e){if(t instanceof e)return t;if(t instanceof we){const n=t.constraints.reduce(((t,n)=>t||(n instanceof e?n:null)),null);if(n)return n}return null}class _e{constructor(t){this.values=d.fromObject({options:t})}constrain(t){const e=this.values.get("options");if(0===e.length)return t;return e.filter((e=>e.value===t)).length>0?t:e[0].value}}function ge(t){var e;const n=it;return Array.isArray(t)?null===(e=ot({items:t},(t=>({items:t.required.array(t.required.object({text:t.required.string,value:t.required.raw}))}))))||void 0===e?void 0:e.items:"object"==typeof t?n.required.raw(t).value:void 0}function fe(t){if(Array.isArray(t))return t;const e=[];return Object.keys(t).forEach((n=>{e.push({text:n,value:t[n]})})),e}function Ce(e){return t(e)?null:new _e(fe(e))}const ye=yt("lst");class Pe{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.props_=e.props,this.element=t.createElement("div"),this.element.classList.add(ye()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("select");n.classList.add(ye("s")),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.selectElement=n;const s=t.createElement("div");s.classList.add(ye("m")),s.appendChild(vt(t,"dropdown")),this.element.appendChild(s),e.value.emitter.on("change",this.onValueChange_),this.value_=e.value,ft(this.props_,"options",(e=>{bt(this.selectElement),e.forEach((e=>{const n=t.createElement("option");n.textContent=e.text,this.selectElement.appendChild(n)})),this.update_()}))}update_(){const t=this.props_.get("options").map((t=>t.value));this.selectElement.selectedIndex=t.indexOf(this.value_.rawValue)}onValueChange_(){this.update_()}}class xe{constructor(t,e){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new Pe(t,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(t){const e=t.currentTarget;this.value.rawValue=this.props.get("options")[e.selectedIndex].value}importProps(t){return rt(t,null,(t=>({options:t.required.custom(ge)})),(t=>(this.props.set("options",fe(t.options)),!0)))}exportProps(){return at(null,{options:this.props.get("options")})}}const Ee=yt("pop");class ke{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Ee()),e.viewProps.bindClassModifiers(this.element),gt(e.shows,St(this.element,Ee(void 0,"v")))}}class Ve{constructor(t,e){this.shows=u(!1),this.viewProps=e.viewProps,this.view=new ke(t,{shows:this.shows,viewProps:this.viewProps})}}const Le=yt("txt");class Me{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Le()),e.viewProps.bindClassModifiers(this.element),this.props_=e.props,this.props_.emitter.on("change",this.onChange_);const n=t.createElement("input");n.classList.add(Le("i")),n.type="text",e.viewProps.bindDisabled(n),this.element.appendChild(n),this.inputElement=n,e.value.emitter.on("change",this.onChange_),this.value_=e.value,this.refresh()}refresh(){const t=this.props_.get("formatter");this.inputElement.value=t(this.value_.rawValue)}onChange_(){this.refresh()}}class Se{constructor(t,e){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=e.parser,this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new Me(t,{props:e.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const n=e.currentTarget.value,s=this.parser_(n);t(s)||(this.value.rawValue=s),this.view.refresh()}}function De(t){return"false"!==t&&!!t}function je(t){return function(t){return String(t)}(t)}const Ae=R(0);function Oe(t){return Ae(t)+"%"}function Ke(t){return String(t)}function Re(t){return t}function ze({primary:t,secondary:e,forward:n,backward:s}){let i=!1;function o(t){i||(i=!0,t(),i=!1)}t.emitter.on("change",(s=>{o((()=>{e.setRawValue(n(t.rawValue,e.rawValue),s.options)}))})),e.emitter.on("change",(i=>{o((()=>{t.setRawValue(s(t.rawValue,e.rawValue),i.options)})),o((()=>{e.setRawValue(n(t.rawValue,e.rawValue),i.options)}))})),o((()=>{e.setRawValue(n(t.rawValue,e.rawValue),{forceEmit:!1,last:!0})}))}function Ne(t,e){const n=t*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+n:e.downKey?-n:0}function Ie(t){return{altKey:t.altKey,downKey:"ArrowDown"===t.key,shiftKey:t.shiftKey,upKey:"ArrowUp"===t.key}}function Te(t){return{altKey:t.altKey,downKey:"ArrowLeft"===t.key,shiftKey:t.shiftKey,upKey:"ArrowRight"===t.key}}function Ue(t){return function(t){return"ArrowUp"===t||"ArrowDown"===t}(t)||"ArrowLeft"===t||"ArrowRight"===t}function Be(t,e){var n,s;const i=e.ownerDocument.defaultView,o=e.getBoundingClientRect();return{x:t.pageX-((null!==(n=i&&i.scrollX)&&void 0!==n?n:0)+o.left),y:t.pageY-((null!==(s=i&&i.scrollY)&&void 0!==s?s:0)+o.top)}}class Fe{constructor(t){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_=t,this.emitter=new l,t.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),t.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),t.addEventListener("touchend",this.onTouchEnd_),t.addEventListener("mousedown",this.onMouseDown_)}computePosition_(t){const e=this.elem_.getBoundingClientRect();return{bounds:{width:e.width,height:e.height},point:t?{x:t.x,y:t.y}:null}}onMouseDown_(t){var e;t.preventDefault(),null===(e=t.currentTarget)||void 0===e||e.focus();const n=this.elem_.ownerDocument;n.addEventListener("mousemove",this.onDocumentMouseMove_),n.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:t.altKey,data:this.computePosition_(Be(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onDocumentMouseMove_(t){this.emitter.emit("move",{altKey:t.altKey,data:this.computePosition_(Be(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onDocumentMouseUp_(t){const e=this.elem_.ownerDocument;e.removeEventListener("mousemove",this.onDocumentMouseMove_),e.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:t.altKey,data:this.computePosition_(Be(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onTouchStart_(t){t.preventDefault();const e=t.targetTouches.item(0),n=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:t.altKey,data:this.computePosition_(e?{x:e.clientX-n.left,y:e.clientY-n.top}:void 0),sender:this,shiftKey:t.shiftKey}),this.lastTouch_=e}onTouchMove_(t){const e=t.targetTouches.item(0),n=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:t.altKey,data:this.computePosition_(e?{x:e.clientX-n.left,y:e.clientY-n.top}:void 0),sender:this,shiftKey:t.shiftKey}),this.lastTouch_=e}onTouchEnd_(t){var e;const n=null!==(e=t.targetTouches.item(0))&&void 0!==e?e:this.lastTouch_,s=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:t.altKey,data:this.computePosition_(n?{x:n.clientX-s.left,y:n.clientY-s.top}:void 0),sender:this,shiftKey:t.shiftKey})}}const $e=yt("txt");class qe{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onChange_),this.element=t.createElement("div"),this.element.classList.add($e(),$e(void 0,"num")),e.arrayPosition&&this.element.classList.add($e(void 0,e.arrayPosition)),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("input");n.classList.add($e("i")),n.type="text",e.viewProps.bindDisabled(n),this.element.appendChild(n),this.inputElement=n,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=e.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add($e()),this.inputElement.classList.add($e("i"));const s=t.createElement("div");s.classList.add($e("k")),this.element.appendChild(s),this.knobElement=s;const i=t.createElementNS(pt,"svg");i.classList.add($e("g")),this.knobElement.appendChild(i);const o=t.createElementNS(pt,"path");o.classList.add($e("gb")),i.appendChild(o),this.guideBodyElem_=o;const r=t.createElementNS(pt,"path");r.classList.add($e("gh")),i.appendChild(r),this.guideHeadElem_=r;const a=t.createElement("div");a.classList.add(yt("tt")()),this.knobElement.appendChild(a),this.tooltipElem_=a,e.value.emitter.on("change",this.onChange_),this.value=e.value,this.refresh()}onDraggingChange_(t){if(null===t.rawValue)return void this.element.classList.remove($e(void 0,"drg"));this.element.classList.add($e(void 0,"drg"));const e=t.rawValue/this.props_.get("pointerScale"),n=e+(e>0?-1:e<0?1:0),s=I(-n,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${n+s},0 L${n},4 L${n+s},8`,`M ${e},-1 L${e},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${e},4`);const i=this.props_.get("formatter");this.tooltipElem_.textContent=i(this.value.rawValue),this.tooltipElem_.style.left=`${e}px`}refresh(){const t=this.props_.get("formatter");this.inputElement.value=t(this.value.rawValue)}onChange_(){this.refresh()}}class He{constructor(t,e){var n;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_=e.parser,this.props=e.props,this.sliderProps_=null!==(n=e.sliderProps)&&void 0!==n?n:null,this.va