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