=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}var l=f[n],h=r/2+l,d=n+1,p=e-1;for(;d>>1;f[g]c-o){var _=r?(i*v+a*y)/r:a;t(n,d,y,i,o,_,c),t(d,e,v,_,o,a,c)}else{var b=r?(o*v+c*y)/r:c;t(n,d,y,i,o,a,b),t(d,e,v,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=Ap,t.treemapResquarify=Lp,t.treemapSlice=Ip,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?Ip:Ap)(t,n,e,r,i)},t.treemapSquarify=Yp,t.tsv=Mc,t.tsvFormat=lc,t.tsvFormatBody=hc,t.tsvFormatRow=pc,t.tsvFormatRows=dc,t.tsvFormatValue=gc,t.tsvParse=fc,t.tsvParseRows=sc,t.union=function(...t){const n=new InternSet;for(const e of t)for(const t of e)n.add(t);return n},t.unixDay=_y,t.unixDays=by,t.utcDay=yy,t.utcDays=vy,t.utcFriday=By,t.utcFridays=Vy,t.utcHour=hy,t.utcHours=dy,t.utcMillisecond=Wg,t.utcMilliseconds=Zg,t.utcMinute=cy,t.utcMinutes=fy,t.utcMonday=qy,t.utcMondays=jy,t.utcMonth=Qy,t.utcMonths=Jy,t.utcSaturday=Yy,t.utcSaturdays=Wy,t.utcSecond=iy,t.utcSeconds=oy,t.utcSunday=Fy,t.utcSundays=Ly,t.utcThursday=Oy,t.utcThursdays=Gy,t.utcTickInterval=av,t.utcTicks=ov,t.utcTuesday=Uy,t.utcTuesdays=Hy,t.utcWednesday=Iy,t.utcWednesdays=Xy,t.utcWeek=Fy,t.utcWeeks=Ly,t.utcYear=ev,t.utcYears=rv,t.variance=x,t.version="7.9.0",t.window=pn,t.xml=Sc,t.zip=function(){return gt(arguments)},t.zoom=function(){var t,n,e,r=Ew,i=Nw,o=zw,a=Cw,u=Pw,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=ri,h=$t("start","zoom","end"),d=500,p=150,g=0,y=10;function v(t){t.property("__zoom",kw).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",S).filter(u).on("touchstart.zoom",E).on("touchmove.zoom",N).on("touchend.zoom touchcancel.zoom",k).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function _(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new ww(n,t.x,t.y)}function b(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new ww(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,n,e,r){t.on("start.zoom",(function(){w(this,arguments).event(r).start()})).on("interrupt.zoom end.zoom",(function(){w(this,arguments).event(r).end()})).tween("zoom",(function(){var t=this,o=arguments,a=w(t,o).event(r),u=i.apply(t,o),c=null==e?m(u):"function"==typeof e?e.apply(t,o):e,f=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),s=t.__zoom,h="function"==typeof n?n.apply(t,o):n,d=l(s.invert(c).concat(f/s.k),h.invert(c).concat(f/h.k));return function(t){if(1===t)t=h;else{var n=d(t),e=f/n[2];t=new ww(e,c[0]-n[0]*e,c[1]-n[1]*e)}a.zoom(null,t)}}))}function w(t,n,e){return!e&&t.__zooming||new M(t,n)}function M(t,n){this.that=t,this.args=n,this.active=0,this.sourceEvent=null,this.extent=i.apply(t,n),this.taps=0}function T(t,...n){if(r.apply(this,arguments)){var e=w(this,n).event(t),i=this.__zoom,u=Math.max(c[0],Math.min(c[1],i.k*Math.pow(2,a.apply(this,arguments)))),s=ne(t);if(e.wheel)e.mouse[0][0]===s[0]&&e.mouse[0][1]===s[1]||(e.mouse[1]=i.invert(e.mouse[0]=s)),clearTimeout(e.wheel);else{if(i.k===u)return;e.mouse=[s,i.invert(s)],Gi(this),e.start()}Sw(t),e.wheel=setTimeout((function(){e.wheel=null,e.end()}),p),e.zoom("mouse",o(b(_(i,u),e.mouse[0],e.mouse[1]),e.extent,f))}}function A(t,...n){if(!e&&r.apply(this,arguments)){var i=t.currentTarget,a=w(this,n,!0).event(t),u=Zn(t.view).on("mousemove.zoom",(function(t){if(Sw(t),!a.moved){var n=t.clientX-s,e=t.clientY-l;a.moved=n*n+e*e>g}a.event(t).zoom("mouse",o(b(a.that.__zoom,a.mouse[0]=ne(t,i),a.mouse[1]),a.extent,f))}),!0).on("mouseup.zoom",(function(t){u.on("mousemove.zoom mouseup.zoom",null),ue(t.view,a.moved),Sw(t),a.event(t).end()}),!0),c=ne(t,i),s=t.clientX,l=t.clientY;ae(t.view),Aw(t),a.mouse=[c,this.__zoom.invert(c)],Gi(this),a.start()}}function S(t,...n){if(r.apply(this,arguments)){var e=this.__zoom,a=ne(t.changedTouches?t.changedTouches[0]:t,this),u=e.invert(a),c=e.k*(t.shiftKey?.5:2),l=o(b(_(e,c),a,u),i.apply(this,n),f);Sw(t),s>0?Zn(this).transition().duration(s).call(x,l,a,t):Zn(this).call(v.transform,l,a,t)}}function E(e,...i){if(r.apply(this,arguments)){var o,a,u,c,f=e.touches,s=f.length,l=w(this,i,e.changedTouches.length===s).event(e);for(Aw(e),a=0;a+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0>2],r=(3&f)<<4,u=1;break;case 1:s[o++]=h[r|f>>4],r=(15&f)<<2,u=2;break;case 2:s[o++]=h[r|f>>6],s[o++]=h[63&f],u=0}8191>4,r=u,s=2;break;case 2:i[n++]=(15&r)<<4|(60&u)>>2,r=u,s=3;break;case 3:i[n++]=(3&r)<<6|u,s=0}}if(1===s)throw Error(a);return n-e},n.test=function(t){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(t)}},{}],3:[function(t,i,n){function c(i,n){"string"==typeof i&&(n=i,i=tt);var f=[];function h(t){if("string"!=typeof t){var i=a();if(c.verbose&&console.log("codegen: "+i),i="return "+i,t){for(var n=Object.keys(t),r=Array(n.length+1),e=Array(n.length),s=0;s>>0:i<11754943508222875e-54?(e<<31|Math.round(i/1401298464324817e-60))>>>0:(e<<31|127+(t=Math.floor(Math.log(i)/Math.LN2))<<23|8388607&Math.round(i*Math.pow(2,-t)*8388608))>>>0,n,r)}function n(t,i,n){t=t(i,n),i=2*(t>>31)+1,n=t>>>23&255,t&=8388607;return 255==n?t?NaN:1/0*i:0==n?1401298464324817e-60*i*t:i*Math.pow(2,n-150)*(8388608+t)}function r(t,i,n){u[0]=t,i[n]=f[0],i[n+1]=f[1],i[n+2]=f[2],i[n+3]=f[3]}function e(t,i,n){u[0]=t,i[n]=f[3],i[n+1]=f[2],i[n+2]=f[1],i[n+3]=f[0]}function s(t,i){return f[0]=t[i],f[1]=t[i+1],f[2]=t[i+2],f[3]=t[i+3],u[0]}function o(t,i){return f[3]=t[i],f[2]=t[i+1],f[1]=t[i+2],f[0]=t[i+3],u[0]}var u,f,h,a,c;function l(t,i,n,r,e,s){var o,u=r<0?1:0;0===(r=u?-r:r)?(t(0,e,s+i),t(0<1/r?0:2147483648,e,s+n)):isNaN(r)?(t(0,e,s+i),t(2146959360,e,s+n)):17976931348623157e292>>0,e,s+n)):r<22250738585072014e-324?(t((o=r/5e-324)>>>0,e,s+i),t((u<<31|o/4294967296)>>>0,e,s+n)):(t(4503599627370496*(o=r*Math.pow(2,-(r=1024===(r=Math.floor(Math.log(r)/Math.LN2))?1023:r)))>>>0,e,s+i),t((u<<31|r+1023<<20|1048576*o&1048575)>>>0,e,s+n))}function d(t,i,n,r,e){i=t(r,e+i),t=t(r,e+n),r=2*(t>>31)+1,e=t>>>20&2047,n=4294967296*(1048575&t)+i;return 2047==e?n?NaN:1/0*r:0==e?5e-324*r*n:r*Math.pow(2,e-1075)*(n+4503599627370496)}function p(t,i,n){h[0]=t,i[n]=a[0],i[n+1]=a[1],i[n+2]=a[2],i[n+3]=a[3],i[n+4]=a[4],i[n+5]=a[5],i[n+6]=a[6],i[n+7]=a[7]}function v(t,i,n){h[0]=t,i[n]=a[7],i[n+1]=a[6],i[n+2]=a[5],i[n+3]=a[4],i[n+4]=a[3],i[n+5]=a[2],i[n+6]=a[1],i[n+7]=a[0]}function b(t,i){return a[0]=t[i],a[1]=t[i+1],a[2]=t[i+2],a[3]=t[i+3],a[4]=t[i+4],a[5]=t[i+5],a[6]=t[i+6],a[7]=t[i+7],h[0]}function w(t,i){return a[7]=t[i],a[6]=t[i+1],a[5]=t[i+2],a[4]=t[i+3],a[3]=t[i+4],a[2]=t[i+5],a[1]=t[i+6],a[0]=t[i+7],h[0]}return"undefined"!=typeof Float32Array?(u=new Float32Array([-0]),f=new Uint8Array(u.buffer),c=128===f[3],t.writeFloatLE=c?r:e,t.writeFloatBE=c?e:r,t.readFloatLE=c?s:o,t.readFloatBE=c?o:s):(t.writeFloatLE=i.bind(null,y),t.writeFloatBE=i.bind(null,m),t.readFloatLE=n.bind(null,g),t.readFloatBE=n.bind(null,j)),"undefined"!=typeof Float64Array?(h=new Float64Array([-0]),a=new Uint8Array(h.buffer),c=128===a[7],t.writeDoubleLE=c?p:v,t.writeDoubleBE=c?v:p,t.readDoubleLE=c?b:w,t.readDoubleBE=c?w:b):(t.writeDoubleLE=l.bind(null,y,0,4),t.writeDoubleBE=l.bind(null,m,4,0),t.readDoubleLE=d.bind(null,g,0,4),t.readDoubleBE=d.bind(null,j,4,0)),t}function y(t,i,n){i[n]=255&t,i[n+1]=t>>>8&255,i[n+2]=t>>>16&255,i[n+3]=t>>>24}function m(t,i,n){i[n]=t>>>24,i[n+1]=t>>>16&255,i[n+2]=t>>>8&255,i[n+3]=255&t}function g(t,i){return(t[i]|t[i+1]<<8|t[i+2]<<16|t[i+3]<<24)>>>0}function j(t,i){return(t[i]<<24|t[i+1]<<16|t[i+2]<<8|t[i+3])>>>0}i.exports=r(r)},{}],7:[function(t,i,n){function r(t){try{var i=eval("require")(t);if(i&&(i.length||Object.keys(i).length))return i}catch(t){}return null}i.exports=r},{}],8:[function(t,i,n){var e=n.isAbsolute=function(t){return/^(?:\/|\w+:)/.test(t)},r=n.normalize=function(t){var i=(t=t.replace(/\\/g,"/").replace(/\/{2,}/g,"/")).split("/"),n=e(t),t="";n&&(t=i.shift()+"/");for(var r=0;r>>1,s=null,o=r;return function(t){if(t<1||e>10),s[o++]=56320+(1023&r)):s[o++]=(15&r)<<12|(63&t[i++])<<6|63&t[i++],8191>6|192:(55296==(64512&r)&&56320==(64512&(e=t.charCodeAt(o+1)))?(++o,i[n++]=(r=65536+((1023&r)<<10)+(1023&e))>>18|240,i[n++]=r>>12&63|128):i[n++]=r>>12|224,i[n++]=r>>6&63|128),i[n++]=63&r|128);return n-s}},{}],11:[function(t,i,n){i.exports=e;var r=/\/|\./;function e(t,i){r.test(t)||(t="google/protobuf/"+t+".proto",i={nested:{google:{nested:{protobuf:{nested:i}}}}}),e[t]=i}e("any",{Any:{fields:{type_url:{type:"string",id:1},value:{type:"bytes",id:2}}}}),e("duration",{Duration:i={fields:{seconds:{type:"int64",id:1},nanos:{type:"int32",id:2}}}}),e("timestamp",{Timestamp:i}),e("empty",{Empty:{fields:{}}}),e("struct",{Struct:{fields:{fields:{keyType:"string",type:"Value",id:1}}},Value:{oneofs:{kind:{oneof:["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},fields:{nullValue:{type:"NullValue",id:1},numberValue:{type:"double",id:2},stringValue:{type:"string",id:3},boolValue:{type:"bool",id:4},structValue:{type:"Struct",id:5},listValue:{type:"ListValue",id:6}}},NullValue:{values:{NULL_VALUE:0}},ListValue:{fields:{values:{rule:"repeated",type:"Value",id:1}}}}),e("wrappers",{DoubleValue:{fields:{value:{type:"double",id:1}}},FloatValue:{fields:{value:{type:"float",id:1}}},Int64Value:{fields:{value:{type:"int64",id:1}}},UInt64Value:{fields:{value:{type:"uint64",id:1}}},Int32Value:{fields:{value:{type:"int32",id:1}}},UInt32Value:{fields:{value:{type:"uint32",id:1}}},BoolValue:{fields:{value:{type:"bool",id:1}}},StringValue:{fields:{value:{type:"string",id:1}}},BytesValue:{fields:{value:{type:"bytes",id:1}}}}),e("field_mask",{FieldMask:{fields:{paths:{rule:"repeated",type:"string",id:1}}}}),e.get=function(t){return e[t]||null}},{}],12:[function(t,i,n){var l=t(15),d=t(37);function o(t,i,n,r){if(i.resolvedType)if(i.resolvedType instanceof l){t("switch(d%s){",r);for(var e=i.resolvedType.values,s=Object.keys(e),o=0;o>>0",r,r);break;case"int32":case"sint32":case"sfixed32":t("m%s=d%s|0",r,r);break;case"uint64":u=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":t("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j",r,r,u)('else if(typeof d%s==="string")',r)("m%s=parseInt(d%s,10)",r,r)('else if(typeof d%s==="number")',r)("m%s=d%s",r,r)('else if(typeof d%s==="object")',r)("m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)",r,r,r,u?"true":"");break;case"bytes":t('if(typeof d%s==="string")',r)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)",r,r,r)("else if(d%s.length)",r)("m%s=d%s",r,r);break;case"string":t("m%s=String(d%s)",r,r);break;case"bool":t("m%s=Boolean(d%s)",r,r)}}return t}function p(t,i,n,r){if(i.resolvedType)i.resolvedType instanceof l?t("d%s=o.enums===String?types[%i].values[m%s]:m%s",r,n,r,r):t("d%s=types[%i].toObject(m%s,o)",r,n,r);else{var e=!1;switch(i.type){case"double":case"float":t("d%s=o.json&&!isFinite(m%s)?String(m%s):m%s",r,r,r,r);break;case"uint64":e=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":t('if(typeof m%s==="number")',r)("d%s=o.longs===String?String(m%s):m%s",r,r,r)("else")("d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s",r,r,r,r,e?"true":"",r);break;case"bytes":t("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s",r,r,r,r,r);break;default:t("d%s=m%s",r,r)}}return t}n.fromObject=function(t){var i=t.fieldsArray,n=d.codegen(["d"],t.name+"$fromObject")("if(d instanceof this.ctor)")("return d");if(!i.length)return n("return new this.ctor");n("var m=new this.ctor");for(var r=0;r>>3){");for(var n=0;n>>3){")("case 1: k=r.%s(); break",r.keyType)("case 2:"),f.basic[e]===tt?i("value=types[%i].decode(r,r.uint32())",n):i("value=r.%s()",e),i("break")("default:")("r.skipType(tag2&7)")("break")("}")("}"),f.long[r.keyType]!==tt?i('%s[typeof k==="object"?util.longToHash(k):k]=value',s):i("%s[k]=value",s)):r.repeated?(i("if(!(%s&&%s.length))",s,s)("%s=[]",s),f.packed[e]!==tt&&i("if((t&7)===2){")("var c2=r.uint32()+r.pos")("while(r.pos>>0,8|a.mapKey[s.keyType],s.keyType),f===tt?n("types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",o,i):n(".uint32(%i).%s(%s[ks[i]]).ldelim()",16|f,u,i),n("}")("}")):s.repeated?(n("if(%s!=null&&%s.length){",i,i),s.packed&&a.packed[u]!==tt?n("w.uint32(%i).fork()",(s.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",i)("w.%s(%s[i])",u,i)("w.ldelim()"):(n("for(var i=0;i<%s.length;++i)",i),f===tt?l(n,s,o,i+"[i]"):n("w.uint32(%i).%s(%s[i])",(s.id<<3|f)>>>0,u,i)),n("}")):(s.optional&&n("if(%s!=null&&Object.hasOwnProperty.call(m,%j))",i,s.name),f===tt?l(n,s,o,i):n("w.uint32(%i).%s(%s)",(s.id<<3|f)>>>0,u,i))}return n("return w")};var h=t(15),a=t(36),c=t(37);function l(t,i,n,r){i.resolvedType.group?t("types[%i].encode(%s,w.uint32(%i)).uint32(%i)",n,r,(i.id<<3|3)>>>0,(i.id<<3|4)>>>0):t("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()",n,r,(i.id<<3|2)>>>0)}},{15:15,36:36,37:37}],15:[function(t,i,n){i.exports=s;var u=t(24),r=(((s.prototype=Object.create(u.prototype)).constructor=s).className="Enum",t(23)),e=t(37);function s(t,i,n,r,e){if(u.call(this,t,n),i&&"object"!=typeof i)throw TypeError("values must be an object");if(this.valuesById={},this.values=Object.create(this.valuesById),this.comment=r,this.comments=e||{},this.reserved=tt,i)for(var s=Object.keys(i),o=0;oi)return!0;return!1},c.isReservedName=function(t,i){if(t)for(var n=0;n");var e=l();if(!G.test(e))throw j(e,"name");v("=");var s=new L(g(e),A(l()),n,r);T(s,function(t){if("option"!==t)throw j(t);N(s,t),v(";")},function(){$(s)}),i.add(s);break;case"required":case"repeated":S(u,t);break;case"optional":S(u,y?"proto3_optional":"optional");break;case"oneof":e=u,n=t;if(!G.test(n=l()))throw j(n,"name");var o=new U(g(n));T(o,function(t){"option"===t?(N(o,t),v(";")):(d(t),S(o,"optional"))}),e.add(o);break;case"extensions":E(u.extensions||(u.extensions=[]));break;case"reserved":E(u.reserved||(u.reserved=[]),!0);break;default:if(!y||!K.test(t))throw j(t);d(t),S(u,"optional")}}),n.add(u),1;case"enum":r=t,n=i;if(!G.test(n=l()))throw j(n,"name");var s=new q(n);return T(s,function(t){switch(t){case"option":N(s,t),v(";");break;case"reserved":E(s.reserved||(s.reserved=[]),!0);break;default:var i=s,n=t;if(!G.test(n))throw j(n,"name");v("=");var r=A(l(),!0),e={};T(e,function(t){if("option"!==t)throw j(t);N(e,t),v(";")},function(){$(e)}),i.add(n,r,e.comment)}}),r.add(s),1;case"service":var e=t,o=i;if(!G.test(o=l()))throw j(o,"service name");var h=new R(o);return T(h,function(t){if(!x(h,t)){if("rpc"!==t)throw j(t);var i=h,n=b(),r=t;if(!G.test(t=l()))throw j(t,"name");var e,s,o,u=t;if(v("("),v("stream",!0)&&(s=!0),!K.test(t=l()))throw j(t);if(e=t,v(")"),v("returns"),v("("),v("stream",!0)&&(o=!0),!K.test(t=l()))throw j(t);t=t,v(")");var f=new z(u,r,e,t,s,o);f.comment=n,T(f,function(t){if("option"!==t)throw j(t);N(f,t),v(";")}),i.add(f)}}),e.add(h),1;case"extend":var f=t,o=i;if(!K.test(o=l()))throw j(o,"reference");var a=o;return T(null,function(t){switch(t){case"required":case"repeated":S(f,t,a);break;case"optional":S(f,y?"proto3_optional":"optional",a);break;default:if(!y||!K.test(t))throw j(t);d(t),S(f,"optional",a)}}),1}}function T(t,i,n){var r,e=c.line;if(t&&("string"!=typeof t.comment&&(t.comment=b()),t.filename=Y.filename),v("{",!0)){for(;"}"!==(r=l());)i(r);v(";",!0)}else n&&n(),v(";"),t&&("string"!=typeof t.comment||a)&&(t.comment=b(e)||t.comment)}function S(t,i,n){var r=l();if("group"===r){var e=t,s=i,o=l();if(!G.test(o))throw j(o,"name");var u=B.lcFirst(o),f=(o===u&&(o=B.ucFirst(o)),v("="),A(l())),h=new I(o);return h.group=!0,(u=new F(u,f,o,s)).filename=Y.filename,T(h,function(t){switch(t){case"option":N(h,t),v(";");break;case"required":case"repeated":S(h,t);break;case"optional":S(h,y?"proto3_optional":"optional");break;default:throw j(t)}}),void e.add(h).add(u)}if(!K.test(r))throw j(r,"type");f=l();if(!G.test(f))throw j(f,"name");f=g(f),v("=");var a=new F(f,A(l()),r,i,n);T(a,function(t){if("option"!==t)throw j(t);N(a,t),v(";")},function(){$(a)}),"proto3_optional"===i?(o=new U("_"+f),a.setOption("proto3_optional",!0),o.add(a),t.add(o)):t.add(a),y||!a.repeated||Z.packed[r]===tt&&Z.basic[r]!==tt||a.setOption("packed",!1,!0)}function N(t,i){var n=v("(",!0);if(!K.test(i=l()))throw j(i,"name");var r,e=i,s=e,n=(n&&(v(")"),s=e="("+e+")",i=p(),Q.test(i)&&(r=i.substr(1),e+=i,l())),v("="),function t(i,n){if(v("{",!0)){for(var r={};!v("}",!0);){if(!G.test(f=l()))throw j(f,"name");var e,s=f,o=("{"===p()?e=t(i,n+"."+f):(v(":"),"{"===p()?e=t(i,n+"."+f):(e=O(!0),V(i,n+"."+f,e))),r[s]);o&&(e=[].concat(o).concat(e)),r[s]=e,v(",",!0)}return r}var u=O(!0);V(i,n,u);return u}(t,e));i=s,e=n,s=r,(n=t).setParsedOption&&n.setParsedOption(i,e,s)}function V(t,i,n){t.setOption&&t.setOption(i,n)}function $(t){if(v("[",!0)){for(;N(t,"option"),v(",",!0););v("]")}}for(;null!==(f=l());)switch(f){case"package":if(!w)throw j(f);if(r!==tt)throw j("package");if(r=l(),!K.test(r))throw j(r,"name");m=m.define(r),v(";");break;case"import":if(!w)throw j(f);switch(h=u=void 0,p()){case"weak":h=s=s||[],l();break;case"public":l();default:h=e=e||[]}u=k(),v(";"),h.push(u);break;case"syntax":if(!w)throw j(f);if(v("="),o=k(),!(y="proto3"===o)&&"proto2"!==o)throw j(o,"syntax");v(";");break;case"option":N(m,f),v(";");break;default:if(x(m,f)){w=!1;continue}throw j(f)}return Y.filename=null,{package:r,imports:e,weakImports:s,syntax:o,root:i}}},{15:15,16:16,20:20,22:22,25:25,29:29,33:33,34:34,35:35,36:36,37:37}],27:[function(t,i,n){i.exports=f;var r,e=t(39),s=e.LongBits,o=e.utf8;function u(t,i){return RangeError("index out of range: "+t.pos+" + "+(i||1)+" > "+t.len)}function f(t){this.buf=t,this.pos=0,this.len=t.length}function h(){return e.Buffer?function(t){return(f.create=function(t){return e.Buffer.isBuffer(t)?new r(t):c(t)})(t)}:c}var a,c="undefined"!=typeof Uint8Array?function(t){if(t instanceof Uint8Array||Array.isArray(t))return new f(t);throw Error("illegal buffer")}:function(t){if(Array.isArray(t))return new f(t);throw Error("illegal buffer")};function l(){var t=new s(0,0),i=0;if(!(4=this.len)throw u(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*i)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(127&this.buf[this.pos++])<<7*i)>>>0,t}for(;i<4;++i)if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*i)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t;if(i=0,4>>0,this.buf[this.pos++]<128)return t}else for(;i<5;++i){if(this.pos>=this.len)throw u(this);if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*i+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}function d(t,i){return(t[i-4]|t[i-3]<<8|t[i-2]<<16|t[i-1]<<24)>>>0}function p(){if(this.pos+8>this.len)throw u(this,8);return new s(d(this.buf,this.pos+=4),d(this.buf,this.pos+=4))}f.create=h(),f.prototype.c=e.Array.prototype.subarray||e.Array.prototype.slice,f.prototype.uint32=(a=4294967295,function(){if(a=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return a;if(a=(a|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return a;if(a=(a|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return a;if(a=(a|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return a;if(a=(a|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return a;if((this.pos+=5)>this.len)throw this.pos=this.len,u(this,10);return a}),f.prototype.int32=function(){return 0|this.uint32()},f.prototype.sint32=function(){var t=this.uint32();return t>>>1^-(1&t)|0},f.prototype.bool=function(){return 0!==this.uint32()},f.prototype.fixed32=function(){if(this.pos+4>this.len)throw u(this,4);return d(this.buf,this.pos+=4)},f.prototype.sfixed32=function(){if(this.pos+4>this.len)throw u(this,4);return 0|d(this.buf,this.pos+=4)},f.prototype.float=function(){if(this.pos+4>this.len)throw u(this,4);var t=e.float.readFloatLE(this.buf,this.pos);return this.pos+=4,t},f.prototype.double=function(){if(this.pos+8>this.len)throw u(this,4);var t=e.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,t},f.prototype.bytes=function(){var t=this.uint32(),i=this.pos,n=this.pos+t;if(n>this.len)throw u(this,t);return this.pos+=t,Array.isArray(this.buf)?this.buf.slice(i,n):i===n?new this.buf.constructor(0):this.c.call(this.buf,i,n)},f.prototype.string=function(){var t=this.bytes();return o.read(t,0,t.length)},f.prototype.skip=function(t){if("number"==typeof t){if(this.pos+t>this.len)throw u(this,t);this.pos+=t}else do{if(this.pos>=this.len)throw u(this)}while(128&this.buf[this.pos++]);return this},f.prototype.skipType=function(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;4!=(t=7&this.uint32());)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+t+" at offset "+this.pos)}return this},f.u=function(t){r=t,f.create=h(),r.u();var i=e.Long?"toLong":"toNumber";e.merge(f.prototype,{int64:function(){return l.call(this)[i](!1)},uint64:function(){return l.call(this)[i](!0)},sint64:function(){return l.call(this).zzDecode()[i](!1)},fixed64:function(){return p.call(this)[i](!0)},sfixed64:function(){return p.call(this)[i](!1)}})}},{39:39}],28:[function(t,i,n){i.exports=s;var r=t(27),e=((s.prototype=Object.create(r.prototype)).constructor=s,t(39));function s(t){r.call(this,t)}s.u=function(){e.Buffer&&(s.prototype.c=e.Buffer.prototype.slice)},s.prototype.string=function(){var t=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+t,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+t,this.len))},s.u()},{27:27,39:39}],29:[function(t,i,n){i.exports=f;var r,d,p,e=t(23),s=(((f.prototype=Object.create(e.prototype)).constructor=f).className="Root",t(16)),o=t(15),u=t(25),v=t(37);function f(t){e.call(this,"",t),this.deferred=[],this.files=[]}function b(){}f.fromJSON=function(t,i){return i=i||new f,t.options&&i.setOptions(t.options),i.addJSON(t.nested)},f.prototype.resolvePath=v.path.resolve,f.prototype.fetch=v.fetch,f.prototype.load=function t(i,s,e){"function"==typeof s&&(e=s,s=tt);var o=this;if(!e)return v.asPromise(t,o,i,s);var u=e===b;function f(t,i){if(e){var n=e;if(e=null,u)throw t;n(t,i)}}function h(t){var i=t.lastIndexOf("google/protobuf/");if(-1]/g,x=/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,T=/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g,S=/^ *[*/]+ */,N=/^\s*\*?\/*/,V=/\n/g,$=/\s/,r=/\\(.?)/g,e={0:"\0",r:"\r",n:"\n",t:"\t"};function _(t){return t.replace(r,function(t,i){switch(i){case"\\":case"":return i;default:return e[i]||""}})}function s(h,a){h=h.toString();var c=0,l=h.length,d=1,u=null,f=null,p=0,v=!1,b=!1,w=[],y=null;function m(t){return Error("illegal "+t+" (line "+d+")")}function g(t){return h[0|t]||""}function j(t,i,n){u=h[0|t++]||"",p=d,v=!1,b=n;var r,e=t-(a?2:3);do{if(--e<0||"\n"==(r=h[0|e]||"")){v=!0;break}}while(" "===r||"\t"===r);for(var s=h.substring(t,i).split(V),o=0;o>>0,this.hi=i>>>0}var s=e.zero=new e(0,0),o=(s.toNumber=function(){return 0},s.zzEncode=s.zzDecode=function(){return this},s.length=function(){return 1},e.zeroHash="\0\0\0\0\0\0\0\0",e.fromNumber=function(t){if(0===t)return s;var i=t<0,n=(t=i?-t:t)>>>0,t=(t-n)/4294967296>>>0;return i&&(t=~t>>>0,n=~n>>>0,4294967295<++n&&(n=0,4294967295<++t&&(t=0))),new e(n,t)},e.from=function(t){if("number"==typeof t)return e.fromNumber(t);if(r.isString(t)){if(!r.Long)return e.fromNumber(parseInt(t,10));t=r.Long.fromString(t)}return t.low||t.high?new e(t.low>>>0,t.high>>>0):s},e.prototype.toNumber=function(t){var i;return!t&&this.hi>>>31?(t=1+~this.lo>>>0,i=~this.hi>>>0,-(t+4294967296*(i=t?i:i+1>>>0))):this.lo+4294967296*this.hi},e.prototype.toLong=function(t){return r.Long?new r.Long(0|this.lo,0|this.hi,!!t):{low:0|this.lo,high:0|this.hi,unsigned:!!t}},String.prototype.charCodeAt);e.fromHash=function(t){return"\0\0\0\0\0\0\0\0"===t?s:new e((o.call(t,0)|o.call(t,1)<<8|o.call(t,2)<<16|o.call(t,3)<<24)>>>0,(o.call(t,4)|o.call(t,5)<<8|o.call(t,6)<<16|o.call(t,7)<<24)>>>0)},e.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},e.prototype.zzEncode=function(){var t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this},e.prototype.zzDecode=function(){var t=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this},e.prototype.length=function(){var t=this.lo,i=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return 0==n?0==i?t<16384?t<128?1:2:t<2097152?3:4:i<16384?i<128?5:6:i<2097152?7:8:n<128?9:10}},{39:39}],39:[function(t,i,n){var r=n;function e(t,i,n){for(var r=Object.keys(i),e=0;e>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;127>>7;i[n++]=t.lo}function b(t,i,n){i[n]=255&t,i[n+1]=t>>>8&255,i[n+2]=t>>>16&255,i[n+3]=t>>>24}c.create=l(),c.alloc=function(t){return new e.Array(t)},e.Array!==Array&&(c.alloc=e.pool(c.alloc,e.Array.prototype.subarray)),c.prototype.g=function(t,i,n){return this.tail=this.tail.next=new f(t,i,n),this.len+=i,this},(p.prototype=Object.create(f.prototype)).fn=function(t,i,n){for(;127>>=7;i[n]=t},c.prototype.uint32=function(t){return this.len+=(this.tail=this.tail.next=new p((t>>>=0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this},c.prototype.int32=function(t){return t<0?this.g(v,10,s.fromNumber(t)):this.uint32(t)},c.prototype.sint32=function(t){return this.uint32((t<<1^t>>31)>>>0)},c.prototype.int64=c.prototype.uint64=function(t){t=s.from(t);return this.g(v,t.length(),t)},c.prototype.sint64=function(t){t=s.from(t).zzEncode();return this.g(v,t.length(),t)},c.prototype.bool=function(t){return this.g(d,1,t?1:0)},c.prototype.sfixed32=c.prototype.fixed32=function(t){return this.g(b,4,t>>>0)},c.prototype.sfixed64=c.prototype.fixed64=function(t){t=s.from(t);return this.g(b,4,t.lo).g(b,4,t.hi)},c.prototype.float=function(t){return this.g(e.float.writeFloatLE,4,t)},c.prototype.double=function(t){return this.g(e.float.writeDoubleLE,8,t)};var w=e.Array.prototype.set?function(t,i,n){i.set(t,n)}:function(t,i,n){for(var r=0;r>>0;return n?(e.isString(t)&&(i=c.alloc(n=o.length(t)),o.decode(t,i,0),t=i),this.uint32(n).g(w,n,t)):this.g(d,1,0)},c.prototype.string=function(t){var i=u.length(t);return i?this.uint32(i).g(u.write,i,t):this.g(d,1,0)},c.prototype.fork=function(){return this.states=new a(this),this.head=this.tail=new f(h,0,0),this.len=0,this},c.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new f(h,0,0),this.len=0),this},c.prototype.ldelim=function(){var t=this.head,i=this.tail,n=this.len;return this.reset().uint32(n),n&&(this.tail.next=t.next,this.tail=i,this.len+=n),this},c.prototype.finish=function(){for(var t=this.head.next,i=this.constructor.alloc(this.len),n=0;t;)t.fn(t.val,i,n),n+=t.len,t=t.next;return i},c.u=function(t){r=t,c.create=l(),r.u()}},{39:39}],43:[function(t,i,n){i.exports=s;var r=t(42),e=((s.prototype=Object.create(r.prototype)).constructor=s,t(39));function s(){r.call(this)}function o(t,i,n){t.length<40?e.utf8.write(t,i,n):i.utf8Write?i.utf8Write(t,n):i.write(t,n)}s.u=function(){s.alloc=e.y,s.writeBytesBuffer=e.Buffer&&e.Buffer.prototype instanceof Uint8Array&&"set"===e.Buffer.prototype.set.name?function(t,i,n){i.set(t,n)}:function(t,i,n){if(t.copy)t.copy(i,n,0,t.length);else for(var r=0;r>>0;return this.uint32(i),i&&this.g(s.writeBytesBuffer,i,t),this},s.prototype.string=function(t){var i=e.Buffer.byteLength(t);return this.uint32(i),i&&this.g(o,i,t),this},s.u()},{39:39,42:42}]},{},[19])}();
-//# sourceMappingURL=protobuf.min.js.map
diff --git a/lib/tweakpane-4.0.5.min.js b/lib/tweakpane-4.0.5.min.js
deleted file mode 100644
index 0f845b40..00000000
--- a/lib/tweakpane-4.0.5.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! Tweakpane 4.0.5 (c) 2016 cocopon, licensed under the MIT license. */
-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 i(t,e){if(t.length!==e.length)return!1;for(let n=0;n{const o=t[r],a=e[r];return n(o)&&n(a)?Object.assign(Object.assign({},i),{[r]:s(o,a)}):Object.assign(Object.assign({},i),{[r]:r in e?a:o})}),{})}function r(t){return!!e(t)&&"target"in t}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 a{static alreadyDisposed(){return new a({type:"alreadydisposed"})}static notBindable(){return new a({type:"notbindable"})}static notCompatible(t,e){return new a({type:"notcompatible",context:{id:`${t}.${e}`}})}static propertyNotFound(t){return new a({type:"propertynotfound",context:{name:t}})}static shouldNeverHappen(){return new a({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 l{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(!l.isBindable(n))throw a.notBindable();if(!(t in n))throw a.propertyNotFound(t);n[t]=e}}class p{constructor(){this.observers_={}}on(t,e,n){var i;let s=this.observers_[t];return s||(s=this.observers_[t]=[]),s.push({handler:e,key:null!==(i=null==n?void 0:n.key)&&void 0!==i?i: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 c{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 p,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},i=this.constraint_?this.constraint_.constrain(t):t,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 d{constructor(t){this.emitter=new p,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},i=this.value_;(i!==t||n.forceEmit)&&(this.emitter.emit("beforechange",{sender:this}),this.value_=t,this.emitter.emit("change",{options:n,previousRawValue:i,rawValue:this.value_,sender:this}))}}class h{constructor(t){this.emitter=new p,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,i=null==e?void 0:e.equals;return n||i?new c(t,e):new d(t)}class v{constructor(t){this.emitter=new p,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 v(e)}get(t){return this.valMap_[t].rawValue}set(t,e){this.valMap_[t].rawValue=e}value(t){return this.valMap_[t]}}class m{constructor(t){this.values=v.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 b{constructor(t){this.values=v.fromObject({max:t.max,min:t.min})}constrain(e){const n=this.values.get("max"),i=this.values.get("min");let s=e;return t(i)||(s=Math.max(s,i)),t(n)||(s=Math.min(s,n)),s}}class g{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 _{constructor(t){this.text=t}evaluate(){return Number(this.text)}toString(){return this.text}}const f={"**":(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<>":(t,e)=>t>>e,">>>":(t,e)=>t>>>e,"&":(t,e)=>t&e,"^":(t,e)=>t^e,"|":(t,e)=>t|e};class w{constructor(t,e,n){this.left=e,this.operator=t,this.right=n}evaluate(){const t=f[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 x={"+":t=>t,"-":t=>-t,"~":t=>~t};class y{constructor(t,e){this.operator=t,this.expression=e}evaluate(){const t=x[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 C(t){return(e,n)=>{for(let i=0;ie.startsWith(t,n)))[0];return i?(n+=i.length,{cursor:n+=P(e,n).length,operator:i}):null}const A=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce(((t,e)=>function(t,e){return(n,i)=>{const s=t(n,i);if(!s)return null;i=s.cursor;let r=s.evaluable;for(;;){const s=D(e,n,i);if(!s)break;i=s.cursor;const o=t(n,i);if(!o)return null;i=o.cursor,r=new w(s.operator,r,o.evaluable)}return r?{cursor:i,evaluable:r}:null}}(t,e)),(function t(e,n){const i=j(e,n);if(i)return i;const s=e.substr(n,1);if(n+=s.length,"+"!==s&&"-"!==s&&"~"!==s)return null;const r=t(e,n);return r?{cursor:n=r.cursor,evaluable:new y(s,r.evaluable)}:null}));function O(t,e){return e+=P(t,e).length,A(t,e)}function R(t){var e;const n=function(t){const e=O(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 B(e){if("number"==typeof e)return e;if("string"==typeof e){const n=R(e);if(!t(n))return n}return 0}function K(t){return String(t)}function z(t){return e=>e.toFixed(Math.max(Math.min(t,20),0))}function N(t,e,n,i,s){return i+(t-e)/(n-e)*(s-i)}function I(t){return String(t.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function T(t,e,n){return Math.min(Math.max(t,e),n)}function U(t,e){return(t%e+e)%e}function F(e,n){return t(e.step)?Math.max(I(n),2):I(e.step)}function $(t){var e;return null!==(e=t.step)&&void 0!==e?e:1}function q(t,e){var n;const i=Math.abs(null!==(n=t.step)&&void 0!==n?n:e);return 0===i?.1:Math.pow(10,Math.floor(Math.log10(i))-1)}function H(e,n){return t(e.step)?null:new g(e.step,n)}function G(e){return t(e.max)||t(e.min)?t(e.max)&&t(e.min)?null:new b({max:e.max,min:e.min}):new m({max:e.max,min:e.min})}function Y(t,e){var n,i,s;return{formatter:null!==(n=t.format)&&void 0!==n?n:z(F(t,e)),keyScale:null!==(i=t.keyScale)&&void 0!==i?i:$(t),pointerScale:null!==(s=t.pointerScale)&&void 0!==s?s:q(t,e)}}function X(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 Q(t){return{constraint:t.constraint,textProps:v.fromObject(Y(t.params,t.initialValue))}}class W{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 J{constructor(t){this.target=t}}class Z extends J{constructor(t,e,n){super(t),this.value=e,this.last=null==n||n}}class tt extends J{constructor(t,e){super(t),this.expanded=e}}class et extends J{constructor(t,e){super(t),this.index=e}}class nt extends J{constructor(t,e){super(t),this.native=e}}class it extends W{constructor(t){super(t),this.onValueChange_=this.onValueChange_.bind(this),this.emitter_=new p,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 Z(this,e.binding.target.read(),t.options.last))}}class st{constructor(t,e){this.onValueBeforeChange_=this.onValueBeforeChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.binding=e,this.value_=t,this.value_.emitter.on("beforechange",this.onValueBeforeChange_),this.value_.emitter.on("change",this.onValueChange_),this.emitter=new p}get rawValue(){return this.value_.rawValue}set rawValue(t){this.value_.rawValue=t}setRawValue(t,e){this.value_.setRawValue(t,e)}fetch(){this.value_.rawValue=this.binding.read()}push(){this.binding.write(this.value_.rawValue)}onValueBeforeChange_(t){this.emitter.emit("beforechange",Object.assign(Object.assign({},t),{sender:this}))}onValueChange_(t){this.push(),this.emitter.emit("change",Object.assign(Object.assign({},t),{sender:this}))}}function rt(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 i=t(n);return void 0!==i?{succeeded:!0,value:i}:{succeeded:!1,value:void 0}}}function ot(t){return{custom:e=>rt(e)(t),boolean:rt((t=>"boolean"==typeof t?t:void 0))(t),number:rt((t=>"number"==typeof t?t:void 0))(t),string:rt((t=>"string"==typeof t?t:void 0))(t),function:rt((t=>"function"==typeof t?t:void 0))(t),constant:e=>rt((t=>t===e?e:void 0))(t),raw:rt((t=>t))(t),object:e=>rt((t=>{var n;if(null!==(n=t)&&"object"==typeof n)return function(t,e){return Object.keys(e).reduce(((n,i)=>{if(void 0===n)return;const s=(0,e[i])(t[i]);return s.succeeded?Object.assign(Object.assign({},n),{[i]:s.value}):void 0}),{})}(t,e)}))(t),array:e=>rt((t=>{var n;if(Array.isArray(t))return n=e,t.reduce(((t,e)=>{if(void 0===t)return;const i=n(e);return i.succeeded&&void 0!==i.value?[...t,i.value]:void 0}),[])}))(t)}}const at={optional:ot(!0),required:ot(!1)};function lt(t,e){const n=e(at),i=at.required.object(n)(t);return i.succeeded?i.value:void 0}function pt(t,e,n,i){if(e&&!e(t))return!1;const s=lt(t,n);return!!s&&i(s)}function ct(t,e){var n;return s(null!==(n=null==t?void 0:t())&&void 0!==n?n:{},e)}function dt(t){return"value"in t}function ht(t){if(!e(t)||!("binding"in t))return!1;return r(t.binding)}const ut="http://www.w3.org/2000/svg";function vt(t){t.offsetHeight}function mt(t){return void 0!==t.ontouchstart}function bt(){return globalThis.document}const gt={check:'',dropdown:'',p2dpad:''};function _t(t,e){const n=t.createElementNS(ut,"svg");return n.innerHTML=gt[e],n}function ft(t,e,n){t.insertBefore(e,t.children[n])}function wt(t){t.parentElement&&t.parentElement.removeChild(t)}function xt(t){for(;t.children.length>0;)t.removeChild(t.children[0])}function yt(t){return t.relatedTarget?t.relatedTarget:"explicitOriginalTarget"in t?t.explicitOriginalTarget:null}function Ct(t,e){t.emitter.on("change",(t=>{e(t.rawValue)})),e(t.rawValue)}function Pt(t,e,n){Ct(t.value(e),n)}const kt="tp";function Et(t){return(e,n)=>[kt,"-",t,"v",e?`_${e}`:"",n?`-${n}`:""].join("")}const Vt=Et("lbl");class Lt{constructor(e,n){this.element=e.createElement("div"),this.element.classList.add(Vt()),n.viewProps.bindClassModifiers(this.element);const i=e.createElement("div");i.classList.add(Vt("l")),Pt(n.props,"label",(n=>{t(n)?this.element.classList.add(Vt(void 0,"nol")):(this.element.classList.remove(Vt(void 0,"nol")),function(t){for(;t.childNodes.length>0;)t.removeChild(t.childNodes[0])}(i),i.appendChild(function(t,e){const n=t.createDocumentFragment();return e.split("\n").map((e=>t.createTextNode(e))).forEach(((e,i)=>{i>0&&n.appendChild(t.createElement("br")),n.appendChild(e)})),n}(e,n)))})),this.element.appendChild(i),this.labelElement=i;const s=e.createElement("div");s.classList.add(Vt("v")),this.element.appendChild(s),this.valueElement=s}}class St{constructor(t,e){this.props=e.props,this.valueController=e.valueController,this.viewProps=e.valueController.viewProps,this.view=new Lt(t,{props:e.props,viewProps:this.viewProps}),this.view.valueElement.appendChild(this.valueController.view.element)}importProps(t){return pt(t,null,(t=>({label:t.optional.string})),(t=>(this.props.set("label",t.label),!0)))}exportProps(){return ct(null,{label:this.props.get("label")})}}const Mt=Et(""),jt={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class Dt{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(Mt(void 0,jt[t]))})),this.blade.get("positions").forEach((t=>{e.classList.add(Mt(void 0,jt[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 pt(t,null,(t=>({disabled:t.required.boolean,hidden:t.required.boolean})),(t=>(this.viewProps.importState(t),!0)))}exportState(){return ct(null,Object.assign({},this.viewProps.exportState()))}}class At extends Dt{constructor(t,e){if(e.value!==e.valueController.value)throw a.shouldNeverHappen();const n=e.valueController.viewProps,i=new St(t,{blade:e.blade,props:e.props,valueController:e.valueController});super(Object.assign(Object.assign({},e),{view:new Lt(t,{props:e.props,viewProps:n}),viewProps:n})),this.labelController=i,this.value=e.value,this.valueController=e.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}importState(t){return pt(t,(e=>{var n,i,s;return super.importState(e)&&this.labelController.importProps(e)&&(null===(s=null===(i=(n=this.valueController).importProps)||void 0===i?void 0:i.call(n,t))||void 0===s||s)}),(t=>({value:t.optional.raw})),(t=>(t.value&&(this.value.rawValue=t.value),!0)))}exportState(){var t,e,n;return ct((()=>super.exportState()),Object.assign(Object.assign({value:this.value.rawValue},this.labelController.exportProps()),null!==(n=null===(e=(t=this.valueController).exportProps)||void 0===e?void 0:e.call(t))&&void 0!==n?n:{}))}}function Ot(t){const e=Object.assign({},t);return delete e.value,e}class Rt extends At{constructor(t,e){super(t,e),this.tag=e.tag}importState(t){return pt(t,(e=>super.importState(Ot(t))),(t=>({tag:t.optional.string})),(t=>(this.tag=t.tag,!0)))}exportState(){return ct((()=>Ot(super.exportState())),{binding:{key:this.value.binding.target.key,value:this.value.binding.target.read()},tag:this.tag})}}class Bt extends Rt{importState(t){return pt(t,(t=>super.importState(t)),(t=>({binding:t.required.object({value:t.required.raw})})),(t=>(this.value.binding.inject(t.binding.value),this.value.fetch(),!0)))}}function Kt(t){return dt(t)&&function(t){if(!("binding"in t))return!1;const e=t.binding;return r(e)&&"read"in e&&"write"in e}(t.value)}function zt(t,e){for(;t.lengtht.length?n.splice(0,n.length-t.length):zt(n,t.length),n}(this.value_.rawValue,this.binding.read())}onTick_(){this.fetch()}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}))}}class Tt extends Rt{exportState(){return ct((()=>super.exportState()),{binding:{readonly:!0}})}}function Ut(t){return dt(t)&&function(t){if(!("binding"in t))return!1;const e=t.binding;return r(e)&&"read"in e&&!("write"in e)}(t.value)}class Ft extends W{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 nt(this,t.nativeEvent))})),this}off(t,e){return this.controller.buttonController.emitter.off(t,e),this}}function $t(t,e){return n=>{!function(t,e,n){n?t.classList.add(e):t.classList.remove(e)}(t,e,n)}}function qt(t,e){Ct(t,(t=>{e.textContent=null!=t?t:""}))}const Ht=Et("btn");class Gt{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Ht()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("button");n.classList.add(Ht("b")),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n;const i=t.createElement("div");i.classList.add(Ht("t")),qt(e.props.value("title"),i),this.buttonElement.appendChild(i)}}class Yt{constructor(t,e){this.emitter=new p,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new Gt(t,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}importProps(t){return pt(t,null,(t=>({title:t.optional.string})),(t=>(this.props.set("title",t.title),!0)))}exportProps(){return ct(null,{title:this.props.get("title")})}onClick_(t){this.emitter.emit("click",{nativeEvent:t,sender:this})}}class Xt extends Dt{constructor(t,e){const n=new Yt(t,{props:e.buttonProps,viewProps:e.viewProps}),i=new St(t,{blade:e.blade,props:e.labelProps,valueController:n});super({blade:e.blade,view:i.view,viewProps:e.viewProps}),this.buttonController=n,this.labelController=i}importState(t){return pt(t,(t=>super.importState(t)&&this.buttonController.importProps(t)&&this.labelController.importProps(t)),(()=>({})),(()=>!0))}exportState(){return ct((()=>super.exportState()),Object.assign(Object.assign({},this.buttonController.exportProps()),this.labelController.exportProps()))}}class Qt{constructor(t){const[e,n]=t.split("-"),i=e.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 t=[this.major,this.minor,this.patch].join(".");return null!==this.prerelease?[t,this.prerelease].join("-"):t}}const Wt=new Qt("2.0.5");function Jt(t){return Object.assign({core:Wt},t)}const Zt=Jt({id:"button",type:"blade",accept(t){const e=lt(t,(t=>({title:t.required.string,view:t.required.constant("button"),label:t.optional.string})));return e?{params:e}:null},controller:t=>new Xt(t.document,{blade:t.blade,buttonProps:v.fromObject({title:t.params.title}),labelProps:v.fromObject({label:t.params.label}),viewProps:t.viewProps}),api:t=>t.controller instanceof Xt?new Ft(t.controller):null});class te{constructor(t,e){this.onRackValueChange_=this.onRackValueChange_.bind(this),this.controller_=t,this.emitter_=new p,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 i=null!=n?n:{},s=this.controller_.element.ownerDocument,r=this.pool_.createBinding(s,function(t,e){if(!l.isBindable(t))throw a.notBindable();return new l(t,e)}(t,e),i),o=this.pool_.createBindingApi(r);return this.add(o,i.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),i=this.pool_.createApi(n);return this.add(i,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),i=ht(e.value)?e.value.binding:null;this.emitter_.emit("change",new Z(n,i?i.target.read():e.value.rawValue,t.options.last))}}class ee extends W{constructor(t,e){super(t),this.rackApi_=new te(t.rackController,e)}refresh(){this.rackApi_.refresh()}}class ne extends Dt{constructor(t){super({blade:t.blade,view:t.view,viewProps:t.rackController.viewProps}),this.rackController=t.rackController}importState(t){return pt(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 ct((()=>super.exportState()),{children:this.rackController.rack.children.map((t=>t.exportState()))})}}function ie(t){return"rackController"in t}class se{constructor(t){this.emitter=new p,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 a.shouldNeverHappen();const n=void 0!==e?e:this.items_.length;this.items_.splice(n,0,t),this.cache_.add(t);const i=this.extract_(t);i&&(i.emitter.on("add",this.onSubListAdd_),i.emitter.on("remove",this.onSubListRemove_),i.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 re(t){return ie(t)?t.rackController.rack.bcSet_:null}class oe{constructor(t){var e,n;this.emitter=new p,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 se(re),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_),dt(n))n.value.emitter.on("change",this.onChildValueChange_);else if(ie(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(dt(n))n.value.emitter.off("change",this.onChildValueChange_);else if(ie(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 i=[];t===e&&(i.push("first"),this.blade_&&!this.blade_.get("positions").includes("veryfirst")||i.push("veryfirst")),t===n&&(i.push("last"),this.blade_&&!this.blade_.get("positions").includes("verylast")||i.push("verylast")),t.blade.set("positions",i)}))}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{for(let t=this.rack.children.length-1;t>=0;t--){this.rack.children[t].viewProps.set("disposed",!0)}}))}onRackAdd_(t){t.root&&ft(this.element,t.bladeController.view.element,t.index)}onRackRemove_(t){t.root&&wt(t.bladeController.view.element)}}function le(){return new v({positions:u([],{equals:i})})}class pe extends v{constructor(t){super(t)}static create(t){const e={completed:!0,expanded:t,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},n=v.createCore(e);return new pe(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)};Pt(this,"expanded",n),Pt(this,"temporaryExpanded",n)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function ce(t,e){e.style.height=t.styleHeight}function de(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),vt(e),n=e.clientHeight,t.set("temporaryExpanded",null),vt(e)})),n}(e,n);t>0&&e.set("expandedHeight",t)}e.set("shouldFixHeight",!0),vt(n)})),e.emitter.on("change",(()=>{ce(e,n)})),ce(e,n),n.addEventListener("transitionend",(t=>{"height"===t.propertyName&&e.cleanUpTransition()}))}class he extends ee{constructor(t,e){super(t,e),this.emitter_=new p,this.controller.foldable.value("expanded").emitter.on("change",(t=>{this.emitter_.emit("fold",new tt(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 ue=Et("cnt");class ve{constructor(e,n){var i;this.className_=Et(null!==(i=n.viewName)&&void 0!==i?i:"fld"),this.element=e.createElement("div"),this.element.classList.add(this.className_(),ue()),n.viewProps.bindClassModifiers(this.element),this.foldable_=n.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),Pt(this.foldable_,"completed",$t(this.element,this.className_(void 0,"cpl")));const s=e.createElement("button");s.classList.add(this.className_("b")),Pt(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(s),this.element.appendChild(s),this.buttonElement=s;const r=e.createElement("div");r.classList.add(this.className_("i")),this.element.appendChild(r);const o=e.createElement("div");o.classList.add(this.className_("t")),qt(n.props.value("title"),o),this.buttonElement.appendChild(o),this.titleElement=o;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 me extends ne{constructor(t,e){var n;const i=pe.create(null===(n=e.expanded)||void 0===n||n),s=new ve(t,{foldable:i,props:e.props,viewName:e.root?"rot":void 0,viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new ae({blade:e.blade,element:s.containerElement,root:e.root,viewProps:e.viewProps}),view:s})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=e.props,this.foldable=i,de(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 pt(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 ct((()=>super.exportState()),{expanded:this.foldable.get("expanded"),title:this.props.get("title")})}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}const be=Jt({id:"folder",type:"blade",accept(t){const e=lt(t,(t=>({title:t.required.string,view:t.required.constant("folder"),expanded:t.optional.boolean})));return e?{params:e}:null},controller:t=>new me(t.document,{blade:t.blade,expanded:t.params.expanded,props:v.fromObject({title:t.params.title}),viewProps:t.viewProps}),api:t=>t.controller instanceof me?new he(t.controller,t.pool):null}),ge=Et("");function _e(t,e){return $t(t,ge(void 0,e))}class fe extends v{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 h(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,i;const s=null!=t?t:{};return new fe(v.createCore({disabled:null!==(e=s.disabled)&&void 0!==e&&e,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(t){Ct(this.globalDisabled_,_e(t,"disabled")),Pt(this,"hidden",_e(t,"hidden"))}bindDisabled(t){Ct(this.globalDisabled_,(e=>{t.disabled=e}))}bindTabIndex(t){Ct(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 we=Et("tbp");class xe{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(we()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("div");n.classList.add(we("c")),this.element.appendChild(n),this.containerElement=n}}const ye=Et("tbi");class Ce{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(ye()),e.viewProps.bindClassModifiers(this.element),Pt(e.props,"selected",(t=>{t?this.element.classList.add(ye(void 0,"sel")):this.element.classList.remove(ye(void 0,"sel"))}));const n=t.createElement("button");n.classList.add(ye("b")),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.buttonElement=n;const i=t.createElement("div");i.classList.add(ye("t")),qt(e.props.value("title"),i),this.buttonElement.appendChild(i),this.titleElement=i}}class Pe{constructor(t,e){this.emitter=new p,this.onClick_=this.onClick_.bind(this),this.props=e.props,this.viewProps=e.viewProps,this.view=new Ce(t,{props:e.props,viewProps:e.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class ke extends ne{constructor(t,e){const n=new xe(t,{viewProps:e.viewProps});super(Object.assign(Object.assign({},e),{rackController:new ae({blade:e.blade,element:n.containerElement,viewProps:e.viewProps}),view:n})),this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new Pe(t,{props:e.itemProps,viewProps:fe.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.props=e.props,Pt(this.props,"selected",(t=>{this.itemController.props.set("selected",t),this.viewProps.set("hidden",!t)}))}get itemController(){return this.ic_}importState(t){return pt(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 ct((()=>super.exportState()),{selected:this.ic_.props.get("selected"),title:this.ic_.props.get("title")})}onItemClick_(){this.props.set("selected",!0)}}class Ee extends ee{constructor(t,e){super(t,e),this.emitter_=new p,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 ke(e,{blade:le(),itemProps:v.fromObject({selected:!1,title:t.title}),props:v.fromObject({selected:!1}),viewProps:fe.create()}),i=this.pool_.createApi(n);return this.rackApi_.add(i,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 et(this,t.rawValue))}}class Ve extends ee{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 Le{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 Se=Et("tab");class Me{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Se(),ue()),e.viewProps.bindClassModifiers(this.element),Ct(e.empty,$t(this.element,Se(void 0,"nop")));const n=t.createElement("div");n.classList.add(Se("t")),this.element.appendChild(n),this.itemsElement=n;const i=t.createElement("div");i.classList.add(Se("i")),this.element.appendChild(i);const s=t.createElement("div");s.classList.add(Se("c")),this.element.appendChild(s),this.contentsElement=s}}class je extends ne{constructor(t,e){const n=new Le,i=new Me(t,{empty:n.empty,viewProps:e.viewProps});super({blade:e.blade,rackController:new ae({blade:e.blade,element:i.contentsElement,viewProps:e.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(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;ft(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"))}}const De=Jt({id:"tab",type:"blade",accept(t){const e=lt(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 je(t.document,{blade:t.blade,viewProps:t.viewProps});return t.params.pages.forEach((n=>{const i=new ke(t.document,{blade:le(),itemProps:v.fromObject({selected:!1,title:n.title}),props:v.fromObject({selected:!1}),viewProps:fe.create()});e.add(i)})),e},api:t=>t.controller instanceof je?new Ee(t.controller,t.pool):t.controller instanceof ke?new Ve(t.controller,t.pool):null});class Ae extends it{get options(){return this.controller.valueController.props.get("options")}set options(t){this.controller.valueController.props.set("options",t)}}class Oe{constructor(){this.disabled=!1,this.emitter=new p}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Re{constructor(t,e){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=t,this.emitter=new p,this.interval_=e,this.setTimer_()}get disabled(){return this.disabled_}set disabled(t){this.disabled_=t,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(null===this.timerId_)return;const t=this.doc_.defaultView;t&&t.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const t=this.doc_.defaultView;t&&(this.timerId_=t.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class Be{constructor(t){this.constraints=t}constrain(t){return this.constraints.reduce(((t,e)=>e.constrain(t)),t)}}function Ke(t,e){if(t instanceof e)return t;if(t instanceof Be){const n=t.constraints.reduce(((t,n)=>t||(n instanceof e?n:null)),null);if(n)return n}return null}class ze{constructor(t){this.values=v.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 Ne(t){var e;const n=at;return Array.isArray(t)?null===(e=lt({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 Ie(t){if(Array.isArray(t))return t;const e=[];return Object.keys(t).forEach((n=>{e.push({text:n,value:t[n]})})),e}function Te(e){return t(e)?null:new ze(Ie(e))}const Ue=Et("lst");class Fe{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.props_=e.props,this.element=t.createElement("div"),this.element.classList.add(Ue()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("select");n.classList.add(Ue("s")),e.viewProps.bindDisabled(n),this.element.appendChild(n),this.selectElement=n;const i=t.createElement("div");i.classList.add(Ue("m")),i.appendChild(_t(t,"dropdown")),this.element.appendChild(i),e.value.emitter.on("change",this.onValueChange_),this.value_=e.value,Pt(this.props_,"options",(e=>{xt(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 $e{constructor(t,e){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new Fe(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 pt(t,null,(t=>({options:t.required.custom(Ne)})),(t=>(this.props.set("options",Ie(t.options)),!0)))}exportProps(){return ct(null,{options:this.props.get("options")})}}const qe=Et("pop");class He{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(qe()),e.viewProps.bindClassModifiers(this.element),Ct(e.shows,$t(this.element,qe(void 0,"v")))}}class Ge{constructor(t,e){this.shows=u(!1),this.viewProps=e.viewProps,this.view=new He(t,{shows:this.shows,viewProps:this.viewProps})}}const Ye=Et("txt");class Xe{constructor(t,e){this.onChange_=this.onChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Ye()),e.viewProps.bindClassModifiers(this.element),this.props_=e.props,this.props_.emitter.on("change",this.onChange_);const n=t.createElement("input");n.classList.add(Ye("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 Qe{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 Xe(t,{props:e.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(e){const n=e.currentTarget.value,i=this.parser_(n);t(i)||(this.value.rawValue=i),this.view.refresh()}}function We(t){return"false"!==t&&!!t}function Je(t){return function(t){return String(t)}(t)}const Ze=z(0);function tn(t){return Ze(t)+"%"}function en(t){return String(t)}function nn(t){return t}function sn({primary:t,secondary:e,forward:n,backward:i}){let s=!1;function r(t){s||(s=!0,t(),s=!1)}t.emitter.on("change",(i=>{r((()=>{e.setRawValue(n(t.rawValue,e.rawValue),i.options)}))})),e.emitter.on("change",(s=>{r((()=>{t.setRawValue(i(t.rawValue,e.rawValue),s.options)})),r((()=>{e.setRawValue(n(t.rawValue,e.rawValue),s.options)}))})),r((()=>{e.setRawValue(n(t.rawValue,e.rawValue),{forceEmit:!1,last:!0})}))}function rn(t,e){const n=t*(e.altKey?.1:1)*(e.shiftKey?10:1);return e.upKey?+n:e.downKey?-n:0}function on(t){return{altKey:t.altKey,downKey:"ArrowDown"===t.key,shiftKey:t.shiftKey,upKey:"ArrowUp"===t.key}}function an(t){return{altKey:t.altKey,downKey:"ArrowLeft"===t.key,shiftKey:t.shiftKey,upKey:"ArrowRight"===t.key}}function ln(t){return function(t){return"ArrowUp"===t||"ArrowDown"===t}(t)||"ArrowLeft"===t||"ArrowRight"===t}function pn(t,e){var n,i;const s=e.ownerDocument.defaultView,r=e.getBoundingClientRect();return{x:t.pageX-((null!==(n=s&&s.scrollX)&&void 0!==n?n:0)+r.left),y:t.pageY-((null!==(i=s&&s.scrollY)&&void 0!==i?i:0)+r.top)}}class cn{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 p,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_(pn(t,this.elem_)),sender:this,shiftKey:t.shiftKey})}onDocumentMouseMove_(t){this.emitter.emit("move",{altKey:t.altKey,data:this.computePosition_(pn(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_(pn(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_,i=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:t.altKey,data:this.computePosition_(n?{x:n.clientX-i.left,y:n.clientY-i.top}:void 0),sender:this,shiftKey:t.shiftKey})}}const dn=Et("txt");class hn{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(dn(),dn(void 0,"num")),e.arrayPosition&&this.element.classList.add(dn(void 0,e.arrayPosition)),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("input");n.classList.add(dn("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(dn()),this.inputElement.classList.add(dn("i"));const i=t.createElement("div");i.classList.add(dn("k")),this.element.appendChild(i),this.knobElement=i;const s=t.createElementNS(ut,"svg");s.classList.add(dn("g")),this.knobElement.appendChild(s);const r=t.createElementNS(ut,"path");r.classList.add(dn("gb")),s.appendChild(r),this.guideBodyElem_=r;const o=t.createElementNS(ut,"path");o.classList.add(dn("gh")),s.appendChild(o),this.guideHeadElem_=o;const a=t.createElement("div");a.classList.add(Et("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(dn(void 0,"drg"));this.element.classList.add(dn(void 0,"drg"));const e=t.rawValue/this.props_.get("pointerScale"),n=e+(e>0?-1:e<0?1:0),i=T(-n,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${n+i},0 L${n},4 L${n+i},8`,`M ${e},-1 L${e},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${e},4`);const s=this.props_.get("formatter");this.tooltipElem_.textContent=s(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 un{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.value=e.value,this.viewProps=e.viewProps,this.dragging_=u(null),this.view=new hn(t,{arrayPosition:e.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 cn(this.view.knobElement);i.emitter.on("down",this.onPointerDown_),i.emitter.on("move",this.onPointerMove_),i.emitter.on("up",this.onPointerUp_)}constrainValue_(t){var e,n;const i=null===(e=this.sliderProps_)||void 0===e?void 0:e.get("min"),s=null===(n=this.sliderProps_)||void 0===n?void 0:n.get("max");let r=t;return void 0!==i&&(r=Math.max(r,i)),void 0!==s&&(r=Math.min(r,s)),r}onInputChange_(e){const n=e.currentTarget.value,i=this.parser_(n);t(i)||(this.value.rawValue=this.constrainValue_(i)),this.view.refresh()}onInputKeyDown_(t){const e=rn(this.props.get("keyScale"),on(t));0!==e&&this.value.setRawValue(this.constrainValue_(this.value.rawValue+e),{forceEmit:!1,last:!1})}onInputKeyUp_(t){0!==rn(this.props.get("keyScale"),on(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(t){if(!t.point)return null;const e=t.point.x-t.bounds.width/2;return this.constrainValue_(this.originRawValue_+e*this.props.get("pointerScale"))}onPointerMove_(t){const e=this.computeDraggingValue_(t.data);null!==e&&(this.value.setRawValue(e,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(t){const e=this.computeDraggingValue_(t.data);null!==e&&(this.value.setRawValue(e,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}const vn=Et("sld");class mn{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(vn()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("div");n.classList.add(vn("t")),e.viewProps.bindTabIndex(n),this.element.appendChild(n),this.trackElement=n;const i=t.createElement("div");i.classList.add(vn("k")),this.trackElement.appendChild(i),this.knobElement=i,e.value.emitter.on("change",this.onChange_),this.value=e.value,this.update_()}update_(){const t=T(N(this.value.rawValue,this.props_.get("min"),this.props_.get("max"),0,100),0,100);this.knobElement.style.width=`${t}%`}onChange_(){this.update_()}}class bn{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.props=e.props,this.view=new mn(t,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new cn(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){t.point&&this.value.setRawValue(N(T(t.point.x,0,t.bounds.width),0,t.bounds.width,this.props.get("min"),this.props.get("max")),e)}onPointerDownOrMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=rn(this.props.get("keyScale"),an(t));0!==e&&this.value.setRawValue(this.value.rawValue+e,{forceEmit:!1,last:!1})}onKeyUp_(t){0!==rn(this.props.get("keyScale"),an(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const gn=Et("sldtxt");class _n{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(gn());const n=t.createElement("div");n.classList.add(gn("s")),this.sliderView_=e.sliderView,n.appendChild(this.sliderView_.element),this.element.appendChild(n);const i=t.createElement("div");i.classList.add(gn("t")),this.textView_=e.textView,i.appendChild(this.textView_.element),this.element.appendChild(i)}}class fn{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.sliderC_=new bn(t,{props:e.sliderProps,value:e.value,viewProps:this.viewProps}),this.textC_=new un(t,{parser:e.parser,props:e.textProps,sliderProps:e.sliderProps,value:e.value,viewProps:e.viewProps}),this.view=new _n(t,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}importProps(t){return pt(t,null,(t=>({max:t.required.number,min:t.required.number})),(t=>{const e=this.sliderC_.props;return e.set("max",t.max),e.set("min",t.min),!0}))}exportProps(){const t=this.sliderC_.props;return ct(null,{max:t.get("max"),min:t.get("min")})}}function wn(t){return{sliderProps:new v({keyScale:t.keyScale,max:t.max,min:t.min}),textProps:new v({formatter:u(t.formatter),keyScale:t.keyScale,pointerScale:u(t.pointerScale)})}}const xn={containerUnitSize:"cnt-usz"};function yn(t){return`--${xn[t]}`}function Cn(t){return X(t)}function Pn(t){if(n(t))return lt(t,Cn)}function kn(t,e){if(!t)return;const n=[],i=H(t,e);i&&n.push(i);const s=G(t);return s&&n.push(s),new Be(n)}function En(t){if("inline"===t||"popup"===t)return t}function Vn(t,e){t.write(e)}const Ln=Et("ckb");class Sn{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.element=t.createElement("div"),this.element.classList.add(Ln()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("label");n.classList.add(Ln("l")),this.element.appendChild(n),this.labelElement=n;const i=t.createElement("input");i.classList.add(Ln("i")),i.type="checkbox",this.labelElement.appendChild(i),this.inputElement=i,e.viewProps.bindDisabled(this.inputElement);const s=t.createElement("div");s.classList.add(Ln("w")),this.labelElement.appendChild(s);const r=_t(t,"check");s.appendChild(r),e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class Mn{constructor(t,e){this.onInputChange_=this.onInputChange_.bind(this),this.onLabelMouseDown_=this.onLabelMouseDown_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new Sn(t,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.labelElement.addEventListener("mousedown",this.onLabelMouseDown_)}onInputChange_(t){const e=t.currentTarget;this.value.rawValue=e.checked,t.preventDefault(),t.stopPropagation()}onLabelMouseDown_(t){t.preventDefault()}}const jn=Jt({id:"input-bool",type:"input",accept:(t,e)=>{if("boolean"!=typeof t)return null;const n=lt(e,(t=>({options:t.optional.custom(Ne),readonly:t.optional.constant(!1)})));return n?{initialValue:t,params:n}:null},binding:{reader:t=>We,constraint:t=>function(t){const e=[],n=Te(t.options);return n&&e.push(n),new Be(e)}(t.params),writer:t=>Vn},controller:t=>{const e=t.document,n=t.value,i=t.constraint,s=i&&Ke(i,ze);return s?new $e(e,{props:new v({options:s.values.value("options")}),value:n,viewProps:t.viewProps}):new Mn(e,{value:n,viewProps:t.viewProps})},api:t=>"boolean"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof $e?new Ae(t.controller):null}),Dn=Et("col");class An{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Dn()),e.foldable.bindExpandedClass(this.element,Dn(void 0,"expanded")),Pt(e.foldable,"completed",$t(this.element,Dn(void 0,"cpl")));const n=t.createElement("div");n.classList.add(Dn("h")),this.element.appendChild(n);const i=t.createElement("div");i.classList.add(Dn("s")),n.appendChild(i),this.swatchElement=i;const s=t.createElement("div");if(s.classList.add(Dn("t")),n.appendChild(s),this.textElement=s,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(Dn("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}}function On(t,e,n){const i=U(t,360),s=T(e/100,0,1),r=T(n/100,0,1),o=r*s,a=o*(1-Math.abs(i/60%2-1)),l=r-o;let p,c,d;return[p,c,d]=i>=0&&i<60?[o,a,0]:i>=60&&i<120?[a,o,0]:i>=120&&i<180?[0,o,a]:i>=180&&i<240?[0,a,o]:i>=240&&i<300?[a,0,o]:[o,0,a],[255*(p+l),255*(c+l),255*(d+l)]}function Rn(t){return[t[0],t[1],t[2]]}function Bn(t,e){return[t[0],t[1],t[2],e]}const Kn={hsl:{hsl:(t,e,n)=>[t,e,n],hsv:function(t,e,n){const i=n+e*(100-Math.abs(2*n-100))/200;return[t,0!==i?e*(100-Math.abs(2*n-100))/i:0,n+e*(100-Math.abs(2*n-100))/200]},rgb:function(t,e,n){const i=(t%360+360)%360,s=T(e/100,0,1),r=T(n/100,0,1),o=(1-Math.abs(2*r-1))*s,a=o*(1-Math.abs(i/60%2-1)),l=r-o/2;let p,c,d;return[p,c,d]=i>=0&&i<60?[o,a,0]:i>=60&&i<120?[a,o,0]:i>=120&&i<180?[0,o,a]:i>=180&&i<240?[0,a,o]:i>=240&&i<300?[a,0,o]:[o,0,a],[255*(p+l),255*(c+l),255*(d+l)]}},hsv:{hsl:function(t,e,n){const i=100-Math.abs(n*(200-e)/100-100);return[t,0!==i?e*n/i:0,n*(200-e)/200]},hsv:(t,e,n)=>[t,e,n],rgb:On},rgb:{hsl:function(t,e,n){const i=T(t/255,0,1),s=T(e/255,0,1),r=T(n/255,0,1),o=Math.max(i,s,r),a=Math.min(i,s,r),l=o-a;let p=0,c=0;const d=(a+o)/2;return 0!==l&&(c=l/(1-Math.abs(o+a-1)),p=i===o?(s-r)/l:s===o?2+(r-i)/l:4+(i-s)/l,p=p/6+(p<0?1:0)),[360*p,100*c,100*d]},hsv:function(t,e,n){const i=T(t/255,0,1),s=T(e/255,0,1),r=T(n/255,0,1),o=Math.max(i,s,r),a=o-Math.min(i,s,r);let l;return l=0===a?0:o===i?((s-r)/a%6+6)%6*60:o===s?60*((r-i)/a+2):60*((i-s)/a+4),[l,100*(0===o?0:a/o),100*o]},rgb:(t,e,n)=>[t,e,n]}};function zn(t,e){return["float"===e?1:"rgb"===t?255:360,"float"===e?1:"rgb"===t?255:100,"float"===e?1:"rgb"===t?255:100]}function Nn(t,e,n){var i;const s=zn(e,n);return["rgb"===e?T(t[0],0,s[0]):(r=t[0],o=s[0],r===o?o:U(r,o)),T(t[1],0,s[1]),T(t[2],0,s[2]),T(null!==(i=t[3])&&void 0!==i?i:1,0,1)];var r,o}function In(t,e,n,i){const s=zn(e,n),r=zn(e,i);return t.map(((t,e)=>t/s[e]*r[e]))}function Tn(t,e,n){const i=In(t,e.mode,e.type,"int");return In(Kn[e.mode][n.mode](...i),n.mode,"int",n.type)}class Un{static black(){return new Un([0,0,0],"rgb")}constructor(t,e){this.type="int",this.mode=e,this.comps_=Nn(t,e,this.type)}getComponents(t){return Bn(Tn(Rn(this.comps_),{mode:this.mode,type:this.type},{mode:null!=t?t:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){const t=this.getComponents("rgb");return{r:t[0],g:t[1],b:t[2],a:t[3]}}}const Fn=Et("colp");class $n{constructor(t,e){this.alphaViews_=null,this.element=t.createElement("div"),this.element.classList.add(Fn()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("div");n.classList.add(Fn("hsv"));const i=t.createElement("div");i.classList.add(Fn("sv")),this.svPaletteView_=e.svPaletteView,i.appendChild(this.svPaletteView_.element),n.appendChild(i);const s=t.createElement("div");s.classList.add(Fn("h")),this.hPaletteView_=e.hPaletteView,s.appendChild(this.hPaletteView_.element),n.appendChild(s),this.element.appendChild(n);const r=t.createElement("div");if(r.classList.add(Fn("rgb")),this.textsView_=e.textsView,r.appendChild(this.textsView_.element),this.element.appendChild(r),e.alphaViews){this.alphaViews_={palette:e.alphaViews.palette,text:e.alphaViews.text};const n=t.createElement("div");n.classList.add(Fn("a"));const i=t.createElement("div");i.classList.add(Fn("ap")),i.appendChild(this.alphaViews_.palette.element),n.appendChild(i);const s=t.createElement("div");s.classList.add(Fn("at")),s.appendChild(this.alphaViews_.text.element),n.appendChild(s),this.element.appendChild(n)}}get allFocusableElements(){const t=[this.svPaletteView_.element,this.hPaletteView_.element,this.textsView_.modeSelectElement,...this.textsView_.inputViews.map((t=>t.inputElement))];return this.alphaViews_&&t.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),t}}function qn(t){return"int"===t?"int":"float"===t?"float":void 0}function Hn(t){return lt(t,(t=>({color:t.optional.object({alpha:t.optional.boolean,type:t.optional.custom(qn)}),expanded:t.optional.boolean,picker:t.optional.custom(En),readonly:t.optional.constant(!1)})))}function Gn(t){return t?.1:1}function Yn(t){var e;return null===(e=t.color)||void 0===e?void 0:e.type}class Xn{constructor(t,e){this.type="float",this.mode=e,this.comps_=Nn(t,e,this.type)}getComponents(t){return Bn(Tn(Rn(this.comps_),{mode:this.mode,type:this.type},{mode:null!=t?t:this.mode,type:this.type}),this.comps_[3])}toRgbaObject(){const t=this.getComponents("rgb");return{r:t[0],g:t[1],b:t[2],a:t[3]}}}const Qn={int:(t,e)=>new Un(t,e),float:(t,e)=>new Xn(t,e)};function Wn(t,e,n){return Qn[n](t,e)}function Jn(t,e){if(t.type===e)return t;if(function(t){return"int"===t.type}(t)&&"float"===e)return function(t){const e=t.getComponents(),n=zn(t.mode,"int");return new Xn([N(e[0],0,n[0],0,1),N(e[1],0,n[1],0,1),N(e[2],0,n[2],0,1),e[3]],t.mode)}(t);if(function(t){return"float"===t.type}(t)&&"int"===e)return function(t){const e=t.getComponents(),n=zn(t.mode,"int");return new Un([Math.round(N(e[0],0,1,0,n[0])),Math.round(N(e[1],0,1,0,n[1])),Math.round(N(e[2],0,1,0,n[2])),e[3]],t.mode)}(t);throw a.shouldNeverHappen()}function Zn(t,e){const n=t.match(/^(.+)%$/);return n?Math.min(.01*parseFloat(n[1])*e,e):Math.min(parseFloat(t),e)}const ti={deg:t=>t,grad:t=>360*t/400,rad:t=>360*t/(2*Math.PI),turn:t=>360*t};function ei(t){const e=t.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!e)return parseFloat(t);const n=parseFloat(e[1]),i=e[2];return ti[i](n)}function ni(t){const e=t.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const n=[Zn(e[1],255),Zn(e[2],255),Zn(e[3],255)];return isNaN(n[0])||isNaN(n[1])||isNaN(n[2])?null:n}function ii(t){const e=ni(t);return e?new Un(e,"rgb"):null}function si(t){const e=t.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const n=[Zn(e[1],255),Zn(e[2],255),Zn(e[3],255),Zn(e[4],1)];return isNaN(n[0])||isNaN(n[1])||isNaN(n[2])||isNaN(n[3])?null:n}function ri(t){const e=si(t);return e?new Un(e,"rgb"):null}function oi(t){const e=t.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const n=[ei(e[1]),Zn(e[2],100),Zn(e[3],100)];return isNaN(n[0])||isNaN(n[1])||isNaN(n[2])?null:n}function ai(t){const e=oi(t);return e?new Un(e,"hsl"):null}function li(t){const e=t.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!e)return null;const n=[ei(e[1]),Zn(e[2],100),Zn(e[3],100),Zn(e[4],1)];return isNaN(n[0])||isNaN(n[1])||isNaN(n[2])||isNaN(n[3])?null:n}function pi(t){const e=li(t);return e?new Un(e,"hsl"):null}function ci(t){const e=t.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)];const n=t.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return n?[parseInt(n[1],16),parseInt(n[2],16),parseInt(n[3],16)]:null}function di(t){const e=ci(t);return e?new Un(e,"rgb"):null}function hi(t){const e=t.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(e)return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16),N(parseInt(e[4]+e[4],16),0,255,0,1)];const n=t.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return n?[parseInt(n[1],16),parseInt(n[2],16),parseInt(n[3],16),N(parseInt(n[4],16),0,255,0,1)]:null}function ui(t){const e=hi(t);return e?new Un(e,"rgb"):null}function vi(t){const e=t.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const n=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])];return isNaN(n[0])||isNaN(n[1])||isNaN(n[2])?null:n}function mi(t){return e=>{const n=vi(e);return n?Wn(n,"rgb",t):null}}function bi(t){const e=t.match(/^\{\s*r\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*g\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*b\s*:\s*([0-9A-Fa-f.]+%?)\s*,\s*a\s*:\s*([0-9A-Fa-f.]+%?)\s*\}$/);if(!e)return null;const n=[parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])];return isNaN(n[0])||isNaN(n[1])||isNaN(n[2])||isNaN(n[3])?null:n}function gi(t){return e=>{const n=bi(e);return n?Wn(n,"rgb",t):null}}const _i=[{parser:ci,result:{alpha:!1,mode:"rgb",notation:"hex"}},{parser:hi,result:{alpha:!0,mode:"rgb",notation:"hex"}},{parser:ni,result:{alpha:!1,mode:"rgb",notation:"func"}},{parser:si,result:{alpha:!0,mode:"rgb",notation:"func"}},{parser:oi,result:{alpha:!1,mode:"hsl",notation:"func"}},{parser:li,result:{alpha:!0,mode:"hsl",notation:"func"}},{parser:vi,result:{alpha:!1,mode:"rgb",notation:"object"}},{parser:bi,result:{alpha:!0,mode:"rgb",notation:"object"}}];function fi(t,e="int"){const n=function(t){return _i.reduce(((e,{parser:n,result:i})=>e||(n(t)?i:null)),null)}(t);return n?"hex"===n.notation&&"float"!==e?Object.assign(Object.assign({},n),{type:"int"}):"func"===n.notation?Object.assign(Object.assign({},n),{type:e}):null:null}function wi(t){const e=[di,ui,ii,ri,ai,pi];"int"===t&&e.push(mi("int"),gi("int")),"float"===t&&e.push(mi("float"),gi("float"));const n=function(t){return e=>t.reduce(((t,n)=>null!==t?t:n(e)),null)}(e);return e=>{const i=n(e);return i?Jn(i,t):null}}function xi(t){const e=wi("int");if("string"!=typeof t)return Un.black();const n=e(t);return null!=n?n:Un.black()}function yi(t){const e=T(Math.floor(t),0,255).toString(16);return 1===e.length?`0${e}`:e}function Ci(t,e="#"){return`${e}${Rn(t.getComponents("rgb")).map(yi).join("")}`}function Pi(t,e="#"){const n=t.getComponents("rgb");return`${e}${[n[0],n[1],n[2],255*n[3]].map(yi).join("")}`}function ki(t){const e=z(0);return`rgb(${Rn(Jn(t,"int").getComponents("rgb")).map((t=>e(t))).join(", ")})`}function Ei(t){const e=z(2),n=z(0);return`rgba(${Jn(t,"int").getComponents("rgb").map(((t,i)=>(3===i?e:n)(t))).join(", ")})`}function Vi(t,e){const n=z("float"===e?2:0),i=["r","g","b"];return`{${Rn(Jn(t,e).getComponents("rgb")).map(((t,e)=>`${i[e]}: ${n(t)}`)).join(", ")}}`}function Li(t){return e=>Vi(e,t)}function Si(t,e){const n=z(2),i=z("float"===e?2:0),s=["r","g","b","a"];return`{${Jn(t,e).getComponents("rgb").map(((t,e)=>`${s[e]}: ${(3===e?n:i)(t)}`)).join(", ")}}`}function Mi(t){return e=>Si(e,t)}const ji=[{format:{alpha:!1,mode:"rgb",notation:"hex",type:"int"},stringifier:Ci},{format:{alpha:!0,mode:"rgb",notation:"hex",type:"int"},stringifier:Pi},{format:{alpha:!1,mode:"rgb",notation:"func",type:"int"},stringifier:ki},{format:{alpha:!0,mode:"rgb",notation:"func",type:"int"},stringifier:Ei},{format:{alpha:!1,mode:"hsl",notation:"func",type:"int"},stringifier:function(t){const e=[z(0),tn,tn];return`hsl(${Rn(Jn(t,"int").getComponents("hsl")).map(((t,n)=>e[n](t))).join(", ")})`}},{format:{alpha:!0,mode:"hsl",notation:"func",type:"int"},stringifier:function(t){const e=[z(0),tn,tn,z(2)];return`hsla(${Jn(t,"int").getComponents("hsl").map(((t,n)=>e[n](t))).join(", ")})`}},...["int","float"].reduce(((t,e)=>[...t,{format:{alpha:!1,mode:"rgb",notation:"object",type:e},stringifier:Li(e)},{format:{alpha:!0,mode:"rgb",notation:"object",type:e},stringifier:Mi(e)}]),[])];function Di(t){return ji.reduce(((e,n)=>{return e||(i=n.format,s=t,i.alpha===s.alpha&&i.mode===s.mode&&i.notation===s.notation&&i.type===s.type?n.stringifier:null);var i,s}),null)}const Ai=Et("apl");class Oi{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(Ai()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const n=t.createElement("div");n.classList.add(Ai("b")),this.element.appendChild(n);const i=t.createElement("div");i.classList.add(Ai("c")),n.appendChild(i),this.colorElem_=i;const s=t.createElement("div");s.classList.add(Ai("m")),this.element.appendChild(s),this.markerElem_=s;const r=t.createElement("div");r.classList.add(Ai("p")),this.markerElem_.appendChild(r),this.previewElem_=r,this.update_()}update_(){const t=this.value.rawValue,e=t.getComponents("rgb"),n=new Un([e[0],e[1],e[2],0],"rgb"),i=new Un([e[0],e[1],e[2],255],"rgb"),s=["to right",Ei(n),Ei(i)];this.colorElem_.style.background=`linear-gradient(${s.join(",")})`,this.previewElem_.style.backgroundColor=Ei(t);const r=N(e[3],0,1,0,100);this.markerElem_.style.left=`${r}%`}onValueChange_(){this.update_()}}class Ri{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new Oi(t,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new cn(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const n=t.point.x/t.bounds.width,i=this.value.rawValue,[s,r,o]=i.getComponents("hsv");this.value.setRawValue(new Un([s,r,o,n],"hsv"),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=rn(Gn(!0),an(t));if(0===e)return;const n=this.value.rawValue,[i,s,r,o]=n.getComponents("hsv");this.value.setRawValue(new Un([i,s,r,o+e],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(t){0!==rn(Gn(!0),an(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Bi=Et("coltxt");class Ki{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(Bi()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("div");n.classList.add(Bi("m")),this.modeElem_=function(t){const e=t.createElement("select");return e.appendChild([{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"},{text:"HEX",value:"hex"}].reduce(((e,n)=>{const i=t.createElement("option");return i.textContent=n.text,i.value=n.value,e.appendChild(i),e}),t.createDocumentFragment())),e}(t),this.modeElem_.classList.add(Bi("ms")),n.appendChild(this.modeSelectElement),e.viewProps.bindDisabled(this.modeElem_);const i=t.createElement("div");i.classList.add(Bi("mm")),i.appendChild(_t(t,"dropdown")),n.appendChild(i),this.element.appendChild(n);const s=t.createElement("div");s.classList.add(Bi("w")),this.element.appendChild(s),this.inputsElem_=s,this.inputViews_=e.inputViews,this.applyInputViews_(),Ct(e.mode,(t=>{this.modeElem_.value=t}))}get modeSelectElement(){return this.modeElem_}get inputViews(){return this.inputViews_}set inputViews(t){this.inputViews_=t,this.applyInputViews_()}applyInputViews_(){xt(this.inputsElem_);const t=this.element.ownerDocument;this.inputViews_.forEach((e=>{const n=t.createElement("div");n.classList.add(Bi("c")),n.appendChild(e.element),this.inputsElem_.appendChild(n)}))}}function zi(t,e,n){const i=zn(t,e)[n];return new m({min:0,max:i})}function Ni(t,e){const n={colorMode:e.colorMode,colorType:e.colorType,parser:R,viewProps:e.viewProps};return[0,1,2].map((i=>{const s=function(t,e,n){return new un(t,{arrayPosition:0===n?"fst":2===n?"lst":"mid",parser:e.parser,props:v.fromObject({formatter:(i=e.colorType,z("float"===i?2:0)),keyScale:Gn(!1),pointerScale:"float"===e.colorType?.01:1}),value:u(0,{constraint:zi(e.colorMode,e.colorType,n)}),viewProps:e.viewProps});var i}(t,n,i);return sn({primary:e.value,secondary:s.value,forward:t=>Jn(t,e.colorType).getComponents(e.colorMode)[i],backward(t,n){const s=e.colorMode,r=Jn(t,e.colorType).getComponents(s);r[i]=n;return Jn(Wn(Bn(Rn(r),r[3]),s,e.colorType),"int")}}),s}))}class Ii{constructor(t,e){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.colorType_=e.colorType,this.value=e.value,this.viewProps=e.viewProps,this.colorMode=u(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(t),this.view=new Ki(t,{mode:this.colorMode,inputViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view],viewProps:this.viewProps}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(t){const e=this.colorMode.rawValue;return function(t){return"hex"!==t}(e)?Ni(t,{colorMode:e,colorType:this.colorType_,value:this.value,viewProps:this.viewProps}):function(t,e){const n=new Qe(t,{parser:wi("int"),props:v.fromObject({formatter:Ci}),value:u(Un.black()),viewProps:e.viewProps});return sn({primary:e.value,secondary:n.value,forward:t=>new Un(Rn(t.getComponents()),t.mode),backward:(t,e)=>new Un(Bn(Rn(e.getComponents(t.mode)),t.getComponents()[3]),t.mode)}),[n]}(t,{value:this.value,viewProps:this.viewProps})}onModeSelectChange_(t){const e=t.currentTarget;this.colorMode.rawValue=e.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.inputViews=this.ccs_.map((t=>t.view))}}const Ti=Et("hpl");class Ui{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add(Ti()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const n=t.createElement("div");n.classList.add(Ti("c")),this.element.appendChild(n);const i=t.createElement("div");i.classList.add(Ti("m")),this.element.appendChild(i),this.markerElem_=i,this.update_()}update_(){const t=this.value.rawValue,[e]=t.getComponents("hsv");this.markerElem_.style.backgroundColor=ki(new Un([e,100,100],"hsv"));const n=N(e,0,360,0,100);this.markerElem_.style.left=`${n}%`}onValueChange_(){this.update_()}}class Fi{constructor(t,e){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.view=new Ui(t,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new cn(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const n=N(T(t.point.x,0,t.bounds.width),0,t.bounds.width,0,360),i=this.value.rawValue,[,s,r,o]=i.getComponents("hsv");this.value.setRawValue(new Un([n,s,r,o],"hsv"),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onKeyDown_(t){const e=rn(Gn(!1),an(t));if(0===e)return;const n=this.value.rawValue,[i,s,r,o]=n.getComponents("hsv");this.value.setRawValue(new Un([i+e,s,r,o],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(t){0!==rn(Gn(!1),an(t))&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const $i=Et("svp");class qi{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),this.value=e.value,this.value.emitter.on("change",this.onValueChange_),this.element=t.createElement("div"),this.element.classList.add($i()),e.viewProps.bindClassModifiers(this.element),e.viewProps.bindTabIndex(this.element);const n=t.createElement("canvas");n.height=64,n.width=64,n.classList.add($i("c")),this.element.appendChild(n),this.canvasElement=n;const i=t.createElement("div");i.classList.add($i("m")),this.element.appendChild(i),this.markerElem_=i,this.update_()}update_(){const t=function(t){const e=t.ownerDocument.defaultView;return e&&"document"in e?t.getContext("2d",{willReadFrequently:!0}):null}(this.canvasElement);if(!t)return;const e=this.value.rawValue.getComponents("hsv"),n=this.canvasElement.width,i=this.canvasElement.height,s=t.getImageData(0,0,n,i),r=s.data;for(let t=0;tt.getComponents()[3],backward:(t,e)=>{const n=t.getComponents();return n[3]=e,new Un(n,t.mode)}}),this.textsC_=new Ii(t,{colorType:e.colorType,value:this.value,viewProps:this.viewProps}),this.view=new $n(t,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:e.supportsAlpha,svPaletteView:this.svPaletteC_.view,textsView:this.textsC_.view,viewProps:this.viewProps})}get textsController(){return this.textsC_}}const Yi=Et("colsw");class Xi{constructor(t,e){this.onValueChange_=this.onValueChange_.bind(this),e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.element=t.createElement("div"),this.element.classList.add(Yi()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("div");n.classList.add(Yi("sw")),this.element.appendChild(n),this.swatchElem_=n;const i=t.createElement("button");i.classList.add(Yi("b")),e.viewProps.bindDisabled(i),this.element.appendChild(i),this.buttonElement=i,this.update_()}update_(){const t=this.value.rawValue;this.swatchElem_.style.backgroundColor=Pi(t)}onValueChange_(){this.update_()}}class Qi{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Xi(t,{value:this.value,viewProps:this.viewProps})}}class Wi{constructor(t,e){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=pe.create(e.expanded),this.swatchC_=new Qi(t,{value:this.value,viewProps:this.viewProps});const n=this.swatchC_.view.buttonElement;n.addEventListener("blur",this.onButtonBlur_),n.addEventListener("click",this.onButtonClick_),this.textC_=new Qe(t,{parser:e.parser,props:v.fromObject({formatter:e.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new An(t,{foldable:this.foldable_,pickerLayout:e.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_="popup"===e.pickerLayout?new Ge(t,{viewProps:this.viewProps}):null;const i=new Gi(t,{colorType:e.colorType,supportsAlpha:e.supportsAlpha,value:this.value,viewProps:this.viewProps});i.view.allFocusableElements.forEach((t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)})),this.pickerC_=i,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(i.view.element),sn({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),de(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(t){if(!this.popC_)return;const e=this.view.element,n=t.relatedTarget;n&&e.contains(n)||(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,n=yt(t);n&&e.contains(n)||n&&n===this.swatchC_.view.buttonElement&&!mt(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_?"Escape"===t.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===t.key&&this.swatchC_.view.buttonElement.focus()}}function Ji(t){return Rn(t.getComponents("rgb")).reduce(((t,e)=>t<<8|255&Math.floor(e)),0)}function Zi(t){return t.getComponents("rgb").reduce(((t,e,n)=>t<<8|255&Math.floor(3===n?255*e:e)),0)>>>0}function ts(t){return"number"!=typeof t?Un.black():new Un([(e=t)>>16&255,e>>8&255,255&e],"rgb");var e}function es(t){return"number"!=typeof t?Un.black():new Un([(e=t)>>24&255,e>>16&255,e>>8&255,N(255&e,0,255,0,1)],"rgb");var e}function ns(e,n){return"object"==typeof e&&!t(e)&&(n in e&&"number"==typeof e[n])}function is(t){return ns(t,"r")&&ns(t,"g")&&ns(t,"b")}function ss(t){return is(t)&&ns(t,"a")}function rs(t){return is(t)}function os(t,e){if(t.mode!==e.mode)return!1;if(t.type!==e.type)return!1;const n=t.getComponents(),i=e.getComponents();for(let t=0;t{t?function(t,e,n){const i=Jn(e,n).toRgbaObject();t.writeProperty("r",i.r),t.writeProperty("g",i.g),t.writeProperty("b",i.b),t.writeProperty("a",i.a)}(n,i,e):function(t,e,n){const i=Jn(e,n).toRgbaObject();t.writeProperty("r",i.r),t.writeProperty("g",i.g),t.writeProperty("b",i.b)}(n,i,e)}}const ps=Jt({id:"input-color-number",type:"input",accept:(t,e)=>{if("number"!=typeof t)return null;if(!function(t){return"color"in t||"color"===t.view}(e))return null;const n=Hn(e);return n?{initialValue:t,params:Object.assign(Object.assign({},n),{supportsAlpha:(i=e,!!(null===(s=null==i?void 0:i.color)||void 0===s?void 0:s.alpha))})}:null;var i,s},binding:{reader:t=>t.params.supportsAlpha?es:ts,equals:os,writer:t=>function(t){const e=t?Zi:Ji;return(t,n)=>{Vn(t,e(n))}}(t.params.supportsAlpha)},controller:t=>{var e,n,i;return new Wi(t.document,{colorType:"int",expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:(i=t.params.supportsAlpha,i?t=>Pi(t,"0x"):t=>Ci(t,"0x")),parser:wi("int"),pickerLayout:null!==(n=t.params.picker)&&void 0!==n?n:"popup",supportsAlpha:t.params.supportsAlpha,value:t.value,viewProps:t.viewProps})}});function cs(t){return e=>{const n=function(t,e){if(!rs(t))return Jn(Un.black(),e);if("int"===e){const e=as(t);return new Un(e,"rgb")}if("float"===e){const e=as(t);return new Xn(e,"rgb")}return Jn(Un.black(),"int")}(e,t);return Jn(n,"int")}}function ds(t,e){return n=>t?Si(n,e):Vi(n,e)}const hs=Jt({id:"input-color-object",type:"input",accept:(t,e)=>{var n;if(!rs(t))return null;const i=Hn(e);return i?{initialValue:t,params:Object.assign(Object.assign({},i),{colorType:null!==(n=Yn(e))&&void 0!==n?n:"int"})}:null},binding:{reader:t=>cs(t.params.colorType),equals:os,writer:t=>ls(ss(t.initialValue),t.params.colorType)},controller:t=>{var e,n;const i=ss(t.initialValue);return new Wi(t.document,{colorType:t.params.colorType,expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:ds(i,t.params.colorType),parser:wi("int"),pickerLayout:null!==(n=t.params.picker)&&void 0!==n?n:"popup",supportsAlpha:i,value:t.value,viewProps:t.viewProps})}}),us=Jt({id:"input-color-string",type:"input",accept:(t,e)=>{if("string"!=typeof t)return null;if("text"===e.view)return null;const n=fi(t,Yn(e));if(!n)return null;const i=Di(n);if(!i)return null;const s=Hn(e);return s?{initialValue:t,params:Object.assign(Object.assign({},s),{format:n,stringifier:i})}:null},binding:{reader:()=>xi,equals:os,writer:t=>{const e=function(t){const e=Di(t);return e?(t,n)=>{Vn(t,e(n))}:null}(t.params.format);if(!e)throw a.notBindable();return e}},controller:t=>{var e,n;return new Wi(t.document,{colorType:t.params.format.type,expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,formatter:t.params.stringifier,parser:wi("int"),pickerLayout:null!==(n=t.params.picker)&&void 0!==n?n:"popup",supportsAlpha:t.params.format.alpha,value:t.value,viewProps:t.viewProps})}});class vs{constructor(t){this.components=t.components,this.asm_=t.assembly}constrain(t){const e=this.asm_.toComponents(t).map(((t,e)=>{var n,i;return null!==(i=null===(n=this.components[e])||void 0===n?void 0:n.constrain(t))&&void 0!==i?i:t}));return this.asm_.fromComponents(e)}}const ms=Et("pndtxt");class bs{constructor(t,e){this.textViews=e.textViews,this.element=t.createElement("div"),this.element.classList.add(ms()),this.textViews.forEach((e=>{const n=t.createElement("div");n.classList.add(ms("a")),n.appendChild(e.element),this.element.appendChild(n)}))}}class gs{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.acs_=e.axes.map(((n,i)=>function(t,e,n){return new un(t,{arrayPosition:0===n?"fst":n===e.axes.length-1?"lst":"mid",parser:e.parser,props:e.axes[n].textProps,value:u(0,{constraint:e.axes[n].constraint}),viewProps:e.viewProps})}(t,e,i))),this.acs_.forEach(((t,n)=>{sn({primary:this.value,secondary:t.value,forward:t=>e.assembly.toComponents(t)[n],backward:(t,i)=>{const s=e.assembly.toComponents(t);return s[n]=i,e.assembly.fromComponents(s)}})})),this.view=new bs(t,{textViews:this.acs_.map((t=>t.view))})}get textControllers(){return this.acs_}}class _s extends it{get max(){return this.controller.valueController.sliderController.props.get("max")}set max(t){this.controller.valueController.sliderController.props.set("max",t)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(t){this.controller.valueController.sliderController.props.set("min",t)}}const fs=Jt({id:"input-number",type:"input",accept:(t,e)=>{if("number"!=typeof t)return null;const n=lt(e,(t=>Object.assign(Object.assign({},X(t)),{options:t.optional.custom(Ne),readonly:t.optional.constant(!1)})));return n?{initialValue:t,params:n}:null},binding:{reader:t=>B,constraint:t=>function(t,e){const n=[],i=H(t,e);i&&n.push(i);const s=G(t);s&&n.push(s);const r=Te(t.options);return r&&n.push(r),new Be(n)}(t.params,t.initialValue),writer:t=>Vn},controller:t=>{const e=t.value,n=t.constraint,i=n&&Ke(n,ze);if(i)return new $e(t.document,{props:new v({options:i.values.value("options")}),value:e,viewProps:t.viewProps});const s=Y(t.params,e.rawValue),r=n&&Ke(n,m);return r?new fn(t.document,Object.assign(Object.assign({},wn(Object.assign(Object.assign({},s),{keyScale:u(s.keyScale),max:r.values.value("max"),min:r.values.value("min")}))),{parser:R,value:e,viewProps:t.viewProps})):new un(t.document,{parser:R,props:v.fromObject(s),value:e,viewProps:t.viewProps})},api:t=>"number"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof fn?new _s(t.controller):t.controller.valueController instanceof $e?new Ae(t.controller):null});class ws{constructor(t=0,e=0){this.x=t,this.y=e}getComponents(){return[this.x,this.y]}static isObject(e){if(t(e))return!1;const n=e.x,i=e.y;return"number"==typeof n&&"number"==typeof i}static equals(t,e){return t.x===e.x&&t.y===e.y}toObject(){return{x:this.x,y:this.y}}}const xs={toComponents:t=>t.getComponents(),fromComponents:t=>new ws(...t)},ys=Et("p2d");class Cs{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(ys()),e.viewProps.bindClassModifiers(this.element),Ct(e.expanded,$t(this.element,ys(void 0,"expanded")));const n=t.createElement("div");n.classList.add(ys("h")),this.element.appendChild(n);const i=t.createElement("button");i.classList.add(ys("b")),i.appendChild(_t(t,"p2dpad")),e.viewProps.bindDisabled(i),n.appendChild(i),this.buttonElement=i;const s=t.createElement("div");if(s.classList.add(ys("t")),n.appendChild(s),this.textElement=s,"inline"===e.pickerLayout){const e=t.createElement("div");e.classList.add(ys("p")),this.element.appendChild(e),this.pickerElement=e}else this.pickerElement=null}}const Ps=Et("p2dp");class ks{constructor(t,e){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onPropsChange_=this.onPropsChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.props_=e.props,this.props_.emitter.on("change",this.onPropsChange_),this.element=t.createElement("div"),this.element.classList.add(Ps()),"popup"===e.layout&&this.element.classList.add(Ps(void 0,"p")),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("div");n.classList.add(Ps("p")),e.viewProps.bindTabIndex(n),this.element.appendChild(n),this.padElement=n;const i=t.createElementNS(ut,"svg");i.classList.add(Ps("g")),this.padElement.appendChild(i),this.svgElem_=i;const s=t.createElementNS(ut,"line");s.classList.add(Ps("ax")),s.setAttributeNS(null,"x1","0"),s.setAttributeNS(null,"y1","50%"),s.setAttributeNS(null,"x2","100%"),s.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(s);const r=t.createElementNS(ut,"line");r.classList.add(Ps("ax")),r.setAttributeNS(null,"x1","50%"),r.setAttributeNS(null,"y1","0"),r.setAttributeNS(null,"x2","50%"),r.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(r);const o=t.createElementNS(ut,"line");o.classList.add(Ps("l")),o.setAttributeNS(null,"x1","50%"),o.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(o),this.lineElem_=o;const a=t.createElement("div");a.classList.add(Ps("m")),this.padElement.appendChild(a),this.markerElem_=a,e.value.emitter.on("change",this.onValueChange_),this.value=e.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){const[t,e]=this.value.rawValue.getComponents(),n=this.props_.get("max"),i=N(t,-n,+n,0,100),s=N(e,-n,+n,0,100),r=this.props_.get("invertsY")?100-s:s;this.lineElem_.setAttributeNS(null,"x2",`${i}%`),this.lineElem_.setAttributeNS(null,"y2",`${r}%`),this.markerElem_.style.left=`${i}%`,this.markerElem_.style.top=`${r}%`}onValueChange_(){this.update_()}onPropsChange_(){this.update_()}onFoldableChange_(){this.update_()}}function Es(t,e,n){return[rn(e[0],an(t)),rn(e[1],on(t))*(n?1:-1)]}class Vs{constructor(t,e){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.view=new ks(t,{layout:e.layout,props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new cn(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(t,e){if(!t.point)return;const n=this.props.get("max"),i=N(t.point.x,0,t.bounds.width,-n,+n),s=N(this.props.get("invertsY")?t.bounds.height-t.point.y:t.point.y,0,t.bounds.height,-n,+n);this.value.setRawValue(new ws(i,s),e)}onPointerDown_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerMove_(t){this.handlePointerEvent_(t.data,{forceEmit:!1,last:!1})}onPointerUp_(t){this.handlePointerEvent_(t.data,{forceEmit:!0,last:!0})}onPadKeyDown_(t){ln(t.key)&&t.preventDefault();const[e,n]=Es(t,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===e&&0===n||this.value.setRawValue(new ws(this.value.rawValue.x+e,this.value.rawValue.y+n),{forceEmit:!1,last:!1})}onPadKeyUp_(t){const[e,n]=Es(t,[this.props.get("xKeyScale"),this.props.get("yKeyScale")],this.props.get("invertsY"));0===e&&0===n||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Ls{constructor(t,e){var n,i;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=e.value,this.viewProps=e.viewProps,this.foldable_=pe.create(e.expanded),this.popC_="popup"===e.pickerLayout?new Ge(t,{viewProps:this.viewProps}):null;const s=new Vs(t,{layout:e.pickerLayout,props:new v({invertsY:u(e.invertsY),max:u(e.max),xKeyScale:e.axes[0].textProps.value("keyScale"),yKeyScale:e.axes[1].textProps.value("keyScale")}),value:this.value,viewProps:this.viewProps});s.view.allFocusableElements.forEach((t=>{t.addEventListener("blur",this.onPopupChildBlur_),t.addEventListener("keydown",this.onPopupChildKeydown_)})),this.pickerC_=s,this.textC_=new gs(t,{assembly:xs,axes:e.axes,parser:e.parser,value:this.value,viewProps:this.viewProps}),this.view=new Cs(t,{expanded:this.foldable_.value("expanded"),pickerLayout:e.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),null===(n=this.view.buttonElement)||void 0===n||n.addEventListener("blur",this.onPadButtonBlur_),null===(i=this.view.buttonElement)||void 0===i||i.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),sn({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:t=>t,backward:(t,e)=>e})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),de(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onPadButtonBlur_(t){if(!this.popC_)return;const e=this.view.element,n=t.relatedTarget;n&&e.contains(n)||(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(t){if(!this.popC_)return;const e=this.popC_.view.element,n=yt(t);n&&e.contains(n)||n&&n===this.view.buttonElement&&!mt(e.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(t){this.popC_?"Escape"===t.key&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&"Escape"===t.key&&this.view.buttonElement.focus()}}function Ss(t){return ws.isObject(t)?new ws(t.x,t.y):new ws}function Ms(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y)}function js(e,n){var i,s;if(!t(e.min)||!t(e.max))return Math.max(Math.abs(null!==(i=e.min)&&void 0!==i?i:0),Math.abs(null!==(s=e.max)&&void 0!==s?s:0));const r=$(e);return Math.max(10*Math.abs(r),10*Math.abs(n))}function Ds(t,e){var n,i;const r=js(s(t,null!==(n=t.x)&&void 0!==n?n:{}),e.x),o=js(s(t,null!==(i=t.y)&&void 0!==i?i:{}),e.y);return Math.max(r,o)}function As(t){if(!("y"in t))return!1;const e=t.y;return!!e&&("inverted"in e&&!!e.inverted)}const Os=Jt({id:"input-point2d",type:"input",accept:(t,e)=>{if(!ws.isObject(t))return null;const n=lt(e,(t=>Object.assign(Object.assign({},Cn(t)),{expanded:t.optional.boolean,picker:t.optional.custom(En),readonly:t.optional.constant(!1),x:t.optional.custom(Pn),y:t.optional.object(Object.assign(Object.assign({},Cn(t)),{inverted:t.optional.boolean}))})));return n?{initialValue:t,params:n}:null},binding:{reader:()=>Ss,constraint:t=>{return e=t.params,n=t.initialValue,new vs({assembly:xs,components:[kn(Object.assign(Object.assign({},e),e.x),n.x),kn(Object.assign(Object.assign({},e),e.y),n.y)]});var e,n},equals:ws.equals,writer:()=>Ms},controller:t=>{var e,n;const i=t.document,r=t.value,o=t.constraint,a=[t.params.x,t.params.y];return new Ls(i,{axes:r.rawValue.getComponents().map(((e,n)=>{var i;return Q({constraint:o.components[n],initialValue:e,params:s(t.params,null!==(i=a[n])&&void 0!==i?i:{})})})),expanded:null!==(e=t.params.expanded)&&void 0!==e&&e,invertsY:As(t.params),max:Ds(t.params,r.rawValue),parser:R,pickerLayout:null!==(n=t.params.picker)&&void 0!==n?n:"popup",value:r,viewProps:t.viewProps})}});class Rs{constructor(t=0,e=0,n=0){this.x=t,this.y=e,this.z=n}getComponents(){return[this.x,this.y,this.z]}static isObject(e){if(t(e))return!1;const n=e.x,i=e.y,s=e.z;return"number"==typeof n&&"number"==typeof i&&"number"==typeof s}static equals(t,e){return t.x===e.x&&t.y===e.y&&t.z===e.z}toObject(){return{x:this.x,y:this.y,z:this.z}}}const Bs={toComponents:t=>t.getComponents(),fromComponents:t=>new Rs(...t)};function Ks(t){return Rs.isObject(t)?new Rs(t.x,t.y,t.z):new Rs}function zs(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y),t.writeProperty("z",e.z)}const Ns=Jt({id:"input-point3d",type:"input",accept:(t,e)=>{if(!Rs.isObject(t))return null;const n=lt(e,(t=>Object.assign(Object.assign({},Cn(t)),{readonly:t.optional.constant(!1),x:t.optional.custom(Pn),y:t.optional.custom(Pn),z:t.optional.custom(Pn)})));return n?{initialValue:t,params:n}:null},binding:{reader:t=>Ks,constraint:t=>{return e=t.params,n=t.initialValue,new vs({assembly:Bs,components:[kn(Object.assign(Object.assign({},e),e.x),n.x),kn(Object.assign(Object.assign({},e),e.y),n.y),kn(Object.assign(Object.assign({},e),e.z),n.z)]});var e,n},equals:Rs.equals,writer:t=>zs},controller:t=>{const e=t.value,n=t.constraint,i=[t.params.x,t.params.y,t.params.z];return new gs(t.document,{assembly:Bs,axes:e.rawValue.getComponents().map(((e,r)=>{var o;return Q({constraint:n.components[r],initialValue:e,params:s(t.params,null!==(o=i[r])&&void 0!==o?o:{})})})),parser:R,value:e,viewProps:t.viewProps})}});class Is{constructor(t=0,e=0,n=0,i=0){this.x=t,this.y=e,this.z=n,this.w=i}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(e){if(t(e))return!1;const n=e.x,i=e.y,s=e.z,r=e.w;return"number"==typeof n&&"number"==typeof i&&"number"==typeof s&&"number"==typeof r}static equals(t,e){return t.x===e.x&&t.y===e.y&&t.z===e.z&&t.w===e.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}}const Ts={toComponents:t=>t.getComponents(),fromComponents:t=>new Is(...t)};function Us(t){return Is.isObject(t)?new Is(t.x,t.y,t.z,t.w):new Is}function Fs(t,e){t.writeProperty("x",e.x),t.writeProperty("y",e.y),t.writeProperty("z",e.z),t.writeProperty("w",e.w)}const $s=Jt({id:"input-point4d",type:"input",accept:(t,e)=>{if(!Is.isObject(t))return null;const n=lt(e,(t=>Object.assign(Object.assign({},Cn(t)),{readonly:t.optional.constant(!1),w:t.optional.custom(Pn),x:t.optional.custom(Pn),y:t.optional.custom(Pn),z:t.optional.custom(Pn)})));return n?{initialValue:t,params:n}:null},binding:{reader:t=>Us,constraint:t=>{return e=t.params,n=t.initialValue,new vs({assembly:Ts,components:[kn(Object.assign(Object.assign({},e),e.x),n.x),kn(Object.assign(Object.assign({},e),e.y),n.y),kn(Object.assign(Object.assign({},e),e.z),n.z),kn(Object.assign(Object.assign({},e),e.w),n.w)]});var e,n},equals:Is.equals,writer:t=>Fs},controller:t=>{const e=t.value,n=t.constraint,i=[t.params.x,t.params.y,t.params.z,t.params.w];return new gs(t.document,{assembly:Ts,axes:e.rawValue.getComponents().map(((e,r)=>{var o;return Q({constraint:n.components[r],initialValue:e,params:s(t.params,null!==(o=i[r])&&void 0!==o?o:{})})})),parser:R,value:e,viewProps:t.viewProps})}});const qs=Jt({id:"input-string",type:"input",accept:(t,e)=>{if("string"!=typeof t)return null;const n=lt(e,(t=>({readonly:t.optional.constant(!1),options:t.optional.custom(Ne)})));return n?{initialValue:t,params:n}:null},binding:{reader:t=>en,constraint:t=>function(t){const e=[],n=Te(t.options);return n&&e.push(n),new Be(e)}(t.params),writer:t=>Vn},controller:t=>{const e=t.document,n=t.value,i=t.constraint,s=i&&Ke(i,ze);return s?new $e(e,{props:new v({options:s.values.value("options")}),value:n,viewProps:t.viewProps}):new Qe(e,{parser:t=>t,props:v.fromObject({formatter:nn}),value:n,viewProps:t.viewProps})},api:t=>"string"!=typeof t.controller.value.rawValue?null:t.controller.valueController instanceof $e?new Ae(t.controller):null}),Hs={defaultInterval:200,defaultRows:3},Gs=Et("mll");class Ys{constructor(t,e){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=e.formatter,this.element=t.createElement("div"),this.element.classList.add(Gs()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("textarea");n.classList.add(Gs("i")),n.style.height=`calc(var(${yn("containerUnitSize")}) * ${e.rows})`,n.readOnly=!0,e.viewProps.bindDisabled(n),this.element.appendChild(n),this.textareaElem_=n,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}update_(){const t=this.textareaElem_,e=t.scrollTop===t.scrollHeight-t.clientHeight,n=[];this.value.rawValue.forEach((t=>{void 0!==t&&n.push(this.formatter_(t))})),t.textContent=n.join("\n"),e&&(t.scrollTop=t.scrollHeight)}onValueUpdate_(){this.update_()}}class Xs{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Ys(t,{formatter:e.formatter,rows:e.rows,value:this.value,viewProps:this.viewProps})}}const Qs=Et("sgl");class Ws{constructor(t,e){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=e.formatter,this.element=t.createElement("div"),this.element.classList.add(Qs()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("input");n.classList.add(Qs("i")),n.readOnly=!0,n.type="text",e.viewProps.bindDisabled(n),this.element.appendChild(n),this.inputElement=n,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}update_(){const t=this.value.rawValue,e=t[t.length-1];this.inputElement.value=void 0!==e?this.formatter_(e):""}onValueUpdate_(){this.update_()}}class Js{constructor(t,e){this.value=e.value,this.viewProps=e.viewProps,this.view=new Ws(t,{formatter:e.formatter,value:this.value,viewProps:this.viewProps})}}const Zs=Jt({id:"monitor-bool",type:"monitor",accept:(t,e)=>{if("boolean"!=typeof t)return null;const n=lt(e,(t=>({readonly:t.required.constant(!0),rows:t.optional.number})));return n?{initialValue:t,params:n}:null},binding:{reader:t=>We},controller:t=>{var e;return 1===t.value.rawValue.length?new Js(t.document,{formatter:Je,value:t.value,viewProps:t.viewProps}):new Xs(t.document,{formatter:Je,rows:null!==(e=t.params.rows)&&void 0!==e?e:Hs.defaultRows,value:t.value,viewProps:t.viewProps})}});class tr extends it{get max(){return this.controller.valueController.props.get("max")}set max(t){this.controller.valueController.props.set("max",t)}get min(){return this.controller.valueController.props.get("min")}set min(t){this.controller.valueController.props.set("min",t)}}const er=Et("grl");class nr{constructor(t,e){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=t.createElement("div"),this.element.classList.add(er()),e.viewProps.bindClassModifiers(this.element),this.formatter_=e.formatter,this.props_=e.props,this.cursor_=e.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const n=t.createElementNS(ut,"svg");n.classList.add(er("g")),n.style.height=`calc(var(${yn("containerUnitSize")}) * ${e.rows})`,this.element.appendChild(n),this.svgElem_=n;const i=t.createElementNS(ut,"polyline");this.svgElem_.appendChild(i),this.lineElem_=i;const s=t.createElement("div");s.classList.add(er("t"),Et("tt")()),this.element.appendChild(s),this.tooltipElem_=s,e.value.emitter.on("change",this.onValueUpdate_),this.value=e.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const{clientWidth:t,clientHeight:e}=this.element,n=this.value.rawValue.length-1,i=this.props_.get("min"),s=this.props_.get("max"),r=[];this.value.rawValue.forEach(((o,a)=>{if(void 0===o)return;const l=N(a,0,n,0,t),p=N(o,i,s,e,0);r.push([l,p].join(","))})),this.lineElem_.setAttributeNS(null,"points",r.join(" "));const o=this.tooltipElem_,a=this.value.rawValue[this.cursor_.rawValue];if(void 0===a)return void o.classList.remove(er("t","a"));const l=N(this.cursor_.rawValue,0,n,0,t),p=N(a,i,s,e,0);o.style.left=`${l}px`,o.style.top=`${p}px`,o.textContent=`${this.formatter_(a)}`,o.classList.contains(er("t","a"))||(o.classList.add(er("t","a"),er("t","in")),vt(o),o.classList.remove(er("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class ir{constructor(t,e){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.props=e.props,this.value=e.value,this.viewProps=e.viewProps,this.cursor_=u(-1),this.view=new nr(t,{cursor:this.cursor_,formatter:e.formatter,rows:e.rows,props:this.props,value:this.value,viewProps:this.viewProps}),mt(t)){const t=new cn(this.view.element);t.emitter.on("down",this.onGraphPointerDown_),t.emitter.on("move",this.onGraphPointerMove_),t.emitter.on("up",this.onGraphPointerUp_)}else this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_)}importProps(t){return pt(t,null,(t=>({max:t.required.number,min:t.required.number})),(t=>(this.props.set("max",t.max),this.props.set("min",t.min),!0)))}exportProps(){return ct(null,{max:this.props.get("max"),min:this.props.get("min")})}onGraphMouseLeave_(){this.cursor_.rawValue=-1}onGraphMouseMove_(t){const{clientWidth:e}=this.view.element;this.cursor_.rawValue=Math.floor(N(t.offsetX,0,e,0,this.value.rawValue.length))}onGraphPointerDown_(t){this.onGraphPointerMove_(t)}onGraphPointerMove_(t){t.data.point?this.cursor_.rawValue=Math.floor(N(t.data.point.x,0,t.data.bounds.width,0,this.value.rawValue.length)):this.cursor_.rawValue=-1}onGraphPointerUp_(){this.cursor_.rawValue=-1}}function sr(e){return t(e.format)?z(2):e.format}function rr(t){return"graph"===t.view}const or=Jt({id:"monitor-number",type:"monitor",accept:(t,e)=>{if("number"!=typeof t)return null;const n=lt(e,(t=>({format:t.optional.function,max:t.optional.number,min:t.optional.number,readonly:t.required.constant(!0),rows:t.optional.number,view:t.optional.string})));return n?{initialValue:t,params:n}:null},binding:{defaultBufferSize:t=>rr(t)?64:1,reader:t=>B},controller:t=>rr(t.params)?function(t){var e,n,i;return new ir(t.document,{formatter:sr(t.params),rows:null!==(e=t.params.rows)&&void 0!==e?e:Hs.defaultRows,props:v.fromObject({max:null!==(n=t.params.max)&&void 0!==n?n:100,min:null!==(i=t.params.min)&&void 0!==i?i:0}),value:t.value,viewProps:t.viewProps})}(t):function(t){var e;return 1===t.value.rawValue.length?new Js(t.document,{formatter:sr(t.params),value:t.value,viewProps:t.viewProps}):new Xs(t.document,{formatter:sr(t.params),rows:null!==(e=t.params.rows)&&void 0!==e?e:Hs.defaultRows,value:t.value,viewProps:t.viewProps})}(t),api:t=>t.controller.valueController instanceof ir?new tr(t.controller):null}),ar=Jt({id:"monitor-string",type:"monitor",accept:(t,e)=>{if("string"!=typeof t)return null;const n=lt(e,(t=>({multiline:t.optional.boolean,readonly:t.required.constant(!0),rows:t.optional.number})));return n?{initialValue:t,params:n}:null},binding:{reader:t=>en},controller:t=>{var e;const n=t.value;return n.rawValue.length>1||t.params.multiline?new Xs(t.document,{formatter:nn,rows:null!==(e=t.params.rows)&&void 0!==e?e:Hs.defaultRows,value:n,viewProps:t.viewProps}):new Js(t.document,{formatter:nn,value:n,viewProps:t.viewProps})}});class lr{constructor(t){this.target=t.target,this.reader_=t.reader,this.writer_=t.writer}read(){return this.reader_(this.target.read())}write(t){this.writer_(this.target,t)}inject(t){this.write(this.reader_(t))}}class pr{constructor(t){this.target=t.target,this.reader_=t.reader}read(){return this.reader_(this.target.read())}}class cr{constructor(t){this.pluginsMap_={blades:[],inputs:[],monitors:[]},this.apiCache_=t}getAll(){return[...this.pluginsMap_.blades,...this.pluginsMap_.inputs,...this.pluginsMap_.monitors]}register(t,e){if(!(n=e.core)||n.major!==Wt.major)throw a.notCompatible(t,e.id);var n;"blade"===e.type?this.pluginsMap_.blades.unshift(e):"input"===e.type?this.pluginsMap_.inputs.unshift(e):"monitor"===e.type&&this.pluginsMap_.monitors.unshift(e)}createInput_(e,n,i){return this.pluginsMap_.inputs.reduce(((s,r)=>null!=s?s:function(e,n){var i;const s=e.accept(n.target.read(),n.params);if(t(s))return null;const r={target:n.target,initialValue:s.initialValue,params:s.params},o=lt(n.params,(t=>({disabled:t.optional.boolean,hidden:t.optional.boolean,label:t.optional.string,tag:t.optional.string}))),a=e.binding.reader(r),l=e.binding.constraint?e.binding.constraint(r):void 0,p=new lr({reader:a,target:n.target,writer:e.binding.writer(r)}),c=new st(u(a(s.initialValue),{constraint:l,equals:e.binding.equals}),p),d=e.controller({constraint:l,document:n.document,initialValue:s.initialValue,params:s.params,value:c,viewProps:fe.create({disabled:null==o?void 0:o.disabled,hidden:null==o?void 0:o.hidden})});return new Bt(n.document,{blade:le(),props:v.fromObject({label:"label"in n.params?null!==(i=null==o?void 0:o.label)&&void 0!==i?i:null:n.target.key}),tag:null==o?void 0:o.tag,value:c,valueController:d})}(r,{document:e,target:n,params:i})),null)}createMonitor_(e,n,i){return this.pluginsMap_.monitors.reduce(((s,r)=>null!=s?s:function(e,n){var i,s,r;const o=e.accept(n.target.read(),n.params);if(t(o))return null;const a={target:n.target,initialValue:o.initialValue,params:o.params},l=lt(n.params,(t=>({bufferSize:t.optional.number,disabled:t.optional.boolean,hidden:t.optional.boolean,interval:t.optional.number,label:t.optional.string}))),p=e.binding.reader(a),c=null!==(s=null!==(i=null==l?void 0:l.bufferSize)&&void 0!==i?i:e.binding.defaultBufferSize&&e.binding.defaultBufferSize(o.params))&&void 0!==s?s:1,d=new It({binding:new pr({reader:p,target:n.target}),bufferSize:c,ticker:(h=n.document,u=null==l?void 0:l.interval,0===u?new Oe:new Re(h,null!=u?u:Hs.defaultInterval))});var h,u;const m=e.controller({document:n.document,params:o.params,value:d,viewProps:fe.create({disabled:null==l?void 0:l.disabled,hidden:null==l?void 0:l.hidden})});return m.viewProps.bindDisabled(d.ticker),m.viewProps.handleDispose((()=>{d.ticker.dispose()})),new Tt(n.document,{blade:le(),props:v.fromObject({label:"label"in n.params?null!==(r=null==l?void 0:l.label)&&void 0!==r?r:null:n.target.key}),value:d,valueController:m})}(r,{document:e,params:i,target:n})),null)}createBinding(e,n,i){if(t(n.read()))throw new a({context:{key:n.key},type:"nomatchingcontroller"});const s=this.createInput_(e,n,i);if(s)return s;const r=this.createMonitor_(e,n,i);if(r)return r;throw new a({context:{key:n.key},type:"nomatchingcontroller"})}createBlade(t,e){const n=this.pluginsMap_.blades.reduce(((n,i)=>null!=n?n:function(t,e){const n=t.accept(e.params);if(!n)return null;const i=lt(e.params,(t=>({disabled:t.optional.boolean,hidden:t.optional.boolean})));return t.controller({blade:le(),document:e.document,params:Object.assign(Object.assign({},n.params),{disabled:null==i?void 0:i.disabled,hidden:null==i?void 0:i.hidden}),viewProps:fe.create({disabled:null==i?void 0:i.disabled,hidden:null==i?void 0:i.hidden})})}(i,{document:t,params:e})),null);if(!n)throw new a({type:"nomatchingview",context:{params:e}});return n}createInputBindingApi_(t){const e=this.pluginsMap_.inputs.reduce(((e,n)=>{var i,s;return e||(null!==(s=null===(i=n.api)||void 0===i?void 0:i.call(n,{controller:t}))&&void 0!==s?s:null)}),null);return this.apiCache_.add(t,null!=e?e:new it(t))}createMonitorBindingApi_(t){const e=this.pluginsMap_.monitors.reduce(((e,n)=>{var i,s;return e||(null!==(s=null===(i=n.api)||void 0===i?void 0:i.call(n,{controller:t}))&&void 0!==s?s:null)}),null);return this.apiCache_.add(t,null!=e?e:new it(t))}createBindingApi(t){if(this.apiCache_.has(t))return this.apiCache_.get(t);if(Kt(t))return this.createInputBindingApi_(t);if(Ut(t))return this.createMonitorBindingApi_(t);throw a.shouldNeverHappen()}createApi(t){if(this.apiCache_.has(t))return this.apiCache_.get(t);if(function(t){return dt(t)&&ht(t.value)}(t))return this.createBindingApi(t);const e=this.pluginsMap_.blades.reduce(((e,n)=>null!=e?e:n.api({controller:t,pool:this})),null);if(!e)throw a.shouldNeverHappen();return this.apiCache_.add(t,e)}}const dr=new class{constructor(){this.map_=new Map}get(t){var e;return null!==(e=this.map_.get(t))&&void 0!==e?e:null}has(t){return this.map_.has(t)}add(t,e){return this.map_.set(t,e),t.viewProps.handleDispose((()=>{this.map_.delete(t)})),e}};class hr extends W{constructor(t){super(t),this.emitter_=new p,this.controller.value.emitter.on("change",(t=>{this.emitter_.emit("change",new Z(this,t.rawValue))}))}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get options(){return this.controller.valueController.props.get("options")}set options(t){this.controller.valueController.props.set("options",t)}get value(){return this.controller.value.rawValue}set value(t){this.controller.value.rawValue=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}}class ur extends W{}class vr extends W{constructor(t){super(t),this.emitter_=new p,this.controller.value.emitter.on("change",(t=>{this.emitter_.emit("change",new Z(this,t.rawValue))}))}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get max(){return this.controller.valueController.sliderController.props.get("max")}set max(t){this.controller.valueController.sliderController.props.set("max",t)}get min(){return this.controller.valueController.sliderController.props.get("min")}set min(t){this.controller.valueController.sliderController.props.set("min",t)}get value(){return this.controller.value.rawValue}set value(t){this.controller.value.rawValue=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}}class mr extends W{constructor(t){super(t),this.emitter_=new p,this.controller.value.emitter.on("change",(t=>{this.emitter_.emit("change",new Z(this,t.rawValue))}))}get label(){return this.controller.labelController.props.get("label")}set label(t){this.controller.labelController.props.set("label",t)}get formatter(){return this.controller.valueController.props.get("formatter")}set formatter(t){this.controller.valueController.props.set("formatter",t)}get value(){return this.controller.value.rawValue}set value(t){this.controller.value.rawValue=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 br={id:"list",type:"blade",core:Wt,accept(t){const e=lt(t,(t=>({options:t.required.custom(Ne),value:t.required.raw,view:t.required.constant("list"),label:t.optional.string})));return e?{params:e}:null},controller(t){const e=new ze(Ie(t.params.options)),n=u(t.params.value,{constraint:e}),i=new $e(t.document,{props:new v({options:e.values.value("options")}),value:n,viewProps:t.viewProps});return new At(t.document,{blade:t.blade,props:v.fromObject({label:t.params.label}),value:n,valueController:i})},api:t=>t.controller instanceof At&&t.controller.valueController instanceof $e?new hr(t.controller):null};class gr extends he{constructor(t,e){super(t,e)}get element(){return this.controller.view.element}}class _r extends me{constructor(t,e){super(t,{expanded:e.expanded,blade:e.blade,props:e.props,root:!0,viewProps:e.viewProps})}}const fr=Et("spr");class wr{constructor(t,e){this.element=t.createElement("div"),this.element.classList.add(fr()),e.viewProps.bindClassModifiers(this.element);const n=t.createElement("hr");n.classList.add(fr("r")),this.element.appendChild(n)}}class xr extends Dt{constructor(t,e){super(Object.assign(Object.assign({},e),{view:new wr(t,{viewProps:e.viewProps})}))}}const yr={id:"separator",type:"blade",core:Wt,accept(t){const e=lt(t,(t=>({view:t.required.constant("separator")})));return e?{params:e}:null},controller:t=>new xr(t.document,{blade:t.blade,viewProps:t.viewProps}),api:t=>t.controller instanceof xr?new ur(t.controller):null},Cr={id:"slider",type:"blade",core:Wt,accept(t){const e=lt(t,(t=>({max:t.required.number,min:t.required.number,view:t.required.constant("slider"),format:t.optional.function,label:t.optional.string,value:t.optional.number})));return e?{params:e}:null},controller(t){var e,n;const i=null!==(e=t.params.value)&&void 0!==e?e:0,s=new m({max:t.params.max,min:t.params.min}),r=u(i,{constraint:s}),o=new fn(t.document,Object.assign(Object.assign({},wn({formatter:null!==(n=t.params.format)&&void 0!==n?n:K,keyScale:u(1),max:s.values.value("max"),min:s.values.value("min"),pointerScale:q(t.params,i)})),{parser:R,value:r,viewProps:t.viewProps}));return new At(t.document,{blade:t.blade,props:v.fromObject({label:t.params.label}),value:r,valueController:o})},api:t=>t.controller instanceof At&&t.controller.valueController instanceof fn?new vr(t.controller):null},Pr={id:"text",type:"blade",core:Wt,accept(t){const e=lt(t,(t=>({parse:t.required.function,value:t.required.raw,view:t.required.constant("text"),format:t.optional.function,label:t.optional.string})));return e?{params:e}:null},controller(t){var e;const n=u(t.params.value),i=new Qe(t.document,{parser:t.params.parse,props:v.fromObject({formatter:null!==(e=t.params.format)&&void 0!==e?e:t=>String(t)}),value:n,viewProps:t.viewProps});return new At(t.document,{blade:t.blade,props:v.fromObject({label:t.params.label}),value:n,valueController:i})},api:t=>t.controller instanceof At&&t.controller.valueController instanceof Qe?new mr(t.controller):null};class kr extends gr{constructor(t){var e,n;const i=null!=t?t:{},s=null!==(e=i.document)&&void 0!==e?e:bt(),r=function(){const t=new cr(dr);return[Os,Ns,$s,qs,fs,us,hs,ps,jn,Zs,ar,or,Zt,be,De].forEach((e=>{t.register("core",e)})),t}();super(new _r(s,{expanded:i.expanded,blade:le(),props:v.fromObject({title:i.title}),viewProps:fe.create()}),r),this.pool_=r,this.containerElem_=null!==(n=i.container)&&void 0!==n?n:function(t){const e=t.createElement("div");return e.classList.add(Et("dfw")()),t.body&&t.body.appendChild(e),e}(s),this.containerElem_.appendChild(this.element),this.doc_=s,this.usesDefaultWrapper_=!i.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw a.alreadyDisposed();return this.doc_}dispose(){const t=this.containerElem_;if(!t)throw a.alreadyDisposed();if(this.usesDefaultWrapper_){const e=t.parentElement;e&&e.removeChild(t)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(t){t.css&&function(t,e,n){if(t.querySelector(`style[data-tp-style=${e}]`))return;const i=t.createElement("style");i.dataset.tpStyle=e,i.textContent=n,t.head.appendChild(i)}(this.document,`plugin-${t.id}`,t.css);("plugin"in t?[t.plugin]:"plugins"in t?t.plugins:[]).forEach((e=>{this.pool_.register(t.id,e)}))}setUpDefaultPlugins_(){this.registerPlugin({id:"default",css:'.tp-tbiv_b,.tp-coltxtv_ms,.tp-colswv_b,.tp-ckbv_i,.tp-sglv_i,.tp-mllv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.tp-rotv_b,.tp-fldv_b,.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:rgba(0,0,0,0);border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{background-color:var(--btn-bg);border-radius:var(--bld-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--cnt-usz);line-height:var(--cnt-usz);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-p2dv_b:hover,.tp-btnv_b:hover,.tp-lstv_s:hover{background-color:var(--btn-bg-h)}.tp-p2dv_b:focus,.tp-btnv_b:focus,.tp-lstv_s:focus{background-color:var(--btn-bg-f)}.tp-p2dv_b:active,.tp-btnv_b:active,.tp-lstv_s:active{background-color:var(--btn-bg-a)}.tp-p2dv_b:disabled,.tp-btnv_b:disabled,.tp-lstv_s:disabled{opacity:.5}.tp-rotv_c>.tp-cntv.tp-v-lst,.tp-tbpv_c>.tp-cntv.tp-v-lst,.tp-fldv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1*var(--cnt-vp))}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tbpv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_c{border-bottom-left-radius:0}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-tbpv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_b{border-bottom-left-radius:0}.tp-rotv_c>*:not(.tp-v-fst),.tp-tbpv_c>*:not(.tp-v-fst),.tp-fldv_c>*:not(.tp-v-fst){margin-top:var(--cnt-usp)}.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-tbpv_c>.tp-sprv:not(.tp-v-fst),.tp-fldv_c>.tp-sprv:not(.tp-v-fst),.tp-rotv_c>.tp-cntv:not(.tp-v-fst),.tp-tbpv_c>.tp-cntv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-vp)}.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tbpv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-tbpv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-vp)}.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tbpv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-fldv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-rotv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-tbpv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-tbpv_c>.tp-cntv,.tp-fldv_c>.tp-cntv{margin-left:4px}.tp-tbpv_c>.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--bld-br);border-bottom-left-radius:var(--bld-br)}.tp-tbpv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b{border-bottom-left-radius:0}.tp-tbpv_c .tp-fldv>.tp-fldv_c,.tp-fldv_c .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--bld-br)}.tp-tbpv_c>.tp-cntv+.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-cntv+.tp-fldv>.tp-fldv_b{border-top-left-radius:0}.tp-tbpv_c>.tp-cntv+.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-cntv+.tp-tabv>.tp-tabv_t{border-top-left-radius:0}.tp-tbpv_c>.tp-tabv>.tp-tabv_t,.tp-fldv_c>.tp-tabv>.tp-tabv_t{border-top-left-radius:var(--bld-br)}.tp-tbpv_c .tp-tabv>.tp-tabv_c,.tp-fldv_c .tp-tabv>.tp-tabv_c{border-bottom-left-radius:var(--bld-br)}.tp-rotv_b,.tp-fldv_b{background-color:var(--cnt-bg);color:var(--cnt-fg);cursor:pointer;display:block;height:calc(var(--cnt-usz) + 4px);line-height:calc(var(--cnt-usz) + 4px);overflow:hidden;padding-left:var(--cnt-hp);padding-right:calc(4px + var(--cnt-usz) + var(--cnt-hp));position:relative;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%;transition:border-radius .2s ease-in-out .2s}.tp-rotv_b:hover,.tp-fldv_b:hover{background-color:var(--cnt-bg-h)}.tp-rotv_b:focus,.tp-fldv_b:focus{background-color:var(--cnt-bg-f)}.tp-rotv_b:active,.tp-fldv_b:active{background-color:var(--cnt-bg-a)}.tp-rotv_b:disabled,.tp-fldv_b:disabled{opacity:.5}.tp-rotv_m,.tp-fldv_m{background:linear-gradient(to left, var(--cnt-fg), var(--cnt-fg) 2px, transparent 2px, transparent 4px, var(--cnt-fg) 4px);border-radius:2px;bottom:0;content:"";display:block;height:6px;right:calc(var(--cnt-hp) + (var(--cnt-usz) + 4px - 6px)/2 - 2px);margin:auto;opacity:.5;position:absolute;top:0;transform:rotate(90deg);transition:transform .2s ease-in-out;width:6px}.tp-rotv.tp-rotv-expanded .tp-rotv_m,.tp-fldv.tp-fldv-expanded>.tp-fldv_b>.tp-fldv_m{transform:none}.tp-rotv_c,.tp-fldv_c{box-sizing:border-box;height:0;opacity:0;overflow:hidden;padding-bottom:0;padding-top:0;position:relative;transition:height .2s ease-in-out,opacity .2s linear,padding .2s ease-in-out}.tp-rotv.tp-rotv-cpl:not(.tp-rotv-expanded) .tp-rotv_c,.tp-fldv.tp-fldv-cpl:not(.tp-fldv-expanded)>.tp-fldv_c{display:none}.tp-rotv.tp-rotv-expanded .tp-rotv_c,.tp-fldv.tp-fldv-expanded>.tp-fldv_c{opacity:1;padding-bottom:var(--cnt-vp);padding-top:var(--cnt-vp);transform:none;overflow:visible;transition:height .2s ease-in-out,opacity .2s linear .2s,padding .2s ease-in-out}.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--cnt-usz);line-height:var(--cnt-usz);min-width:0;width:100%}.tp-txtv_i:hover,.tp-p2dpv_p:hover,.tp-colswv_sw:hover{background-color:var(--in-bg-h)}.tp-txtv_i:focus,.tp-p2dpv_p:focus,.tp-colswv_sw:focus{background-color:var(--in-bg-f)}.tp-txtv_i:active,.tp-p2dpv_p:active,.tp-colswv_sw:active{background-color:var(--in-bg-a)}.tp-txtv_i:disabled,.tp-p2dpv_p:disabled,.tp-colswv_sw:disabled{opacity:.5}.tp-lstv,.tp-coltxtv_m{position:relative}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m,.tp-coltxtv_mm{bottom:0;margin:auto;pointer-events:none;position:absolute;right:2px;top:0}.tp-lstv_m svg,.tp-coltxtv_mm svg{bottom:0;height:16px;margin:auto;position:absolute;right:0;top:0;width:16px}.tp-lstv_m svg path,.tp-coltxtv_mm svg path{fill:currentColor}.tp-sglv_i,.tp-mllv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--bld-br);box-sizing:border-box;color:var(--mo-fg);height:var(--cnt-usz);scrollbar-color:currentColor rgba(0,0,0,0);scrollbar-width:thin;width:100%}.tp-sglv_i::-webkit-scrollbar,.tp-mllv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-sglv_i::-webkit-scrollbar-corner,.tp-mllv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.tp-sglv_i::-webkit-scrollbar-thumb,.tp-mllv_i::-webkit-scrollbar-thumb,.tp-grlv_g::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:currentColor;border:rgba(0,0,0,0) solid 2px;border-radius:4px}.tp-pndtxtv,.tp-coltxtv_w{display:flex}.tp-pndtxtv_a,.tp-coltxtv_c{width:100%}.tp-pndtxtv_a+.tp-pndtxtv_a,.tp-coltxtv_c+.tp-pndtxtv_a,.tp-pndtxtv_a+.tp-coltxtv_c,.tp-coltxtv_c+.tp-coltxtv_c{margin-left:2px}.tp-rotv{--bs-bg: var(--tp-base-background-color, hsl(230, 7%, 17%));--bs-br: var(--tp-base-border-radius, 6px);--bs-ff: var(--tp-base-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--bld-br: var(--tp-blade-border-radius, 2px);--bld-hp: var(--tp-blade-horizontal-padding, 4px);--bld-vw: var(--tp-blade-value-width, 160px);--btn-bg: var(--tp-button-background-color, hsl(230, 7%, 70%));--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, hsl(230, 7%, 17%));--cnt-bg: var(--tp-container-background-color, rgba(187, 188, 196, 0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187, 188, 196, 0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187, 188, 196, 0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187, 188, 196, 0.15));--cnt-fg: var(--tp-container-foreground-color, hsl(230, 7%, 75%));--cnt-hp: var(--tp-container-horizontal-padding, 4px);--cnt-vp: var(--tp-container-vertical-padding, 4px);--cnt-usp: var(--tp-container-unit-spacing, 4px);--cnt-usz: var(--tp-container-unit-size, 20px);--in-bg: var(--tp-input-background-color, rgba(187, 188, 196, 0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187, 188, 196, 0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187, 188, 196, 0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187, 188, 196, 0.15));--in-fg: var(--tp-input-foreground-color, hsl(230, 7%, 75%));--lbl-fg: var(--tp-label-foreground-color, rgba(187, 188, 196, 0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0, 0, 0, 0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187, 188, 196, 0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(187, 188, 196, 0.1))}.tp-btnv_b{width:100%}.tp-btnv_t{text-align:center}.tp-ckbv_l{display:block;position:relative}.tp-ckbv_i{left:0;opacity:0;position:absolute;top:0}.tp-ckbv_w{background-color:var(--in-bg);border-radius:var(--bld-br);cursor:pointer;display:block;height:var(--cnt-usz);position:relative;width:var(--cnt-usz)}.tp-ckbv_w svg{display:block;height:16px;inset:0;margin:auto;opacity:0;position:absolute;width:16px}.tp-ckbv_w svg path{fill:none;stroke:var(--in-fg);stroke-width:2}.tp-ckbv_i:hover+.tp-ckbv_w{background-color:var(--in-bg-h)}.tp-ckbv_i:focus+.tp-ckbv_w{background-color:var(--in-bg-f)}.tp-ckbv_i:active+.tp-ckbv_w{background-color:var(--in-bg-a)}.tp-ckbv_i:checked+.tp-ckbv_w svg{opacity:1}.tp-ckbv.tp-v-disabled .tp-ckbv_w{opacity:.5}.tp-colv{position:relative}.tp-colv_h{display:flex}.tp-colv_s{flex-grow:0;flex-shrink:0;width:var(--cnt-usz)}.tp-colv_t{flex:1;margin-left:4px}.tp-colv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-colv.tp-colv-expanded.tp-colv-cpl .tp-colv_p{overflow:visible}.tp-colv.tp-colv-expanded .tp-colv_p{margin-top:var(--cnt-usp);opacity:1}.tp-colv .tp-popv{left:calc(-1*var(--cnt-hp));right:calc(-1*var(--cnt-hp));top:var(--cnt-usz)}.tp-colpv_h,.tp-colpv_ap{margin-left:6px;margin-right:6px}.tp-colpv_h{margin-top:var(--cnt-usp)}.tp-colpv_rgb{display:flex;margin-top:var(--cnt-usp);width:100%}.tp-colpv_a{display:flex;margin-top:var(--cnt-vp);padding-top:calc(var(--cnt-vp) + 2px);position:relative}.tp-colpv_a::before{background-color:var(--grv-fg);content:"";height:2px;left:calc(-1*var(--cnt-hp));position:absolute;right:calc(-1*var(--cnt-hp));top:0}.tp-colpv.tp-v-disabled .tp-colpv_a::before{opacity:.5}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--bld-br);outline:none;overflow:hidden;position:relative}.tp-svpv.tp-v-disabled{opacity:.5}.tp-svpv_c{cursor:crosshair;display:block;height:calc(var(--cnt-usz)*4);width:100%}.tp-svpv_m{border-radius:100%;border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;filter:drop-shadow(0 0 1px rgba(0, 0, 0, 0.3));height:12px;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;width:12px}.tp-svpv:focus .tp-svpv_m{border-color:#fff}.tp-hplv{cursor:pointer;height:var(--cnt-usz);outline:none;position:relative}.tp-hplv.tp-v-disabled{opacity:.5}.tp-hplv_c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAABCAYAAABubagXAAAAQ0lEQVQoU2P8z8Dwn0GCgQEDi2OK/RBgYHjBgIpfovFh8j8YBIgzFGQxuqEgPhaDOT5gOhPkdCxOZeBg+IDFZZiGAgCaSSMYtcRHLgAAAABJRU5ErkJggg==);background-position:left top;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;position:absolute;top:50%;width:100%}.tp-hplv_m{border-radius:var(--bld-br);border:rgba(255,255,255,.75) solid 2px;box-shadow:0 0 2px rgba(0,0,0,.1);box-sizing:border-box;height:12px;left:50%;margin-left:-6px;margin-top:-6px;position:absolute;top:50%;width:12px}.tp-hplv:focus .tp-hplv_m{border-color:#fff}.tp-aplv{cursor:pointer;height:var(--cnt-usz);outline:none;position:relative;width:100%}.tp-aplv.tp-v-disabled{opacity:.5}.tp-aplv_b{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:4px 4px;background-position:0 0,2px 2px;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;overflow:hidden;position:absolute;top:50%;width:100%}.tp-aplv_c{inset:0;position:absolute}.tp-aplv_m{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:12px 12px;background-position:0 0,6px 6px;border-radius:var(--bld-br);box-shadow:0 0 2px rgba(0,0,0,.1);height:12px;left:50%;margin-left:-6px;margin-top:-6px;overflow:hidden;position:absolute;top:50%;width:12px}.tp-aplv_p{border-radius:var(--bld-br);border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;inset:0;position:absolute}.tp-aplv:focus .tp-aplv_p{border-color:#fff}.tp-colswv{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:10px 10px;background-position:0 0,5px 5px;border-radius:var(--bld-br);overflow:hidden}.tp-colswv.tp-v-disabled{opacity:.5}.tp-colswv_sw{border-radius:0}.tp-colswv_b{cursor:pointer;display:block;height:var(--cnt-usz);left:0;position:absolute;top:0;width:var(--cnt-usz)}.tp-colswv_b:focus::after{border:rgba(255,255,255,.75) solid 2px;border-radius:var(--bld-br);content:"";display:block;inset:0;position:absolute}.tp-coltxtv{display:flex;width:100%}.tp-coltxtv_m{margin-right:4px}.tp-coltxtv_ms{border-radius:var(--bld-br);color:var(--lbl-fg);cursor:pointer;height:var(--cnt-usz);line-height:var(--cnt-usz);padding:0 18px 0 4px}.tp-coltxtv_ms:hover{background-color:var(--in-bg-h)}.tp-coltxtv_ms:focus{background-color:var(--in-bg-f)}.tp-coltxtv_ms:active{background-color:var(--in-bg-a)}.tp-coltxtv_mm{color:var(--lbl-fg)}.tp-coltxtv.tp-v-disabled .tp-coltxtv_mm{opacity:.5}.tp-coltxtv_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv{position:relative}.tp-fldv_t{padding-left:4px}.tp-fldv_b:disabled .tp-fldv_m{display:none}.tp-fldv_c{padding-left:4px}.tp-fldv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--cnt-usz) + 4px);width:max(var(--bs-br),4px)}.tp-fldv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-fldv_b:hover+.tp-fldv_i{color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_i{color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_i{color:var(--cnt-bg-a)}.tp-fldv.tp-v-disabled>.tp-fldv_i{opacity:.5}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--cnt-usz)*3)}.tp-grlv_g polyline{fill:none;stroke:var(--mo-fg);stroke-linejoin:round}.tp-grlv_t{margin-top:-4px;transition:left .05s,top .05s;visibility:hidden}.tp-grlv_t.tp-grlv_t-a{visibility:visible}.tp-grlv_t.tp-grlv_t-in{transition:none}.tp-grlv.tp-v-disabled .tp-grlv_g{opacity:.5}.tp-grlv .tp-ttv{background-color:var(--mo-fg)}.tp-grlv .tp-ttv::before{border-top-color:var(--mo-fg)}.tp-lblv{align-items:center;display:flex;line-height:1.3;padding-left:var(--cnt-hp);padding-right:var(--cnt-hp)}.tp-lblv.tp-lblv-nol{display:block}.tp-lblv_l{color:var(--lbl-fg);flex:1;-webkit-hyphens:auto;hyphens:auto;overflow:hidden;padding-left:4px;padding-right:16px}.tp-lblv.tp-v-disabled .tp-lblv_l{opacity:.5}.tp-lblv.tp-lblv-nol .tp-lblv_l{display:none}.tp-lblv_v{align-self:flex-start;flex-grow:0;flex-shrink:0;width:var(--bld-vw)}.tp-lblv.tp-lblv-nol .tp-lblv_v{width:100%}.tp-lstv_s{padding:0 20px 0 var(--bld-hp);width:100%}.tp-lstv_m{color:var(--btn-fg)}.tp-sglv_i{padding-left:var(--bld-hp);padding-right:var(--bld-hp)}.tp-sglv.tp-v-disabled .tp-sglv_i{opacity:.5}.tp-mllv_i{display:block;height:calc(var(--cnt-usz)*3);line-height:var(--cnt-usz);padding-left:var(--bld-hp);padding-right:var(--bld-hp);resize:none;white-space:pre}.tp-mllv.tp-v-disabled .tp-mllv_i{opacity:.5}.tp-p2dv{position:relative}.tp-p2dv_h{display:flex}.tp-p2dv_b{height:var(--cnt-usz);margin-right:4px;position:relative;width:var(--cnt-usz)}.tp-p2dv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-p2dv_b svg path{stroke:currentColor;stroke-width:2}.tp-p2dv_b svg circle{fill:currentColor}.tp-p2dv_t{flex:1}.tp-p2dv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-p2dv.tp-p2dv-expanded .tp-p2dv_p{margin-top:var(--cnt-usp);opacity:1}.tp-p2dv .tp-popv{left:calc(-1*var(--cnt-hp));right:calc(-1*var(--cnt-hp));top:var(--cnt-usz)}.tp-p2dpv{padding-left:calc(var(--cnt-usz) + 4px)}.tp-p2dpv_p{cursor:crosshair;height:0;overflow:hidden;padding-bottom:100%;position:relative}.tp-p2dpv.tp-v-disabled .tp-p2dpv_p{opacity:.5}.tp-p2dpv_g{display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.tp-p2dpv_ax{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_l{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_m{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;position:absolute;width:4px}.tp-p2dpv_p:focus .tp-p2dpv_m{background-color:var(--in-fg);border-width:0}.tp-popv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);display:none;max-width:var(--bld-vw);padding:var(--cnt-vp) var(--cnt-hp);position:absolute;visibility:hidden;z-index:1000}.tp-popv.tp-popv-v{display:block;visibility:visible}.tp-sldv.tp-v-disabled{opacity:.5}.tp-sldv_t{box-sizing:border-box;cursor:pointer;height:var(--cnt-usz);margin:0 6px;outline:none;position:relative}.tp-sldv_t::before{background-color:var(--in-bg);border-radius:1px;content:"";display:block;height:2px;inset:0;margin:auto;position:absolute}.tp-sldv_k{height:100%;left:0;position:absolute;top:0}.tp-sldv_k::before{background-color:var(--in-fg);border-radius:1px;content:"";display:block;height:2px;inset:0;margin-bottom:auto;margin-top:auto;position:absolute}.tp-sldv_k::after{background-color:var(--btn-bg);border-radius:var(--bld-br);bottom:0;content:"";display:block;height:12px;margin-bottom:auto;margin-top:auto;position:absolute;right:-6px;top:0;width:12px}.tp-sldv_t:hover .tp-sldv_k::after{background-color:var(--btn-bg-h)}.tp-sldv_t:focus .tp-sldv_k::after{background-color:var(--btn-bg-f)}.tp-sldv_t:active .tp-sldv_k::after{background-color:var(--btn-bg-a)}.tp-sldtxtv{display:flex}.tp-sldtxtv_s{flex:2}.tp-sldtxtv_t{flex:1;margin-left:4px}.tp-tabv{position:relative}.tp-tabv_t{align-items:flex-end;color:var(--cnt-bg);display:flex;overflow:hidden;position:relative}.tp-tabv_t:hover{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus){color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active){color:var(--cnt-bg-a)}.tp-tabv_t::before{background-color:currentColor;bottom:0;content:"";height:2px;left:0;pointer-events:none;position:absolute;right:0}.tp-tabv.tp-v-disabled .tp-tabv_t::before{opacity:.5}.tp-tabv.tp-tabv-nop .tp-tabv_t{height:calc(var(--cnt-usz) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_t::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.tp-tabv_i{bottom:0;color:var(--cnt-bg);left:0;overflow:hidden;position:absolute;top:calc(var(--cnt-usz) + 4px);width:max(var(--bs-br),4px)}.tp-tabv_i::before{background-color:currentColor;bottom:0;content:"";left:0;position:absolute;top:0;width:4px}.tp-tabv_t:hover+.tp-tabv_i{color:var(--cnt-bg-h)}.tp-tabv_t:has(*:focus)+.tp-tabv_i{color:var(--cnt-bg-f)}.tp-tabv_t:has(*:active)+.tp-tabv_i{color:var(--cnt-bg-a)}.tp-tabv.tp-v-disabled>.tp-tabv_i{opacity:.5}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv.tp-v-disabled::before{opacity:.5}.tp-tbiv_b{display:block;padding-left:calc(var(--cnt-hp) + 4px);padding-right:calc(var(--cnt-hp) + 4px);position:relative;width:100%}.tp-tbiv_b:disabled{opacity:.5}.tp-tbiv_b::before{background-color:var(--cnt-bg);content:"";inset:0 0 2px;pointer-events:none;position:absolute}.tp-tbiv_b:hover::before{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus::before{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active::before{background-color:var(--cnt-bg-a)}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--cnt-usz) + 4px);line-height:calc(var(--cnt-usz) + 4px);opacity:.5;overflow:hidden;position:relative;text-overflow:ellipsis}.tp-tbiv.tp-tbiv-sel .tp-tbiv_t{opacity:1}.tp-tbpv_c{padding-bottom:var(--cnt-vp);padding-left:4px;padding-top:var(--cnt-vp)}.tp-txtv{position:relative}.tp-txtv_i{padding-left:var(--bld-hp);padding-right:var(--bld-hp)}.tp-txtv.tp-txtv-fst .tp-txtv_i{border-bottom-right-radius:0;border-top-right-radius:0}.tp-txtv.tp-txtv-mid .tp-txtv_i{border-radius:0}.tp-txtv.tp-txtv-lst .tp-txtv_i{border-bottom-left-radius:0;border-top-left-radius:0}.tp-txtv.tp-txtv-num .tp-txtv_i{text-align:right}.tp-txtv.tp-txtv-drg .tp-txtv_i{opacity:.3}.tp-txtv_k{cursor:pointer;height:100%;left:calc(var(--bld-hp) - 5px);position:absolute;top:0;width:12px}.tp-txtv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";height:calc(var(--cnt-usz) - 4px);left:50%;margin-bottom:auto;margin-left:-1px;margin-top:auto;opacity:.1;position:absolute;top:0;transition:border-radius .1s,height .1s,transform .1s,width .1s;width:2px}.tp-txtv_k:hover::before,.tp-txtv.tp-txtv-drg .tp-txtv_k::before{opacity:1}.tp-txtv.tp-txtv-drg .tp-txtv_k::before{border-radius:50%;height:4px;transform:translateX(-1px);width:4px}.tp-txtv_g{bottom:0;display:block;height:8px;left:50%;margin:auto;overflow:visible;pointer-events:none;position:absolute;top:0;visibility:hidden;width:100%}.tp-txtv.tp-txtv-drg .tp-txtv_g{visibility:visible}.tp-txtv_gb{fill:none;stroke:var(--in-fg);stroke-dasharray:1}.tp-txtv_gh{fill:none;stroke:var(--in-fg)}.tp-txtv .tp-ttv{margin-left:6px;visibility:hidden}.tp-txtv.tp-txtv-drg .tp-ttv{visibility:visible}.tp-ttv{background-color:var(--in-fg);border-radius:var(--bld-br);color:var(--bs-bg);padding:2px 4px;pointer-events:none;position:absolute;transform:translate(-50%, -100%)}.tp-ttv::before{border-color:var(--in-fg) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);border-style:solid;border-width:2px;box-sizing:border-box;content:"";font-size:.9em;height:4px;left:50%;margin-left:-2px;position:absolute;top:100%;width:4px}.tp-rotv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);font-family:var(--bs-ff);font-size:11px;font-weight:500;line-height:1;text-align:left}.tp-rotv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br);border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br);padding-left:calc(4px + var(--cnt-usz) + var(--cnt-hp));text-align:center}.tp-rotv.tp-rotv-expanded .tp-rotv_b{border-bottom-left-radius:0;border-bottom-right-radius:0;transition-delay:0s;transition-duration:0s}.tp-rotv.tp-rotv-not>.tp-rotv_b{display:none}.tp-rotv_b:disabled .tp-rotv_m{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst.tp-fldv-expanded>.tp-fldv_b{transition-delay:0s;transition-duration:0s}.tp-rotv_c .tp-fldv.tp-v-vlst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst{margin-top:calc(-1*var(--cnt-vp))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst>.tp-fldv_b{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_i{border-bottom-left-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1*var(--cnt-vp))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_t{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-v-disabled,.tp-rotv .tp-v-disabled{pointer-events:none}.tp-rotv.tp-v-hidden,.tp-rotv .tp-v-hidden{display:none}.tp-sprv_r{background-color:var(--grv-fg);border-width:0;display:block;height:2px;margin:0;width:100%}.tp-sprv.tp-v-disabled .tp-sprv_r{opacity:.5}',plugins:[br,yr,Cr,De,Pr]})}}const Er=new Qt("4.0.5");export{W as BladeApi,Ft as ButtonApi,he as FolderApi,hr as ListBladeApi,Ae as ListInputBindingApi,kr as Pane,Qt as Semver,ur as SeparatorBladeApi,vr as SliderBladeApi,_s as SliderInputBindingApi,Ee as TabApi,Ve as TabPageApi,mr as TextBladeApi,Z as TpChangeEvent,Er as VERSION};
diff --git a/src/Audio/Audio.Bgm.js b/src/Audio/Bgm.js
similarity index 73%
rename from src/Audio/Audio.Bgm.js
rename to src/Audio/Bgm.js
index 564cf513..667bca27 100644
--- a/src/Audio/Audio.Bgm.js
+++ b/src/Audio/Bgm.js
@@ -1,4 +1,4 @@
-import { isAudioUnlocked } from './Audio.🔓.js';
+import { isAudioUnlocked } from "./🔓.js";
const bgmList = {};
let currentBGM = null;
@@ -6,18 +6,18 @@ let currentBGMName = null;
export function initBGM() {
for (let i = 0; i < 22; i++) {
- const audioElement = new Audio(`/assets/audio/bgm/M${i.toString().padStart(2, '0')}.mp3`);
+ const audioElement = new Audio(`/assets/audio/bgm/M${i.toString().padStart(2, "0")}.mp3`);
audioElement.loop = true;
audioElement.volume = 0.5;
- const trackName = `M${i.toString().padStart(2, '0')}`;
+ const trackName = `M${i.toString().padStart(2, "0")}`;
bgmList[trackName] = audioElement;
}
- console.log('BGM initialized');
+ console.log("BGM initialized");
}
export function playBGM(name) {
if (!isAudioUnlocked()) {
- console.error('Audio locked');
+ console.error("Audio locked");
return;
}
if (currentBGM) {
@@ -28,13 +28,13 @@ export function playBGM(name) {
currentBGM = bgmList[name];
if (currentBGM) {
currentBGM.play().catch(err => {
- console.warn('Play BGM failed:', err);
+ console.warn("Play BGM failed:", err);
});
}
}
export function getCurrentBGM() {
- console.log('Current BGM:', currentBGMName);
+ console.log("Current BGM:", currentBGMName);
return currentBGMName;
}
@@ -46,7 +46,7 @@ export function stopBGM() {
}
}
-document.addEventListener("PlayBgm", (e) => {
+document.addEventListener("PlayBgm", e => {
const { stringParams } = e.detail;
if (stringParams.length >= 1) {
playBGM(stringParams[0]);
diff --git a/src/Audio/Audio.Se.js b/src/Audio/Se.js
similarity index 67%
rename from src/Audio/Audio.Se.js
rename to src/Audio/Se.js
index 7717b62c..83e5fd3c 100644
--- a/src/Audio/Audio.Se.js
+++ b/src/Audio/Se.js
@@ -1,22 +1,22 @@
-import { isAudioUnlocked } from './Audio.🔓.js';
+import { isAudioUnlocked } from "./🔓.js";
const seList = {};
let currentSE = null;
export function initSE() {
for (let i = 1; i < 37; i++) {
- const audioElement = new Audio(`/assets/audio/se/SE_${i.toString().padStart(2, '0')}.mp3`);
+ const audioElement = new Audio(`/assets/audio/se/SE_${i.toString().padStart(2, "0")}.mp3`);
audioElement.loop = false;
audioElement.volume = 0.5;
- const trackName = `se_${i.toString().padStart(2, '0')}`;
+ const trackName = `se_${i.toString().padStart(2, "0")}`;
seList[trackName] = audioElement;
}
- console.log('SE initialized');
+ console.log("SE initialized");
}
export function playSE(name) {
if (!isAudioUnlocked()) {
- console.error('Audio locked');
+ console.error("Audio locked");
return;
}
if (currentSE) {
@@ -26,12 +26,12 @@ export function playSE(name) {
currentSE = seList[name];
if (currentSE) {
currentSE.play().catch(err => {
- console.warn('Play SE failed:', err);
+ console.warn("Play SE failed:", err);
});
}
}
-document.addEventListener("PlaySe", (e) => {
+document.addEventListener("PlaySe", e => {
if (window.skipping === true) return;
playSE(e.detail.stringParams[0]);
});
diff --git a/src/Audio/Audio.Voice.js b/src/Audio/Voice.js
similarity index 97%
rename from src/Audio/Audio.Voice.js
rename to src/Audio/Voice.js
index 20f008af..e72e8964 100644
--- a/src/Audio/Audio.Voice.js
+++ b/src/Audio/Voice.js
@@ -1,6 +1,6 @@
import { getCurrentBlockIndex, resolveLastInstruction } from "../Core/Events";
import { extractDialogData, GetCharacterVoiceName, GetVoiceEventName } from "../Utils/DialogHelper.js";
-import { isAudioUnlocked } from "./Audio.🔓.js";
+import { isAudioUnlocked } from "./🔓.js";
export function OnPlayDialog(instruction) {
if (instruction.params.length < 3) return;
diff --git "a/src/Audio/Audio.\360\237\224\223.js" "b/src/Audio/\360\237\224\223.js"
similarity index 100%
rename from "src/Audio/Audio.\360\237\224\223.js"
rename to "src/Audio/\360\237\224\223.js"
diff --git a/src/Core/GameSave.ts b/src/Core/GameSave.ts
index 65ed68ba..b3733878 100644
--- a/src/Core/GameSave.ts
+++ b/src/Core/GameSave.ts
@@ -1,4 +1,5 @@
-import { getCurrentBGM } from "../Audio/Audio.Bgm.js";
+import { Background } from "@/Graphics/Background";
+import { getCurrentBGM } from "../Audio/Bgm.js";
import { getCurrentEvent } from "./Events";
const SAVE_KEY_PREFIX = "alive_save_";
@@ -25,10 +26,10 @@ export function getCurrentGameState(): GameState {
const bgObject = backgroundScene.getObjectByName("BackgroundCG");
const portraitObject = backgroundScene.getObjectByName("PortraitCG");
- if (bgObject && bgObject.backgroundImageUrl) {
+ if (bgObject && bgObject instanceof Background) {
currentBg = bgObject.backgroundImageUrl;
}
- if (portraitObject && portraitObject.backgroundImageUrl) {
+ if (portraitObject && portraitObject instanceof Background) {
currentPortrait = portraitObject.backgroundImageUrl;
}
}
diff --git a/src/Core/NotUnityEngine.ts b/src/Core/NotUnityEngine.ts
index eb2b8445..b7b69a98 100644
--- a/src/Core/NotUnityEngine.ts
+++ b/src/Core/NotUnityEngine.ts
@@ -1,4 +1,4 @@
-import type { ISceneElement } from "@/Graphics/Graphics.SceneElement";
+import type { ISceneElement } from "@/Graphics/SceneElement";
import type { IScene } from "@/Scene/Scene";
import $ from "jquery";
diff --git a/src/Debug/EnginePane.js b/src/Debug/EnginePane.js
index fb7656e8..23799a85 100644
--- a/src/Debug/EnginePane.js
+++ b/src/Debug/EnginePane.js
@@ -1,147 +1,148 @@
-import { Pane } from '../../lib/tweakpane-4.0.5.min.js';
-import { createPaneContainer } from './DebugPane.js';
+import { createPaneContainer } from "./DebugPane.js";
let engineInstance = null;
const pane = new Pane({
- title: 'Game Engine',
+ title: "Game Engine",
container: createPaneContainer(),
});
// Function to initialize the engine pane with a game engine instance
export function initEnginePane(engine) {
engineInstance = engine;
-
+
// Engine State folder
const stateFolder = pane.addFolder({
- title: 'Engine State',
+ title: "Engine State",
expanded: true,
});
-
- stateFolder.addBinding(engine, 'running', {
+
+ stateFolder.addBinding(engine, "running", {
readonly: true,
- label: 'Running',
+ label: "Running",
});
-
- stateFolder.addBinding(engine, 'deltaTime', {
+
+ stateFolder.addBinding(engine, "deltaTime", {
readonly: true,
- label: 'Delta Time',
- view: 'graph',
+ label: "Delta Time",
+ view: "graph",
min: 0,
max: 0.1,
});
-
- stateFolder.addBinding(engine, 'fps', {
- label: 'Target FPS',
- min: 1,
- max: 144,
- step: 1,
- }).on('change', (ev) => {
- engine.frameTime = 1000 / ev.value;
- });
-
+
+ stateFolder
+ .addBinding(engine, "fps", {
+ label: "Target FPS",
+ min: 1,
+ max: 144,
+ step: 1,
+ })
+ .on("change", ev => {
+ engine.frameTime = 1000 / ev.value;
+ });
+
// Scene Management folder
const sceneFolder = pane.addFolder({
- title: 'Scene Management',
+ title: "Scene Management",
expanded: true,
});
-
+
const sceneInfo = {
sceneCount: 0,
- topScene: 'None',
- scenePaths: '',
+ topScene: "None",
+ scenePaths: "",
};
-
- sceneFolder.addBinding(sceneInfo, 'sceneCount', {
+
+ sceneFolder.addBinding(sceneInfo, "sceneCount", {
readonly: true,
- label: 'Scene Count',
+ label: "Scene Count",
});
-
- sceneFolder.addBinding(sceneInfo, 'topScene', {
+
+ sceneFolder.addBinding(sceneInfo, "topScene", {
readonly: true,
- label: 'Top Scene',
+ label: "Top Scene",
});
-
- sceneFolder.addBinding(sceneInfo, 'scenePaths', {
+
+ sceneFolder.addBinding(sceneInfo, "scenePaths", {
readonly: true,
multiline: true,
rows: 3,
- label: 'Scene Stack',
+ label: "Scene Stack",
});
-
+
// Update scene info periodically
setInterval(() => {
if (engineInstance) {
sceneInfo.sceneCount = engineInstance.scenes.length;
- sceneInfo.topScene = engineInstance.getTopScene()?.name || 'None';
- sceneInfo.scenePaths = engineInstance.scenePaths.join('\n') || 'Empty';
+ sceneInfo.topScene = engineInstance.getTopScene()?.name || "None";
+ sceneInfo.scenePaths = engineInstance.scenePaths.join("\n") || "Empty";
}
}, 200);
-
+
// Controls folder
const controlsFolder = pane.addFolder({
- title: 'Controls',
+ title: "Controls",
expanded: true,
});
-
+
const sceneControl = {
- selectedScene: 'WINDOW',
+ selectedScene: "WINDOW",
};
-
- controlsFolder.addBinding(sceneControl, 'selectedScene', {
- label: 'Scene',
+
+ controlsFolder.addBinding(sceneControl, "selectedScene", {
+ label: "Scene",
options: {
- WINDOW: 'WINDOW',
- GALLERY: 'GALLERY',
- GALLERY_YUZUKI: 'GALLERY_YUZUKI',
- GALLERY_YURIKO: 'GALLERY_YURIKO',
- GALLERY_KUON: 'GALLERY_KUON',
- GALLERY_HARUNA: 'GALLERY_HARUNA',
- GALLERY_ETC: 'GALLERY_ETC',
- START: 'START',
- SYSTEM: 'SYSTEM',
- BACKGROUND: 'BACKGROUND',
+ WINDOW: "WINDOW",
+ GALLERY: "GALLERY",
+ GALLERY_YUZUKI: "GALLERY_YUZUKI",
+ GALLERY_YURIKO: "GALLERY_YURIKO",
+ GALLERY_KUON: "GALLERY_KUON",
+ GALLERY_HARUNA: "GALLERY_HARUNA",
+ GALLERY_ETC: "GALLERY_ETC",
+ START: "START",
+ SYSTEM: "SYSTEM",
+ BACKGROUND: "BACKGROUND",
},
});
-
+
const pushSceneBtn = controlsFolder.addButton({
- title: 'Push Scene',
+ title: "Push Scene",
});
- pushSceneBtn.on('click', async () => {
+ pushSceneBtn.on("click", async () => {
if (engineInstance && sceneControl.selectedScene) {
const sceneName = sceneControl.selectedScene;
-
+
// Dynamically import and call the appropriate scene loader
try {
- if (sceneName === 'WINDOW') {
- const { pushDialogWindow } = await import('../Scripts/WINDOW/WINDOW.js');
+ if (sceneName === "WINDOW") {
+ const { pushDialogWindow } = await import("../Scripts/WINDOW/WINDOW.js");
await pushDialogWindow();
- } else if (sceneName === 'GALLERY') {
- const { initGallery } = await import('../Scripts/GALLERY.js');
+ } else if (sceneName === "GALLERY") {
+ const { initGallery } = await import("../Scripts/GALLERY.js");
await initGallery();
- } else if (sceneName === 'START') {
- const { loadStartScene } = await import('../Scripts/START.js');
+ } else if (sceneName === "START") {
+ const { loadStartScene } = await import("../Scripts/START.js");
await loadStartScene();
- } else if (sceneName === 'SYSTEM') {
- const { pushPauseScreen } = await import('../Scripts/SYSTEM.js');
+ } else if (sceneName === "SYSTEM") {
+ const { pushPauseScreen } = await import("../Scripts/SYSTEM.js");
await pushPauseScreen();
- } else if (sceneName === 'BACKGROUND') {
- const { loadBackgroundScene } = await import('../Scripts/BACKGROUND.js');
+ } else if (sceneName === "BACKGROUND") {
+ const { loadBackgroundScene } = await import("../Scripts/BACKGROUND.js");
await loadBackgroundScene();
- } else if (sceneName.startsWith('GALLERY_')) {
- const { gotoCharacterGallery } = await import('../Scripts/GALLERY.js');
- await gotoCharacterGallery(sceneName.replace('GALLERY_', ''));
+ } else if (sceneName.startsWith("GALLERY_")) {
+ const { gotoCharacterGallery } = await import("../Scripts/GALLERY.js");
+ await gotoCharacterGallery(sceneName.replace("GALLERY_", ""));
}
} catch (error) {
console.error(`Failed to push scene ${sceneName}:`, error);
}
}
});
-
+
const clearScenesBtn = controlsFolder.addButton({
- title: 'Clear All Scenes',
+ title: "Clear All Scenes",
});
- clearScenesBtn.on('click', () => {
+ clearScenesBtn.on("click", () => {
if (engineInstance) {
engineInstance.clearAllScenes();
}
diff --git a/src/Debug/SceneGraphPane.js b/src/Debug/SceneGraphPane.js
index 1d257412..cd2bb911 100644
--- a/src/Debug/SceneGraphPane.js
+++ b/src/Debug/SceneGraphPane.js
@@ -1,6 +1,5 @@
import * as d3 from "d3";
import $ from "jquery";
-import { Pane } from "../../lib/tweakpane-4.0.5.min.js";
import { execUntilNextLine } from "../Core/Events";
import { createPaneContainer } from "./DebugPane.js";
diff --git a/src/Graphics/Graphics.AnimatedSceneElement.js b/src/Graphics/AnimatedSceneElement.ts
similarity index 87%
rename from src/Graphics/Graphics.AnimatedSceneElement.js
rename to src/Graphics/AnimatedSceneElement.ts
index a5e6f88a..f4f48fee 100644
--- a/src/Graphics/Graphics.AnimatedSceneElement.js
+++ b/src/Graphics/AnimatedSceneElement.ts
@@ -1,7 +1,23 @@
-import { SceneElement } from "./Graphics.SceneElement";
+import type { SceneElementData } from "@/Scene/SceneData";
+import { SceneElement } from "./SceneElement";
+
+export interface AnimatedSceneElementData extends SceneElementData {
+ fps?: number;
+ loop?: boolean;
+ autoPlay?: boolean;
+ onComplete?: () => void;
+}
export class AnimatedSceneElement extends SceneElement {
- constructor(data, parent = null, scene = null) {
+ fps: number;
+ loop: boolean;
+ autoPlay: boolean;
+ currentFrame: number = 0;
+ isPlaying: boolean = false;
+ frameTime: number;
+ elapsedTime: number = 0;
+ onComplete: (() => void) | null;
+ constructor(data: AnimatedSceneElementData, parent = null, scene = null) {
super(data, parent, scene);
// Animation properties
@@ -10,10 +26,7 @@ export class AnimatedSceneElement extends SceneElement {
this.autoPlay = data.autoPlay !== false;
// Animation state
- this.currentFrame = 0;
- this.isPlaying = false;
this.frameTime = 1 / this.fps;
- this.elapsedTime = 0;
this.onComplete = data.onComplete || null;
}
@@ -42,7 +55,7 @@ export class AnimatedSceneElement extends SceneElement {
this.setFrame(0);
}
- setFrame(frameIndex) {
+ setFrame(frameIndex: number) {
if (this.children.length === 0) return;
// Clamp frame index
@@ -116,7 +129,7 @@ export class AnimatedSceneElement extends SceneElement {
this.setFrame(prevIndex);
}
- update(deltaTime) {
+ update(deltaTime: number) {
super.update(deltaTime);
if (!this.isPlaying || this.children.length === 0) return;
diff --git a/src/Graphics/Graphics.Background.js b/src/Graphics/Background.ts
similarity index 72%
rename from src/Graphics/Graphics.Background.js
rename to src/Graphics/Background.ts
index d6943e51..4cde532d 100644
--- a/src/Graphics/Graphics.Background.js
+++ b/src/Graphics/Background.ts
@@ -1,14 +1,33 @@
+import type { IScene } from "@/Scene/Scene";
+import type { SceneElementData } from "@/Scene/SceneData";
import $ from "jquery";
-import { SceneElement, preserveLayerIndex } from "./Graphics.SceneElement";
+import { SceneElement, preserveLayerIndex } from "./SceneElement";
+
+export interface BackgroundData extends SceneElementData {
+ isBackground?: boolean;
+ backgroundSize?: string;
+ backgroundPosition?: string;
+ backgroundRepeat?: string;
+ transition?: string | null;
+ scrollSpeedX?: number;
+ scrollSpeedY?: number;
+}
export class Background extends SceneElement {
- constructor(data, parent = null, scene = null) {
+ backgroundId: string;
+ backgroundImageUrl: string | null = null;
+ backgroundSize: string;
+ backgroundPosition: string;
+ backgroundRepeat: string;
+ transition: string | null;
+ scrollSpeed: { x: number; y: number };
+ scrollOffset: { x: number; y: number } = { x: 0, y: 0 };
+
+ constructor(data: BackgroundData, parent: SceneElement | null = null, scene: IScene | null = null) {
data.isBackground = true;
-
super(data, parent, scene);
this.backgroundId = `bg-${Math.random().toString(36).substr(2, 9)}`;
- this.backgroundImageUrl = null;
this.backgroundSize = data.backgroundSize || "auto";
this.backgroundPosition = data.backgroundPosition || "center";
this.backgroundRepeat = data.backgroundRepeat || "no-repeat";
@@ -19,7 +38,6 @@ export class Background extends SceneElement {
x: data.scrollSpeedX || 0,
y: data.scrollSpeedY || 0,
};
- this.scrollOffset = { x: 0, y: 0 };
this.recreateDOMAsBackground();
}
@@ -44,12 +62,16 @@ export class Background extends SceneElement {
super.syncDom();
}
- async loadImage(path) {
+ async loadImage(path: string) {
+ if (!this.scene) {
+ console.error("Cannot load background image: Scene is null");
+ return;
+ }
const fullImagePath = `/assets/scenes/${this.scene.name}/${path}.webp`;
this.updateBackgroundImage(fullImagePath);
}
- updateBackgroundImage(backgroundImageUrl = null) {
+ updateBackgroundImage(backgroundImageUrl: string | null = null) {
if (!this.domElement) return;
this.backgroundImageUrl = backgroundImageUrl;
if (!backgroundImageUrl) this.backgroundImageUrl = "";
@@ -68,7 +90,7 @@ export class Background extends SceneElement {
this.updateScrollPosition();
}
- update(deltaTime) {
+ update(deltaTime: number) {
// Handle scroll offset
if ((this.scrollSpeed?.x || 0) !== 0 || (this.scrollSpeed?.y || 0) !== 0) {
if (isNaN(this.scrollOffset.x) || isNaN(this.scrollOffset.y)) {
@@ -83,7 +105,7 @@ export class Background extends SceneElement {
}
}
-export function toBackground(element, options = {}) {
+export function toBackground(element: SceneElement, options: Partial = {}) {
const {
backgroundSize = "cover",
backgroundPosition = "center",
@@ -109,7 +131,7 @@ export function toBackground(element, options = {}) {
};
const background = new Background(backgroundData, element.parent, element.scene);
- background.loadImage(element.sceneData.path);
+ if (element.sceneData?.path) background.loadImage(element.sceneData.path);
// Preserve the layer index in the parent's children array
preserveLayerIndex(element, background);
diff --git a/src/Graphics/Graphics.Button.js b/src/Graphics/Button.ts
similarity index 74%
rename from src/Graphics/Graphics.Button.js
rename to src/Graphics/Button.ts
index 992ee22e..74dda92c 100644
--- a/src/Graphics/Graphics.Button.js
+++ b/src/Graphics/Button.ts
@@ -1,9 +1,27 @@
+import type { IScene } from "@/Scene/Scene";
+import type { SceneElementData } from "@/Scene/SceneData";
import $ from "jquery";
-import { FocusableElement } from "./Graphics.FocusableElement.js";
-import { preserveLayerIndex } from "./Graphics.SceneElement";
+import { FocusableElement } from "./FocusableElement.js";
+import { preserveLayerIndex, type SceneElement } from "./SceneElement.js";
+
+export interface ButtonData extends SceneElementData {
+ isButton?: boolean;
+ transforms: Array<[number, number, number, number]>;
+ images: string[];
+ z?: number;
+ cursor?: string;
+ callback?: () => void;
+}
export class Button extends FocusableElement {
- constructor(data, parent = null, scene) {
+ transforms: Array<[number, number, number, number]>;
+ images: string[];
+ onClickHandler: (() => void) | null;
+ buttonId: string;
+ cursor: string;
+ isButton: boolean = true;
+
+ constructor(data: ButtonData, parent: SceneElement | null = null, scene: IScene | null = null) {
data.isButton = true;
super(data, parent, scene);
@@ -15,7 +33,6 @@ export class Button extends FocusableElement {
this.images = data.images;
this.onClickHandler = null;
this.buttonId = `btn-${Math.random().toString(36).substr(2, 9)}`;
- this.isButton = true;
this.transform.z = data.z || 0;
this.cursor = data.cursor || "pointer";
@@ -25,16 +42,16 @@ export class Button extends FocusableElement {
}
recreateDOMAsButton() {
- let classNames = "";
+ let classNames: string[] = [];
if (this.domElement) {
- classNames = $(this.domElement).attr("class").split(" ");
+ classNames = $(this.domElement)?.attr("class")?.split(" ") || [];
$(this.domElement).remove();
}
this.domElement = $("