summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNick Coutsos <[email protected]>2023-06-08 17:07:29 -0400
committerNick Coutsos <[email protected]>2023-06-08 17:07:29 -0400
commita9ee0fef6c89ccaa9d80e85ef6106302c323ee28 (patch)
tree10cbec5c946c8460b299f922902dde03eca0d548
parentb4434987b75c351b187aeb10a242d083c814387b (diff)
downloadkeymap-editor-a9ee0fef6c89ccaa9d80e85ef6106302c323ee28.tar.gz
keymap-editor-a9ee0fef6c89ccaa9d80e85ef6106302c323ee28.zip
Toggle key modifiers by key press
-rw-r--r--6849.30183c5e1965724c1b6d.js2
-rw-r--r--6849.30183c5e1965724c1b6d.js.map1
-rw-r--r--8381.171cf958a1d260f201e4.js2
-rw-r--r--8381.171cf958a1d260f201e4.js.map1
-rw-r--r--8573.23f7e6791fc94caba204.js2
-rw-r--r--8573.23f7e6791fc94caba204.js.map1
-rw-r--r--index.html2
-rw-r--r--runtime.468f843980ecae0d5a57.js2
-rw-r--r--runtime.468f843980ecae0d5a57.js.map1
9 files changed, 13 insertions, 1 deletions
diff --git a/6849.30183c5e1965724c1b6d.js b/6849.30183c5e1965724c1b6d.js
new file mode 100644
index 0000000..ac53e6a
--- /dev/null
+++ b/6849.30183c5e1965724c1b6d.js
@@ -0,0 +1,2 @@
+(self.webpackChunkapp=self.webpackChunkapp||[]).push([[6849],{97494:function(n,e,r){"use strict";r.d(e,{Z:function(){return w}});var t=r(45697),o=r.n(t),i=r(93379),a=r.n(i),l=r(7795),s=r.n(l),u=r(90569),c=r.n(u),d=r(3565),A=r.n(d),p=r(19216),f=r.n(p),y=r(44589),b=r.n(y),g=r(33988),h={};h.styleTagTransform=b(),h.setAttributes=A(),h.insert=c().bind(null,"head"),h.domAPI=s(),h.insertStyleElement=f(),a()(g.Z,h);var m=g.Z&&g.Z.locals?g.Z.locals:void 0,v=r(85893);function x(n){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},x(n)}var C=["validator","required","value"];function E(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function j(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?E(Object(r),!0).forEach((function(e){k(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):E(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function k(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==x(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==x(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===x(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function w(n){var e=n.validator,r=n.required,t=void 0!==r&&r,o=n.value,i=void 0===o?"":o,a=function(n,e){if(null==n)return{};var r,t,o=function(n,e){if(null==n)return{};var r,t,o={},i=Object.keys(n);for(t=0;t<i.length;t++)r=i[t],e.indexOf(r)>=0||(o[r]=n[r]);return o}(n,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(t=0;t<i.length;t++)r=i[t],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(n,r)&&(o[r]=n[r])}return o}(n,C),l=e(i)||!i&&t&&"cannot be empty";return(0,v.jsxs)("span",{className:m.wrapper,children:[(0,v.jsx)("input",j({type:"text",value:i},a)),l&&(0,v.jsx)("span",{className:m.error,children:l})]})}w.propTypes={value:o().any.isRequired,required:o().bool,validator:o().func}},32732:function(n,e,r){"use strict";r.d(e,{Z:function(){return I}});var t=r(45697),o=r.n(t),i=r(78718),a=r.n(i),l=r(26523),s=r(95872);function u(n){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(n)}function c(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function d(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?c(Object(r),!0).forEach((function(e){A(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function A(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==u(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==u(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===u(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}var p={x:o().number.isRequired,y:o().number.isRequired},f={a:o().number,rx:o().number,ry:o().number},y={u:o().number,h:o().number},b=o().shape(d(d(d({},p),f),y)),g=o().arrayOf(b),h=r(85893);function m(n){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},m(n)}var v=["keyLayout","children"];function x(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function C(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?x(Object(r),!0).forEach((function(e){E(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):x(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function E(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==m(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==m(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===m(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}var j=function(n){return a()(n,["x","y"])},k=function(n){return{x:n.rx,y:n.ry,a:n.r}},w=function(n){var e=n.w,r=void 0===e?1:e,t=n.u,o=void 0===t?r:t,i=n.h;return{u:o,h:void 0===i?1:i}};function B(n){var e=n.keyLayout,r=n.children,t=function(n,e){if(null==n)return{};var r,t,o=function(n,e){if(null==n)return{};var r,t,o={},i=Object.keys(n);for(t=0;t<i.length;t++)r=i[t],e.indexOf(r)>=0||(o[r]=n[r]);return o}(n,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(t=0;t<i.length;t++)r=i[t],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(n,r)&&(o[r]=n[r])}return o}(n,v),o=j(e),i=k(e),a=w(e),u=(0,l.Pi)(o,a,i);return(0,h.jsx)("div",C(C({className:s.Z.placer,style:u,"data-u":a.u,"data-h":a.h},t),{},{children:r}))}B.propTypes={scale:o().number,keyLayout:b.isRequired},B.defaultProps={scale:1};var S=B;function O(n){var e=n.layout,r=n.renderKey,t=n.scale;return(0,h.jsx)("div",{style:{position:"relative",transform:"scale(".concat(t,")"),transformOrigin:0},children:e.map((function(n,e){return(0,h.jsx)(S,{keyLayout:n,children:r({index:e,keyLayout:n})},e)}))})}O.propTypes={layout:g.isRequired,renderKey:o().func.isRequired,scale:o().number},O.defaultProps={scale:1};var I=O},86849:function(n,e,r){"use strict";r.r(e),r.d(e,{default:function(){return ie}});var t=r(67294),o=r(95998),i=r(45697),a=r.n(i),l=r(80736),s=r(41051),u=r(93379),c=r.n(u),d=r(7795),A=r.n(d),p=r(90569),f=r.n(p),y=r(3565),b=r.n(y),g=r(19216),h=r.n(g),m=r(44589),v=r.n(m),x=r(56634),C={};C.styleTagTransform=v(),C.setAttributes=b(),C.insert=f().bind(null,"head"),C.domAPI=A(),C.insertStyleElement=h(),c()(x.Z,C);var E=x.Z&&x.Z.locals?x.Z.locals:void 0,j=r(85893);function k(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function w(n){var e,r,o=n.actions,i=(e=(0,t.useState)(!1),r=2,function(n){if(Array.isArray(n))return n}(e)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],s=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);s=!0);}catch(n){u=!0,o=n}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,r)||function(n,e){if(n){if("string"==typeof n)return k(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?k(n,e):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=i[0],l=i[1],u=(0,t.useRef)(),c=(0,t.useCallback)((function(n){u.current&&!u.current.contains(n.target)&&l(!1)}),[u,l]);return(0,t.useEffect)((function(){return document.body.addEventListener("click",c),function(){return document.body.removeEventListener("click",c)}}),[c]),(0,j.jsxs)("div",{ref:u,className:[E.menu,a&&E.open].join(" "),children:[(0,j.jsx)("p",{onClick:function(){return l(!a)},children:(0,j.jsx)(s.Z,{name:"ellipsis"})}),(0,j.jsx)("ul",{children:o.map((function(n,e){return(0,j.jsx)("li",{onClick:function(){return function(n){l(!1),n()}(n.callback)},children:n.content},e)}))})]})}function B(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function S(n){var e,r=n.layerIndex,i=n.additionalActions,a=void 0===i?[]:i,s=(0,o.I0)(),u=(0,t.useMemo)((function(){return{transparentToKeypress:function(){return s((0,l.c7)({layerIndex:r}))},transparentToNone:function(){return s((0,l.sT)({layerIndex:r}))},noneToKeypress:function(){return s((0,l.UH)({layerIndex:r}))},noneToTransparent:function(){return s((0,l.v1)({layerIndex:r}))},emptyKeypressToTransparent:function(){return s((0,l.QR)({layerIndex:r}))},emptyKeypressToNone:function(){return s((0,l.En)({layerIndex:r}))}}}),[s,r]);return(0,j.jsx)(w,{actions:[].concat((e=a,function(n){if(Array.isArray(n))return B(n)}(e)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(e)||function(n,e){if(n){if("string"==typeof n)return B(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?B(n,e):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),[{callback:u.transparentToKeypress,content:(0,j.jsxs)(j.Fragment,{children:["Convert ",(0,j.jsx)("code",{children:"&trans"})," to ",(0,j.jsx)("code",{children:"&kp"})]})},{callback:u.transparentToNone,content:(0,j.jsxs)(j.Fragment,{children:["Convert ",(0,j.jsx)("code",{children:"&trans"})," to ",(0,j.jsx)("code",{children:"&none"})]})},{callback:u.noneToKeypress,content:(0,j.jsxs)(j.Fragment,{children:["Convert ",(0,j.jsx)("code",{children:"&none"})," to ",(0,j.jsx)("code",{children:"&kp"})]})},{callback:u.noneToTransparent,content:(0,j.jsxs)(j.Fragment,{children:["Convert ",(0,j.jsx)("code",{children:"&none"})," to ",(0,j.jsx)("code",{children:"&trans"})]})},{callback:u.emptyKeypressToTransparent,content:(0,j.jsxs)(j.Fragment,{children:["Convert ",(0,j.jsx)("code",{children:"&kp ⦸"})," to ",(0,j.jsx)("code",{children:"&trans"})]})},{callback:u.emptyKeypressToNone,content:(0,j.jsxs)(j.Fragment,{children:["Convert ",(0,j.jsx)("code",{children:"&kp ⦸"})," to ",(0,j.jsx)("code",{children:"&none"})]})}])})}w.propTypes={actions:a().arrayOf(a().shape({callback:a().func.isRequired,content:a().oneOfType([a().node,a().string]).isRequired})).isRequired},S.propTypes={layerIndex:a().number.isRequired,additionalActions:a().arrayOf(a().shape({callback:a().func.isRequired,content:a().oneOfType([a().node,a().string]).isRequired}))};var O=r(32732),I=r(82607),T=r(94184),Z=r.n(T),D=r(18029),P=r.n(D),U=r(64261),K=r(96186),Y=r(83197),q=r(91118),N=r(27213),L=r(98697),R=r(61953),W=r(98588),_=r(52156),z=r(4803),V=r(48118),X=r(20817);function Q(n){return Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Q(n)}function M(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function G(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?M(Object(r),!0).forEach((function(e){H(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):M(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function H(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==Q(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==Q(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===Q(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function F(n){var e=n.keyPositions,r=n.scale,o=void 0===r?.2:r,i=n.styleOverrides,a=void 0===i?{}:i,l=(0,t.useContext)(X.V),s=l.layout,u=l.wrapperDimensions,c=(0,t.useMemo)((function(){return(0,z.fI)(u,{scale:o,overrides:G({position:"relative",pointerEvents:"none",padding:0,margin:0},a)})}),[o,u,a]);return(0,j.jsx)("div",{style:c,children:(0,j.jsx)(O.Z,{layout:s,bindings:[],scale:o,renderKey:function(n){var r,t=n.index;return(0,j.jsx)(q.Z,{onClick:function(){},selectable:!1,themeClass:Z()((r={},H(r,V.Z.key,!0),H(r,V.Z.highlight,e.includes(t)),r))})}})})}var J=r(2968),$=r(27926);function nn(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],s=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);s=!0);}catch(n){u=!0,o=n}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(n,e)||function(n,e){if(n){if("string"==typeof n)return en(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?en(n,e):void 0}}(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function en(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}var rn="https://github.com/nickcoutsos/keymap-editor/discussions/109";function tn(n){var e=n.binding,r=n.bindingIndex,o=n.onUpdate,i=n.onCancel,a=n.context,l=void 0===a?"none":a,u=nn((0,t.useState)(e),2),c=u[0],d=u[1],A=nn((0,L.Z)(c,void 0,d),2),p=A[0],f=p.bindTree,y=p.behavior,b=p.behaviorParams,g=p.editing,h=p.invalid,m=A[1],v=m.clearEditing,x=m.handleUpdateBindValue,C=m.selectNodeForEditing,E=(0,t.useCallback)((function(){o(c)}),[c,o]);return(0,j.jsxs)(U.Z,{onDismiss:i,children:[(0,j.jsx)("div",{style:{position:"absolute",top:0,background:"var(--bg)",borderRadius:"30px",boxShadow:"0px 10px 25px rgba(0, 0, 0, 0.4)",fontSize:"80%",width:"541px",padding:"0 20px",margin:"20px 0"},children:(0,j.jsxs)("p",{style:{margin:"5px 0"},children:[(0,j.jsx)(s.Z,{name:"bullhorn"})," I'm trying out a new way of editing bindings, if you hate it then ",(0,j.jsx)(J.Z,{href:rn,external:!0,children:"please let me know"}),"!"]})}),(0,j.jsxs)(K.Z,{dismissText:null,style:{width:"500px"},children:[(0,j.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",borderBottom:"1px solid var(--key-bg-base)",paddingBottom:"20px",gap:"40px"},children:[(0,j.jsx)(F,{keyPositions:[r],styleOverrides:{display:"inline-block",padding:"3px",borderRadius:"3px"},scale:.15}),(0,j.jsx)(s.Z,{name:"arrow-right"}),(0,j.jsx)(q.Z,{selectable:!1,style:{pointerEvents:"none"},children:(0,j.jsx)(N.Z,{context:l,value:c.value,params:c.params,onUpdate:function(){}})})]}),(0,j.jsx)("h2",{children:"Set Key Binding"}),(0,j.jsxs)("h3",{children:["Behavior ",(0,j.jsx)("div",{style:{display:"inline-block",fontSize:"initial",fontWeight:"normal"},children:(0,j.jsx)("span",{className:R.Z.extracted,children:(0,j.jsx)("span",{className:R.Z.param,children:(0,j.jsx)(_.ZP,{slot:"behaviour",node:f,expanded:!0,onSelect:C})})})})]}),(0,j.jsx)(on,{slots:b,node:f,onSelect:C}),g&&(0,j.jsx)(W.Z,{node:g.node,type:g.type,behaviour:y,context:l,prompt:g.prompt,searchKey:"code",onSelect:x,onCancel:v}),(0,j.jsxs)("div",{style:{textAlign:"center"},children:[(0,j.jsx)($.Z,{onClick:E,disabled:h,children:"Okay"}),(0,j.jsx)($.Z,{onClick:i,secondary:!0,children:"Cancel"})]})]})]})}function on(n){var e=n.slots,r=n.node,t=n.onSelect,o={listStyleType:1===e.length?"none":void 0};return 0===e.length?null:(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)("h3",{children:"Parameters"}),(0,j.jsx)("ol",{style:o,children:e.map((function(n,e){return"placeholder"!==n.type&&(0,j.jsx)(an,{slot:n,param:r.params[e],onSelect:t},e)}))})]})}function an(n){var e=n.slot,r=n.param,o=n.onSelect,i=(0,t.useMemo)((function(){var n=e.raw?"Raw value":e.name||e,r={code:"key-code"}[n]||n;return P()(r)}),[e]);return(0,j.jsxs)("li",{style:{margin:"15px 0"},children:[(0,j.jsx)("label",{children:i}),(0,j.jsx)("span",{className:Z()(R.Z.extracted),children:(0,j.jsx)(Y.N,{slot:e,node:r,onSelect:o,expanded:!0})})]})}function ln(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function sn(n){var e,r,i=n.layout,a=n.activeLayer,s=(0,o.I0)(),u=(0,o.v9)(l.vl)[a].properties.bindings,c=(e=(0,t.useState)(null),r=2,function(n){if(Array.isArray(n))return n}(e)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],s=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);s=!0);}catch(n){u=!0,o=n}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,r)||function(n,e){if(n){if("string"==typeof n)return ln(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ln(n,e):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=c[0],A=c[1],p=(0,t.useCallback)((function(n,e){s((0,l.V6)({layerIndex:a,bindIndex:n,binding:e}))}),[s,a]);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(O.Z,{layout:i,renderKey:function(n){var e,r,t=n.index,o=n.keyLayout;return u.parsed[t]&&(0,j.jsx)(I.Z,{label:o.label,value:null===(e=u.parsed[t])||void 0===e?void 0:e.value,params:null===(r=u.parsed[t])||void 0===r?void 0:r.params,noBindingClick:!0,keyWrapperProps:{className:R.Z.unified,onClick:function(n){n.stopPropagation(),A(t)}},onUpdate:function(n){return p(t,n)}})}}),null!==d&&(0,j.jsx)(tn,{binding:u.parsed[d],bindingIndex:d,onCancel:function(){return A(null)},onUpdate:function(n){p(d,n),A(null)}})]})}tn.propTypes={context:a().string,hideBehaviour:a().bool.isRequired,onUpdate:a().func.isRequired},tn.defaultProps={hideBehaviour:!1};var un=r(67069);function cn(n){var e=n.context,r=n.binding,t=n.onUpdate,o=r.value,i=r.params;return(0,j.jsx)(q.Z,{themeClass:R.Z.encoder2,children:(0,j.jsx)(N.Z,{context:e,value:o,params:i,onUpdate:t})})}cn.propTypes={binding:un.dH,onUpdate:a().func.isRequired};var dn=cn,An=r(59500),pn={};pn.styleTagTransform=v(),pn.setAttributes=b(),pn.insert=f().bind(null,"head"),pn.domAPI=A(),pn.insertStyleElement=h(),c()(An.Z,pn);var fn=An.Z&&An.Z.locals?An.Z.locals:void 0;function yn(n){var e=n.layerIndex,r=n.layer,t=n.sensors,i=(0,o.I0)(),a=(r.properties["sensor-bindings"]||{}).parsed,s=void 0===a?[]:a;function u(n,r){i((0,l.zi)({layerIndex:e,sensorIndex:n,bindings:r}))}return(0,j.jsxs)("div",{style:{margin:"0 0 30px"},children:[(0,j.jsx)("h3",{children:"Sensor bindings"}),(0,j.jsx)("div",{style:{display:"flex",flexDirection:"row",gap:"25px"},children:t.map((function(n,e){return(0,j.jsx)(bn,{index:e,sensor:n,binding:s[e],canAdd:void 0===s[e]&&s.length===e,canDelete:void 0!==s[e]&&s.length===e+1,onUpdate:u},e)}))})]})}function bn(n){var e=n.sensor,r=n.binding,o=n.index,i=n.onUpdate,a=n.canAdd,l=n.canDelete,u=e.label||e.identifier,c=(null==r?void 0:r.value)||"&inc_dec_kp",d=(null==r?void 0:r.params)||[{value:0,_isPlaceholder:!0,params:[]},{value:0,_isPlaceholder:!0,params:[]}],A=(0,t.useCallback)((function(){i(o,void 0)}),[o,i]),p=(0,t.useCallback)((function(){i(o,{value:"&inc_dec_kp",params:[{value:0,_isPlaceholder:!0,params:[]},{value:0,_isPlaceholder:!0,params:[]}]})}),[o,i]);return(0,j.jsxs)("div",{className:fn.sensor,"data-unbound":!r,children:[(0,j.jsxs)("label",{style:{fontVariant:"small-caps",fontSize:"90%"},children:[(0,j.jsx)("code",{children:u}),l&&(0,j.jsx)(s.Z,{name:"trash-can",title:"Remove sensor binding from this layer",className:fn.deleteSensorBinding,onClick:A})]}),r&&(0,j.jsx)(dn,{context:"encoders",binding:r||{value:c,params:d},onUpdate:function(n){return i(o,n)}}),a&&(0,j.jsx)(q.Z,{onClick:p,title:"Add sensor binding to this layer",themeClass:Z()(R.Z.encoder2,fn.addSensorBinding),children:(0,j.jsx)(s.Z,{name:"add"})})]})}var gn=r(97494),hn=r(62417);function mn(n){return mn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},mn(n)}function vn(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function xn(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?vn(Object(r),!0).forEach((function(e){Cn(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):vn(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function Cn(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==mn(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==mn(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===mn(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function En(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}var jn=function(n){var e,r,i,a=n.layerIndex,s=n.onClose,u=(0,o.I0)(),c=(0,o.v9)(l.vl)[a],d=(r=(0,t.useState)({name:c.name,label:(null===(e=c.properties.label)||void 0===e?void 0:e.parsed)||""}),i=2,function(n){if(Array.isArray(n))return n}(r)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],s=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);s=!0);}catch(n){u=!0,o=n}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(r,i)||function(n,e){if(n){if("string"==typeof n)return En(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?En(n,e):void 0}}(r,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),A=d[0],p=d[1];return(0,j.jsx)(U.Z,{onDismiss:s,children:(0,j.jsxs)(K.Z,{dismissText:"",children:[(0,j.jsxs)("h2",{children:["Customize Layer ",(0,j.jsx)("code",{children:c.name})]}),(0,j.jsxs)("div",{children:[(0,j.jsxs)("div",{className:fn.field,children:[(0,j.jsx)("label",{htmlFor:"customize-layer-name",children:"Name"}),(0,j.jsx)(gn.Z,{id:"customize-layer-name",placeholder:"Default",value:A.name,validator:hn.Gk,onChange:function(n){return p((function(e){return xn(xn({},e),{},{name:n.target.value})}))}})]}),(0,j.jsxs)("div",{className:fn.field,children:[(0,j.jsx)("label",{htmlFor:"customize-layer-label",children:"Label"}),(0,j.jsx)("input",{id:"customize-layer-label",placeholder:"Default",value:A.label,onChange:function(n){return p((function(e){return xn(xn({},e),{},{label:n.target.value})}))}})]})]}),(0,j.jsxs)("div",{style:{textAlign:"center",gap:"5px"},children:[(0,j.jsx)($.Z,{onClick:function(){u((0,l.vc)(xn({layerIndex:a},A))),s()},children:"OK"}),(0,j.jsx)($.Z,{onClick:s,secondary:!0,children:"Cancel"})]})]})})},kn=r(39693),wn=r.n(kn),Bn=r(2062),Sn=r(62029);function On(n,e){if(n){if("string"==typeof n)return In(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?In(n,e):void 0}}function In(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}var Tn={keysHeld:[],keysHeldBeforeLastRelease:[]};function Zn(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],s=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);s=!0);}catch(n){u=!0,o=n}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(n,e)||function(n,e){if(n){if("string"==typeof n)return Dn(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Dn(n,e):void 0}}(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Dn(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}var Pn={Alt:"ALT",Control:"CTRL",Shift:"SHFT",Meta:"GUI",ArrowUp:"UP",ArrowDown:"DOWN",ArrowLeft:"LEFT",ArrowRight:"RIGHT",Escape:"ESC",Tab:"TAB",Enter:"RET",Home:"HOME",End:"END",PageDown:"PG_DN",PageUp:"PG_UP",Backspace:"BSPC",Delete:"DEL"};function Un(n,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=(0,o.I0)(),a=Zn((0,t.useState)(r),2),s=a[0],u=a[1],c=Zn((0,t.useState)(0),2),d=c[0],A=c[1],p=(0,t.useCallback)((function(){d===e.length-1?(A(0),u(!1)):A(d+1)}),[d,A,e.length,u]);!function(n,e){var r,o,i=(r=(0,t.useReducer)((function(n,e){switch(e.type){case"KEY_DOWN":return function(n,e){return{keysHeld:[].concat((r=n.keysHeld,function(n){if(Array.isArray(n))return In(n)}(r)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(r)||On(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),[e.event.key]),keysHeldBeforeLastRelease:[]};var r}(n,e);case"KEY_UP":return function(n,e){return{keysHeld:[],keysHeldBeforeLastRelease:n.keysHeld.filter((function(n){return n!==e.event.key}))}}(n,e);case"RESET":return Tn;default:return n}}),Tn),o=2,function(n){if(Array.isArray(n))return n}(r)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],s=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);s=!0);}catch(n){u=!0,o=n}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(r,o)||On(r,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=i[0],l=i[1],s=(0,t.useCallback)((function(n){n.repeat||(n.preventDefault(),l({type:"KEY_DOWN",event:n}))}),[l]),u=(0,t.useCallback)((function(n){a.keysHeldBeforeLastRelease.includes(n.key)||(n.preventDefault(),e(n),l({type:"KEY_UP",event:n}))}),[a.keysHeldBeforeLastRelease,e,l]);(0,t.useEffect)((function(){if(n)return document.body.addEventListener("keydown",s),document.body.addEventListener("keyup",u),function(){document.body.removeEventListener("keydown",s),document.body.removeEventListener("keyup",u)}}),[n,s,u])}(s,(0,t.useCallback)((function(e){var r=function(n){var e=function(n){return wn()([n.altKey&&"LA",n.ctrlKey&&"LC",n.metaKey&&"LG",n.shiftKey&&"LS"])}(n),r=(0,Sn.mapCharacter)(n.key.toLowerCase())||function(n){var e=Pn[n.key],r=function(n){switch(n.location){case 1:return"L";case 2:return"R";default:return""}}(n);return e?{value:"&kp",params:[{value:r+e,params:[]}]}:null}(n);if(r)return{value:r.value,params:e.reduce((function(n,e){return[{value:e,params:n}]}),r.params)}}(e);r&&(i((0,l.V6)({layerIndex:n,bindIndex:d,binding:r})),p())}),[n,d,p,i]));var f=(0,t.useCallback)((function(){u(!0)}),[u]),y=(0,t.useCallback)((function(){u(!1)}),[u]);return[{isActive:s,bindIndex:d},{startQuickAssignment:f,cancelQuickAssignment:y,setBindIndex:A}]}function Kn(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function Yn(n){var e,r,o=n.layout,i=n.layer,a=n.layerIndex,l=n.onClose,s=(e=Un(a,o,!0),r=2,function(n){if(Array.isArray(n))return n}(e)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],s=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);s=!0);}catch(n){u=!0,o=n}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,r)||function(n,e){if(n){if("string"==typeof n)return Kn(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Kn(n,e):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],c=s[1],d=(0,t.useMemo)((function(){return(0,z.fI)(o,{overrides:{minWidth:"400px"}})}),[o]);return(0,t.useEffect)((function(){u.isActive||l()}),[u.isActive,l]),(0,j.jsx)(U.Z,{onDismiss:l,children:(0,j.jsxs)(K.Z,{classes:[fn.quickAssignDialog],dismissText:"",children:[(0,j.jsx)("h2",{children:"Quick-assign layer keybindings"}),(0,j.jsxs)("p",{children:["Press a key on your keyboard to set a ",(0,j.jsx)("code",{children:"&kp"})," binding at the highlighted position in your keymap."]}),(0,j.jsx)("div",{style:d,children:(0,j.jsx)(O.Z,{layout:o,bindings:i.properties.bindings.parsed,renderKey:function(n){var e,r,t=n.index,o=n.keyLayout;return i.properties.bindings.parsed[t]&&(0,j.jsx)(I.Z,{label:o.label,keyWrapperProps:{selectable:!1,onClick:function(){return c.setBindIndex(t)},className:wn()([fn.quickBindKey,u.bindIndex===t&&fn.quickBindKeyHighlight]).join(" ")},value:null===(e=i.properties.bindings.parsed[t])||void 0===e?void 0:e.value,params:null===(r=i.properties.bindings.parsed[t])||void 0===r?void 0:r.params,onUpdate:function(n){}})}})}),(0,j.jsxs)("div",{style:{textAlign:"center"},children:[(0,j.jsx)(Bn.Z,{children:"Click on a different key to jump ahead or correct a previous binding."}),(0,j.jsx)("p",{children:(0,j.jsx)($.Z,{onClick:l,children:"Done"})})]})]})})}function qn(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],s=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);s=!0);}catch(n){u=!0,o=n}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(n,e)||function(n,e){if(n){if("string"==typeof n)return Nn(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Nn(n,e):void 0}}(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Nn(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}var Ln=function(n){return n.keyboard.sensors};function Rn(n){var e=n.layer,r=n.layerIndex,i=(n.isActiveLayer,(0,o.v9)(Ln)),a=qn((0,t.useState)(!1),2),l=a[0],s=a[1],u=qn((0,t.useState)(!1),2),c=u[0],d=u[1],A=(0,t.useContext)(X.V),p=A.layout,f=A.wrapperStyle,y=(0,t.useCallback)((function(){return s(!0)}),[s]),b=(0,t.useCallback)((function(){return d(!0)}),[d]),g=(0,t.useCallback)((function(){return d(!1)}),[d]),h=(0,t.useMemo)((function(){return[{callback:y,content:"Change Configuration"},{callback:b,content:(0,j.jsxs)(j.Fragment,{children:["Quick ",(0,j.jsx)("code",{children:"&kp"})," Assignment"]})}]}),[y,b]),m=f.width,v=f.height,x=f.margin,C=f.padding;return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)("div",{className:fn.layerWrapper,style:{margin:x,padding:C},children:[(0,j.jsxs)("div",{style:{width:m},children:[(0,j.jsxs)("h3",{style:{position:"relative"},children:[e.name," ",(0,j.jsx)(S,{layerIndex:r,additionalActions:h})]}),(0,j.jsx)("div",{style:{height:v},children:(0,j.jsx)(sn,{layout:p,activeLayer:r})})]}),(0,j.jsx)("div",{className:fn.sensors,"data-sensor-count":i.length,style:{},children:(0,j.jsx)(yn,{sensors:i,layerIndex:r,layer:e})})]}),l&&(0,j.jsx)(jn,{layerIndex:r,onClose:function(){return s(!1)}}),c&&(0,j.jsx)(Yn,{layout:p,layer:e,layerIndex:r,onClose:g})]})}var Wn=r(30341),_n={};_n.styleTagTransform=v(),_n.setAttributes=b(),_n.insert=f().bind(null,"head"),_n.domAPI=A(),_n.insertStyleElement=h(),c()(Wn.Z,_n);var zn=Wn.Z&&Wn.Z.locals?Wn.Z.locals:void 0,Vn=r(56803),Xn=r(50868),Qn=r(81485),Mn=r(18311);function Gn(n){return Gn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Gn(n)}function Hn(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function Fn(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Hn(Object(r),!0).forEach((function(e){Jn(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):Hn(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function Jn(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==Gn(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==Gn(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===Gn(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function $n(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],s=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);s=!0);}catch(n){u=!0,o=n}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(n,e)||function(n,e){if(n){if("string"==typeof n)return ne(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ne(n,e):void 0}}(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ne(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function ee(n){var e=n.activeLayer,r=n.onSelect,i=(0,t.useRef)(null),a=(0,o.I0)(),u=(0,t.useContext)(X.V).bindingCount,c=(0,t.useContext)(Qn.c),d=(0,t.useContext)(Mn.v),A=(0,o.v9)(l.vl),p=(0,t.useCallback)((function(n){r(n)}),[r]),f=(0,t.useCallback)((function(){return a((0,l.Xv)({bindingCount:u}))}),[a,u]),y=(0,t.useMemo)((function(){return function(n){var e=A[n].name;window.confirm("Really delete layer: ".concat(e,"?"))&&(a((0,l.Q)({index:n})),a((0,Xn.fD)(n,null,A,c,d)))}}),[A,a,c,d]),b=(0,t.useCallback)((function(n,e){n.stopPropagation();var r=e.dragIndex,t=e.dropIndex;r!==t&&(a((0,l.WF)({currentIndex:r,targetIndex:t})),a((0,Xn.fD)(r,t,A,c,d)))}),[A,a,c,d]),g=function(n){var e=$n((0,t.useState)({dragIndex:null,dropIndex:null}),2),r=e[0],o=r.dragIndex,i=r.dropIndex,a=e[1],l=(0,t.useCallback)((function(n){return n.preventDefault()}),[]),s=(0,t.useCallback)((function(n){var e=Number(n.target.dataset.slotIndex);a({dragIndex:e,dropIndex:null})}),[a]),u=(0,t.useCallback)((function(n){a((function(e){return null===e.dropIndex&&n.stopPropagation(),{dragIndex:null,dropIndex:null}}))}),[a]),c=(0,t.useCallback)((function(n){n.preventDefault();var e=Number(n.target.dataset.dropPosition);a((function(n){return Fn(Fn({},n),{},{dropIndex:e})}))}),[a]),d=(0,t.useCallback)((function(n){var e=Number(n.target.dataset.dropPosition);a((function(n){return Fn(Fn({},n),{},{dropIndex:n.dropIndex===e?null:n.dropIndex})}))}),[a]),A=(0,t.useCallback)((function(e){n(e,{dragIndex:o,dropIndex:i}),a({dragIndex:null,dropIndex:null})}),[o,i,a,n]);return[{isDragging:null!==o,dragIndex:o,dropIndex:i},{handleDragStart:s,handleDragEnd:u,handleDragEnter:c,handleDragLeave:d,handleDragOver:l,handleDrop:A}]}(b),h=$n(g,2),m=h[0],v=h[1];return(0,j.jsx)("div",{className:zn.layerSelector,ref:i,children:(0,j.jsxs)("ul",{"data-dragging":m.isDragging,children:[A.map((function(n,r){return(0,j.jsxs)("li",{className:e===r?zn.active:"","data-slot-index":r,draggable:!0,onDragStart:v.handleDragStart,onDragEnd:v.handleDragEnd,onDrop:v.handleDrop,children:[(0,j.jsx)("div",{className:wn()([zn.dropper,m.dropIndex===r&&zn.dropTarget]).join(" "),"data-drop-position":r,onDragEnter:v.handleDragEnter,onDragOver:v.handleDragOver,onDragLeave:v.handleDragLeave,onDrop:v.handleDrop}),(0,j.jsxs)("div",{onClick:function(){return p(r)},className:wn()([zn.layer,m.dragIndex===r&&zn.dragging,m.isDragging&&m.dropIndex!==m.dragIndex&&m.dropIndex!==m.dragIndex+1&&null!==m.dropIndex&&r>=m.dropIndex&&zn.displaced]).join(" "),children:[(0,j.jsx)("span",{className:zn.index,children:r}),(0,j.jsxs)("span",{className:zn.name,children:[n.name,(0,j.jsx)(s.Z,{name:"times-circle",className:zn.delete,onClick:(0,Vn.s)((function(){return y(r)}))})]})]})]},"slot-".concat(r))})),m.isDragging&&m.dragIndex<A.length-1&&(0,j.jsx)("li",{"data-slot-index":A.length,onDragEnd:v.handleDragEnd,onDrop:v.handleDrop,children:(0,j.jsx)("div",{className:wn()([zn.dropper,m.dropIndex===A.length&&zn.dropTarget]).join(" "),"data-drop-position":A.length,onDragEnter:v.handleDragEnter,onDragOver:v.handleDragOver,onDragLeave:v.handleDragLeave,onDrop:v.handleDrop})},"slot-".concat(A.length)),!m.isDragging&&(0,j.jsx)("li",{onClick:f,children:(0,j.jsxs)("div",{className:zn.layer,children:[(0,j.jsx)(s.Z,{className:zn.index,name:"plus"}),(0,j.jsx)("span",{className:zn.name,children:"Add Layer"})]})})]})})}ee.propTypes={activeLayer:a().number.isRequired,onSelect:a().func.isRequired};var re=ee;function te(){var n=(0,o.I0)(),e=(0,t.useContext)(X.V).bindingCount;return(0,j.jsxs)("div",{style:{textAlign:"center"},children:[(0,j.jsx)("h3",{children:"No keymap layers defined"}),(0,j.jsx)($.Z,{onClick:function(){return n((0,l.Xv)({bindingCount:e}))},children:"Add layer"})]})}function oe(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}var ie=function(){var n,e,r=(0,o.v9)(l.vl),i=(n=(0,t.useState)(0),e=2,function(n){if(Array.isArray(n))return n}(n)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],s=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);s=!0);}catch(n){u=!0,o=n}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(n,e)||function(n,e){if(n){if("string"==typeof n)return oe(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?oe(n,e):void 0}}(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=i[0],s=i[1],u=Math.max(0,Math.min(a,r.length-1));return 0===r.length?(0,j.jsx)(te,{}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(re,{activeLayer:u,onSelect:s}),(0,j.jsx)(Rn,{layer:r[u],layerIndex:u,isActiveLayer:!0})]})}},56803:function(n,e,r){"use strict";function t(n){return function(e){e.stopPropagation(),n()}}function o(n){return function(e){n[e.key]&&n[e.key]()}}r.d(e,{s:function(){return t},w:function(){return o}})},56634:function(n,e,r){"use strict";var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([n.id,".jThiLc5_BrUyl71v3rKn {\n display: inline-block;\n position: absolute;\n z-index: 1;\n font-size: 70%;\n padding: 5px 10px;\n margin-left: 10px;\n\n border-radius: 4px;\n}\n\n.jThiLc5_BrUyl71v3rKn p {\n display: inline-block;\n cursor: pointer;\n margin: 0;\n}\n\n.jThiLc5_BrUyl71v3rKn ul {\n display: none;\n}\n.jThiLc5_BrUyl71v3rKn.xG2GKlsc07jLEb2aMC6H {\n background: var(--dialog-bg, var(--bg));\n box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.5);\n}\n.jThiLc5_BrUyl71v3rKn.xG2GKlsc07jLEb2aMC6H ul {\n display: block;\n padding: 0;\n margin: 0;\n list-style-type: none;\n}\n\n.jThiLc5_BrUyl71v3rKn li {\n cursor: pointer;\n margin: 2px 0;\n line-height: 20px;\n padding: 0 5px;\n border-radius: 10px;\n}\n\n.jThiLc5_BrUyl71v3rKn li:hover {\n background-color: var(--hover-selection);\n color: white;\n}\n","",{version:3,sources:["webpack://./src/Common/action-menu.module.css"],names:[],mappings:"AAAA;EACE,qBAAqB;EACrB,kBAAkB;EAClB,UAAU;EACV,cAAc;EACd,iBAAiB;EACjB,iBAAiB;;EAEjB,kBAAkB;AACpB;;AAEA;EACE,qBAAqB;EACrB,eAAe;EACf,SAAS;AACX;;AAEA;EACE,aAAa;AACf;AACA;EACE,uCAAuC;EACvC,8CAA8C;AAChD;AACA;EACE,cAAc;EACd,UAAU;EACV,SAAS;EACT,qBAAqB;AACvB;;AAEA;EACE,eAAe;EACf,aAAa;EACb,iBAAiB;EACjB,cAAc;EACd,mBAAmB;AACrB;;AAEA;EACE,wCAAwC;EACxC,YAAY;AACd",sourcesContent:[".menu {\n display: inline-block;\n position: absolute;\n z-index: 1;\n font-size: 70%;\n padding: 5px 10px;\n margin-left: 10px;\n\n border-radius: 4px;\n}\n\n.menu p {\n display: inline-block;\n cursor: pointer;\n margin: 0;\n}\n\n.menu ul {\n display: none;\n}\n.menu.open {\n background: var(--dialog-bg, var(--bg));\n box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.5);\n}\n.menu.open ul {\n display: block;\n padding: 0;\n margin: 0;\n list-style-type: none;\n}\n\n.menu li {\n cursor: pointer;\n margin: 2px 0;\n line-height: 20px;\n padding: 0 5px;\n border-radius: 10px;\n}\n\n.menu li:hover {\n background-color: var(--hover-selection);\n color: white;\n}\n"],sourceRoot:""}]),a.locals={menu:"jThiLc5_BrUyl71v3rKn",open:"xG2GKlsc07jLEb2aMC6H"},e.Z=a},33988:function(n,e,r){"use strict";var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([n.id,".OaJISbD1WCmb03at77EG {\n position: relative;\n}\n\n.MUN9De8dUvbPGH9cEDoQ {\n position: absolute;\n z-index: 10;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 100%);\n max-width: 250px;\n width: 100%;\n\n border-radius: 4px;\n padding: 3px 5px;\n\n color: white;\n background-color: var(--error-highlight);\n font-size: 85%;\n font-family: sans-serif;\n\n opacity: 0.9;\n}\n.MUN9De8dUvbPGH9cEDoQ::before {\n position: absolute;\n display: block;\n content: ' ';\n z-index: -1;\n\n left: 50%;\n width: 10px;\n height: 10px;\n\n background-color: var(--error-highlight);\n transform: translate(-50%, -7px) rotate(45deg);\n}\n","",{version:3,sources:["webpack://./src/Common/input.module.css"],names:[],mappings:"AAAA;EACE,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,SAAS;EACT,SAAS;EACT,gCAAgC;EAChC,gBAAgB;EAChB,WAAW;;EAEX,kBAAkB;EAClB,gBAAgB;;EAEhB,YAAY;EACZ,wCAAwC;EACxC,cAAc;EACd,uBAAuB;;EAEvB,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,cAAc;EACd,YAAY;EACZ,WAAW;;EAEX,SAAS;EACT,WAAW;EACX,YAAY;;EAEZ,wCAAwC;EACxC,8CAA8C;AAChD",sourcesContent:[".wrapper {\n position: relative;\n}\n\n.error {\n position: absolute;\n z-index: 10;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 100%);\n max-width: 250px;\n width: 100%;\n\n border-radius: 4px;\n padding: 3px 5px;\n\n color: white;\n background-color: var(--error-highlight);\n font-size: 85%;\n font-family: sans-serif;\n\n opacity: 0.9;\n}\n.error::before {\n position: absolute;\n display: block;\n content: ' ';\n z-index: -1;\n\n left: 50%;\n width: 10px;\n height: 10px;\n\n background-color: var(--error-highlight);\n transform: translate(-50%, -7px) rotate(45deg);\n}\n"],sourceRoot:""}]),a.locals={wrapper:"OaJISbD1WCmb03at77EG",error:"MUN9De8dUvbPGH9cEDoQ"},e.Z=a},49040:function(n,e,r){"use strict";var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([n.id,".lD5TsvdIbEAHNdmhfnlb {\n background-color: var(--key-bg-base);\n}\n.yk89E4zK9zlO69OXhKn5:hover {\n cursor: pointer;\n border: 4px solid var(--selection);\n box-sizing: border-box;\n}\n\n.pzTvsxKjpy6MqcFhxh9j {\n background-color: var(--selection);\n}\n.pzTvsxKjpy6MqcFhxh9j:hover {\n background-color: var(--hover-selection);\n}\n\n.r_Sdklnj57CE2ZjnBDw6 {\n background-color: var(--hover-selection);\n filter: brightness(135%);\n}\n\n.Ich9T1nSzHs1a84insfp {\n background-color: var(--hover-selection);\n filter: brightness(75%);\n}\n\n._3U1zi1J1sXT41AzpAA1j {\n position: absolute;\n bottom: 0;\n right: 50%;\n transform: translate(50%, 100%);\n}\n","",{version:3,sources:["webpack://./src/Keyboard/Common/keyPositionSelectorStyles.module.css"],names:[],mappings:"AAAA;EACE,oCAAoC;AACtC;AACA;EACE,eAAe;EACf,kCAAkC;EAClC,sBAAsB;AACxB;;AAEA;EACE,kCAAkC;AACpC;AACA;EACE,wCAAwC;AAC1C;;AAEA;EACE,wCAAwC;EACxC,wBAAwB;AAC1B;;AAEA;EACE,wCAAwC;EACxC,uBAAuB;AACzB;;AAEA;EACE,kBAAkB;EAClB,SAAS;EACT,UAAU;EACV,+BAA+B;AACjC",sourcesContent:[".key {\n background-color: var(--key-bg-base);\n}\n.selectable:hover {\n cursor: pointer;\n border: 4px solid var(--selection);\n box-sizing: border-box;\n}\n\n.highlight {\n background-color: var(--selection);\n}\n.highlight:hover {\n background-color: var(--hover-selection);\n}\n\n.previewAdd {\n background-color: var(--hover-selection);\n filter: brightness(135%);\n}\n\n.previewRemove {\n background-color: var(--hover-selection);\n filter: brightness(75%);\n}\n\n.tip {\n position: absolute;\n bottom: 0;\n right: 50%;\n transform: translate(50%, 100%);\n}\n"],sourceRoot:""}]),a.locals={key:"lD5TsvdIbEAHNdmhfnlb",selectable:"yk89E4zK9zlO69OXhKn5",highlight:"pzTvsxKjpy6MqcFhxh9j",previewAdd:"r_Sdklnj57CE2ZjnBDw6",previewRemove:"Ich9T1nSzHs1a84insfp",tip:"_3U1zi1J1sXT41AzpAA1j"},e.Z=a},30341:function(n,e,r){"use strict";var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([n.id,'.JeRmYfUKXTg9VqWZshKO {\n position: absolute;\n pointer-events: none;\n z-index: 2;\n}\n.JeRmYfUKXTg9VqWZshKO > * {\n pointer-events: all;\n}\n\n.JeRmYfUKXTg9VqWZshKO ul {\n display: flex;\n position: relative;\n flex-direction: column;\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.JeRmYfUKXTg9VqWZshKO li {\n position: relative;\n padding: 0;\n margin: 0;\n width: max-content;\n height: 34px;\n cursor: pointer;\n}\n.JeRmYfUKXTg9VqWZshKO .u2LnyyXbhUKWkR8h1WgY {\n cursor: grab;\n}\n.Svi1LYw7uQ_NUkdl_Qqu, .QHkrJNCowEE3i9FocgKe {\n background-color: rgba(201, 201, 201, 0.5);\n color: darkgray;\n border-radius: 15px;\n height: 30px;\n padding: 0px;\n margin: 2px;\n width: max-content;\n}\n.JeRmYfUKXTg9VqWZshKO:not([data-dragging="true"]) li:hover .Svi1LYw7uQ_NUkdl_Qqu {\n background-color: rgba(60, 179, 113, 0.85);\n color: white;\n padding-right: 35px;\n}\n[data-dragging="true"] .Svi1LYw7uQ_NUkdl_Qqu {\n padding-right: 35px;\n}\n.JeRmYfUKXTg9VqWZshKO .u2LnyyXbhUKWkR8h1WgY .Svi1LYw7uQ_NUkdl_Qqu {\n background-color: rgb(60, 179, 113);\n color: white;\n}\n\n.JeRmYfUKXTg9VqWZshKO li * {\n display: inline-block;\n}\n.JeRmYfUKXTg9VqWZshKO li .yVeX9ivshCU7PiJfbG2v {\n overflow: auto;\n width: 30px;\n height: 30px;\n line-height: 30px;\n text-align: center;\n}\n.JeRmYfUKXTg9VqWZshKO li .tV7QyJybi_Gy9OnFqX6l {\n overflow: hidden;\n width: 0;\n height: 30px;\n line-height: 30px;\n padding: 0;\n font-variant: small-caps;\n}\n\n.Svi1LYw7uQ_NUkdl_Qqu {\n margin: 4px 2px;\n transition: margin-top .15s ease-in;\n}\n.Svi1LYw7uQ_NUkdl_Qqu.pRqaGgm21Psy3msTmiKg {\n cursor: grabbing;\n background-color: royalblue !important;\n color: white;\n opacity: 0.3;\n}\n\n.v7BdtxvE2YVCWNVJlnry {\n position: absolute;\n\n min-width: 200px;\n width: 100%;\n height: 34px;\n /* border: 1px dotted tomato; */\n}\n\n[data-dragging="false"] .v7BdtxvE2YVCWNVJlnry {\n display: none;\n}\n.a4BtINSAm0wAMDfWjTWQ {\n /* position: relative; */\n width: 200px;\n opacity: .3;\n}\n\n.Svi1LYw7uQ_NUkdl_Qqu.RMyVbbtfIDcsWDY7Qb1c {\n margin-top: 34px;\n}\n\n.JeRmYfUKXTg9VqWZshKO ul :hover .Svi1LYw7uQ_NUkdl_Qqu .tV7QyJybi_Gy9OnFqX6l,\n[data-dragging="true"] .Svi1LYw7uQ_NUkdl_Qqu .tV7QyJybi_Gy9OnFqX6l {\n transition: .15s ease-in;\n width: auto;\n padding: 0 0 0 10px;\n}\n\n.JeRmYfUKXTg9VqWZshKO button {\n width: 30px;\n height: 30px;\n line-height: 30px;\n padding: 0;\n text-align: center;\n border-radius: 15px;\n}\n\n.JeRmYfUKXTg9VqWZshKO .htA0l4uMnWt9050_zphf {\n cursor: pointer;\n position: absolute;\n right: 10px;\n visibility: hidden;\n\n height: 30px;\n line-height: 30px;\n}\n.JeRmYfUKXTg9VqWZshKO li:hover .htA0l4uMnWt9050_zphf {\n visibility: visible;\n}\n',"",{version:3,sources:["webpack://./src/Keyboard/Layers/layer-switcher.module.css"],names:[],mappings:"AAAA;EACE,kBAAkB;EAClB,oBAAoB;EACpB,UAAU;AACZ;AACA;EACE,mBAAmB;AACrB;;AAEA;EACE,aAAa;EACb,kBAAkB;EAClB,sBAAsB;EACtB,qBAAqB;EACrB,SAAS;EACT,UAAU;AACZ;AACA;EACE,kBAAkB;EAClB,UAAU;EACV,SAAS;EACT,kBAAkB;EAClB,YAAY;EACZ,eAAe;AACjB;AACA;EACE,YAAY;AACd;AACA;EACE,0CAA0C;EAC1C,eAAe;EACf,mBAAmB;EACnB,YAAY;EACZ,YAAY;EACZ,WAAW;EACX,kBAAkB;AACpB;AACA;EACE,0CAA0C;EAC1C,YAAY;EACZ,mBAAmB;AACrB;AACA;EACE,mBAAmB;AACrB;AACA;EACE,mCAAmC;EACnC,YAAY;AACd;;AAEA;EACE,qBAAqB;AACvB;AACA;EACE,cAAc;EACd,WAAW;EACX,YAAY;EACZ,iBAAiB;EACjB,kBAAkB;AACpB;AACA;EACE,gBAAgB;EAChB,QAAQ;EACR,YAAY;EACZ,iBAAiB;EACjB,UAAU;EACV,wBAAwB;AAC1B;;AAEA;EACE,eAAe;EACf,mCAAmC;AACrC;AACA;EACE,gBAAgB;EAChB,sCAAsC;EACtC,YAAY;EACZ,YAAY;AACd;;AAEA;EACE,kBAAkB;;EAElB,gBAAgB;EAChB,WAAW;EACX,YAAY;EACZ,+BAA+B;AACjC;;AAEA;EACE,aAAa;AACf;AACA;EACE,wBAAwB;EACxB,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,gBAAgB;AAClB;;AAEA;;EAEE,wBAAwB;EACxB,WAAW;EACX,mBAAmB;AACrB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,iBAAiB;EACjB,UAAU;EACV,kBAAkB;EAClB,mBAAmB;AACrB;;AAEA;EACE,eAAe;EACf,kBAAkB;EAClB,WAAW;EACX,kBAAkB;;EAElB,YAAY;EACZ,iBAAiB;AACnB;AACA;EACE,mBAAmB;AACrB",sourcesContent:['.layerSelector {\n position: absolute;\n pointer-events: none;\n z-index: 2;\n}\n.layerSelector > * {\n pointer-events: all;\n}\n\n.layerSelector ul {\n display: flex;\n position: relative;\n flex-direction: column;\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.layerSelector li {\n position: relative;\n padding: 0;\n margin: 0;\n width: max-content;\n height: 34px;\n cursor: pointer;\n}\n.layerSelector .active {\n cursor: grab;\n}\n.layer, .addLayer {\n background-color: rgba(201, 201, 201, 0.5);\n color: darkgray;\n border-radius: 15px;\n height: 30px;\n padding: 0px;\n margin: 2px;\n width: max-content;\n}\n.layerSelector:not([data-dragging="true"]) li:hover .layer {\n background-color: rgba(60, 179, 113, 0.85);\n color: white;\n padding-right: 35px;\n}\n[data-dragging="true"] .layer {\n padding-right: 35px;\n}\n.layerSelector .active .layer {\n background-color: rgb(60, 179, 113);\n color: white;\n}\n\n.layerSelector li * {\n display: inline-block;\n}\n.layerSelector li .index {\n overflow: auto;\n width: 30px;\n height: 30px;\n line-height: 30px;\n text-align: center;\n}\n.layerSelector li .name {\n overflow: hidden;\n width: 0;\n height: 30px;\n line-height: 30px;\n padding: 0;\n font-variant: small-caps;\n}\n\n.layer {\n margin: 4px 2px;\n transition: margin-top .15s ease-in;\n}\n.layer.dragging {\n cursor: grabbing;\n background-color: royalblue !important;\n color: white;\n opacity: 0.3;\n}\n\n.dropper {\n position: absolute;\n\n min-width: 200px;\n width: 100%;\n height: 34px;\n /* border: 1px dotted tomato; */\n}\n\n[data-dragging="false"] .dropper {\n display: none;\n}\n.dropTarget {\n /* position: relative; */\n width: 200px;\n opacity: .3;\n}\n\n.layer.displaced {\n margin-top: 34px;\n}\n\n.layerSelector ul :hover .layer .name,\n[data-dragging="true"] .layer .name {\n transition: .15s ease-in;\n width: auto;\n padding: 0 0 0 10px;\n}\n\n.layerSelector button {\n width: 30px;\n height: 30px;\n line-height: 30px;\n padding: 0;\n text-align: center;\n border-radius: 15px;\n}\n\n.layerSelector .delete {\n cursor: pointer;\n position: absolute;\n right: 10px;\n visibility: hidden;\n\n height: 30px;\n line-height: 30px;\n}\n.layerSelector li:hover .delete {\n visibility: visible;\n}\n'],sourceRoot:""}]),a.locals={layerSelector:"JeRmYfUKXTg9VqWZshKO",active:"u2LnyyXbhUKWkR8h1WgY",layer:"Svi1LYw7uQ_NUkdl_Qqu",addLayer:"QHkrJNCowEE3i9FocgKe",index:"yVeX9ivshCU7PiJfbG2v",name:"tV7QyJybi_Gy9OnFqX6l",dragging:"pRqaGgm21Psy3msTmiKg",dropper:"v7BdtxvE2YVCWNVJlnry",dropTarget:"a4BtINSAm0wAMDfWjTWQ",displaced:"RMyVbbtfIDcsWDY7Qb1c",delete:"htA0l4uMnWt9050_zphf"},e.Z=a},59500:function(n,e,r){"use strict";var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([n.id,'.ULm7RKJYCZDRV0HmcA7C {\n position: absolute;\n top: 0;\n width: 100vw;\n height: 100vh;\n overflow: auto;\n scroll-snap-stop: normal;\n scroll-snap-type: y proximity;\n}\n\n.XWq43GGa2yCVXqY4Syw3 {\n width: fit-content;\n scroll-snap-align: start;\n}\n\n.EwvVNY6vlf7HwYmXTbzi {\n margin: 10px 0;\n display: flex;\n}\n\n.EwvVNY6vlf7HwYmXTbzi label {\n display: inline-block;\n width: 120px;\n text-align: right;\n margin-right: 10px;\n}\n\n.uhiC_7TzN7eCNbm5C6a8[data-sensor-count="0"] {\n display: none;\n}\n\n.ztwqyyB2FFS4oWgcCyZC label {\n display: inline-block;\n margin-bottom: 10px;\n}\n.ztwqyyB2FFS4oWgcCyZC[data-unbound="true"] label code {\n opacity: 0.5;\n}\n\n.N98b5r9XUT9yotsaxhB7 {\n cursor: pointer;\n margin-left: 5px;\n}\n\n.QZ1jUOy1FEDFG3IrI5JM { cursor: pointer; }\n.QZ1jUOy1FEDFG3IrI5JM:hover {\n color: white;\n}\n\n.raNkhxmGTqtKQI9X2gVA:not(.y7y6ypMwmSafQKgt7oBw) {\n cursor: pointer;\n}\n.raNkhxmGTqtKQI9X2gVA > * {\n pointer-events: none;\n}\n.raNkhxmGTqtKQI9X2gVA:hover, .y7y6ypMwmSafQKgt7oBw {\n color: var(--key-color-hover);\n background-color: var(--selection);\n}\n.raNkhxmGTqtKQI9X2gVA:hover {\n background-color: var(--hover-selection);\n}\n\n.sahMSNIG_94Hn9tEEZ8q {\n max-width: 80vw;\n overflow-x: scroll;\n}',"",{version:3,sources:["webpack://./src/Keyboard/Layers/style.module.css"],names:[],mappings:"AAAA;EACE,kBAAkB;EAClB,MAAM;EACN,YAAY;EACZ,aAAa;EACb,cAAc;EACd,wBAAwB;EACxB,6BAA6B;AAC/B;;AAEA;EACE,kBAAkB;EAClB,wBAAwB;AAC1B;;AAEA;EACE,cAAc;EACd,aAAa;AACf;;AAEA;EACE,qBAAqB;EACrB,YAAY;EACZ,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,qBAAqB;EACrB,mBAAmB;AACrB;AACA;EACE,YAAY;AACd;;AAEA;EACE,eAAe;EACf,gBAAgB;AAClB;;AAEA,wBAAoB,eAAe,EAAE;AACrC;EACE,YAAY;AACd;;AAEA;EACE,eAAe;AACjB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,6BAA6B;EAC7B,kCAAkC;AACpC;AACA;EACE,wCAAwC;AAC1C;;AAEA;EACE,eAAe;EACf,kBAAkB;AACpB",sourcesContent:['.layerScrollContainer {\n position: absolute;\n top: 0;\n width: 100vw;\n height: 100vh;\n overflow: auto;\n scroll-snap-stop: normal;\n scroll-snap-type: y proximity;\n}\n\n.layerWrapper {\n width: fit-content;\n scroll-snap-align: start;\n}\n\n.field {\n margin: 10px 0;\n display: flex;\n}\n\n.field label {\n display: inline-block;\n width: 120px;\n text-align: right;\n margin-right: 10px;\n}\n\n.sensors[data-sensor-count="0"] {\n display: none;\n}\n\n.sensor label {\n display: inline-block;\n margin-bottom: 10px;\n}\n.sensor[data-unbound="true"] label code {\n opacity: 0.5;\n}\n\n.deleteSensorBinding {\n cursor: pointer;\n margin-left: 5px;\n}\n\n.addSensorBinding { cursor: pointer; }\n.addSensorBinding:hover {\n color: white;\n}\n\n.quickBindKey:not(.quickBindKeyHighlight) {\n cursor: pointer;\n}\n.quickBindKey > * {\n pointer-events: none;\n}\n.quickBindKey:hover, .quickBindKeyHighlight {\n color: var(--key-color-hover);\n background-color: var(--selection);\n}\n.quickBindKey:hover {\n background-color: var(--hover-selection);\n}\n\n.quickAssignDialog {\n max-width: 80vw;\n overflow-x: scroll;\n}'],sourceRoot:""}]),a.locals={layerScrollContainer:"ULm7RKJYCZDRV0HmcA7C",layerWrapper:"XWq43GGa2yCVXqY4Syw3",field:"EwvVNY6vlf7HwYmXTbzi",sensors:"uhiC_7TzN7eCNbm5C6a8",sensor:"ztwqyyB2FFS4oWgcCyZC",deleteSensorBinding:"N98b5r9XUT9yotsaxhB7",addSensorBinding:"QZ1jUOy1FEDFG3IrI5JM",quickBindKey:"raNkhxmGTqtKQI9X2gVA",quickBindKeyHighlight:"y7y6ypMwmSafQKgt7oBw",quickAssignDialog:"sahMSNIG_94Hn9tEEZ8q"},e.Z=a},62663:function(n){n.exports=function(n,e,r,t){var o=-1,i=null==n?0:n.length;for(t&&i&&(r=n[++o]);++o<i;)r=e(r,n[o],o,n);return r}},44286:function(n){n.exports=function(n){return n.split("")}},49029:function(n){var e=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;n.exports=function(n){return n.match(e)||[]}},18674:function(n){n.exports=function(n){return function(e){return null==n?void 0:n[e]}}},40180:function(n,e,r){var t=r(14259);n.exports=function(n,e,r){var o=n.length;return r=void 0===r?o:r,!e&&r>=o?n:t(n,e,r)}},98805:function(n,e,r){var t=r(40180),o=r(62689),i=r(83140),a=r(79833);n.exports=function(n){return function(e){e=a(e);var r=o(e)?i(e):void 0,l=r?r[0]:e.charAt(0),s=r?t(r,1).join(""):e.slice(1);return l[n]()+s}}},35393:function(n,e,r){var t=r(62663),o=r(53816),i=r(58748),a=RegExp("['’]","g");n.exports=function(n){return function(e){return t(i(o(e).replace(a,"")),n,"")}}},69389:function(n,e,r){var t=r(18674)({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"});n.exports=t},62689:function(n){var e=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");n.exports=function(n){return e.test(n)}},93157:function(n){var e=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;n.exports=function(n){return e.test(n)}},83140:function(n,e,r){var t=r(44286),o=r(62689),i=r(676);n.exports=function(n){return o(n)?i(n):t(n)}},676:function(n){var e="\\ud800-\\udfff",r="["+e+"]",t="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",o="\\ud83c[\\udffb-\\udfff]",i="[^"+e+"]",a="(?:\\ud83c[\\udde6-\\uddff]){2}",l="[\\ud800-\\udbff][\\udc00-\\udfff]",s="(?:"+t+"|"+o+")?",u="[\\ufe0e\\ufe0f]?",c=u+s+"(?:\\u200d(?:"+[i,a,l].join("|")+")"+u+s+")*",d="(?:"+[i+t+"?",t,a,l,r].join("|")+")",A=RegExp(o+"(?="+o+")|"+d+c,"g");n.exports=function(n){return n.match(A)||[]}},2757:function(n){var e="\\ud800-\\udfff",r="\\u2700-\\u27bf",t="a-z\\xdf-\\xf6\\xf8-\\xff",o="A-Z\\xc0-\\xd6\\xd8-\\xde",i="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",a="["+i+"]",l="\\d+",s="["+r+"]",u="["+t+"]",c="[^"+e+i+l+r+t+o+"]",d="(?:\\ud83c[\\udde6-\\uddff]){2}",A="[\\ud800-\\udbff][\\udc00-\\udfff]",p="["+o+"]",f="(?:"+u+"|"+c+")",y="(?:"+p+"|"+c+")",b="(?:['’](?:d|ll|m|re|s|t|ve))?",g="(?:['’](?:D|LL|M|RE|S|T|VE))?",h="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",m="[\\ufe0e\\ufe0f]?",v=m+h+"(?:\\u200d(?:"+["[^"+e+"]",d,A].join("|")+")"+m+h+")*",x="(?:"+[s,d,A].join("|")+")"+v,C=RegExp([p+"?"+u+"+"+b+"(?="+[a,p,"$"].join("|")+")",y+"+"+g+"(?="+[a,p+f,"$"].join("|")+")",p+"?"+f+"+"+b,p+"+"+g,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",l,x].join("|"),"g");n.exports=function(n){return n.match(C)||[]}},53816:function(n,e,r){var t=r(69389),o=r(79833),i=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,a=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");n.exports=function(n){return(n=o(n))&&n.replace(i,t).replace(a,"")}},18029:function(n,e,r){var t=r(35393),o=r(11700),i=t((function(n,e,r){return n+(r?" ":"")+o(e)}));n.exports=i},11700:function(n,e,r){var t=r(98805)("toUpperCase");n.exports=t},58748:function(n,e,r){var t=r(49029),o=r(93157),i=r(79833),a=r(2757);n.exports=function(n,e,r){return n=i(n),void 0===(e=r?void 0:e)?o(n)?a(n):t(n):n.match(e)||[]}},48118:function(n,e,r){"use strict";var t=r(93379),o=r.n(t),i=r(7795),a=r.n(i),l=r(90569),s=r.n(l),u=r(3565),c=r.n(u),d=r(19216),A=r.n(d),p=r(44589),f=r.n(p),y=r(49040),b={};b.styleTagTransform=f(),b.setAttributes=c(),b.insert=s().bind(null,"head"),b.domAPI=a(),b.insertStyleElement=A(),o()(y.Z,b),e.Z=y.Z&&y.Z.locals?y.Z.locals:void 0}}]);
+//# sourceMappingURL=6849.30183c5e1965724c1b6d.js.map \ No newline at end of file
diff --git a/6849.30183c5e1965724c1b6d.js.map b/6849.30183c5e1965724c1b6d.js.map
new file mode 100644
index 0000000..5b3ed0a
--- /dev/null
+++ b/6849.30183c5e1965724c1b6d.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"6849.30183c5e1965724c1b6d.js","mappings":"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","sources":["webpack:///./src/Common/input.module.css?8347","webpack:///./src/Common/Input.js","webpack:///./src/Keyboard/layoutPropTypes.js","webpack:///./src/Keyboard/KeyPlacer.js","webpack:///./src/Keyboard/KeyboardLayout.js","webpack:///./src/Common/action-menu.module.css?8c52","webpack:///./src/Common/ActionMenu.js","webpack:///./src/Keyboard/Layers/LayerActionsMenu.js","webpack:///./src/Keyboard/Common/KeyPositionIndicator.js","webpack:///./src/Keyboard/Binding/BindingDialog.js","webpack:///./src/Keyboard/Layers/LayerBindings.js","webpack:///./src/Keyboard/Layers/EncoderBindings.js","webpack:///./src/Keyboard/Layers/style.module.css?200d","webpack:///./src/Keyboard/Layers/SensorBindings.js","webpack:///./src/Keyboard/Layers/ConfigModal.js","webpack:///./src/Keyboard/Layers/use-key-handler.js","webpack:///./src/Keyboard/Layers/quick-assignment.js","webpack:///./src/Keyboard/Layers/QuickAssignModal.js","webpack:///./src/Keyboard/Layers/Layer.js","webpack:///./src/Keyboard/Layers/layer-switcher.module.css?e898","webpack:///./src/Keyboard/Layers/LayerSwitcher.js","webpack:///./src/Keyboard/Layers/PromptForFirstLayer.js","webpack:///./src/Keyboard/Layers/LayerEditor.js","webpack:///./src/event-util.js","webpack:///./src/Common/action-menu.module.css","webpack:///./src/Common/input.module.css","webpack:///./src/Keyboard/Common/keyPositionSelectorStyles.module.css","webpack:///./src/Keyboard/Layers/layer-switcher.module.css","webpack:///./src/Keyboard/Layers/style.module.css","webpack:///./node_modules/lodash/_arrayReduce.js","webpack:///./node_modules/lodash/_asciiToArray.js","webpack:///./node_modules/lodash/_asciiWords.js","webpack:///./node_modules/lodash/_basePropertyOf.js","webpack:///./node_modules/lodash/_castSlice.js","webpack:///./node_modules/lodash/_createCaseFirst.js","webpack:///./node_modules/lodash/_createCompounder.js","webpack:///./node_modules/lodash/_deburrLetter.js","webpack:///./node_modules/lodash/_hasUnicode.js","webpack:///./node_modules/lodash/_hasUnicodeWord.js","webpack:///./node_modules/lodash/_stringToArray.js","webpack:///./node_modules/lodash/_unicodeToArray.js","webpack:///./node_modules/lodash/_unicodeWords.js","webpack:///./node_modules/lodash/deburr.js","webpack:///./node_modules/lodash/startCase.js","webpack:///./node_modules/lodash/upperFirst.js","webpack:///./node_modules/lodash/words.js","webpack:///./src/Keyboard/Common/keyPositionSelectorStyles.module.css?d54d"],"sourcesContent":["\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./input.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./input.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import PropTypes from 'prop-types'\nimport styles from './input.module.css'\n\nexport default function Input ({ validator, required = false, value = '', ...rest }) {\n const error = validator(value) || (!value && required && 'cannot be empty')\n\n return (\n <span className={styles.wrapper}>\n <input type=\"text\" value={value} {...rest} />\n {error && <span className={styles.error}>{error}</span>}\n </span>\n )\n}\n\nInput.propTypes = {\n value: PropTypes.any.isRequired,\n required: PropTypes.bool,\n validator: PropTypes.func\n}\n","import PropTypes from 'prop-types'\n\nexport const position = {\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n}\n\nexport const rotation = {\n a: PropTypes.number,\n rx: PropTypes.number,\n ry: PropTypes.number\n}\n\nexport const dimensions = {\n u: PropTypes.number,\n h: PropTypes.number\n}\n\nexport const keyLayout = PropTypes.shape({\n ...position,\n ...rotation,\n ...dimensions\n})\n\nexport const layout = PropTypes.arrayOf(\n keyLayout\n)\n","import pick from 'lodash/pick'\nimport PropTypes from 'prop-types'\n\nimport { getKeyStyles } from '../key-units'\nimport styles from './styles.module.css'\nimport * as layoutPropTypes from './layoutPropTypes'\n\nconst getPosition = keyLayout => pick(keyLayout, ['x', 'y'])\nconst getRotation = keyLayout => {\n const { rx, ry, r } = keyLayout\n return { x: rx, y: ry, a: r }\n}\nconst getSize = keyLayout => {\n const { w = 1, u = w, h = 1 } = keyLayout\n return { u, h }\n}\n\nfunction Placer (props) {\n const { keyLayout, children, ...rest } = props\n const position = getPosition(keyLayout)\n const rotation = getRotation(keyLayout)\n const size = getSize(keyLayout)\n const positioningStyle = getKeyStyles(position, size, rotation)\n\n return (\n <div\n className={styles.placer}\n style={positioningStyle}\n data-u={size.u}\n data-h={size.h}\n {...rest}\n >\n {children}\n </div>\n )\n}\n\nPlacer.propTypes = {\n scale: PropTypes.number,\n keyLayout: layoutPropTypes.keyLayout.isRequired\n}\n\nPlacer.defaultProps = {\n scale: 1\n}\n\nexport default Placer\n","import PropTypes from 'prop-types'\n\nimport Placer from './KeyPlacer'\nimport * as layoutPropTypes from './layoutPropTypes'\n\nfunction KeyboardLayout (props) {\n const { layout, renderKey, scale } = props\n\n return (\n <div style={{\n position: 'relative',\n transform: `scale(${scale})`,\n transformOrigin: 0\n }}>\n {layout.map((keyLayout, index) => (\n <Placer key={index} keyLayout={keyLayout}>\n {renderKey({ index, keyLayout })}\n </Placer>\n ))}\n </div>\n )\n}\n\nKeyboardLayout.propTypes = {\n layout: layoutPropTypes.layout.isRequired,\n renderKey: PropTypes.func.isRequired,\n scale: PropTypes.number\n}\n\nKeyboardLayout.defaultProps = {\n scale: 1\n}\n\nexport default KeyboardLayout\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./action-menu.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./action-menu.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport Icon from './Icon'\nimport styles from './action-menu.module.css'\n\nexport default function ActionMenu ({ actions }) {\n const [isOpen, setOpen] = useState(false)\n const element = useRef()\n\n function closeAnd (action) {\n setOpen(false)\n action()\n }\n\n const handleClick = useCallback(function (e) {\n if (element.current && !element.current.contains(e.target)) {\n setOpen(false)\n }\n }, [element, setOpen])\n\n useEffect(() => {\n document.body.addEventListener('click', handleClick)\n return () => document.body.removeEventListener('click', handleClick)\n }, [handleClick])\n\n return (\n <div ref={element} className={[\n styles.menu,\n isOpen && styles.open\n ].join(' ')}>\n <p onClick={() => setOpen(!isOpen)}>\n <Icon name=\"ellipsis\" />\n </p>\n <ul>\n {actions.map((action, i) => (\n <li\n key={i}\n onClick={() => closeAnd(action.callback)}\n >\n {action.content}\n </li>\n ))}\n </ul>\n </div>\n )\n}\n\nActionMenu.propTypes = {\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n callback: PropTypes.func.isRequired,\n content: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.string\n ]).isRequired\n })\n ).isRequired\n}\n","import PropTypes from 'prop-types'\nimport { useMemo } from 'react'\nimport { useDispatch } from 'react-redux'\n\nimport {\n rebindTransparentToKeyPress,\n rebindTransparentToNone,\n rebindNoneToKeypress,\n rebindNoneToTransparent,\n rebindEmptyKeypressToTransparent,\n rebindEmptyKeypressToNone\n} from './layersSlice'\nimport ActionMenu from '../../Common/ActionMenu'\n\nexport default function LayerActionsMenu ({ layerIndex, additionalActions = [] }) {\n const dispatch = useDispatch()\n const actions = useMemo(() => ({\n transparentToKeypress: () => dispatch(rebindTransparentToKeyPress({ layerIndex })),\n transparentToNone: () => dispatch(rebindTransparentToNone({ layerIndex })),\n noneToKeypress: () => dispatch(rebindNoneToKeypress({ layerIndex })),\n noneToTransparent: () => dispatch(rebindNoneToTransparent({ layerIndex })),\n emptyKeypressToTransparent: () => dispatch(rebindEmptyKeypressToTransparent({ layerIndex })),\n emptyKeypressToNone: () => dispatch(rebindEmptyKeypressToNone({ layerIndex }))\n }), [dispatch, layerIndex])\n\n return (\n <ActionMenu actions={[\n ...additionalActions,\n {\n callback: actions.transparentToKeypress,\n content: <>Convert <code>&trans</code> to <code>&kp</code></>\n },\n {\n callback: actions.transparentToNone,\n content: <>Convert <code>&trans</code> to <code>&none</code></>\n },\n {\n callback: actions.noneToKeypress,\n content: <>Convert <code>&none</code> to <code>&kp</code></>\n },\n {\n callback: actions.noneToTransparent,\n content: <>Convert <code>&none</code> to <code>&trans</code></>\n },\n {\n callback: actions.emptyKeypressToTransparent,\n content: <>Convert <code>&kp ⦸</code> to <code>&trans</code></>\n },\n {\n callback: actions.emptyKeypressToNone,\n content: <>Convert <code>&kp ⦸</code> to <code>&none</code></>\n }\n ]} />\n )\n}\n\nLayerActionsMenu.propTypes = {\n layerIndex: PropTypes.number.isRequired,\n additionalActions: PropTypes.arrayOf(\n PropTypes.shape({\n callback: PropTypes.func.isRequired,\n content: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.string\n ]).isRequired\n })\n )\n}\n","import classNames from 'classnames'\nimport { useContext, useMemo } from 'react'\n\nimport { getWrapperStyle } from '../util'\nimport KeyboardLayout from '../KeyboardLayout'\nimport KeyWrapper from '../Keys/KeyWrapper'\n\nimport styles from './keyPositionSelectorStyles.module.css'\nimport { LayoutContext } from '../../Contexts/Layout'\n\nexport default function KeyPositionIndicator ({ keyPositions, scale = 0.2, styleOverrides = {} }) {\n const { layout, wrapperDimensions } = useContext(LayoutContext)\n const wrapperStyle = useMemo(() => getWrapperStyle(wrapperDimensions, {\n scale,\n overrides: {\n position: 'relative',\n pointerEvents: 'none',\n padding: 0,\n margin: 0,\n ...styleOverrides\n }\n }), [scale, wrapperDimensions, styleOverrides])\n\n return (\n <div style={wrapperStyle}>\n <KeyboardLayout\n layout={layout}\n bindings={[]}\n scale={scale}\n renderKey={({ index }) => (\n <KeyWrapper\n onClick={() => {}}\n selectable={false}\n themeClass={classNames({\n [styles.key]: true,\n [styles.highlight]: keyPositions.includes(index)\n })}\n />\n )}\n />\n </div>\n )\n}\n","import classNames from 'classnames'\nimport startCase from 'lodash/startCase'\nimport PropTypes from 'prop-types'\n\nimport Modal from '../../Common/Modal'\nimport DialogBox from '../../Common/DialogBox'\nimport { useCallback, useMemo, useState } from 'react'\nimport { BindParam } from './BindParamlist'\nimport KeyWrapper from '../Keys/KeyWrapper'\nimport Binding from './Binding'\nimport useBindingEditor from './binding-editor'\n\nimport keyStyles from '../Keys/styles.module.css'\nimport ValuePicker from '../../ValuePicker'\nimport BindValue from './BindValue'\nimport Icon from '../../Common/Icon'\nimport KeyPositionIndicator from '../Common/KeyPositionIndicator'\nimport Link from '../../Common/Link'\nimport ActionButton from '../../Common/ActionButton'\n\nconst discussionUrl = 'https://github.com/nickcoutsos/keymap-editor/discussions/109'\n\nexport default function BindingDialog (props) {\n const { binding: initialBinding, bindingIndex, onUpdate, onCancel, context = 'none' } = props\n const [binding, setBinding] = useState(initialBinding)\n const [{\n bindTree,\n behavior,\n behaviorParams,\n editing,\n invalid\n }, {\n clearEditing,\n handleUpdateBindValue,\n selectNodeForEditing\n }] = useBindingEditor(binding, undefined, setBinding)\n\n const onConfirm = useCallback(() => {\n onUpdate(binding)\n }, [binding, onUpdate])\n\n return (\n <Modal onDismiss={onCancel}>\n <div style={{\n position: 'absolute',\n top: 0,\n background: 'var(--bg)',\n borderRadius: '30px',\n boxShadow: '0px 10px 25px rgba(0, 0, 0, 0.4)',\n fontSize: '80%',\n width: '541px',\n padding: '0 20px',\n margin: '20px 0'\n }}>\n <p style={{ margin: '5px 0' }}>\n <Icon name=\"bullhorn\" /> I'm trying out a new way of editing bindings,\n if you hate it then <Link href={discussionUrl} external>please let me\n know</Link>!\n </p>\n </div>\n <DialogBox dismissText={null} style={{ width: '500px' }}>\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderBottom: '1px solid var(--key-bg-base)',\n paddingBottom: '20px',\n gap: '40px'\n }}>\n <KeyPositionIndicator\n keyPositions={[bindingIndex]}\n styleOverrides={{\n display: 'inline-block',\n padding: '3px',\n borderRadius: '3px'\n }}\n scale={0.15}\n />\n <Icon name=\"arrow-right\" />\n <KeyWrapper selectable={false} style={{ pointerEvents: 'none' }}>\n <Binding\n context={context}\n value={binding.value}\n params={binding.params}\n onUpdate={() => {}}\n />\n </KeyWrapper>\n </div>\n\n <h2>Set Key Binding</h2>\n <h3>\n Behavior <div\n style={{\n display: 'inline-block',\n fontSize: 'initial',\n fontWeight: 'normal'\n }}\n >\n <span className={keyStyles.extracted}>\n <span className={keyStyles.param}>\n <BindValue\n slot=\"behaviour\"\n node={bindTree}\n expanded={true}\n onSelect={selectNodeForEditing}\n />\n </span>\n </span>\n </div>\n </h3>\n\n <Parameters\n slots={behaviorParams}\n node={bindTree}\n onSelect={selectNodeForEditing}\n />\n\n {editing && (\n <ValuePicker\n node={editing.node}\n type={editing.type}\n behaviour={behavior}\n context={context}\n prompt={editing.prompt}\n searchKey=\"code\"\n onSelect={handleUpdateBindValue}\n onCancel={clearEditing}\n />\n )}\n\n <div style={{ textAlign: 'center' }}>\n <ActionButton onClick={onConfirm} disabled={invalid}>\n Okay\n </ActionButton>\n <ActionButton onClick={onCancel} secondary>\n Cancel\n </ActionButton>\n </div>\n </DialogBox>\n </Modal>\n )\n}\n\nfunction Parameters ({ slots, node, onSelect }) {\n const styles = {\n listStyleType: slots.length === 1 ? 'none' : undefined\n }\n\n if (slots.length === 0) {\n return null\n }\n\n return (\n <>\n <h3>Parameters</h3>\n <ol style={styles}>\n {slots.map((slot, i) => slot.type !== 'placeholder' && (\n <Parameter\n key={i}\n slot={slot}\n param={node.params[i]}\n onSelect={onSelect}\n />\n ))}\n </ol>\n </>\n )\n}\n\nfunction Parameter ({ slot, param, onSelect }) {\n const name = useMemo(() => {\n const simpleNameMap = {\n code: 'key-code'\n }\n\n const name = slot.raw ? 'Raw value' : (slot.name || slot)\n const mappedName = simpleNameMap[name] || name\n return startCase(mappedName)\n }, [slot])\n\n return (\n <li style={{ margin: '15px 0' }}>\n <label>{name}</label>\n <span className={classNames(keyStyles.extracted)}>\n <BindParam\n slot={slot}\n node={param}\n onSelect={onSelect}\n expanded={true}\n />\n </span>\n </li>\n )\n}\n\nBindingDialog.propTypes = {\n context: PropTypes.string,\n hideBehaviour: PropTypes.bool.isRequired,\n onUpdate: PropTypes.func.isRequired\n}\n\nBindingDialog.defaultProps = {\n hideBehaviour: false\n}\n","import { useCallback, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport KeyboardLayout from '../KeyboardLayout'\nimport Key from '../Keys/Key'\nimport { selectLayers, updateKeyBinding } from './layersSlice'\nimport BindingDialog from '../Binding/BindingDialog'\nimport keyStyles from '../Keys/styles.module.css'\n\nexport default function LayerBindings ({ layout, activeLayer }) {\n const dispatch = useDispatch()\n const layers = useSelector(selectLayers)\n const layer = layers[activeLayer]\n const { bindings } = layer.properties\n const [editBindIndex, setEditBindIndex] = useState(null)\n\n const handleUpdateBind = useCallback(function (bindIndex, binding) {\n dispatch(updateKeyBinding({ layerIndex: activeLayer, bindIndex, binding }))\n }, [dispatch, activeLayer])\n\n return (\n <>\n <KeyboardLayout\n layout={layout}\n renderKey={({ index, keyLayout }) => bindings.parsed[index] && (\n <Key\n label={keyLayout.label}\n value={bindings.parsed[index]?.value}\n params={bindings.parsed[index]?.params}\n noBindingClick={true}\n keyWrapperProps={{\n className: keyStyles.unified,\n onClick: event => {\n event.stopPropagation()\n setEditBindIndex(index)\n }\n }}\n onUpdate={bind => handleUpdateBind(index, bind)}\n />\n )}\n />\n {editBindIndex !== null && (\n <BindingDialog\n binding={bindings.parsed[editBindIndex]}\n bindingIndex={editBindIndex}\n onCancel={() => setEditBindIndex(null)}\n onUpdate={bind => {\n handleUpdateBind(editBindIndex, bind)\n setEditBindIndex(null)\n }}\n />\n )}\n </>\n )\n}\n","import PropTypes from 'prop-types'\n\nimport Binding from '../Binding/Binding'\nimport * as bindPropTypes from '../Binding/bindPropTypes'\n\nimport KeyWrapper from '../Keys/KeyWrapper'\nimport styles from '../Keys/styles.module.css'\n\nfunction EncoderBindings (props) {\n const { context, binding, onUpdate } = props\n const { value, params } = binding\n\n return (\n <KeyWrapper themeClass={styles.encoder2}>\n <Binding\n context={context}\n value={value}\n params={params}\n onUpdate={onUpdate}\n />\n </KeyWrapper>\n )\n}\n\nEncoderBindings.propTypes = {\n binding: bindPropTypes.node,\n onUpdate: PropTypes.func.isRequired\n}\n\nexport default EncoderBindings\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./style.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./style.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import classNames from 'classnames'\nimport { useCallback } from 'react'\nimport { useDispatch } from 'react-redux'\n\nimport { updateSensorBindings } from './layersSlice'\nimport EncoderBindings from './EncoderBindings'\nimport styles from './style.module.css'\nimport Icon from '../../Common/Icon'\nimport KeyWrapper from '../Keys/KeyWrapper'\nimport keyStyles from '../Keys/styles.module.css'\n\nexport default function SensorBindings ({ layerIndex, layer, sensors }) {\n const dispatch = useDispatch()\n const { parsed: sensorBindings = [] } = layer.properties['sensor-bindings'] || {}\n\n function handleUpdate (sensorIndex, binding) {\n // TODO: handle sensor bindings list that doesn't match sensor count\n dispatch(updateSensorBindings({\n layerIndex,\n sensorIndex,\n bindings: binding\n }))\n }\n\n return (\n <div style={{ margin: '0 0 30px' }}>\n <h3>Sensor bindings</h3>\n <div style={{\n display: 'flex',\n flexDirection: 'row',\n gap: '25px'\n }}>\n {sensors.map((sensor, i) => (\n <Sensor\n key={i}\n index={i}\n sensor={sensor}\n binding={sensorBindings[i]}\n canAdd={sensorBindings[i] === undefined && sensorBindings.length === i}\n canDelete={sensorBindings[i] !== undefined && sensorBindings.length === i + 1}\n onUpdate={handleUpdate}\n />\n ))}\n </div>\n </div>\n )\n}\n\nfunction Sensor ({ sensor, binding, index, onUpdate, canAdd, canDelete }) {\n const labelText = sensor.label || sensor.identifier\n const value = binding?.value || '&inc_dec_kp'\n const params = binding?.params || [\n { value: 0, _isPlaceholder: true, params: [] },\n { value: 0, _isPlaceholder: true, params: [] }\n ]\n\n const handleDelete = useCallback(() => {\n onUpdate(index, undefined)\n }, [index, onUpdate])\n\n const handleAdd = useCallback(() => {\n onUpdate(index, {\n value: '&inc_dec_kp',\n params: [\n { value: 0, _isPlaceholder: true, params: [] },\n { value: 0, _isPlaceholder: true, params: [] }\n ]\n })\n }, [index, onUpdate])\n\n return (\n <div className={styles.sensor} data-unbound={!binding}>\n <label style={{ fontVariant: 'small-caps', fontSize: '90%' }}>\n <code>{labelText}</code>\n {canDelete && (\n <Icon\n name=\"trash-can\"\n title=\"Remove sensor binding from this layer\"\n className={styles.deleteSensorBinding}\n onClick={handleDelete}\n />\n )}\n </label>\n {binding && (\n <EncoderBindings\n context=\"encoders\"\n binding={binding || { value, params }}\n onUpdate={bind => onUpdate(index, bind)}\n />\n )}\n {canAdd && (\n <KeyWrapper\n onClick={handleAdd}\n title=\"Add sensor binding to this layer\"\n themeClass={classNames(\n keyStyles.encoder2,\n styles.addSensorBinding\n )}\n >\n <Icon name=\"add\" />\n </KeyWrapper>\n )}\n </div>\n )\n}\n","import { useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport Input from '../../Common/Input'\nimport Modal from '../../Common/Modal'\nimport DialogBox from '../../Common/DialogBox'\nimport styles from './style.module.css'\nimport { validateDevicetreeNodeName } from '../Common/Devicetree/validators'\nimport ActionButton from '../../Common/ActionButton'\nimport { selectLayers, updateLayerMetadata } from './layersSlice'\n\nfunction ConfigModal ({ layerIndex, onClose }) {\n const dispatch = useDispatch()\n const layers = useSelector(selectLayers)\n const layer = layers[layerIndex]\n\n const [pending, setPending] = useState({\n name: layer.name,\n label: layer.properties.label?.parsed || ''\n })\n\n function handleConfirm () {\n dispatch(updateLayerMetadata({ layerIndex, ...pending }))\n onClose()\n }\n\n return (\n <Modal onDismiss={onClose}>\n <DialogBox dismissText=\"\">\n <h2>Customize Layer <code>{layer.name}</code></h2>\n <div>\n\n <div className={styles.field}>\n <label htmlFor=\"customize-layer-name\">\n Name\n </label>\n <Input\n id=\"customize-layer-name\"\n placeholder=\"Default\"\n value={pending.name}\n validator={validateDevicetreeNodeName}\n onChange={event => (\n setPending(state => ({\n ...state,\n name: event.target.value\n }))\n )}\n />\n </div>\n\n <div className={styles.field}>\n <label htmlFor=\"customize-layer-label\">\n Label\n </label>\n <input\n id=\"customize-layer-label\"\n placeholder=\"Default\"\n value={pending.label}\n onChange={event => (\n setPending(state => ({\n ...state,\n label: event.target.value\n }))\n )}\n />\n </div>\n\n </div>\n <div style={{ textAlign: 'center', gap: '5px' }}>\n <ActionButton onClick={handleConfirm}>OK</ActionButton>\n <ActionButton onClick={onClose} secondary>Cancel</ActionButton>\n </div>\n </DialogBox>\n </Modal>\n )\n}\n\nexport default ConfigModal\n","import { useCallback, useEffect, useReducer } from 'react'\n\nconst INITIAL_STATE = {\n keysHeld: [],\n keysHeldBeforeLastRelease: []\n}\n\nfunction reduceKeyDown (state, action) {\n return {\n keysHeld: [...state.keysHeld, action.event.key],\n keysHeldBeforeLastRelease: []\n }\n}\n\nfunction reduceKeyUp (state, action) {\n const keysHeld = state.keysHeld.filter(key => key !== action.event.key)\n return {\n keysHeld: [],\n keysHeldBeforeLastRelease: keysHeld\n }\n}\n\nfunction useKeyState () {\n return useReducer((state, action) => {\n switch (action.type) {\n case 'KEY_DOWN':\n return reduceKeyDown(state, action)\n\n case 'KEY_UP':\n return reduceKeyUp(state, action)\n\n case 'RESET':\n return INITIAL_STATE\n\n default:\n return state\n }\n }, INITIAL_STATE)\n}\n\n/**\n * Handle keydown/keyup events\n *\n * This takes care to avoid firing again upon release of modifiers after the\n * modified key has already been fired.\n *\n * @param {Boolean} isActive - use false to deactivate events\n * @param {Function} onKeyPress - handler for filtered key events\n * @returns null\n */\nexport default function useKeyHandler (isActive, onKeyPress) {\n const [state, dispatch] = useKeyState()\n const handleKeyDown = useCallback((event) => {\n if (event.repeat) {\n return\n }\n\n event.preventDefault()\n dispatch({ type: 'KEY_DOWN', event })\n }, [dispatch])\n\n const handleKeyUp = useCallback((event) => {\n if (state.keysHeldBeforeLastRelease.includes(event.key)) {\n return\n }\n\n event.preventDefault()\n onKeyPress(event)\n dispatch({ type: 'KEY_UP', event })\n }, [state.keysHeldBeforeLastRelease, onKeyPress, dispatch])\n\n useEffect(() => {\n if (!isActive) {\n return\n }\n\n document.body.addEventListener('keydown', handleKeyDown)\n document.body.addEventListener('keyup', handleKeyUp)\n\n return () => {\n document.body.removeEventListener('keydown', handleKeyDown)\n document.body.removeEventListener('keyup', handleKeyUp)\n }\n }, [isActive, handleKeyDown, handleKeyUp])\n}\n","import compact from 'lodash/compact'\nimport { useCallback, useState } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { mapCharacter } from 'zmk-data/keycode-mappings'\n\nimport { updateKeyBinding } from './layersSlice'\nimport useKeyHandler from './use-key-handler'\n\nconst mappings = {\n Alt: 'ALT',\n Control: 'CTRL',\n Shift: 'SHFT',\n Meta: 'GUI',\n ArrowUp: 'UP',\n ArrowDown: 'DOWN',\n ArrowLeft: 'LEFT',\n ArrowRight: 'RIGHT',\n Escape: 'ESC',\n Tab: 'TAB',\n Enter: 'RET',\n Home: 'HOME',\n End: 'END',\n PageDown: 'PG_DN',\n PageUp: 'PG_UP',\n Backspace: 'BSPC',\n Delete: 'DEL'\n}\n\nfunction normalizeKey (event) {\n const mapped = mappings[event.key]\n const prefix = getSidePrefix(event)\n\n if (!mapped) {\n return null\n }\n\n return {\n value: '&kp',\n params: [{\n value: prefix + mapped,\n params: []\n }]\n }\n}\n\nfunction getSidePrefix (event) {\n switch (event.location) {\n case 1:\n return 'L'\n case 2:\n return 'R'\n case 0:\n default:\n return ''\n }\n}\n\nfunction getModifiers (event) {\n return compact([\n event.altKey && 'LA',\n event.ctrlKey && 'LC',\n event.metaKey && 'LG',\n event.shiftKey && 'LS'\n ])\n}\n\nfunction getBindFromKey (event) {\n const appliedModifiers = getModifiers(event)\n const mapped = (\n mapCharacter(event.key.toLowerCase()) ||\n normalizeKey(event)\n )\n\n if (!mapped) {\n return\n }\n\n return {\n value: mapped.value,\n params: appliedModifiers.reduce((params, modifier) => {\n return [{ value: modifier, params }]\n }, mapped.params)\n }\n}\n\nexport function useQuickAssignment (layerIndex, layout, defaultStart = false) {\n const dispatch = useDispatch()\n const [isActive, setIsActive] = useState(defaultStart)\n const [bindIndex, setBindIndex] = useState(0)\n\n const nextBind = useCallback(() => {\n if (bindIndex === layout.length - 1) {\n setBindIndex(0)\n setIsActive(false)\n } else {\n setBindIndex(bindIndex + 1)\n }\n }, [bindIndex, setBindIndex, layout.length, setIsActive])\n\n const handleKeyPress = useCallback(event => {\n const binding = getBindFromKey(event)\n\n if (binding) {\n dispatch(updateKeyBinding({\n layerIndex,\n bindIndex,\n binding\n }))\n\n nextBind()\n }\n }, [layerIndex, bindIndex, nextBind, dispatch])\n\n useKeyHandler(isActive, handleKeyPress)\n\n const startQuickAssignment = useCallback(() => {\n setIsActive(true)\n }, [setIsActive])\n\n const cancelQuickAssignment = useCallback(() => {\n setIsActive(false)\n }, [setIsActive])\n\n return [\n { isActive, bindIndex },\n { startQuickAssignment, cancelQuickAssignment, setBindIndex }\n ]\n}\n","import compact from 'lodash/compact'\nimport { useEffect, useMemo } from 'react'\n\nimport ActionButton from '../../Common/ActionButton'\nimport DialogBox from '../../Common/DialogBox'\nimport Modal from '../../Common/Modal'\nimport Tip from '../../Common/Tip'\nimport KeyboardLayout from '../KeyboardLayout'\nimport Key from '../Keys/Key'\nimport { getWrapperStyle } from '../util'\nimport { useQuickAssignment } from './quick-assignment'\nimport styles from './style.module.css'\n\nexport function QuickAssignmentModal ({ layout, layer, layerIndex, onClose }) {\n const [status, actions] = useQuickAssignment(layerIndex, layout, true)\n const wrapperStyle = useMemo(() => getWrapperStyle(layout, {\n overrides: { minWidth: '400px' }\n }), [layout])\n\n useEffect(() => {\n if (!status.isActive) {\n onClose()\n }\n }, [status.isActive, onClose])\n\n return (\n <Modal onDismiss={onClose}>\n <DialogBox classes={[styles.quickAssignDialog]} dismissText=\"\">\n <h2>Quick-assign layer keybindings</h2>\n <p>\n Press a key on your keyboard to set a <code>&kp</code> binding at the\n highlighted position in your keymap.\n </p>\n <div style={wrapperStyle}>\n <KeyboardLayout\n layout={layout}\n bindings={layer.properties.bindings.parsed}\n renderKey={({ index, keyLayout }) => layer.properties.bindings.parsed[index] && (\n <Key\n label={keyLayout.label}\n keyWrapperProps={{\n selectable: false,\n onClick: () => actions.setBindIndex(index),\n className: compact([\n styles.quickBindKey,\n status.bindIndex === index && styles.quickBindKeyHighlight\n ]).join(' ')\n }}\n value={layer.properties.bindings.parsed[index]?.value}\n params={layer.properties.bindings.parsed[index]?.params}\n onUpdate={bind => {}}\n />\n )}\n />\n </div>\n <div style={{ textAlign: 'center' }}>\n <Tip>Click on a different key to jump ahead or correct a previous binding.</Tip>\n <p>\n <ActionButton onClick={onClose}>Done</ActionButton>\n </p>\n </div>\n </DialogBox>\n </Modal>\n )\n}\n","import { useSelector } from 'react-redux'\n\nimport LayerActionsMenu from './LayerActionsMenu'\nimport LayerBindings from './LayerBindings'\nimport SensorBindings from './SensorBindings'\nimport ConfigModal from './ConfigModal'\nimport styles from './style.module.css'\nimport { QuickAssignmentModal } from './QuickAssignModal'\n\nimport { useCallback, useContext, useMemo, useState } from 'react'\nimport { LayoutContext } from '../../Contexts/Layout'\n\nconst selectSensors = state => state.keyboard.sensors\n\nexport default function Layer ({ layer, layerIndex, isActiveLayer }) {\n const sensors = useSelector(selectSensors)\n const [showConfig, setShowConfig] = useState(false)\n const [showQuickAssignModal, setShowQuickAssignModal] = useState(false)\n\n const { layout, wrapperStyle } = useContext(LayoutContext)\n\n const openConfig = useCallback(() => setShowConfig(true), [setShowConfig])\n const openQuickAssign = useCallback(() => setShowQuickAssignModal(true), [setShowQuickAssignModal])\n const closeQuickAssign = useCallback(() => setShowQuickAssignModal(false), [setShowQuickAssignModal])\n const additionalActions = useMemo(() => [\n { callback: openConfig, content: 'Change Configuration' },\n { callback: openQuickAssign, content: <>Quick <code>&kp</code> Assignment</> }\n ], [openConfig, openQuickAssign])\n\n const { width, height, margin, padding } = wrapperStyle\n\n return (\n <>\n <div className={styles.layerWrapper} style={{ margin, padding }}>\n <div style={{ width }}>\n <h3 style={{ position: 'relative' }}>\n {layer.name} {(\n <LayerActionsMenu\n layerIndex={layerIndex}\n additionalActions={additionalActions}\n />\n )}\n </h3>\n <div style={{ height }}>\n <LayerBindings\n layout={layout}\n activeLayer={layerIndex}\n />\n </div>\n </div>\n <div\n className={styles.sensors}\n data-sensor-count={sensors.length}\n style={{}}\n >\n <SensorBindings\n sensors={sensors}\n layerIndex={layerIndex}\n layer={layer}\n />\n </div>\n </div>\n {showConfig && (\n <ConfigModal\n layerIndex={layerIndex}\n onClose={() => setShowConfig(false)}\n />\n )}\n {showQuickAssignModal && (\n <QuickAssignmentModal\n layout={layout}\n layer={layer}\n layerIndex={layerIndex}\n onClose={closeQuickAssign}\n />\n )}\n </>\n )\n}\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./layer-switcher.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./layer-switcher.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import compact from 'lodash/compact'\nimport PropTypes from 'prop-types'\nimport { useCallback, useContext, useMemo, useRef, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport Icon from '../../Common/Icon'\nimport styles from './layer-switcher.module.css'\nimport { stop } from '../../event-util'\nimport {\n selectLayers,\n createLayer,\n repositionLayer,\n deleteLayer\n} from './layersSlice'\nimport { LayoutContext } from '../../Contexts/Layout'\nimport { layerIndexChanged } from './layer-index-change-action'\nimport { SearchContext } from '../../providers'\nimport { DefinitionsContext } from '../../Contexts/Definitions'\n\nfunction LayerSwitcher ({ activeLayer, onSelect }) {\n const ref = useRef(null)\n const dispatch = useDispatch()\n const { bindingCount } = useContext(LayoutContext)\n const searchContext = useContext(SearchContext)\n const definitionsContext = useContext(DefinitionsContext)\n const layers = useSelector(selectLayers)\n\n const handleSelect = useCallback(function (layerIndex) {\n onSelect(layerIndex)\n }, [onSelect])\n\n const handleAdd = useCallback(() => dispatch(createLayer({\n bindingCount\n })), [dispatch, bindingCount])\n\n const handleDelete = useMemo(() => function (layerIndex) {\n const { name } = layers[layerIndex]\n if (window.confirm(`Really delete layer: ${name}?`)) {\n dispatch(deleteLayer({ index: layerIndex }))\n dispatch(layerIndexChanged(layerIndex, null, layers, searchContext, definitionsContext))\n }\n }, [layers, dispatch, searchContext, definitionsContext])\n\n const handleDrop = useCallback(function (event, dragState) {\n event.stopPropagation()\n const {\n dragIndex: currentIndex,\n dropIndex: targetIndex\n } = dragState\n\n if (currentIndex === targetIndex) {\n return\n }\n\n dispatch(repositionLayer({ currentIndex, targetIndex }))\n dispatch(layerIndexChanged(currentIndex, targetIndex, layers, searchContext, definitionsContext))\n }, [layers, dispatch, searchContext, definitionsContext])\n\n const [dragState, dragHandlers] = useDragAndDrop(handleDrop)\n\n return (\n <div\n className={styles.layerSelector}\n ref={ref}\n >\n <ul data-dragging={dragState.isDragging}>\n {layers.map((layer, i) => (\n <li\n key={`slot-${i}`}\n className={activeLayer === i ? styles.active : ''}\n data-slot-index={i}\n draggable\n onDragStart={dragHandlers.handleDragStart}\n onDragEnd={dragHandlers.handleDragEnd}\n onDrop={dragHandlers.handleDrop}\n >\n <div\n className={compact([\n styles.dropper,\n dragState.dropIndex === i && styles.dropTarget\n ]).join(' ')}\n data-drop-position={i}\n onDragEnter={dragHandlers.handleDragEnter}\n onDragOver={dragHandlers.handleDragOver}\n onDragLeave={dragHandlers.handleDragLeave}\n onDrop={dragHandlers.handleDrop}\n />\n <div\n onClick={() => handleSelect(i)}\n className={compact([\n styles.layer,\n dragState.dragIndex === i && styles.dragging,\n dragState.isDragging &&\n dragState.dropIndex !== dragState.dragIndex &&\n dragState.dropIndex !== dragState.dragIndex + 1 &&\n dragState.dropIndex !== null &&\n i >= dragState.dropIndex &&\n styles.displaced\n ]).join(' ')}\n >\n <span className={styles.index}>{i}</span>\n <span className={styles.name}>\n {layer.name}\n <Icon\n name=\"times-circle\"\n className={styles.delete}\n onClick={stop(() => handleDelete(i))}\n />\n </span>\n </div>\n </li>\n ))}\n {dragState.isDragging && dragState.dragIndex < layers.length - 1 && (\n <li\n key={`slot-${layers.length}`}\n data-slot-index={layers.length}\n onDragEnd={dragHandlers.handleDragEnd}\n onDrop={dragHandlers.handleDrop}\n >\n <div\n className={compact([\n styles.dropper,\n dragState.dropIndex === layers.length && styles.dropTarget\n ]).join(' ')}\n data-drop-position={layers.length}\n onDragEnter={dragHandlers.handleDragEnter}\n onDragOver={dragHandlers.handleDragOver}\n onDragLeave={dragHandlers.handleDragLeave}\n onDrop={dragHandlers.handleDrop}\n />\n </li>\n )}\n {!dragState.isDragging && (\n <li onClick={handleAdd}>\n <div className={styles.layer}>\n <Icon className={styles.index} name=\"plus\" />\n <span className={styles.name}>Add Layer</span>\n </div>\n </li>\n )}\n </ul>\n </div>\n )\n}\n\nfunction useDragAndDrop (onDrop) {\n const [{ dragIndex, dropIndex }, setDragState] = useState({ dragIndex: null, dropIndex: null })\n\n const handleDragOver = useCallback(event => event.preventDefault(), [])\n\n const handleDragStart = useCallback(function (event) {\n const dragIndex = Number(event.target.dataset.slotIndex)\n setDragState({ dragIndex, dropIndex: null })\n }, [setDragState])\n\n const handleDragEnd = useCallback(function (event) {\n setDragState(state => {\n if (state.dropIndex === null) {\n event.stopPropagation()\n }\n\n return { dragIndex: null, dropIndex: null }\n })\n }, [setDragState])\n\n const handleDragEnter = useCallback(function (event) {\n event.preventDefault()\n const dropIndex = Number(event.target.dataset.dropPosition)\n setDragState(state => ({ ...state, dropIndex }))\n }, [setDragState])\n\n const handleDragLeave = useCallback(function (event) {\n const dropIndex = Number(event.target.dataset.dropPosition)\n setDragState(state => ({\n ...state, dropIndex: state.dropIndex === dropIndex ? null : state.dropIndex\n }))\n }, [setDragState])\n\n const handleDrop = useCallback(function (event) {\n onDrop(event, { dragIndex, dropIndex })\n setDragState({ dragIndex: null, dropIndex: null })\n }, [dragIndex, dropIndex, setDragState, onDrop])\n\n const isDragging = dragIndex !== null\n\n return [\n { isDragging, dragIndex, dropIndex },\n {\n handleDragStart,\n handleDragEnd,\n handleDragEnter,\n handleDragLeave,\n handleDragOver,\n handleDrop\n }\n ]\n}\n\nLayerSwitcher.propTypes = {\n activeLayer: PropTypes.number.isRequired,\n onSelect: PropTypes.func.isRequired\n}\n\nexport default LayerSwitcher\n","import { useContext } from 'react'\nimport { useDispatch } from 'react-redux'\n\nimport { createLayer } from './layersSlice'\nimport ActionButton from '../../Common/ActionButton'\nimport { LayoutContext } from '../../Contexts/Layout'\n\nexport default function PromptForFirstLayer () {\n const dispatch = useDispatch()\n const { bindingCount } = useContext(LayoutContext)\n\n return (\n <div style={{ textAlign: 'center' }}>\n <h3>No keymap layers defined</h3>\n <ActionButton onClick={() => dispatch(createLayer({ bindingCount }))}>\n Add layer\n </ActionButton>\n </div>\n )\n}\n","import { useState } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport Layer from './Layer'\nimport LayerSwitcher from './LayerSwitcher'\nimport { selectLayers } from './layersSlice'\n\nimport PromptForFirstLayer from './PromptForFirstLayer'\n// import LayerScroller from './LayerScroller'\n\nconst KeymapEditor = () => {\n const layers = useSelector(selectLayers)\n const [activeLayer, setActiveLayer] = useState(0)\n\n const clampedActiveLayer = Math.max(0, Math.min(activeLayer, layers.length - 1))\n\n if (layers.length === 0) {\n return <PromptForFirstLayer />\n }\n\n return (\n <>\n <LayerSwitcher\n activeLayer={clampedActiveLayer}\n onSelect={setActiveLayer}\n />\n {/* <LayerScroller>\n {layers.map((layer, i) => (\n <Layer\n key={i}\n layer={layer}\n layerIndex={i}\n isActiveLayer={i === clampedActiveLayer}\n />\n ))}\n </LayerScroller> */}\n <Layer\n layer={layers[clampedActiveLayer]}\n layerIndex={clampedActiveLayer}\n isActiveLayer={true}\n />\n </>\n )\n}\n\nexport default KeymapEditor\n","\nexport function stop (fn) {\n return function (event) {\n event.stopPropagation()\n fn()\n }\n}\n\nexport function onKey (mapping) {\n return function (event) {\n if (mapping[event.key]) {\n mapping[event.key]()\n }\n }\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".jThiLc5_BrUyl71v3rKn {\\n display: inline-block;\\n position: absolute;\\n z-index: 1;\\n font-size: 70%;\\n padding: 5px 10px;\\n margin-left: 10px;\\n\\n border-radius: 4px;\\n}\\n\\n.jThiLc5_BrUyl71v3rKn p {\\n display: inline-block;\\n cursor: pointer;\\n margin: 0;\\n}\\n\\n.jThiLc5_BrUyl71v3rKn ul {\\n display: none;\\n}\\n.jThiLc5_BrUyl71v3rKn.xG2GKlsc07jLEb2aMC6H {\\n background: var(--dialog-bg, var(--bg));\\n box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.5);\\n}\\n.jThiLc5_BrUyl71v3rKn.xG2GKlsc07jLEb2aMC6H ul {\\n display: block;\\n padding: 0;\\n margin: 0;\\n list-style-type: none;\\n}\\n\\n.jThiLc5_BrUyl71v3rKn li {\\n cursor: pointer;\\n margin: 2px 0;\\n line-height: 20px;\\n padding: 0 5px;\\n border-radius: 10px;\\n}\\n\\n.jThiLc5_BrUyl71v3rKn li:hover {\\n background-color: var(--hover-selection);\\n color: white;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Common/action-menu.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qBAAqB;EACrB,kBAAkB;EAClB,UAAU;EACV,cAAc;EACd,iBAAiB;EACjB,iBAAiB;;EAEjB,kBAAkB;AACpB;;AAEA;EACE,qBAAqB;EACrB,eAAe;EACf,SAAS;AACX;;AAEA;EACE,aAAa;AACf;AACA;EACE,uCAAuC;EACvC,8CAA8C;AAChD;AACA;EACE,cAAc;EACd,UAAU;EACV,SAAS;EACT,qBAAqB;AACvB;;AAEA;EACE,eAAe;EACf,aAAa;EACb,iBAAiB;EACjB,cAAc;EACd,mBAAmB;AACrB;;AAEA;EACE,wCAAwC;EACxC,YAAY;AACd\",\"sourcesContent\":[\".menu {\\n display: inline-block;\\n position: absolute;\\n z-index: 1;\\n font-size: 70%;\\n padding: 5px 10px;\\n margin-left: 10px;\\n\\n border-radius: 4px;\\n}\\n\\n.menu p {\\n display: inline-block;\\n cursor: pointer;\\n margin: 0;\\n}\\n\\n.menu ul {\\n display: none;\\n}\\n.menu.open {\\n background: var(--dialog-bg, var(--bg));\\n box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.5);\\n}\\n.menu.open ul {\\n display: block;\\n padding: 0;\\n margin: 0;\\n list-style-type: none;\\n}\\n\\n.menu li {\\n cursor: pointer;\\n margin: 2px 0;\\n line-height: 20px;\\n padding: 0 5px;\\n border-radius: 10px;\\n}\\n\\n.menu li:hover {\\n background-color: var(--hover-selection);\\n color: white;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"menu\": \"jThiLc5_BrUyl71v3rKn\",\n\t\"open\": \"xG2GKlsc07jLEb2aMC6H\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".OaJISbD1WCmb03at77EG {\\n position: relative;\\n}\\n\\n.MUN9De8dUvbPGH9cEDoQ {\\n position: absolute;\\n z-index: 10;\\n bottom: 0;\\n left: 50%;\\n transform: translate(-50%, 100%);\\n max-width: 250px;\\n width: 100%;\\n\\n border-radius: 4px;\\n padding: 3px 5px;\\n\\n color: white;\\n background-color: var(--error-highlight);\\n font-size: 85%;\\n font-family: sans-serif;\\n\\n opacity: 0.9;\\n}\\n.MUN9De8dUvbPGH9cEDoQ::before {\\n position: absolute;\\n display: block;\\n content: ' ';\\n z-index: -1;\\n\\n left: 50%;\\n width: 10px;\\n height: 10px;\\n\\n background-color: var(--error-highlight);\\n transform: translate(-50%, -7px) rotate(45deg);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Common/input.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,SAAS;EACT,SAAS;EACT,gCAAgC;EAChC,gBAAgB;EAChB,WAAW;;EAEX,kBAAkB;EAClB,gBAAgB;;EAEhB,YAAY;EACZ,wCAAwC;EACxC,cAAc;EACd,uBAAuB;;EAEvB,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,cAAc;EACd,YAAY;EACZ,WAAW;;EAEX,SAAS;EACT,WAAW;EACX,YAAY;;EAEZ,wCAAwC;EACxC,8CAA8C;AAChD\",\"sourcesContent\":[\".wrapper {\\n position: relative;\\n}\\n\\n.error {\\n position: absolute;\\n z-index: 10;\\n bottom: 0;\\n left: 50%;\\n transform: translate(-50%, 100%);\\n max-width: 250px;\\n width: 100%;\\n\\n border-radius: 4px;\\n padding: 3px 5px;\\n\\n color: white;\\n background-color: var(--error-highlight);\\n font-size: 85%;\\n font-family: sans-serif;\\n\\n opacity: 0.9;\\n}\\n.error::before {\\n position: absolute;\\n display: block;\\n content: ' ';\\n z-index: -1;\\n\\n left: 50%;\\n width: 10px;\\n height: 10px;\\n\\n background-color: var(--error-highlight);\\n transform: translate(-50%, -7px) rotate(45deg);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"wrapper\": \"OaJISbD1WCmb03at77EG\",\n\t\"error\": \"MUN9De8dUvbPGH9cEDoQ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".lD5TsvdIbEAHNdmhfnlb {\\n background-color: var(--key-bg-base);\\n}\\n.yk89E4zK9zlO69OXhKn5:hover {\\n cursor: pointer;\\n border: 4px solid var(--selection);\\n box-sizing: border-box;\\n}\\n\\n.pzTvsxKjpy6MqcFhxh9j {\\n background-color: var(--selection);\\n}\\n.pzTvsxKjpy6MqcFhxh9j:hover {\\n background-color: var(--hover-selection);\\n}\\n\\n.r_Sdklnj57CE2ZjnBDw6 {\\n background-color: var(--hover-selection);\\n filter: brightness(135%);\\n}\\n\\n.Ich9T1nSzHs1a84insfp {\\n background-color: var(--hover-selection);\\n filter: brightness(75%);\\n}\\n\\n._3U1zi1J1sXT41AzpAA1j {\\n position: absolute;\\n bottom: 0;\\n right: 50%;\\n transform: translate(50%, 100%);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Keyboard/Common/keyPositionSelectorStyles.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,oCAAoC;AACtC;AACA;EACE,eAAe;EACf,kCAAkC;EAClC,sBAAsB;AACxB;;AAEA;EACE,kCAAkC;AACpC;AACA;EACE,wCAAwC;AAC1C;;AAEA;EACE,wCAAwC;EACxC,wBAAwB;AAC1B;;AAEA;EACE,wCAAwC;EACxC,uBAAuB;AACzB;;AAEA;EACE,kBAAkB;EAClB,SAAS;EACT,UAAU;EACV,+BAA+B;AACjC\",\"sourcesContent\":[\".key {\\n background-color: var(--key-bg-base);\\n}\\n.selectable:hover {\\n cursor: pointer;\\n border: 4px solid var(--selection);\\n box-sizing: border-box;\\n}\\n\\n.highlight {\\n background-color: var(--selection);\\n}\\n.highlight:hover {\\n background-color: var(--hover-selection);\\n}\\n\\n.previewAdd {\\n background-color: var(--hover-selection);\\n filter: brightness(135%);\\n}\\n\\n.previewRemove {\\n background-color: var(--hover-selection);\\n filter: brightness(75%);\\n}\\n\\n.tip {\\n position: absolute;\\n bottom: 0;\\n right: 50%;\\n transform: translate(50%, 100%);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"key\": \"lD5TsvdIbEAHNdmhfnlb\",\n\t\"selectable\": \"yk89E4zK9zlO69OXhKn5\",\n\t\"highlight\": \"pzTvsxKjpy6MqcFhxh9j\",\n\t\"previewAdd\": \"r_Sdklnj57CE2ZjnBDw6\",\n\t\"previewRemove\": \"Ich9T1nSzHs1a84insfp\",\n\t\"tip\": \"_3U1zi1J1sXT41AzpAA1j\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".JeRmYfUKXTg9VqWZshKO {\\n position: absolute;\\n pointer-events: none;\\n z-index: 2;\\n}\\n.JeRmYfUKXTg9VqWZshKO > * {\\n pointer-events: all;\\n}\\n\\n.JeRmYfUKXTg9VqWZshKO ul {\\n display: flex;\\n position: relative;\\n flex-direction: column;\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n}\\n.JeRmYfUKXTg9VqWZshKO li {\\n position: relative;\\n padding: 0;\\n margin: 0;\\n width: max-content;\\n height: 34px;\\n cursor: pointer;\\n}\\n.JeRmYfUKXTg9VqWZshKO .u2LnyyXbhUKWkR8h1WgY {\\n cursor: grab;\\n}\\n.Svi1LYw7uQ_NUkdl_Qqu, .QHkrJNCowEE3i9FocgKe {\\n background-color: rgba(201, 201, 201, 0.5);\\n color: darkgray;\\n border-radius: 15px;\\n height: 30px;\\n padding: 0px;\\n margin: 2px;\\n width: max-content;\\n}\\n.JeRmYfUKXTg9VqWZshKO:not([data-dragging=\\\"true\\\"]) li:hover .Svi1LYw7uQ_NUkdl_Qqu {\\n background-color: rgba(60, 179, 113, 0.85);\\n color: white;\\n padding-right: 35px;\\n}\\n[data-dragging=\\\"true\\\"] .Svi1LYw7uQ_NUkdl_Qqu {\\n padding-right: 35px;\\n}\\n.JeRmYfUKXTg9VqWZshKO .u2LnyyXbhUKWkR8h1WgY .Svi1LYw7uQ_NUkdl_Qqu {\\n background-color: rgb(60, 179, 113);\\n color: white;\\n}\\n\\n.JeRmYfUKXTg9VqWZshKO li * {\\n display: inline-block;\\n}\\n.JeRmYfUKXTg9VqWZshKO li .yVeX9ivshCU7PiJfbG2v {\\n overflow: auto;\\n width: 30px;\\n height: 30px;\\n line-height: 30px;\\n text-align: center;\\n}\\n.JeRmYfUKXTg9VqWZshKO li .tV7QyJybi_Gy9OnFqX6l {\\n overflow: hidden;\\n width: 0;\\n height: 30px;\\n line-height: 30px;\\n padding: 0;\\n font-variant: small-caps;\\n}\\n\\n.Svi1LYw7uQ_NUkdl_Qqu {\\n margin: 4px 2px;\\n transition: margin-top .15s ease-in;\\n}\\n.Svi1LYw7uQ_NUkdl_Qqu.pRqaGgm21Psy3msTmiKg {\\n cursor: grabbing;\\n background-color: royalblue !important;\\n color: white;\\n opacity: 0.3;\\n}\\n\\n.v7BdtxvE2YVCWNVJlnry {\\n position: absolute;\\n\\n min-width: 200px;\\n width: 100%;\\n height: 34px;\\n /* border: 1px dotted tomato; */\\n}\\n\\n[data-dragging=\\\"false\\\"] .v7BdtxvE2YVCWNVJlnry {\\n display: none;\\n}\\n.a4BtINSAm0wAMDfWjTWQ {\\n /* position: relative; */\\n width: 200px;\\n opacity: .3;\\n}\\n\\n.Svi1LYw7uQ_NUkdl_Qqu.RMyVbbtfIDcsWDY7Qb1c {\\n margin-top: 34px;\\n}\\n\\n.JeRmYfUKXTg9VqWZshKO ul :hover .Svi1LYw7uQ_NUkdl_Qqu .tV7QyJybi_Gy9OnFqX6l,\\n[data-dragging=\\\"true\\\"] .Svi1LYw7uQ_NUkdl_Qqu .tV7QyJybi_Gy9OnFqX6l {\\n transition: .15s ease-in;\\n width: auto;\\n padding: 0 0 0 10px;\\n}\\n\\n.JeRmYfUKXTg9VqWZshKO button {\\n width: 30px;\\n height: 30px;\\n line-height: 30px;\\n padding: 0;\\n text-align: center;\\n border-radius: 15px;\\n}\\n\\n.JeRmYfUKXTg9VqWZshKO .htA0l4uMnWt9050_zphf {\\n cursor: pointer;\\n position: absolute;\\n right: 10px;\\n visibility: hidden;\\n\\n height: 30px;\\n line-height: 30px;\\n}\\n.JeRmYfUKXTg9VqWZshKO li:hover .htA0l4uMnWt9050_zphf {\\n visibility: visible;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Keyboard/Layers/layer-switcher.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;EAClB,oBAAoB;EACpB,UAAU;AACZ;AACA;EACE,mBAAmB;AACrB;;AAEA;EACE,aAAa;EACb,kBAAkB;EAClB,sBAAsB;EACtB,qBAAqB;EACrB,SAAS;EACT,UAAU;AACZ;AACA;EACE,kBAAkB;EAClB,UAAU;EACV,SAAS;EACT,kBAAkB;EAClB,YAAY;EACZ,eAAe;AACjB;AACA;EACE,YAAY;AACd;AACA;EACE,0CAA0C;EAC1C,eAAe;EACf,mBAAmB;EACnB,YAAY;EACZ,YAAY;EACZ,WAAW;EACX,kBAAkB;AACpB;AACA;EACE,0CAA0C;EAC1C,YAAY;EACZ,mBAAmB;AACrB;AACA;EACE,mBAAmB;AACrB;AACA;EACE,mCAAmC;EACnC,YAAY;AACd;;AAEA;EACE,qBAAqB;AACvB;AACA;EACE,cAAc;EACd,WAAW;EACX,YAAY;EACZ,iBAAiB;EACjB,kBAAkB;AACpB;AACA;EACE,gBAAgB;EAChB,QAAQ;EACR,YAAY;EACZ,iBAAiB;EACjB,UAAU;EACV,wBAAwB;AAC1B;;AAEA;EACE,eAAe;EACf,mCAAmC;AACrC;AACA;EACE,gBAAgB;EAChB,sCAAsC;EACtC,YAAY;EACZ,YAAY;AACd;;AAEA;EACE,kBAAkB;;EAElB,gBAAgB;EAChB,WAAW;EACX,YAAY;EACZ,+BAA+B;AACjC;;AAEA;EACE,aAAa;AACf;AACA;EACE,wBAAwB;EACxB,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,gBAAgB;AAClB;;AAEA;;EAEE,wBAAwB;EACxB,WAAW;EACX,mBAAmB;AACrB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,iBAAiB;EACjB,UAAU;EACV,kBAAkB;EAClB,mBAAmB;AACrB;;AAEA;EACE,eAAe;EACf,kBAAkB;EAClB,WAAW;EACX,kBAAkB;;EAElB,YAAY;EACZ,iBAAiB;AACnB;AACA;EACE,mBAAmB;AACrB\",\"sourcesContent\":[\".layerSelector {\\n position: absolute;\\n pointer-events: none;\\n z-index: 2;\\n}\\n.layerSelector > * {\\n pointer-events: all;\\n}\\n\\n.layerSelector ul {\\n display: flex;\\n position: relative;\\n flex-direction: column;\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n}\\n.layerSelector li {\\n position: relative;\\n padding: 0;\\n margin: 0;\\n width: max-content;\\n height: 34px;\\n cursor: pointer;\\n}\\n.layerSelector .active {\\n cursor: grab;\\n}\\n.layer, .addLayer {\\n background-color: rgba(201, 201, 201, 0.5);\\n color: darkgray;\\n border-radius: 15px;\\n height: 30px;\\n padding: 0px;\\n margin: 2px;\\n width: max-content;\\n}\\n.layerSelector:not([data-dragging=\\\"true\\\"]) li:hover .layer {\\n background-color: rgba(60, 179, 113, 0.85);\\n color: white;\\n padding-right: 35px;\\n}\\n[data-dragging=\\\"true\\\"] .layer {\\n padding-right: 35px;\\n}\\n.layerSelector .active .layer {\\n background-color: rgb(60, 179, 113);\\n color: white;\\n}\\n\\n.layerSelector li * {\\n display: inline-block;\\n}\\n.layerSelector li .index {\\n overflow: auto;\\n width: 30px;\\n height: 30px;\\n line-height: 30px;\\n text-align: center;\\n}\\n.layerSelector li .name {\\n overflow: hidden;\\n width: 0;\\n height: 30px;\\n line-height: 30px;\\n padding: 0;\\n font-variant: small-caps;\\n}\\n\\n.layer {\\n margin: 4px 2px;\\n transition: margin-top .15s ease-in;\\n}\\n.layer.dragging {\\n cursor: grabbing;\\n background-color: royalblue !important;\\n color: white;\\n opacity: 0.3;\\n}\\n\\n.dropper {\\n position: absolute;\\n\\n min-width: 200px;\\n width: 100%;\\n height: 34px;\\n /* border: 1px dotted tomato; */\\n}\\n\\n[data-dragging=\\\"false\\\"] .dropper {\\n display: none;\\n}\\n.dropTarget {\\n /* position: relative; */\\n width: 200px;\\n opacity: .3;\\n}\\n\\n.layer.displaced {\\n margin-top: 34px;\\n}\\n\\n.layerSelector ul :hover .layer .name,\\n[data-dragging=\\\"true\\\"] .layer .name {\\n transition: .15s ease-in;\\n width: auto;\\n padding: 0 0 0 10px;\\n}\\n\\n.layerSelector button {\\n width: 30px;\\n height: 30px;\\n line-height: 30px;\\n padding: 0;\\n text-align: center;\\n border-radius: 15px;\\n}\\n\\n.layerSelector .delete {\\n cursor: pointer;\\n position: absolute;\\n right: 10px;\\n visibility: hidden;\\n\\n height: 30px;\\n line-height: 30px;\\n}\\n.layerSelector li:hover .delete {\\n visibility: visible;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"layerSelector\": \"JeRmYfUKXTg9VqWZshKO\",\n\t\"active\": \"u2LnyyXbhUKWkR8h1WgY\",\n\t\"layer\": \"Svi1LYw7uQ_NUkdl_Qqu\",\n\t\"addLayer\": \"QHkrJNCowEE3i9FocgKe\",\n\t\"index\": \"yVeX9ivshCU7PiJfbG2v\",\n\t\"name\": \"tV7QyJybi_Gy9OnFqX6l\",\n\t\"dragging\": \"pRqaGgm21Psy3msTmiKg\",\n\t\"dropper\": \"v7BdtxvE2YVCWNVJlnry\",\n\t\"dropTarget\": \"a4BtINSAm0wAMDfWjTWQ\",\n\t\"displaced\": \"RMyVbbtfIDcsWDY7Qb1c\",\n\t\"delete\": \"htA0l4uMnWt9050_zphf\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ULm7RKJYCZDRV0HmcA7C {\\n position: absolute;\\n top: 0;\\n width: 100vw;\\n height: 100vh;\\n overflow: auto;\\n scroll-snap-stop: normal;\\n scroll-snap-type: y proximity;\\n}\\n\\n.XWq43GGa2yCVXqY4Syw3 {\\n width: fit-content;\\n scroll-snap-align: start;\\n}\\n\\n.EwvVNY6vlf7HwYmXTbzi {\\n margin: 10px 0;\\n display: flex;\\n}\\n\\n.EwvVNY6vlf7HwYmXTbzi label {\\n display: inline-block;\\n width: 120px;\\n text-align: right;\\n margin-right: 10px;\\n}\\n\\n.uhiC_7TzN7eCNbm5C6a8[data-sensor-count=\\\"0\\\"] {\\n display: none;\\n}\\n\\n.ztwqyyB2FFS4oWgcCyZC label {\\n display: inline-block;\\n margin-bottom: 10px;\\n}\\n.ztwqyyB2FFS4oWgcCyZC[data-unbound=\\\"true\\\"] label code {\\n opacity: 0.5;\\n}\\n\\n.N98b5r9XUT9yotsaxhB7 {\\n cursor: pointer;\\n margin-left: 5px;\\n}\\n\\n.QZ1jUOy1FEDFG3IrI5JM { cursor: pointer; }\\n.QZ1jUOy1FEDFG3IrI5JM:hover {\\n color: white;\\n}\\n\\n.raNkhxmGTqtKQI9X2gVA:not(.y7y6ypMwmSafQKgt7oBw) {\\n cursor: pointer;\\n}\\n.raNkhxmGTqtKQI9X2gVA > * {\\n pointer-events: none;\\n}\\n.raNkhxmGTqtKQI9X2gVA:hover, .y7y6ypMwmSafQKgt7oBw {\\n color: var(--key-color-hover);\\n background-color: var(--selection);\\n}\\n.raNkhxmGTqtKQI9X2gVA:hover {\\n background-color: var(--hover-selection);\\n}\\n\\n.sahMSNIG_94Hn9tEEZ8q {\\n max-width: 80vw;\\n overflow-x: scroll;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Keyboard/Layers/style.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;EAClB,MAAM;EACN,YAAY;EACZ,aAAa;EACb,cAAc;EACd,wBAAwB;EACxB,6BAA6B;AAC/B;;AAEA;EACE,kBAAkB;EAClB,wBAAwB;AAC1B;;AAEA;EACE,cAAc;EACd,aAAa;AACf;;AAEA;EACE,qBAAqB;EACrB,YAAY;EACZ,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,qBAAqB;EACrB,mBAAmB;AACrB;AACA;EACE,YAAY;AACd;;AAEA;EACE,eAAe;EACf,gBAAgB;AAClB;;AAEA,wBAAoB,eAAe,EAAE;AACrC;EACE,YAAY;AACd;;AAEA;EACE,eAAe;AACjB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,6BAA6B;EAC7B,kCAAkC;AACpC;AACA;EACE,wCAAwC;AAC1C;;AAEA;EACE,eAAe;EACf,kBAAkB;AACpB\",\"sourcesContent\":[\".layerScrollContainer {\\n position: absolute;\\n top: 0;\\n width: 100vw;\\n height: 100vh;\\n overflow: auto;\\n scroll-snap-stop: normal;\\n scroll-snap-type: y proximity;\\n}\\n\\n.layerWrapper {\\n width: fit-content;\\n scroll-snap-align: start;\\n}\\n\\n.field {\\n margin: 10px 0;\\n display: flex;\\n}\\n\\n.field label {\\n display: inline-block;\\n width: 120px;\\n text-align: right;\\n margin-right: 10px;\\n}\\n\\n.sensors[data-sensor-count=\\\"0\\\"] {\\n display: none;\\n}\\n\\n.sensor label {\\n display: inline-block;\\n margin-bottom: 10px;\\n}\\n.sensor[data-unbound=\\\"true\\\"] label code {\\n opacity: 0.5;\\n}\\n\\n.deleteSensorBinding {\\n cursor: pointer;\\n margin-left: 5px;\\n}\\n\\n.addSensorBinding { cursor: pointer; }\\n.addSensorBinding:hover {\\n color: white;\\n}\\n\\n.quickBindKey:not(.quickBindKeyHighlight) {\\n cursor: pointer;\\n}\\n.quickBindKey > * {\\n pointer-events: none;\\n}\\n.quickBindKey:hover, .quickBindKeyHighlight {\\n color: var(--key-color-hover);\\n background-color: var(--selection);\\n}\\n.quickBindKey:hover {\\n background-color: var(--hover-selection);\\n}\\n\\n.quickAssignDialog {\\n max-width: 80vw;\\n overflow-x: scroll;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"layerScrollContainer\": \"ULm7RKJYCZDRV0HmcA7C\",\n\t\"layerWrapper\": \"XWq43GGa2yCVXqY4Syw3\",\n\t\"field\": \"EwvVNY6vlf7HwYmXTbzi\",\n\t\"sensors\": \"uhiC_7TzN7eCNbm5C6a8\",\n\t\"sensor\": \"ztwqyyB2FFS4oWgcCyZC\",\n\t\"deleteSensorBinding\": \"N98b5r9XUT9yotsaxhB7\",\n\t\"addSensorBinding\": \"QZ1jUOy1FEDFG3IrI5JM\",\n\t\"quickBindKey\": \"raNkhxmGTqtKQI9X2gVA\",\n\t\"quickBindKeyHighlight\": \"y7y6ypMwmSafQKgt7oBw\",\n\t\"quickAssignDialog\": \"sahMSNIG_94Hn9tEEZ8q\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","var createCompounder = require('./_createCompounder'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\nvar startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n});\n\nmodule.exports = startCase;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./keyPositionSelectorStyles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./keyPositionSelectorStyles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","Input","validator","required","value","rest","error","className","styles","type","propTypes","PropTypes","position","x","y","rotation","a","rx","ry","dimensions","u","h","keyLayout","layout","getPosition","pick","getRotation","r","getSize","w","Placer","props","children","size","positioningStyle","getKeyStyles","style","scale","layoutPropTypes","defaultProps","KeyboardLayout","renderKey","transform","transformOrigin","map","index","ActionMenu","actions","useState","isOpen","setOpen","element","useRef","handleClick","useCallback","e","current","contains","target","useEffect","document","body","addEventListener","removeEventListener","ref","join","onClick","Icon","name","action","i","closeAnd","callback","content","LayerActionsMenu","layerIndex","additionalActions","dispatch","useDispatch","useMemo","transparentToKeypress","rebindTransparentToKeyPress","transparentToNone","rebindTransparentToNone","noneToKeypress","rebindNoneToKeypress","noneToTransparent","rebindNoneToTransparent","emptyKeypressToTransparent","rebindEmptyKeypressToTransparent","emptyKeypressToNone","rebindEmptyKeypressToNone","isRequired","KeyPositionIndicator","keyPositions","styleOverrides","useContext","LayoutContext","wrapperDimensions","wrapperStyle","getWrapperStyle","overrides","pointerEvents","padding","margin","bindings","KeyWrapper","selectable","themeClass","classNames","includes","discussionUrl","BindingDialog","initialBinding","binding","bindingIndex","onUpdate","onCancel","context","setBinding","useBindingEditor","bindTree","behavior","behaviorParams","editing","invalid","clearEditing","handleUpdateBindValue","selectNodeForEditing","onConfirm","Modal","onDismiss","top","background","borderRadius","boxShadow","fontSize","width","Link","href","external","DialogBox","dismissText","display","alignItems","justifyContent","borderBottom","paddingBottom","gap","Binding","params","fontWeight","keyStyles","BindValue","slot","node","expanded","onSelect","Parameters","slots","ValuePicker","behaviour","prompt","searchKey","textAlign","ActionButton","disabled","secondary","listStyleType","length","Parameter","param","raw","mappedName","code","startCase","LayerBindings","activeLayer","useSelector","selectLayers","properties","editBindIndex","setEditBindIndex","handleUpdateBind","bindIndex","updateKeyBinding","parsed","Key","label","noBindingClick","keyWrapperProps","event","stopPropagation","bind","hideBehaviour","EncoderBindings","bindPropTypes","SensorBindings","layer","sensors","sensorBindings","handleUpdate","sensorIndex","updateSensorBindings","flexDirection","sensor","Sensor","canAdd","canDelete","labelText","identifier","_isPlaceholder","handleDelete","handleAdd","fontVariant","title","onClose","pending","setPending","htmlFor","id","placeholder","validateDevicetreeNodeName","onChange","state","updateLayerMetadata","INITIAL_STATE","keysHeld","keysHeldBeforeLastRelease","mappings","Alt","Control","Shift","Meta","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Escape","Tab","Enter","Home","End","PageDown","PageUp","Backspace","Delete","useQuickAssignment","defaultStart","isActive","setIsActive","setBindIndex","nextBind","onKeyPress","useReducer","key","reduceKeyDown","filter","reduceKeyUp","handleKeyDown","repeat","preventDefault","handleKeyUp","useKeyHandler","appliedModifiers","compact","altKey","ctrlKey","metaKey","shiftKey","getModifiers","mapped","mapCharacter","toLowerCase","prefix","location","getSidePrefix","normalizeKey","reduce","modifier","getBindFromKey","startQuickAssignment","cancelQuickAssignment","QuickAssignmentModal","status","minWidth","classes","Tip","selectSensors","keyboard","Layer","isActiveLayer","showConfig","setShowConfig","showQuickAssignModal","setShowQuickAssignModal","openConfig","openQuickAssign","closeQuickAssign","height","LayerSwitcher","bindingCount","searchContext","SearchContext","definitionsContext","DefinitionsContext","layers","handleSelect","createLayer","window","confirm","deleteLayer","layerIndexChanged","handleDrop","dragState","currentIndex","dragIndex","targetIndex","dropIndex","repositionLayer","onDrop","setDragState","handleDragOver","handleDragStart","Number","dataset","slotIndex","handleDragEnd","handleDragEnter","dropPosition","handleDragLeave","isDragging","useDragAndDrop","dragHandlers","draggable","onDragStart","onDragEnd","onDragEnter","onDragOver","onDragLeave","stop","PromptForFirstLayer","setActiveLayer","clampedActiveLayer","Math","max","min","fn","onKey","mapping","___CSS_LOADER_EXPORT___","push","module","locals","exports","array","iteratee","accumulator","initAccum","string","split","reAsciiWord","match","object","baseSlice","start","end","castSlice","hasUnicode","stringToArray","toString","methodName","strSymbols","chr","charAt","trailing","slice","arrayReduce","deburr","words","reApos","RegExp","replace","deburrLetter","basePropertyOf","reHasUnicode","test","reHasUnicodeWord","asciiToArray","unicodeToArray","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsModifier","rsOptVar","rsSeq","rsSymbol","reUnicode","rsDingbatRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsEmoji","reUnicodeWord","reLatin","reComboMark","createCompounder","upperFirst","result","word","createCaseFirst","asciiWords","hasUnicodeWord","unicodeWords","pattern","guard"],"sourceRoot":""} \ No newline at end of file
diff --git a/8381.171cf958a1d260f201e4.js b/8381.171cf958a1d260f201e4.js
new file mode 100644
index 0000000..b2fe54e
--- /dev/null
+++ b/8381.171cf958a1d260f201e4.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[8381],{97494:function(e,n,r){r.d(n,{Z:function(){return S}});var t=r(45697),o=r.n(t),i=r(93379),a=r.n(i),l=r(7795),c=r.n(l),u=r(90569),s=r.n(u),p=r(3565),f=r.n(p),d=r(19216),y=r.n(d),b=r(44589),A=r.n(b),m=r(33988),h={};h.styleTagTransform=A(),h.setAttributes=f(),h.insert=s().bind(null,"head"),h.domAPI=c(),h.insertStyleElement=y(),a()(m.Z,h);var v=m.Z&&m.Z.locals?m.Z.locals:void 0,g=r(85893);function j(e){return j="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},j(e)}var x=["validator","required","value"];function C(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function O(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?C(Object(r),!0).forEach((function(n){w(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):C(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function w(e,n,r){return(n=function(e){var n=function(e,n){if("object"!==j(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!==j(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===j(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function S(e){var n=e.validator,r=e.required,t=void 0!==r&&r,o=e.value,i=void 0===o?"":o,a=function(e,n){if(null==e)return{};var r,t,o=function(e,n){if(null==e)return{};var r,t,o={},i=Object.keys(e);for(t=0;t<i.length;t++)r=i[t],n.indexOf(r)>=0||(o[r]=e[r]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t<i.length;t++)r=i[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,x),l=n(i)||!i&&t&&"cannot be empty";return(0,g.jsxs)("span",{className:v.wrapper,children:[(0,g.jsx)("input",O({type:"text",value:i},a)),l&&(0,g.jsx)("span",{className:v.error,children:l})]})}S.propTypes={value:o().any.isRequired,required:o().bool,validator:o().func}},98381:function(e,n,r){r.r(n),r.d(n,{default:function(){return gn}});var t=r(67294),o=r(95998),i=r(27926),a=r(41051),l=r(50361),c=r.n(l),u=r(57557),s=r.n(u),p=r(96186),f=r(64261),d=r(18311),y=r(49443),b=r(85893);function A(e){return A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},A(e)}function m(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function h(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?m(Object(r),!0).forEach((function(n){v(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function v(e,n,r){return(n=function(e){var n=function(e,n){if("object"!==A(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!==A(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===A(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function g(e){var n=e.node;return(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{children:(0,b.jsx)("code",{children:n.properties.compatible.parsed})}),(0,b.jsx)(y.Z,h({},e))]})}var j=r(93379),x=r.n(j),C=r(7795),O=r.n(C),w=r(90569),S=r.n(w),E=r(3565),B=r.n(E),k=r(19216),P=r.n(k),D=r(44589),Z=r.n(D),U=r(34288),R={};R.styleTagTransform=Z(),R.setAttributes=B(),R.insert=S().bind(null,"head"),R.domAPI=O(),R.insertStyleElement=P(),x()(U.Z,R);var q=U.Z&&U.Z.locals?U.Z.locals:void 0;function I(e){var n=e.property,r=e.schema,t=e.required,o=void 0!==t&&t;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("span",{className:q.propertyName,title:n,children:[n,o&&(0,b.jsx)("span",{className:q.requiredIndicator,children:"*"})]}),r.deprecatedBy&&(0,b.jsx)("sub",{className:q.propertyDeprecation,children:"(deprecated)"})]})}var N=r(45697),T=r.n(N),K=r(98371),M=r(27470),z={};z.styleTagTransform=Z(),z.setAttributes=B(),z.insert=S().bind(null,"head"),z.domAPI=O(),z.insertStyleElement=P(),x()(M.Z,z);var F=M.Z&&M.Z.locals?M.Z.locals:void 0;function V(e){return V="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},V(e)}function G(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function W(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?G(Object(r),!0).forEach((function(n){Y(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):G(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function Y(e,n,r){return(n=function(e){var n=function(e,n){if("object"!==V(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!==V(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===V(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function _(e){var n=e.prop,r=e.schema,t=e.onUpdate;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a.Z,{name:"code",title:"Raw property value"})," ",(0,b.jsx)("input",{required:null==r?void 0:r.required,value:null==n?void 0:n.raw,onChange:function(e){return t(W(W({},n),{},{raw:e.target.value,useRaw:!0}))}})]})}function X(e){var n=e.schema;return(0,b.jsx)("span",{className:[F.propertyValue,F.readonly].join(" "),children:n.const})}function Q(e){var n,r=e.prop,t=e.schema,o=e.onUpdate;return(0,b.jsx)("input",{type:"text",className:F.propertyValue,value:null!==(n=null==r?void 0:r.parsed)&&void 0!==n?n:"",placeholder:t.default&&"Default: ".concat(t.default),onChange:function(e){o(W(W({},r),{},{parsed:e.target.value,useRaw:!1}))}})}function H(e){var n,r=e.prop,t=e.schema,o=e.onUpdate;return(0,b.jsx)("input",{type:"number",className:F.propertyValue,value:null!==(n=null==r?void 0:r.parsed)&&void 0!==n?n:"",placeholder:t.default&&"Default: ".concat(t.default),onChange:function(e){o(W(W({},r),{},{parsed:Number(e.target.value),useRaw:!1}))}})}function L(e){var n=e.prop,r=e.onUpdate;return(0,b.jsx)("input",{type:"checkbox",className:F.propertyValue,checked:(null==n?void 0:n.parsed)||!1,onChange:function(e){r({parsed:!!e.target.checked,useRaw:!1})}})}var $=r(35161),J=r.n($),ee=r(87360),ne=r.n(ee),re=r(49519),te=r(49671),oe=r(45944);function ie(e){var n=e.choices,r=e.prompt,o=e.onSelect,i=(0,t.useMemo)((function(){return n.map((function(e){return{value:e}}))}),[n]),a=(0,t.useCallback)((function(e){var n=e.search?(0,b.jsx)("span",{children:ne().highlight(e.search,(function(e,n){return(0,b.jsx)("b",{children:e},n)}))}):(0,b.jsx)("span",{children:e.value});return(0,b.jsxs)(b.Fragment,{children:[n,e.description&&(0,b.jsx)("p",{className:oe.Z.description,children:e.description})]})}),[]);return(0,b.jsxs)("div",{className:oe.Z.dialog,children:[(0,b.jsx)("p",{children:r||"Select"}),(0,b.jsx)(te.Z,{choices:i,initialQuery:"",searchKey:"value",renderResults:function(e){return e&&(0,b.jsx)(re.Z,{results:e,onSelect:function(e){return o(e.value)},renderResult:a})}})]})}ie.propTypes={choices:T().arrayOf(T().stirng).isRequired,prompt:T().string,onSelect:T().func.isRequired};var ae=ie;function le(e){return le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le(e)}function ce(e){return function(e){if(Array.isArray(e))return se(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ue(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ue(e,n){if(e){if("string"==typeof e)return se(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?se(e,n):void 0}}function se(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}function pe(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function fe(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?pe(Object(r),!0).forEach((function(n){de(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):pe(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function de(e,n,r){return(n=function(e){var n=function(e,n){if("object"!==le(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!==le(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===le(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function ye(e){var n=e.prop,r=void 0===n?{}:n,o=e.schema,i=e.onUpdate,a=o.enum,l=r.parsed,c=(0,t.useCallback)((function(e){i(fe(fe({},r),{},{parsed:a[e.target.value],useRaw:!1}))}),[r,a,i]);return(0,b.jsx)("select",{className:F.propertyValue,onChange:c,value:a.indexOf(l),children:a.map((function(e,n){return(0,b.jsx)("option",{value:n,children:e},n)}))})}function be(e){var n=e.prop,r=void 0===n?{}:n,o=e.schema,i=e.onUpdate,a=function(e){var n=(0,t.useContext)(d.v);return(0,t.useMemo)((function(){if(!e.choices)return[];if(Array.isArray(e.choices))return e.choices;if(!e.choices.$source)throw new Error("Expected schema.choices.$source");var r=n[e.choices.$source];return e.choices.$key?J()(r,e.choices.$key):r}),[n,e.choices])}(o),l=r.parsed,c=void 0===l?[]:l,u=(0,t.useCallback)((function(e){i(fe(fe({},r),{},{useRaw:!1,parsed:e}))}),[r,i]),s=a.length>20?me:Ae;return(0,b.jsx)(s,{selected:c,choices:a,onUpdate:u})}function Ae(e){var n=e.selected,r=e.choices,o=e.onUpdate,i=(0,t.useCallback)((function(e){o(n.includes(e)?n.filter((function(n){return n!==e})):[].concat(ce(n),[e]))}),[n,o]);return(0,b.jsx)("ol",{className:F.propertyMultiSelect,children:r.map((function(e,r){return(0,b.jsx)("li",{children:(0,b.jsxs)("label",{children:[(0,b.jsx)("input",{type:"checkbox",checked:n.includes(e),onChange:function(n){return i(e)}}),e]})},r)}))})}function me(e){var n,r,o=e.selected,l=e.choices,c=e.onUpdate,u=(n=(0,t.useState)(!1),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===n){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==n);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(n,r)||ue(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=u[0],p=u[1],d=(0,t.useCallback)((function(e){c([].concat(ce(o),[e])),p(!1)}),[p,o,c]),y=(0,t.useCallback)((function(e){c(o.filter((function(n){return n!==e})))}),[o,c]);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("ul",{className:F.propertyMultiSelectChips,children:o.map((function(e,n){return(0,b.jsx)("li",{children:(0,b.jsxs)("span",{className:F.behaviorBind,children:[e," ",(0,b.jsx)(a.Z,{name:"times",className:F.phandleRemove,onClick:function(){return y(e)}})]})},n)}))}),(0,b.jsxs)(i.Z,{secondary:!0,onClick:function(){return p(!0)},children:[(0,b.jsx)(a.Z,{name:"plus"})," Add"]}),s&&(0,b.jsx)(f.Z,{onDismiss:function(){return p(!1)},children:(0,b.jsx)(ae,{choices:l,onSelect:d})})]})}var he=r(39693),ve=r.n(he),ge=r(98588),je=r(29709);function xe(e){return xe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},xe(e)}function Ce(e){return function(e){if(Array.isArray(e))return Be(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Ee(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Oe(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function we(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Oe(Object(r),!0).forEach((function(n){Se(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Oe(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function Se(e,n,r){return(n=function(e){var n=function(e,n){if("object"!==xe(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!==xe(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===xe(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function Ee(e,n){if(e){if("string"==typeof e)return Be(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Be(e,n):void 0}}function Be(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}function ke(e){var n,r,o=e.prop,l=void 0===o?{}:o,c=e.schema,u=void 0===c?{}:c,s=e.onUpdate,p=l.parsed,f=void 0===p?[]:p,d=u.length,y=(n=(0,t.useState)(null),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===n){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==n);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(n,r)||Ee(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),A=y[0],m=y[1],h=void 0===d||d&&f.length<d,v=(0,t.useCallback)((function(){s(we(we({},l),{},{useRaw:!1,parsed:[].concat(Ce(f),[""])})),m(f.length)}),[l,f,s,m]),g=(0,t.useCallback)((function(e){s(we(we({},l),{},{useRaw:!1,parsed:(0,je.xw)(f,A,e.code)})),m(null)}),[l,f,A,s]),j=(0,t.useCallback)((function(e){s(we(we({},l),{},{useRaw:!1,parsed:(0,je.f5)(f,e)}))}),[l,f,s]);return(0,b.jsxs)("div",{children:[(0,b.jsx)("ol",{className:ve()([F.propertyPhandleSelect,1===d&&F.propertyPhandleSingleton]).join(" "),children:f.map((function(e,n){return(0,b.jsx)("li",{children:(0,b.jsxs)("span",{className:F.behaviorBind,onClick:function(){return m(n)},children:[e,1!==d&&(0,b.jsx)(a.Z,{name:"times",className:F.phandleRemove,onClick:function(e){e.stopPropagation(),j(n)}})]})},n)}))}),null!==A&&(0,b.jsx)(ge.Z,{node:{value:f[A],params:[],slot:"behaviour"},type:"value",context:"none",behaviour:{code:f[A]},prompt:"Select Behavior",searchKey:"code",onSelect:g,onCancel:function(){return m(null)}}),h&&(0,b.jsxs)(i.Z,{secondary:!0,onClick:v,children:[(0,b.jsx)(a.Z,{name:"plus"})," Add Behavior"]})]})}var Pe=r(82607),De=r(91118);function Ze(e){return Ze="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ze(e)}function Ue(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}function Re(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function qe(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Re(Object(r),!0).forEach((function(n){Ie(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Re(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function Ie(e,n,r){return(n=function(e){var n=function(e,n){if("object"!==Ze(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!==Ze(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Ze(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function Ne(e){var n=e.prop,r=void 0===n?{}:n,o=e.onUpdate,l=r.parsed,c=void 0===l?[]:l,u=(0,t.useCallback)((function(){var e;o(qe(qe({},r),{},{useRaw:!1,parsed:[].concat((e=c,function(e){if(Array.isArray(e))return Ue(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,n){if(e){if("string"==typeof e)return Ue(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ue(e,n):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),[{value:"",params:[]}])}))}),[r,c,o]),s=(0,t.useCallback)((function(e,n){o(qe(qe({},r),{},{useRaw:!1,parsed:(0,je.xw)(c,n,e)}))}),[r,c,o]),p=(0,t.useCallback)((function(e){o(qe(qe({},r),{},{useRaw:!1,parsed:(0,je.f5)(c,e)}))}),[r,c,o]);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("ol",{className:F.propertyBindingsValue,children:c.map((function(e,n){return(0,b.jsx)("li",{children:(0,b.jsxs)(De.Z,{children:[(0,b.jsx)(Pe.Z,{context:"none",value:e.value,params:e.params,onUpdate:function(e){return s(e,n)}}),(0,b.jsx)("div",{className:F.actions,children:(0,b.jsx)(a.Z,{name:"trash",className:F.deleteBind,onClick:function(e){e.stopPropagation(),p(n)}})})]})},n)}))}),(0,b.jsxs)(i.Z,{secondary:!0,onClick:u,children:[(0,b.jsx)(a.Z,{name:"plus"})," Add binding"]})]})}function Te(e){return Te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Te(e)}function Ke(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function Me(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Ke(Object(r),!0).forEach((function(n){ze(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ke(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function ze(e,n,r){return(n=function(e){var n=function(e,n){if("object"!==Te(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!==Te(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Te(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function Fe(e){var n=e.schema,r=void 0===n?{}:n,t=r.type;if("const"in r)return(0,b.jsx)(X,Me({},e));if("enum"in r)return(0,b.jsx)(ye,Me({},e));if("key-position-picker"===r.helper){var o=e.prop,i=void 0===o?{}:o,a=e.onUpdate;return(0,b.jsx)(K.Z,{value:i.parsed||[],onUpdate:function(e){a(Me(Me({},i),{},{useRaw:!1,parsed:e}))}})}if(r.choices)return(0,b.jsx)(be,Me({},e));switch(t){case"string":return(0,b.jsx)(Q,Me({},e));case"int":return(0,b.jsx)(H,Me({},e));case"boolean":return(0,b.jsx)(L,Me({},e));case"phandle":case"phandles":return(0,b.jsx)(ke,Me({},e));case"phandle-array":return(0,b.jsx)(Ne,Me({},e));default:return(0,b.jsx)(_,Me({},e))}}Fe.propTypes={schema:T().shape({type:T().oneOf(["string","boolean","int","array","phandle","phandles","phandle-array","integer-union"]),required:T().bool,description:T().string,default:T().any,const:T().any,helper:T().any}),prop:T().shape({parsed:T().any,raw:T().string}),onUpdate:T().func.isRequired};var Ve=Fe;function Ge(e){return Ge="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ge(e)}function We(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function Ye(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?We(Object(r),!0).forEach((function(n){_e(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):We(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function _e(e,n,r){return(n=function(e){var n=function(e,n){if("object"!==Ge(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!==Ge(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Ge(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function Xe(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}var Qe=function(e){var n,r,o,l=e.node,u=e.onUpdate,y=e.onCancel,A=(0,t.useContext)(d.v).behaviors,m=(r=(0,t.useState)(l),o=2,function(e){if(Array.isArray(e))return e}(r)||function(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===n){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==n);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(r,o)||function(e,n){if(e){if("string"==typeof e)return Xe(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Xe(e,n):void 0}}(r,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=m[0],v=m[1],j=A[null===(n=l.properties.compatible)||void 0===n?void 0:n.parsed],x=function(e){return function(n){v(Ye(Ye({},h),{},{properties:Ye(Ye({},h.properties),{},_e({},e,n))}))}},C=(0,t.useCallback)((function(){u(c()(h))}),[h,u]),O=(null==j?void 0:j.properties)||{},w=(j?Object.keys(O):Object.keys(h.properties)).filter((function(e){var n;return!("label"===e||null!==(n=O[e])&&void 0!==n&&n.deprecatedBy&&!h.properties[e])})),S=Object.keys(O).reduce((function(e,n){var r=O[n].deprecatedBy;return r&&(e[r]=n),e}),{}),E=Object.keys(O).filter((function(e){var n=O[e],r=n.required,t=n.deprecatedBy,o=S[e];return!((t||o)in h.properties)&&r})),B=E.filter((function(e){return!h.properties[e]}));return(0,b.jsx)(f.Z,{onDismiss:y,children:(0,b.jsx)(p.Z,{dismissText:!1,children:(0,b.jsxs)("div",{style:{maxHeight:"80vh",overflow:"auto"},children:[(0,b.jsxs)("h2",{children:["Edit ",l.name," ",(0,b.jsxs)("code",{children:["(&",l.labels[0],")"]})]}),(0,b.jsx)(g,{node:h,onUpdate:v}),(0,b.jsx)("h3",{children:"Configuration"}),(0,b.jsxs)("table",{className:q.editorForm,children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{children:[(0,b.jsx)("th",{children:"Property"}),(0,b.jsx)("th",{children:"Value"}),(0,b.jsx)("th",{})]})}),(0,b.jsx)("tbody",{children:w.map((function(e,n){return(0,b.jsxs)("tr",{children:[(0,b.jsx)("td",{className:q.propertyName,children:e in O?(0,b.jsx)(I,{property:e,schema:O[e],required:E.includes(e)}):(0,b.jsx)("input",{value:e,onChange:(r=e,function(e){v(Ye(Ye({},h),{},{properties:Object.keys(h.properties).reduce((function(n,t){var o=h.properties[t];return t===r&&(t=e.target.value),n[t]=o,n}),{})}))})})}),(0,b.jsx)("td",{className:q.propertyValue,children:(0,b.jsx)(Ve,{name:e,prop:h.properties[e],schema:O[e],onUpdate:x(e)})}),(0,b.jsx)("td",{children:h.properties[e]&&!E.includes(e)&&(0,b.jsx)(a.Z,{name:"trash-can",className:q.action,onClick:function(){return function(e){v(Ye(Ye({},h),{},{properties:s()(h.properties,e)}))}(e)}})})]},n);var r}))})]}),E.length>0&&(0,b.jsx)("p",{children:(0,b.jsxs)("em",{children:[(0,b.jsx)("span",{className:q.requiredIndicator,children:"*"}),"Property is required."]})}),(0,b.jsxs)("div",{style:{textAlign:"center"},children:[(0,b.jsx)(i.Z,{disabled:B.length>0,onClick:C,children:"Okay"}),(0,b.jsx)(i.Z,{onClick:y,secondary:!0,children:"Cancel"})]})]})})})},He=r(2968);function Le(e){var n=e.onDismiss,r=(0,b.jsx)(He.Z,{external:!0,href:"https://github.com/nickcoutsos/keymap-editor/issues",children:"Keymap Editor Issues"});return(0,b.jsx)(f.Z,{onDismiss:n,children:(0,b.jsxs)(p.Z,{onDismiss:n,style:{maxHeight:"80vh",overflow:"scroll"},children:[(0,b.jsx)("h2",{children:"Behavior Editing Beta Test"}),(0,b.jsx)("p",{children:"Welcome to the behavior editing beta!"}),(0,b.jsx)("p",{children:"This feature has been a long time coming, and while it should enable a lot of advanced ZMK features through the app it is still a work in progress. Some features are still missing so the use experience is a little rough, and there may be errors as well. Some familiarity with ZMK behavior functionality is expected."}),(0,b.jsxs)("p",{children:["I've been using it for a while and it seems to be in a pretty workable state, but I can't catch everything, so it would mean a lot to me for you to share any feedback or issues on GitHub: ",r,"."]})]})})}var $e=r(95130),Je=r(69247);function en(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}var nn=["zmk,behavior-hold-tap","zmk,behavior-mod-morph","zmk,behavior-tap-dance","zmk,behavior-sticky-key","zmk,behavior-caps-word","zmk,behavior-sensor-rotate","zmk,behavior-sensor-rotate-var"].map((function(e){return{value:e,label:$e.behaviorSchemas[e].description}}));function rn(e){var n,r,o=e.onUpdate,a=e.onCancel,l=(n=(0,t.useState)(""),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===n){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==n);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(n,r)||function(e,n){if(e){if("string"==typeof e)return en(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?en(e,n):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=l[0],u=l[1],s=(0,t.useMemo)((function(){return nn.find((function(e){return e.value===c}))}),[c]);return(0,b.jsx)(f.Z,{children:(0,b.jsxs)(p.Z,{dismissText:null,children:[(0,b.jsx)("h3",{children:"Add new behavior"}),(0,b.jsx)("label",{children:(0,b.jsx)(Je.Ph,{required:!0,placeholder:"Select a behavior type",value:s,options:nn,onChange:function(e){var n=e.value;return u(n)},formatOptionLabel:function(e,n){var r=e.value,t=e.label,o=n.context;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{children:t}),"value"!==o&&(0,b.jsxs)("div",{style:{opacity:"0.6"},children:["(",(0,b.jsx)("em",{children:r}),")"]})]})}})}),(0,b.jsxs)("div",{style:{textAlign:"center",margin:"10px"},children:[(0,b.jsx)(i.Z,{disabled:!c,onClick:function(){return o(c)},children:"Create"}),(0,b.jsx)(i.Z,{onClick:a,secondary:!0,children:"Cancel"})]})]})})}rn.propTypes={onUpdate:T().func.isRequired,onCancel:T().func.isRequired};var tn=rn,on=r(98913),an=r.n(on);function ln(e){return ln="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ln(e)}function cn(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function un(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?cn(Object(r),!0).forEach((function(n){sn(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):cn(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function sn(e,n,r){return(n=function(e){var n=function(e,n){if("object"!==ln(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!==ln(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===ln(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function pn(e,n){var r=n.name,t=n.labels,o=n.label,i=$e.behaviorSchemas[e];return{name:r,labels:t,properties:un({compatible:{raw:'"'.concat(e,'"'),parsed:e},label:{raw:'"'.concat(o,'"'),parsed:o}},Object.keys(i.properties).reduce((function(e,n){var r=i.properties[n];return function(e){return["phandle","phandles","phandle-array"].includes(e.type)}(r)&&r.length?e[n]={parsed:an()(r.length,(function(){return"&none"}))}:"const"in r&&(e[n]={parsed:r.const,raw:"<".concat(r.const.toString(),">")}),e}),{}))}}var fn=r(28291),dn=r(12736);function yn(e){return yn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},yn(e)}function bn(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function An(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?bn(Object(r),!0).forEach((function(n){mn(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):bn(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function mn(e,n,r){return(n=function(e){var n=function(e,n){if("object"!==yn(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!==yn(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===yn(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function hn(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===n){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==n);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,n)||function(e,n){if(e){if("string"==typeof e)return vn(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?vn(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function vn(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}var gn=function(){var e=(0,o.v9)((function(e){return e.experimentalSettings})),n=(0,o.v9)(dn.bU),r=hn((0,t.useState)(null),2),l=r[0],c=r[1],u=hn((0,t.useState)(!1),2),s=u[0],p=u[1],f=hn((0,t.useState)(!1),2),d=f[0],y=f[1],A=(0,o.v9)(fn.pR),m=(0,o.I0)(),h=(0,t.useCallback)((function(){p(!0)}),[p]),v=(0,t.useCallback)((function(e){p(!1),m((0,fn.F6)({behavior:pn(e,{name:"new_behavior",labels:["new_behavior"],label:"NEW_BEHAVIOR"})})),setTimeout((function(){return c(A.length)}))}),[A,m,p,c]),g=(0,t.useCallback)((function(e){c(e)}),[c]),j=(0,t.useCallback)((function(e){m((0,fn.tY)({behaviorIndex:e}))}),[m]),x=(0,t.useCallback)((function(e){e.stopPropagation(),y(!0)}),[y]),C=(0,t.useCallback)((function(){y(!1)}),[y]),O=(0,t.useCallback)((function(n){m({type:"SETTINGS_UPDATE",settings:An(An({},e),{},{enableBehaviorEditing:n})})}),[e,m]);return(0,b.jsxs)("div",{className:q.main,children:[s&&(0,b.jsx)(tn,{onUpdate:v,onCancel:function(){return p(!1)}}),null!==l&&(0,b.jsx)(Qe,{node:A[l],onCancel:function(){return c(null)},onUpdate:function(e){c(null),m((0,fn.md)({behaviorIndex:l,behavior:e,macros:n}))}}),d&&(0,b.jsx)(Le,{onDismiss:C}),(0,b.jsxs)("div",{className:q.panel,children:[(0,b.jsxs)("label",{children:["Enable Beta",(0,b.jsx)("input",{type:"checkbox",checked:e.enableBehaviorEditing,onChange:function(e){return O(e.target.checked)}})]}),(0,b.jsxs)(i.Z,{onClick:x,style:{backgroundColor:"orange"},children:[(0,b.jsx)(a.Z,{name:"warning"})," Details"]}),(0,b.jsx)("h3",{children:"Custom Behaviors"}),(0,b.jsxs)("table",{style:{width:"100%"},children:[(0,b.jsx)("thead",{children:(0,b.jsxs)("tr",{children:[(0,b.jsx)("th",{children:"Binding"}),(0,b.jsx)("th",{children:"Compatible"}),(0,b.jsx)("th",{children:"Actions"})]})}),(0,b.jsx)("tbody",{children:A.map((function(n,r){return(0,b.jsxs)("tr",{children:[(0,b.jsx)("td",{children:(0,b.jsxs)("code",{children:["&",n.labels[0]]})}),(0,b.jsx)("td",{children:n.properties.compatible.raw}),(0,b.jsx)("td",{children:e.enableBehaviorEditing&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a.Z,{className:q.action,onClick:function(){return g(r)},name:"wrench"}),(0,b.jsx)(a.Z,{className:q.action,onClick:function(){return j(r)},name:"trash-can"})]})})]},r)}))})]}),(0,b.jsx)(i.Z,{onClick:h,children:"Add New Behavior"})]})]})}},49443:function(e,n,r){r.d(n,{Z:function(){return v}});var t=r(67294),o=r(45697),i=r.n(o),a=r(97494),l={useRaw:i().bool,raw:i().string,parsed:i().any},c={name:i().string.isRequired,labels:i().arrayOf(i().string).isRequired,properties:i().objectOf((function(e,n,r,t,o){try{i().checkPropTypes({propValue:i().shape(l).isRequired},{propValue:e},t,r)}catch(e){return new Error("Invalid prop `"+o+"` supplied to `"+r+"`. Validation failed.")}})).isRequired},u=r(62417),s=r(85893);function p(e){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(e)}function f(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function d(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?f(Object(r),!0).forEach((function(n){y(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):f(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function y(e,n,r){return(n=function(e){var n=function(e,n){if("object"!==p(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!==p(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===p(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function b(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===n){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==n);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,n)||A(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function A(e,n){if(e){if("string"==typeof e)return m(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,n):void 0}}function m(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}function h(e){var n=e.name,r=e.labels,t=b(void 0===r?[]:r,1)[0],o=e.properties.label;return n.toLowerCase()===(t||"").toLowerCase()&&n.toLowerCase()===((null==o?void 0:o.parsed)||"").toLowerCase()}function v(e){var n=e.node,r=e.onUpdate,o=b((0,t.useState)(h(n)),2),i=o[0],l=o[1],c=b((0,t.useState)(h(n)),2),p=c[0],f=c[1],y=function(e,n,r,o){return[(0,t.useCallback)((function(r){n(d(d({},e),{},{name:r.target.value}))}),[e,n]),(0,t.useCallback)((function(t){var i,a=t.target.value,l=[a].concat(function(e){if(Array.isArray(e))return m(e)}(i=e.labels.slice(1))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||A(i)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=r?a:e.name,u=o?d(d({},e.properties),{},{label:{parsed:a.toUpperCase(),raw:'"'.concat(a.toUpperCase(),'"'),useRaw:!1}}):e.properties;n(d(d({},e),{},{name:c,labels:l,properties:u}))}),[e,n,r,o]),(0,t.useCallback)((function(r){return n(d(d({},e),{},{properties:d(d({},e.properties),{},{label:d(d({},e.properties.label),{},{parsed:r.target.value,useRaw:!1})})}))}),[e,n])]}(n,r,i,p),v=b(y,3),g=v[0],j=v[1],x=v[2];return(0,s.jsx)("table",{children:(0,s.jsxs)("tbody",{children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:"Bind"}),(0,s.jsx)("td",{children:(0,s.jsx)(a.Z,{type:"text",value:n.labels[0]||"",required:!0,validator:u.zq,onChange:j})})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:"Node"}),(0,s.jsxs)("td",{children:[(0,s.jsx)(a.Z,{value:n.name,required:!0,readOnly:i,disabled:i,validator:u.Gk,onChange:g}),(0,s.jsxs)("label",{title:"Set automatically using bind name",children:[(0,s.jsx)("input",{type:"checkbox",checked:i,onChange:function(e){return l(e.target.checked)}})," Automatic"]})]})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{children:"Label"}),(0,s.jsxs)("td",{children:[(0,s.jsx)(a.Z,{type:"text",value:n.properties.label.parsed||"",required:!0,readOnly:p,disabled:p,validator:function(){return null},onChange:x}),(0,s.jsxs)("label",{title:"Set automatically using bind name",children:[(0,s.jsx)("input",{type:"checkbox",checked:p,onChange:function(e){return f(e.target.checked)}})," Automatic"]})]})]})]})})}v.propTypes={node:i().shape(c).isRequired,onUpdate:i().func.isRequired}},29709:function(e,n,r){function t(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,n){if(e){if("string"==typeof e)return o(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,n):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}r.d(n,{f5:function(){return i},xE:function(){return l},xw:function(){return a}});var i=function(e,n){return[].concat(t(e.slice(0,n)),t(e.slice(n+1)))},a=function(e,n,r){return[].concat(t(e.slice(0,n)),[r],t(e.slice(n+1)))};function l(e,n,r){return-1===r?[].concat(t(e.filter((function(e,r){return r!==n}))),[e[n]]):e.reduce((function(t,o,i){return i===r&&t.push(e[n]),i!==n&&t.push(o),t}),[])}},33988:function(e,n,r){var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([e.id,".OaJISbD1WCmb03at77EG {\n position: relative;\n}\n\n.MUN9De8dUvbPGH9cEDoQ {\n position: absolute;\n z-index: 10;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 100%);\n max-width: 250px;\n width: 100%;\n\n border-radius: 4px;\n padding: 3px 5px;\n\n color: white;\n background-color: var(--error-highlight);\n font-size: 85%;\n font-family: sans-serif;\n\n opacity: 0.9;\n}\n.MUN9De8dUvbPGH9cEDoQ::before {\n position: absolute;\n display: block;\n content: ' ';\n z-index: -1;\n\n left: 50%;\n width: 10px;\n height: 10px;\n\n background-color: var(--error-highlight);\n transform: translate(-50%, -7px) rotate(45deg);\n}\n","",{version:3,sources:["webpack://./src/Common/input.module.css"],names:[],mappings:"AAAA;EACE,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,SAAS;EACT,SAAS;EACT,gCAAgC;EAChC,gBAAgB;EAChB,WAAW;;EAEX,kBAAkB;EAClB,gBAAgB;;EAEhB,YAAY;EACZ,wCAAwC;EACxC,cAAc;EACd,uBAAuB;;EAEvB,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,cAAc;EACd,YAAY;EACZ,WAAW;;EAEX,SAAS;EACT,WAAW;EACX,YAAY;;EAEZ,wCAAwC;EACxC,8CAA8C;AAChD",sourcesContent:[".wrapper {\n position: relative;\n}\n\n.error {\n position: absolute;\n z-index: 10;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 100%);\n max-width: 250px;\n width: 100%;\n\n border-radius: 4px;\n padding: 3px 5px;\n\n color: white;\n background-color: var(--error-highlight);\n font-size: 85%;\n font-family: sans-serif;\n\n opacity: 0.9;\n}\n.error::before {\n position: absolute;\n display: block;\n content: ' ';\n z-index: -1;\n\n left: 50%;\n width: 10px;\n height: 10px;\n\n background-color: var(--error-highlight);\n transform: translate(-50%, -7px) rotate(45deg);\n}\n"],sourceRoot:""}]),a.locals={wrapper:"OaJISbD1WCmb03at77EG",error:"MUN9De8dUvbPGH9cEDoQ"},n.Z=a},27470:function(e,n,r){var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([e.id,'.S3t60CK1JCROFIrRlm4j [readonly] {\n cursor: not-allowed;\n color: gray;\n outline: gray;\n}\n\ninput.S3t60CK1JCROFIrRlm4j[type="text"],\ninput.S3t60CK1JCROFIrRlm4j[type="number"],\nselect.S3t60CK1JCROFIrRlm4j {\n width: 100%;\n}\n\nol.MedG7SPG2ge2h7j2yqrJ {\n list-style-type: none;\n margin-top: 0;\n padding: 0;\n}\n.V50Bekt6td9yQOSiDGdx {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.V50Bekt6td9yQOSiDGdx li {\n display: inline-block;\n line-height: 2rem;\n}\nol.QNg3v6_eJoK7_qV0_y9n {\n margin: 0;\n}\nol.QNg3v6_eJoK7_qV0_y9n li {\n line-height: 2rem;\n}\nol.u65C3Uji7covMUn996dR {\n list-style-type: none;\n padding: 0;\n}\n.xp5u4Uo4X2fxxX9KwwXu {\n cursor: pointer;\n margin: 2px;\n padding: 5px;\n font-family: monospace;\n border-radius: 1rem;\n background-color: var(--key-bg-base);\n}\n.xp5u4Uo4X2fxxX9KwwXu:hover {\n background-color: var(--hover-selection);\n color: white;\n}\n\n.gpFGP00LCwlGjK6yrGWw {\n vertical-align: text-bottom;\n margin: 0 2px;\n}\n.gpFGP00LCwlGjK6yrGWw:hover {\n color: black;\n}\n\n.gsAzkKxnfzTcp5ApwmWS {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n list-style-type: none;\n padding: 0;\n margin: 0;\n}\n\n/* Copied from MacroEditor :( */\n.KrcWDYfRVRfvRhpsBFxs {\n visibility: hidden;\n position: absolute;\n top: 0px;\n right: 0px;\n font-size: 80%;\n\n color: var(--key-color-hover);\n}\n.KrcWDYfRVRfvRhpsBFxs > * {\n margin: 2px;\n opacity: 0.5;\n cursor: pointer;\n}\n.gsAzkKxnfzTcp5ApwmWS li :hover .KrcWDYfRVRfvRhpsBFxs {\n visibility: visible;\n z-index: 10;\n}\n\n.KrcWDYfRVRfvRhpsBFxs :hover {\n opacity: 1;\n}\n',"",{version:3,sources:["webpack://./src/Keyboard/Behaviors/PropertyValue/styles.module.css"],names:[],mappings:"AAAA;EACE,mBAAmB;EACnB,WAAW;EACX,aAAa;AACf;;AAEA;;;EAGE,WAAW;AACb;;AAEA;EACE,qBAAqB;EACrB,aAAa;EACb,UAAU;AACZ;AACA;EACE,qBAAqB;EACrB,SAAS;EACT,UAAU;AACZ;AACA;EACE,qBAAqB;EACrB,iBAAiB;AACnB;AACA;EACE,SAAS;AACX;AACA;EACE,iBAAiB;AACnB;AACA;EACE,qBAAqB;EACrB,UAAU;AACZ;AACA;EACE,eAAe;EACf,WAAW;EACX,YAAY;EACZ,sBAAsB;EACtB,mBAAmB;EACnB,oCAAoC;AACtC;AACA;EACE,wCAAwC;EACxC,YAAY;AACd;;AAEA;EACE,2BAA2B;EAC3B,aAAa;AACf;AACA;EACE,YAAY;AACd;;AAEA;EACE,aAAa;EACb,eAAe;EACf,SAAS;EACT,qBAAqB;EACrB,UAAU;EACV,SAAS;AACX;;AAEA,+BAA+B;AAC/B;EACE,kBAAkB;EAClB,kBAAkB;EAClB,QAAQ;EACR,UAAU;EACV,cAAc;;EAEd,6BAA6B;AAC/B;AACA;EACE,WAAW;EACX,YAAY;EACZ,eAAe;AACjB;AACA;EACE,mBAAmB;EACnB,WAAW;AACb;;AAEA;EACE,UAAU;AACZ",sourcesContent:['.propertyValue [readonly] {\n cursor: not-allowed;\n color: gray;\n outline: gray;\n}\n\ninput.propertyValue[type="text"],\ninput.propertyValue[type="number"],\nselect.propertyValue {\n width: 100%;\n}\n\nol.propertyMultiSelect {\n list-style-type: none;\n margin-top: 0;\n padding: 0;\n}\n.propertyMultiSelectChips {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n.propertyMultiSelectChips li {\n display: inline-block;\n line-height: 2rem;\n}\nol.propertyPhandleSelect {\n margin: 0;\n}\nol.propertyPhandleSelect li {\n line-height: 2rem;\n}\nol.propertyPhandleSingleton {\n list-style-type: none;\n padding: 0;\n}\n.behaviorBind {\n cursor: pointer;\n margin: 2px;\n padding: 5px;\n font-family: monospace;\n border-radius: 1rem;\n background-color: var(--key-bg-base);\n}\n.behaviorBind:hover {\n background-color: var(--hover-selection);\n color: white;\n}\n\n.phandleRemove {\n vertical-align: text-bottom;\n margin: 0 2px;\n}\n.phandleRemove:hover {\n color: black;\n}\n\n.propertyBindingsValue {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n list-style-type: none;\n padding: 0;\n margin: 0;\n}\n\n/* Copied from MacroEditor :( */\n.actions {\n visibility: hidden;\n position: absolute;\n top: 0px;\n right: 0px;\n font-size: 80%;\n\n color: var(--key-color-hover);\n}\n.actions > * {\n margin: 2px;\n opacity: 0.5;\n cursor: pointer;\n}\n.propertyBindingsValue li :hover .actions {\n visibility: visible;\n z-index: 10;\n}\n\n.actions :hover {\n opacity: 1;\n}\n'],sourceRoot:""}]),a.locals={propertyValue:"S3t60CK1JCROFIrRlm4j",propertyMultiSelect:"MedG7SPG2ge2h7j2yqrJ",propertyMultiSelectChips:"V50Bekt6td9yQOSiDGdx",propertyPhandleSelect:"QNg3v6_eJoK7_qV0_y9n",propertyPhandleSingleton:"u65C3Uji7covMUn996dR",behaviorBind:"xp5u4Uo4X2fxxX9KwwXu",phandleRemove:"gpFGP00LCwlGjK6yrGWw",propertyBindingsValue:"gsAzkKxnfzTcp5ApwmWS",actions:"KrcWDYfRVRfvRhpsBFxs"},n.Z=a},34288:function(e,n,r){var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([e.id,".kcj881bnLDph62EcKelj {\n padding-bottom: 60px;\n}\n\n.GeuMxQtBvZYr0nOURDHd {\n display: flex;\n width: 190px;\n flex-direction: column;\n padding: 10px;\n gap: 10px;\n position: fixed;\n}\n\n.NqlHG1MKBiOUUFAed3CM {\n max-width: 700px;\n margin: 0 auto;\n padding-bottom: 60px;\n}\n\n.NqlHG1MKBiOUUFAed3CM table {\n border-spacing: 0;\n}\n.NqlHG1MKBiOUUFAed3CM table thead {\n text-align: left;\n}\n\n.NqlHG1MKBiOUUFAed3CM table tbody tr td {\n padding: 10px;\n margin: 0;\n}\n.NqlHG1MKBiOUUFAed3CM table tbody tr:nth-child(even) {\n background-color: var(--key-bg-base);\n}\n\n.Q3_rmo3XiEVg8qfXgKX_ {\n cursor: pointer;\n padding: 5px;\n opacity: 0.6;\n}\n.Q3_rmo3XiEVg8qfXgKX_:hover {\n opacity: 1;\n}\n\ntable.czOKx_t_EDF44pilzyzA { max-height: 80vh; }\ntable.czOKx_t_EDF44pilzyzA th { text-align: left }\ntable.czOKx_t_EDF44pilzyzA input { font-family: monospace }\ntable.czOKx_t_EDF44pilzyzA td {\n padding: 4px;\n vertical-align: top;\n}\ntable.czOKx_t_EDF44pilzyzA .s8rWNi6e8BZ7yQubfDws {\n font-family: monospace;\n}\n.Bux6GxjreGZZkcXqx6kv {\n display: block;\n font-style: italic;\n}\n\n.xvIZYbb8L5QbOLcesQ4T {\n color: red;\n font-style: italic;\n}\n","",{version:3,sources:["webpack://./src/Keyboard/Behaviors/styles.module.css"],names:[],mappings:"AAAA;EACE,oBAAoB;AACtB;;AAEA;EACE,aAAa;EACb,YAAY;EACZ,sBAAsB;EACtB,aAAa;EACb,SAAS;EACT,eAAe;AACjB;;AAEA;EACE,gBAAgB;EAChB,cAAc;EACd,oBAAoB;AACtB;;AAEA;EACE,iBAAiB;AACnB;AACA;EACE,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,SAAS;AACX;AACA;EACE,oCAAoC;AACtC;;AAEA;EACE,eAAe;EACf,YAAY;EACZ,YAAY;AACd;AACA;EACE,UAAU;AACZ;;AAEA,6BAAmB,gBAAgB,EAAE;AACrC,gCAAsB,iBAAiB;AACvC,mCAAyB,uBAAuB;AAChD;EACE,YAAY;EACZ,mBAAmB;AACrB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,cAAc;EACd,kBAAkB;AACpB;;AAEA;EACE,UAAU;EACV,kBAAkB;AACpB",sourcesContent:[".main {\n padding-bottom: 60px;\n}\n\n.sidebar {\n display: flex;\n width: 190px;\n flex-direction: column;\n padding: 10px;\n gap: 10px;\n position: fixed;\n}\n\n.panel {\n max-width: 700px;\n margin: 0 auto;\n padding-bottom: 60px;\n}\n\n.panel table {\n border-spacing: 0;\n}\n.panel table thead {\n text-align: left;\n}\n\n.panel table tbody tr td {\n padding: 10px;\n margin: 0;\n}\n.panel table tbody tr:nth-child(even) {\n background-color: var(--key-bg-base);\n}\n\n.action {\n cursor: pointer;\n padding: 5px;\n opacity: 0.6;\n}\n.action:hover {\n opacity: 1;\n}\n\ntable.editorForm { max-height: 80vh; }\ntable.editorForm th { text-align: left }\ntable.editorForm input { font-family: monospace }\ntable.editorForm td {\n padding: 4px;\n vertical-align: top;\n}\ntable.editorForm .propertyName {\n font-family: monospace;\n}\n.propertyDeprecation {\n display: block;\n font-style: italic;\n}\n\n.requiredIndicator {\n color: red;\n font-style: italic;\n}\n"],sourceRoot:""}]),a.locals={main:"kcj881bnLDph62EcKelj",sidebar:"GeuMxQtBvZYr0nOURDHd",panel:"NqlHG1MKBiOUUFAed3CM",action:"Q3_rmo3XiEVg8qfXgKX_",editorForm:"czOKx_t_EDF44pilzyzA",propertyName:"s8rWNi6e8BZ7yQubfDws",propertyDeprecation:"Bux6GxjreGZZkcXqx6kv",requiredIndicator:"xvIZYbb8L5QbOLcesQ4T"},n.Z=a}}]);
+//# sourceMappingURL=8381.171cf958a1d260f201e4.js.map \ No newline at end of file
diff --git a/8381.171cf958a1d260f201e4.js.map b/8381.171cf958a1d260f201e4.js.map
new file mode 100644
index 0000000..8cb7f87
--- /dev/null
+++ b/8381.171cf958a1d260f201e4.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"8381.171cf958a1d260f201e4.js","mappings":"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","sources":["webpack:///./src/Common/input.module.css?8347","webpack:///./src/Common/Input.js","webpack:///./src/Keyboard/Behaviors/BehaviorHeader.js","webpack:///./src/Keyboard/Behaviors/styles.module.css?4611","webpack:///./src/Keyboard/Behaviors/PropertyName.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/styles.module.css?9c7d","webpack:///./src/Keyboard/Behaviors/PropertyValue/simple-types.js","webpack:///./src/ValuePicker/ChoicesPicker.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/collection-types.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/BehaviorsPropertyValue.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/BindingsPropertyValue.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/PropertyValue.js","webpack:///./src/Keyboard/Behaviors/PropertyValue/index.js","webpack:///./src/Keyboard/Behaviors/BehaviorEditor.js","webpack:///./src/Keyboard/Behaviors/BetaNoticeDialog.js","webpack:///./src/Keyboard/Behaviors/NewBehaviorModal.js","webpack:///./src/Keyboard/Behaviors/create-behavior.js","webpack:///./src/Keyboard/Behaviors/Behaviors.js","webpack:///./src/Keyboard/Common/Devicetree/nodePropTypes.js","webpack:///./src/Keyboard/Common/Devicetree/NodeIdentifiers.js","webpack:///./src/reducer-util.js","webpack:///./src/Common/input.module.css","webpack:///./src/Keyboard/Behaviors/PropertyValue/styles.module.css","webpack:///./src/Keyboard/Behaviors/styles.module.css"],"sourcesContent":["\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./input.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./input.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import PropTypes from 'prop-types'\nimport styles from './input.module.css'\n\nexport default function Input ({ validator, required = false, value = '', ...rest }) {\n const error = validator(value) || (!value && required && 'cannot be empty')\n\n return (\n <span className={styles.wrapper}>\n <input type=\"text\" value={value} {...rest} />\n {error && <span className={styles.error}>{error}</span>}\n </span>\n )\n}\n\nInput.propTypes = {\n value: PropTypes.any.isRequired,\n required: PropTypes.bool,\n validator: PropTypes.func\n}\n","import NodeIdentifiers from '../Common/Devicetree/NodeIdentifiers'\n\nexport default function BehaviorHeader (props) {\n const { node } = props\n\n return (\n <div>\n <p><code>{node.properties.compatible.parsed}</code></p>\n <NodeIdentifiers {...props} />\n </div>\n )\n}\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import styles from './styles.module.css'\n\nexport default function PropertyName ({ property, schema, required = false }) {\n return (\n <>\n <span className={styles.propertyName} title={property}>\n {property}\n {required && <span className={styles.requiredIndicator}>*</span>}\n </span>\n {schema.deprecatedBy && (\n <sub className={styles.propertyDeprecation}>\n (deprecated)\n </sub>\n )}\n </>\n )\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import Icon from '../../../Common/Icon'\nimport styles from './styles.module.css'\n\nexport function RawPropertyValue ({ prop, schema, onUpdate }) {\n return (\n <>\n <Icon name=\"code\" title=\"Raw property value\" /> <input\n required={schema?.required}\n value={prop?.raw}\n onChange={e => onUpdate({\n ...prop,\n raw: e.target.value,\n useRaw: true\n })}\n />\n </>\n )\n}\n\nexport function ConstPropertyValue ({ schema }) {\n return (\n <span className={[\n styles.propertyValue,\n styles.readonly\n ].join(' ')}>\n {schema.const}\n </span>\n )\n}\n\nexport function StringPropertyValue ({ prop, schema, onUpdate }) {\n return (\n <input\n type=\"text\"\n className={styles.propertyValue}\n value={prop?.parsed ?? ''}\n placeholder={schema.default && `Default: ${schema.default}`}\n onChange={e => {\n onUpdate({\n ...prop,\n parsed: e.target.value,\n useRaw: false\n })\n }}\n />\n )\n}\n\nexport function IntegerPropertyValue ({ prop, schema, onUpdate }) {\n return (\n <input\n type=\"number\"\n className={styles.propertyValue}\n value={prop?.parsed ?? ''}\n placeholder={schema.default && `Default: ${schema.default}`}\n onChange={e => {\n onUpdate({\n ...prop,\n parsed: Number(e.target.value),\n useRaw: false\n })\n }}\n />\n )\n}\n\nexport function BooleanPropertyValue ({ prop, onUpdate }) {\n return (\n <input\n type=\"checkbox\"\n className={styles.propertyValue}\n checked={prop?.parsed || false}\n onChange={e => {\n onUpdate({\n parsed: !!e.target.checked,\n useRaw: false\n })\n }}\n />\n )\n}\n","import fuzzysort from 'fuzzysort'\nimport PropTypes from 'prop-types'\nimport { useCallback, useMemo } from 'react'\n\nimport ResultList from './ResultList'\nimport SearchFilter from './SearchFilter'\nimport style from './style.module.css'\n\n// TODO: This is only used in behavior editor and should probably be replaced\n// with a customized react-select.\nfunction ChoicesPicker (props) {\n const { choices, prompt, onSelect } = props\n const formattedChoices = useMemo(() => {\n return choices.map(value => ({ value }))\n }, [choices])\n\n const renderSearchResult = useCallback(result => {\n const title = result.search\n ? (\n <span>\n {fuzzysort.highlight(result.search, (v, i) => (\n <b key={i}>{v}</b>\n ))}\n </span>\n )\n : (\n <span>\n {result.value}\n </span>\n )\n\n return (\n <>\n {title}\n {result.description && <p className={style.description}>{result.description}</p>}\n </>\n )\n }, [])\n\n return (\n <div className={style.dialog}>\n <p>{prompt || 'Select'}</p>\n <SearchFilter\n choices={formattedChoices}\n initialQuery=\"\"\n searchKey=\"value\"\n renderResults={results => results && (\n <ResultList\n results={results}\n onSelect={choice => onSelect(choice.value)}\n renderResult={renderSearchResult}\n />\n )}\n />\n </div>\n )\n}\n\nChoicesPicker.propTypes = {\n choices: PropTypes.arrayOf(PropTypes.stirng).isRequired,\n prompt: PropTypes.string,\n onSelect: PropTypes.func.isRequired\n}\n\nexport default ChoicesPicker\n","import map from 'lodash/map'\nimport { useCallback, useContext, useMemo, useState } from 'react'\nimport ActionButton from '../../../Common/ActionButton'\nimport Icon from '../../../Common/Icon'\nimport Modal from '../../../Common/Modal'\n\nimport { DefinitionsContext } from '../../../Contexts/Definitions'\nimport ChoicesPicker from '../../../ValuePicker/ChoicesPicker'\n\nimport styles from './styles.module.css'\n\nfunction useSchemaChoices (schema) {\n const definitions = useContext(DefinitionsContext)\n return useMemo(() => {\n if (!schema.choices) {\n return []\n }\n\n if (Array.isArray(schema.choices)) {\n return schema.choices\n }\n\n if (!schema.choices.$source) {\n throw new Error('Expected schema.choices.$source')\n }\n\n const source = definitions[schema.choices.$source]\n if (schema.choices.$key) {\n return map(source, schema.choices.$key)\n }\n\n return source\n }, [definitions, schema.choices])\n}\n\nexport function EnumPropertyValue ({ prop = {}, schema, onUpdate }) {\n const choices = schema.enum\n const value = prop.parsed\n const handleChange = useCallback(event => {\n onUpdate({\n ...prop,\n parsed: choices[event.target.value],\n useRaw: false\n })\n }, [prop, choices, onUpdate])\n\n return (\n <select className={styles.propertyValue} onChange={handleChange} value={choices.indexOf(value)}>\n {choices.map((name, i) => (\n <option key={i} value={i}>{name}</option>\n ))}\n </select>\n )\n}\n\nexport function MultiSelectPropertyValue ({ prop = {}, schema, onUpdate }) {\n const choices = useSchemaChoices(schema)\n const { parsed: selected = [] } = prop\n const handleChange = useCallback(selected => {\n onUpdate({ ...prop, useRaw: false, parsed: selected })\n }, [prop, onUpdate])\n\n const MultiSelect = choices.length > 20\n ? MultiSelectChips\n : MultiSelectCheckboxes\n\n return (\n <MultiSelect\n selected={selected}\n choices={choices}\n onUpdate={handleChange}\n />\n )\n}\n\nfunction MultiSelectCheckboxes ({ selected, choices, onUpdate }) {\n const handleChange = useCallback(choice => {\n onUpdate(\n selected.includes(choice)\n ? selected.filter(v => v !== choice)\n : [...selected, choice]\n )\n }, [selected, onUpdate])\n\n return (\n <ol className={styles.propertyMultiSelect}>\n {choices.map((choice, i) => (\n <li key={i}>\n <label>\n <input\n type=\"checkbox\"\n checked={selected.includes(choice)}\n onChange={e => handleChange(choice)}\n />\n {choice}\n </label>\n </li>\n ))}\n </ol>\n )\n}\n\nfunction MultiSelectChips ({ selected, choices, onUpdate }) {\n const [adding, setAdding] = useState(false)\n const addChoice = useCallback(choice => {\n onUpdate([...selected, choice])\n setAdding(false)\n }, [setAdding, selected, onUpdate])\n const remove = useCallback(choice => {\n onUpdate(selected.filter(value => value !== choice))\n }, [selected, onUpdate])\n\n // TODO: make these CSS classes more generic if I want to share them between\n // unrelated components. (or refactor the elements themselves)\n return (\n <>\n <ul className={styles.propertyMultiSelectChips}>\n {selected.map((choice, i) => (\n <li key={i}>\n <span className={styles.behaviorBind}>\n {choice} {(\n <Icon\n name=\"times\"\n className={styles.phandleRemove}\n onClick={() => remove(choice)}\n />\n )}\n </span>\n </li>\n ))}\n </ul>\n <ActionButton secondary onClick={() => setAdding(true)}>\n <Icon name=\"plus\" /> Add\n </ActionButton>\n {adding && (\n <Modal onDismiss={() => setAdding(false)}>\n <ChoicesPicker\n choices={choices}\n onSelect={addChoice}\n />\n </Modal>\n )}\n </>\n )\n}\n","import compact from 'lodash/compact'\nimport { useCallback, useState } from 'react'\n\nimport Icon from '../../../Common/Icon'\nimport ValuePicker from '../../../ValuePicker'\nimport { replaceIndex, withoutIndex } from '../../../reducer-util'\n\nimport styles from './styles.module.css'\nimport ActionButton from '../../../Common/ActionButton'\n\nexport default function BehaviorssPropertyValue ({ prop = {}, schema = {}, onUpdate }) {\n const { parsed: selection = [] } = prop\n const { length } = schema\n const [editing, setEditing] = useState(null)\n\n const canAddMore = (\n length === undefined || (length && selection.length < length)\n )\n\n const insertPhandle = useCallback(() => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: [...selection, '']\n })\n\n setEditing(selection.length)\n }, [prop, selection, onUpdate, setEditing])\n\n const updatePhandle = useCallback(result => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: replaceIndex(selection, editing, result.code)\n })\n\n setEditing(null)\n }, [prop, selection, editing, onUpdate])\n\n const removePhandle = useCallback(index => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: withoutIndex(selection, index)\n })\n }, [prop, selection, onUpdate])\n\n return (\n <div>\n <ol className={compact([\n styles.propertyPhandleSelect,\n length === 1 && styles.propertyPhandleSingleton\n ]).join(' ')}>\n {selection.map((phandle, i) => (\n <li key={i}>\n <span\n className={styles.behaviorBind}\n onClick={() => setEditing(i)}\n >\n {phandle}\n {length !== 1 && (\n <Icon\n name=\"times\"\n className={styles.phandleRemove}\n onClick={event => {\n event.stopPropagation()\n removePhandle(i)\n }}\n />\n )}\n </span>\n </li>\n ))}\n </ol>\n {editing !== null && (\n <ValuePicker\n node={{ value: selection[editing], params: [], slot: 'behaviour' }}\n type=\"value\"\n context=\"none\"\n behaviour={{ code: selection[editing] }}\n prompt=\"Select Behavior\"\n searchKey=\"code\"\n onSelect={updatePhandle}\n onCancel={() => setEditing(null)}\n />\n )}\n {canAddMore && (\n <ActionButton secondary onClick={insertPhandle}>\n <Icon name=\"plus\" /> Add Behavior\n </ActionButton>\n )}\n </div>\n )\n}\n","import { useCallback } from 'react'\nimport ActionButton from '../../../Common/ActionButton'\nimport Icon from '../../../Common/Icon'\nimport { replaceIndex, withoutIndex } from '../../../reducer-util'\n\nimport Key from '../../Keys/Key'\nimport KeyWrapper from '../../Keys/KeyWrapper'\n\nimport styles from './styles.module.css'\n\nexport default function BindingsPropertyValue ({ prop = {}, onUpdate }) {\n const { parsed: selection = [] } = prop\n\n const insertBinding = useCallback(() => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: [...selection, { value: '', params: [] }]\n })\n }, [prop, selection, onUpdate])\n\n const updateBinding = useCallback((binding, i) => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: replaceIndex(selection, i, binding)\n })\n }, [prop, selection, onUpdate])\n\n const removeBinding = useCallback(index => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: withoutIndex(selection, index)\n })\n }, [prop, selection, onUpdate])\n\n return (\n <>\n <ol className={styles.propertyBindingsValue}>\n {selection.map((binding, i) => (\n <li key={i}>\n <KeyWrapper>\n <Key\n context=\"none\"\n value={binding.value}\n params={binding.params}\n onUpdate={binding => updateBinding(binding, i)}\n />\n <div className={styles.actions}>\n <Icon\n name=\"trash\"\n className={styles.deleteBind}\n onClick={e => {\n e.stopPropagation()\n removeBinding(i)\n }}\n />\n </div>\n </KeyWrapper>\n </li>\n ))}\n </ol>\n <ActionButton secondary onClick={insertBinding}>\n <Icon name=\"plus\" /> Add binding\n </ActionButton>\n </>\n )\n}\n","import PropTypes from 'prop-types'\n\nimport KeyPositionSelector from '../../Common/KeyPositionSelector'\nimport {\n RawPropertyValue,\n ConstPropertyValue,\n StringPropertyValue,\n IntegerPropertyValue,\n BooleanPropertyValue\n} from './simple-types'\nimport {\n EnumPropertyValue,\n MultiSelectPropertyValue\n} from './collection-types'\nimport BehaviorsPropertyValue from './BehaviorsPropertyValue'\nimport BindingsPropertyValue from './BindingsPropertyValue'\n\nfunction PropertyValue (props) {\n const { schema = {} } = props\n const { type } = schema\n if ('const' in schema) {\n return <ConstPropertyValue {...props} />\n }\n\n if ('enum' in schema) {\n return <EnumPropertyValue {...props} />\n }\n\n if (schema.helper === 'key-position-picker') {\n const { prop = {}, onUpdate } = props\n return (\n <KeyPositionSelector\n value={prop.parsed || []}\n onUpdate={value => {\n onUpdate({\n ...prop,\n useRaw: false,\n parsed: value\n })\n }}\n />\n )\n }\n\n if (schema.choices) {\n return <MultiSelectPropertyValue {...props} />\n }\n\n switch (type) {\n case 'string':\n return <StringPropertyValue {...props} />\n case 'int':\n return <IntegerPropertyValue {...props} />\n case 'boolean':\n return <BooleanPropertyValue {...props} />\n case 'phandle':\n case 'phandles':\n return <BehaviorsPropertyValue {...props} />\n case 'phandle-array':\n return <BindingsPropertyValue {...props} />\n default:\n return <RawPropertyValue {...props} />\n }\n}\n\nPropertyValue.propTypes = {\n schema: PropTypes.shape({\n type: PropTypes.oneOf([\n 'string',\n 'boolean',\n 'int',\n 'array',\n 'phandle',\n 'phandles',\n 'phandle-array',\n\n 'integer-union'\n ]),\n required: PropTypes.bool,\n description: PropTypes.string,\n default: PropTypes.any,\n const: PropTypes.any,\n helper: PropTypes.any\n }),\n prop: PropTypes.shape({\n parsed: PropTypes.any,\n raw: PropTypes.string\n }),\n onUpdate: PropTypes.func.isRequired\n}\n\nexport default PropertyValue\n","import PropertyValue from './PropertyValue'\n\nexport default PropertyValue\n","import cloneDeep from 'lodash/cloneDeep'\nimport omit from 'lodash/omit'\nimport { useCallback, useContext, useState } from 'react'\n\nimport ActionButton from '../../Common/ActionButton'\nimport DialogBox from '../../Common/DialogBox'\nimport Icon from '../../Common/Icon'\nimport Modal from '../../Common/Modal'\nimport { DefinitionsContext } from '../../Contexts/Definitions'\nimport BehaviorHeader from './BehaviorHeader'\nimport PropertyName from './PropertyName'\nimport PropertyValue from './PropertyValue'\nimport styles from './styles.module.css'\n\nfunction BehaviorEditor ({ node, onUpdate, onCancel }) {\n const { behaviors: schemas } = useContext(DefinitionsContext)\n const [pendingChanges, setPendingChanges] = useState(node)\n const schema = schemas[node.properties.compatible?.parsed]\n\n const handlePropNameChange = prop => event => {\n setPendingChanges({\n ...pendingChanges,\n properties: Object.keys(pendingChanges.properties).reduce((acc, key) => {\n const value = pendingChanges.properties[key]\n if (key === prop) {\n key = event.target.value\n }\n\n acc[key] = value\n return acc\n }, {})\n })\n }\n\n const handlePropValueChange = name => value => {\n setPendingChanges({\n ...pendingChanges,\n properties: {\n ...pendingChanges.properties,\n [name]: value\n }\n })\n }\n\n const handleDeleteProp = name => {\n setPendingChanges({\n ...pendingChanges,\n properties: omit(pendingChanges.properties, name)\n })\n }\n\n const confirm = useCallback(() => {\n onUpdate(cloneDeep(pendingChanges))\n }, [pendingChanges, onUpdate])\n\n const schemaProps = schema?.properties || {}\n const propertiesList = (\n schema\n ? Object.keys(schemaProps)\n : Object.keys(pendingChanges.properties)\n ).filter(property => {\n return property !== 'label' && (\n !schemaProps[property]?.deprecatedBy ||\n !!pendingChanges.properties[property]\n )\n })\n\n const propDeprecationMapping = Object.keys(schemaProps).reduce((map, name) => {\n const { deprecatedBy: otherProp } = schemaProps[name]\n if (otherProp) {\n map[otherProp] = name\n }\n return map\n }, {})\n\n const requiredPropertiesList = Object.keys(schemaProps).filter(name => {\n const { required, deprecatedBy } = schemaProps[name]\n const deprecatedProp = propDeprecationMapping[name]\n\n // Ignore this property's \"required\" flag if we currently have a value for\n // another property that either deprecates or is deprecated by this one.\n if ((deprecatedBy || deprecatedProp) in pendingChanges.properties) {\n return false\n }\n\n return required\n })\n\n const requiredPropsMissingValues = requiredPropertiesList.filter(name => (\n !pendingChanges.properties[name]\n ))\n\n return (\n <Modal onDismiss={onCancel}>\n <DialogBox dismissText={false}>\n <div style={{ maxHeight: '80vh', overflow: 'auto' }}>\n <h2>Edit {node.name} <code>(&amp;{node.labels[0]})</code></h2>\n <BehaviorHeader\n node={pendingChanges}\n onUpdate={setPendingChanges}\n />\n\n <h3>Configuration</h3>\n <table className={styles.editorForm}>\n <thead>\n <tr>\n <th>Property</th>\n <th>Value</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {propertiesList.map((name, i) => (\n <tr key={i}>\n <td className={styles.propertyName}>\n {name in schemaProps\n ? (\n <PropertyName\n property={name}\n schema={schemaProps[name]}\n required={requiredPropertiesList.includes(name)}\n />\n )\n : (\n <input value={name} onChange={handlePropNameChange(name)} />\n )}\n </td>\n <td className={styles.propertyValue}>\n <PropertyValue\n name={name}\n prop={pendingChanges.properties[name]}\n schema={schemaProps[name]}\n onUpdate={handlePropValueChange(name)}\n />\n </td>\n <td>\n {(pendingChanges.properties[name] && !requiredPropertiesList.includes(name)) && (\n <Icon\n name=\"trash-can\"\n className={styles.action}\n onClick={() => handleDeleteProp(name)}\n />\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n {requiredPropertiesList.length > 0 && (\n <p>\n <em><span className={styles.requiredIndicator}>*</span>Property is required.</em>\n </p>\n )}\n <div style={{ textAlign: 'center' }}>\n <ActionButton disabled={requiredPropsMissingValues.length > 0} onClick={confirm}>Okay</ActionButton>\n <ActionButton onClick={onCancel} secondary>Cancel</ActionButton>\n </div>\n </div>\n </DialogBox>\n </Modal>\n )\n}\n\nexport default BehaviorEditor\n","import DialogBox from '../../Common/DialogBox'\nimport Link from '../../Common/Link'\nimport Modal from '../../Common/Modal'\n\nexport default function BetaNoticeDialog ({ onDismiss }) {\n const issuesLink = (\n <Link external href=\"https://github.com/nickcoutsos/keymap-editor/issues\">\n Keymap Editor Issues\n </Link>\n )\n\n return (\n <Modal onDismiss={onDismiss}>\n <DialogBox onDismiss={onDismiss} style={{ maxHeight: '80vh', overflow: 'scroll' }}>\n <h2>Behavior Editing Beta Test</h2>\n <p>Welcome to the behavior editing beta!</p>\n\n <p>\n This feature has been a long time coming, and while it should enable a\n lot of advanced ZMK features through the app it is still a work in\n progress. Some features are still missing so the use experience is a\n little rough, and there may be errors as well. Some familiarity with\n ZMK behavior functionality is expected.\n </p>\n\n <p>\n I've been using it for a while and it seems to be in a pretty workable\n state, but I can't catch everything, so it would mean a lot to me for\n you to share any feedback or issues on GitHub: {issuesLink}.\n </p>\n </DialogBox>\n </Modal>\n )\n}\n","import PropTypes from 'prop-types'\nimport { useMemo, useState } from 'react'\n\nimport { behaviorSchemas } from 'zmk-data/behaviors'\n\nimport ActionButton from '../../Common/ActionButton'\nimport { Select } from '../../Sources/Controls'\n\nimport DialogBox from '../../Common/DialogBox'\nimport Modal from '../../Common/Modal'\n\nconst knownBehaviorTypes = [\n 'zmk,behavior-hold-tap',\n 'zmk,behavior-mod-morph',\n 'zmk,behavior-tap-dance',\n 'zmk,behavior-sticky-key',\n 'zmk,behavior-caps-word',\n 'zmk,behavior-sensor-rotate',\n 'zmk,behavior-sensor-rotate-var'\n]\n\nconst options = knownBehaviorTypes.map(value => ({ value, label: behaviorSchemas[value].description }))\n\nfunction NewBehaviorModal ({ onUpdate, onCancel }) {\n const [pendingSelection, setPendingSelection] = useState('')\n const selected = useMemo(() => options.find(option => option.value === pendingSelection), [pendingSelection])\n\n return (\n <Modal>\n <DialogBox dismissText={null}>\n <h3>Add new behavior</h3>\n <label>\n <Select\n required\n placeholder=\"Select a behavior type\"\n value={selected}\n options={options}\n onChange={({ value }) => setPendingSelection(value)}\n formatOptionLabel={({ value, label }, { context }) => (\n <>\n <div>{label}</div>\n {context !== 'value' && <div style={{ opacity: '0.6' }}>(<em>{value}</em>)</div>}\n </>\n )}\n />\n </label>\n <div style={{ textAlign: 'center', margin: '10px' }}>\n <ActionButton\n disabled={!pendingSelection}\n onClick={() => onUpdate(pendingSelection)}\n >\n Create\n </ActionButton>\n <ActionButton onClick={onCancel} secondary>Cancel</ActionButton>\n </div>\n </DialogBox>\n </Modal>\n )\n}\n\nNewBehaviorModal.propTypes = {\n onUpdate: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired\n}\n\nexport default NewBehaviorModal\n","import times from 'lodash/times'\nimport { behaviorSchemas } from 'zmk-data/behaviors'\n\nfunction isBindingType (propSchema) {\n return ['phandle', 'phandles', 'phandle-array'].includes(propSchema.type)\n}\n\nexport function createBehavior (compatible, { name, labels, label }) {\n const schema = behaviorSchemas[compatible]\n return {\n name,\n labels,\n properties: {\n compatible: {\n raw: `\"${compatible}\"`,\n parsed: compatible\n },\n label: {\n raw: `\"${label}\"`,\n parsed: label\n },\n ...Object.keys(schema.properties).reduce((props, prop) => {\n const propSchema = schema.properties[prop]\n if (isBindingType(propSchema) && propSchema.length) {\n props[prop] = {\n parsed: times(propSchema.length, () => '&none')\n }\n } else if ('const' in propSchema) {\n props[prop] = {\n parsed: propSchema.const,\n // this isn't right but conveniently only affects #binding-cells\n // which is an integer and which we never need to use as a raw value\n raw: `<${propSchema.const.toString()}>`\n }\n }\n\n return props\n }, {})\n }\n }\n}\n","import { useCallback, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport ActionButton from '../../Common/ActionButton'\nimport Icon from '../../Common/Icon'\nimport BehaviorEditor from './BehaviorEditor'\nimport BetaNoticeDialog from './BetaNoticeDialog'\nimport NewBehaviorModal from './NewBehaviorModal'\nimport styles from './styles.module.css'\nimport { createBehavior } from './create-behavior'\nimport {\n selectBehaviors,\n addBehavior,\n deleteBehavior,\n updateBehavior\n} from './behaviorsSlice'\n\nimport { selectMacros } from '../Macros/macrosSlice'\n\nfunction Behaviors () {\n const experimentalSettings = useSelector(state => state.experimentalSettings)\n const macros = useSelector(selectMacros)\n\n const [editing, setEditing] = useState(null)\n const [creating, setCreating] = useState(false)\n const [betaDisclaimerVisible, setBetaDisclaimerVisible] = useState(false)\n const behaviors = useSelector(selectBehaviors)\n const dispatch = useDispatch()\n\n const handleAdd = useCallback(() => {\n setCreating(true)\n }, [setCreating])\n\n const handleAddPending = useCallback(compatible => {\n setCreating(false)\n dispatch(addBehavior({\n behavior: createBehavior(compatible, {\n name: 'new_behavior',\n labels: ['new_behavior'],\n label: 'NEW_BEHAVIOR'\n })\n }))\n\n setTimeout(() => setEditing(behaviors.length))\n }, [behaviors, dispatch, setCreating, setEditing])\n\n const handleEdit = useCallback(index => {\n setEditing(index)\n }, [setEditing])\n\n const handleDelete = useCallback((index) => {\n dispatch(deleteBehavior({ behaviorIndex: index }))\n }, [dispatch])\n\n const showBetaDialog = useCallback(event => {\n event.stopPropagation()\n setBetaDisclaimerVisible(true)\n }, [setBetaDisclaimerVisible])\n\n const hideBetaDialog = useCallback(() => {\n setBetaDisclaimerVisible(false)\n }, [setBetaDisclaimerVisible])\n\n const toggleBeta = useCallback(enableBehaviorEditing => {\n dispatch({\n type: 'SETTINGS_UPDATE',\n settings: {\n ...experimentalSettings,\n enableBehaviorEditing\n }\n })\n }, [experimentalSettings, dispatch])\n\n return (\n <div className={styles.main}>\n\n {creating && (\n <NewBehaviorModal\n onUpdate={handleAddPending}\n onCancel={() => setCreating(false)}\n />\n )}\n\n {editing !== null && (\n <BehaviorEditor\n node={behaviors[editing]}\n onCancel={() => setEditing(null)}\n onUpdate={behavior => {\n setEditing(null)\n dispatch(updateBehavior({\n behaviorIndex: editing,\n behavior,\n macros\n }))\n }}\n />\n )}\n\n {betaDisclaimerVisible && (\n <BetaNoticeDialog onDismiss={hideBetaDialog} />\n )}\n\n <div className={styles.panel}>\n <label>\n Enable Beta\n <input\n type=\"checkbox\"\n checked={experimentalSettings.enableBehaviorEditing}\n onChange={e => toggleBeta(e.target.checked)}\n />\n </label>\n\n <ActionButton onClick={showBetaDialog} style={{ backgroundColor: 'orange' }}>\n <Icon name=\"warning\" /> Details\n </ActionButton>\n\n <h3>Custom Behaviors</h3>\n <table style={{ width: '100%' }}>\n <thead>\n <tr>\n <th>Binding</th>\n <th>Compatible</th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n {behaviors.map((behavior, i) => (\n <tr key={i}>\n <td><code>&amp;{behavior.labels[0]}</code></td>\n <td>{behavior.properties.compatible.raw}</td>\n <td>\n {experimentalSettings.enableBehaviorEditing && (\n <>\n <Icon className={styles.action} onClick={() => handleEdit(i)} name=\"wrench\" />\n <Icon className={styles.action} onClick={() => handleDelete(i)} name=\"trash-can\" />\n </>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n\n <ActionButton onClick={handleAdd}>\n Add New Behavior\n </ActionButton>\n </div>\n </div>\n )\n}\n\nexport default Behaviors\n","import PropTypes from 'prop-types'\n\nexport const propValueShape = {\n useRaw: PropTypes.bool,\n raw: PropTypes.string,\n parsed: PropTypes.any\n}\n\nexport const devicetreeNodeShape = {\n name: PropTypes.string.isRequired,\n labels: PropTypes.arrayOf(PropTypes.string).isRequired,\n properties: PropTypes.objectOf(function (propValue, key, componentName, location, propFullName) {\n try {\n PropTypes.checkPropTypes({\n propValue: PropTypes.shape(propValueShape).isRequired\n }, { propValue }, location, componentName)\n } catch (err) {\n return new Error(\n 'Invalid prop `' + propFullName + '` supplied to' +\n ' `' + componentName + '`. Validation failed.'\n )\n }\n }).isRequired\n}\n","import { useCallback, useState } from 'react'\nimport PropTypes from 'prop-types'\n\nimport Input from '../../../Common/Input'\nimport { devicetreeNodeShape } from './nodePropTypes'\nimport {\n validateDevicetreeLabel,\n validateDevicetreeNodeName\n} from './validators'\n\n// TODO: break this apart to match individual toggles\nfunction isCombined (node) {\n const { name } = node\n const { labels: [nodeLabel] = [] } = node\n const { label: labelProp } = node.properties\n\n return (\n name.toLowerCase() === (nodeLabel || '').toLowerCase() &&\n name.toLowerCase() === (labelProp?.parsed || '').toLowerCase()\n )\n}\n\nexport default function NodeIdentifiers ({ node, onUpdate }) {\n // TODO: trigger value updates when toggling\n const [nameFromBind, setNameFromBind] = useState(isCombined(node))\n const [labelFromBind, setLabelFromBind] = useState(isCombined(node))\n const [\n handleUpdateNodeName,\n handleUpdateNodeLabel,\n handleUpdateLabelProperty\n ] = useIdentifierUpdaters(node, onUpdate, nameFromBind, labelFromBind)\n\n return (\n <table>\n <tbody>\n <tr>\n <th>Bind</th>\n <td>\n <Input\n type=\"text\"\n value={node.labels[0] || ''}\n required={true}\n validator={validateDevicetreeLabel}\n onChange={handleUpdateNodeLabel}\n />\n </td>\n </tr>\n <tr>\n <th>Node</th>\n <td>\n <Input\n value={node.name}\n required={true}\n readOnly={nameFromBind}\n disabled={nameFromBind}\n validator={validateDevicetreeNodeName}\n onChange={handleUpdateNodeName}\n />\n <label title=\"Set automatically using bind name\">\n <input\n type=\"checkbox\"\n checked={nameFromBind}\n onChange={e => setNameFromBind(e.target.checked)}\n /> Automatic\n </label>\n </td>\n </tr>\n <tr>\n <th>Label</th>\n <td>\n <Input\n type=\"text\"\n value={node.properties.label.parsed || ''}\n required={true}\n readOnly={labelFromBind}\n disabled={labelFromBind}\n validator={() => null}\n onChange={handleUpdateLabelProperty}\n />\n <label title=\"Set automatically using bind name\">\n <input\n type=\"checkbox\"\n checked={labelFromBind}\n onChange={e => setLabelFromBind(e.target.checked)}\n /> Automatic\n </label>\n </td>\n </tr>\n </tbody>\n </table>\n )\n}\n\nfunction useIdentifierUpdaters (node, onUpdate, nameFromBind, labelFromBind) {\n const handleUpdateNodeName = useCallback(e => {\n onUpdate({ ...node, name: e.target.value })\n }, [node, onUpdate])\n\n const handleUpdateNodeLabel = useCallback(e => {\n const { value } = e.target\n const labels = [value, ...node.labels.slice(1)]\n const name = nameFromBind ? value : node.name\n const properties = labelFromBind\n ? {\n ...node.properties,\n label: {\n parsed: value.toUpperCase(),\n raw: `\"${value.toUpperCase()}\"`,\n useRaw: false\n }\n }\n : node.properties\n\n onUpdate({ ...node, name, labels, properties })\n }, [node, onUpdate, nameFromBind, labelFromBind])\n\n const handleUpdateLabelProperty = useCallback(e => onUpdate({\n ...node,\n properties: {\n ...node.properties,\n label: {\n ...node.properties.label,\n parsed: e.target.value,\n useRaw: false\n }\n }\n }), [node, onUpdate])\n\n return [\n handleUpdateNodeName,\n handleUpdateNodeLabel,\n handleUpdateLabelProperty\n ]\n}\n\nNodeIdentifiers.propTypes = {\n node: PropTypes.shape(devicetreeNodeShape).isRequired,\n onUpdate: PropTypes.func.isRequired\n}\n","\nexport const withoutIndex = (array, index) => [\n ...array.slice(0, index),\n ...array.slice(index + 1)\n]\n\nexport const replaceIndex = (array, index, value) => [\n ...array.slice(0, index),\n value,\n ...array.slice(index + 1)\n]\n\nexport function repositionElement (array, index, target) {\n if (target === -1) {\n return [...array.filter((_, i) => i !== index), array[index]]\n }\n\n const reordered = array.reduce((arr, val, i) => {\n if (i === target) arr.push(array[index])\n if (i !== index) arr.push(val)\n return arr\n }, [])\n\n return reordered\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".OaJISbD1WCmb03at77EG {\\n position: relative;\\n}\\n\\n.MUN9De8dUvbPGH9cEDoQ {\\n position: absolute;\\n z-index: 10;\\n bottom: 0;\\n left: 50%;\\n transform: translate(-50%, 100%);\\n max-width: 250px;\\n width: 100%;\\n\\n border-radius: 4px;\\n padding: 3px 5px;\\n\\n color: white;\\n background-color: var(--error-highlight);\\n font-size: 85%;\\n font-family: sans-serif;\\n\\n opacity: 0.9;\\n}\\n.MUN9De8dUvbPGH9cEDoQ::before {\\n position: absolute;\\n display: block;\\n content: ' ';\\n z-index: -1;\\n\\n left: 50%;\\n width: 10px;\\n height: 10px;\\n\\n background-color: var(--error-highlight);\\n transform: translate(-50%, -7px) rotate(45deg);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Common/input.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,SAAS;EACT,SAAS;EACT,gCAAgC;EAChC,gBAAgB;EAChB,WAAW;;EAEX,kBAAkB;EAClB,gBAAgB;;EAEhB,YAAY;EACZ,wCAAwC;EACxC,cAAc;EACd,uBAAuB;;EAEvB,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,cAAc;EACd,YAAY;EACZ,WAAW;;EAEX,SAAS;EACT,WAAW;EACX,YAAY;;EAEZ,wCAAwC;EACxC,8CAA8C;AAChD\",\"sourcesContent\":[\".wrapper {\\n position: relative;\\n}\\n\\n.error {\\n position: absolute;\\n z-index: 10;\\n bottom: 0;\\n left: 50%;\\n transform: translate(-50%, 100%);\\n max-width: 250px;\\n width: 100%;\\n\\n border-radius: 4px;\\n padding: 3px 5px;\\n\\n color: white;\\n background-color: var(--error-highlight);\\n font-size: 85%;\\n font-family: sans-serif;\\n\\n opacity: 0.9;\\n}\\n.error::before {\\n position: absolute;\\n display: block;\\n content: ' ';\\n z-index: -1;\\n\\n left: 50%;\\n width: 10px;\\n height: 10px;\\n\\n background-color: var(--error-highlight);\\n transform: translate(-50%, -7px) rotate(45deg);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"wrapper\": \"OaJISbD1WCmb03at77EG\",\n\t\"error\": \"MUN9De8dUvbPGH9cEDoQ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".S3t60CK1JCROFIrRlm4j [readonly] {\\n cursor: not-allowed;\\n color: gray;\\n outline: gray;\\n}\\n\\ninput.S3t60CK1JCROFIrRlm4j[type=\\\"text\\\"],\\ninput.S3t60CK1JCROFIrRlm4j[type=\\\"number\\\"],\\nselect.S3t60CK1JCROFIrRlm4j {\\n width: 100%;\\n}\\n\\nol.MedG7SPG2ge2h7j2yqrJ {\\n list-style-type: none;\\n margin-top: 0;\\n padding: 0;\\n}\\n.V50Bekt6td9yQOSiDGdx {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n}\\n.V50Bekt6td9yQOSiDGdx li {\\n display: inline-block;\\n line-height: 2rem;\\n}\\nol.QNg3v6_eJoK7_qV0_y9n {\\n margin: 0;\\n}\\nol.QNg3v6_eJoK7_qV0_y9n li {\\n line-height: 2rem;\\n}\\nol.u65C3Uji7covMUn996dR {\\n list-style-type: none;\\n padding: 0;\\n}\\n.xp5u4Uo4X2fxxX9KwwXu {\\n cursor: pointer;\\n margin: 2px;\\n padding: 5px;\\n font-family: monospace;\\n border-radius: 1rem;\\n background-color: var(--key-bg-base);\\n}\\n.xp5u4Uo4X2fxxX9KwwXu:hover {\\n background-color: var(--hover-selection);\\n color: white;\\n}\\n\\n.gpFGP00LCwlGjK6yrGWw {\\n vertical-align: text-bottom;\\n margin: 0 2px;\\n}\\n.gpFGP00LCwlGjK6yrGWw:hover {\\n color: black;\\n}\\n\\n.gsAzkKxnfzTcp5ApwmWS {\\n display: flex;\\n flex-wrap: wrap;\\n gap: 10px;\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n}\\n\\n/* Copied from MacroEditor :( */\\n.KrcWDYfRVRfvRhpsBFxs {\\n visibility: hidden;\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n font-size: 80%;\\n\\n color: var(--key-color-hover);\\n}\\n.KrcWDYfRVRfvRhpsBFxs > * {\\n margin: 2px;\\n opacity: 0.5;\\n cursor: pointer;\\n}\\n.gsAzkKxnfzTcp5ApwmWS li :hover .KrcWDYfRVRfvRhpsBFxs {\\n visibility: visible;\\n z-index: 10;\\n}\\n\\n.KrcWDYfRVRfvRhpsBFxs :hover {\\n opacity: 1;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Keyboard/Behaviors/PropertyValue/styles.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,mBAAmB;EACnB,WAAW;EACX,aAAa;AACf;;AAEA;;;EAGE,WAAW;AACb;;AAEA;EACE,qBAAqB;EACrB,aAAa;EACb,UAAU;AACZ;AACA;EACE,qBAAqB;EACrB,SAAS;EACT,UAAU;AACZ;AACA;EACE,qBAAqB;EACrB,iBAAiB;AACnB;AACA;EACE,SAAS;AACX;AACA;EACE,iBAAiB;AACnB;AACA;EACE,qBAAqB;EACrB,UAAU;AACZ;AACA;EACE,eAAe;EACf,WAAW;EACX,YAAY;EACZ,sBAAsB;EACtB,mBAAmB;EACnB,oCAAoC;AACtC;AACA;EACE,wCAAwC;EACxC,YAAY;AACd;;AAEA;EACE,2BAA2B;EAC3B,aAAa;AACf;AACA;EACE,YAAY;AACd;;AAEA;EACE,aAAa;EACb,eAAe;EACf,SAAS;EACT,qBAAqB;EACrB,UAAU;EACV,SAAS;AACX;;AAEA,+BAA+B;AAC/B;EACE,kBAAkB;EAClB,kBAAkB;EAClB,QAAQ;EACR,UAAU;EACV,cAAc;;EAEd,6BAA6B;AAC/B;AACA;EACE,WAAW;EACX,YAAY;EACZ,eAAe;AACjB;AACA;EACE,mBAAmB;EACnB,WAAW;AACb;;AAEA;EACE,UAAU;AACZ\",\"sourcesContent\":[\".propertyValue [readonly] {\\n cursor: not-allowed;\\n color: gray;\\n outline: gray;\\n}\\n\\ninput.propertyValue[type=\\\"text\\\"],\\ninput.propertyValue[type=\\\"number\\\"],\\nselect.propertyValue {\\n width: 100%;\\n}\\n\\nol.propertyMultiSelect {\\n list-style-type: none;\\n margin-top: 0;\\n padding: 0;\\n}\\n.propertyMultiSelectChips {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n}\\n.propertyMultiSelectChips li {\\n display: inline-block;\\n line-height: 2rem;\\n}\\nol.propertyPhandleSelect {\\n margin: 0;\\n}\\nol.propertyPhandleSelect li {\\n line-height: 2rem;\\n}\\nol.propertyPhandleSingleton {\\n list-style-type: none;\\n padding: 0;\\n}\\n.behaviorBind {\\n cursor: pointer;\\n margin: 2px;\\n padding: 5px;\\n font-family: monospace;\\n border-radius: 1rem;\\n background-color: var(--key-bg-base);\\n}\\n.behaviorBind:hover {\\n background-color: var(--hover-selection);\\n color: white;\\n}\\n\\n.phandleRemove {\\n vertical-align: text-bottom;\\n margin: 0 2px;\\n}\\n.phandleRemove:hover {\\n color: black;\\n}\\n\\n.propertyBindingsValue {\\n display: flex;\\n flex-wrap: wrap;\\n gap: 10px;\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n}\\n\\n/* Copied from MacroEditor :( */\\n.actions {\\n visibility: hidden;\\n position: absolute;\\n top: 0px;\\n right: 0px;\\n font-size: 80%;\\n\\n color: var(--key-color-hover);\\n}\\n.actions > * {\\n margin: 2px;\\n opacity: 0.5;\\n cursor: pointer;\\n}\\n.propertyBindingsValue li :hover .actions {\\n visibility: visible;\\n z-index: 10;\\n}\\n\\n.actions :hover {\\n opacity: 1;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"propertyValue\": \"S3t60CK1JCROFIrRlm4j\",\n\t\"propertyMultiSelect\": \"MedG7SPG2ge2h7j2yqrJ\",\n\t\"propertyMultiSelectChips\": \"V50Bekt6td9yQOSiDGdx\",\n\t\"propertyPhandleSelect\": \"QNg3v6_eJoK7_qV0_y9n\",\n\t\"propertyPhandleSingleton\": \"u65C3Uji7covMUn996dR\",\n\t\"behaviorBind\": \"xp5u4Uo4X2fxxX9KwwXu\",\n\t\"phandleRemove\": \"gpFGP00LCwlGjK6yrGWw\",\n\t\"propertyBindingsValue\": \"gsAzkKxnfzTcp5ApwmWS\",\n\t\"actions\": \"KrcWDYfRVRfvRhpsBFxs\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".kcj881bnLDph62EcKelj {\\n padding-bottom: 60px;\\n}\\n\\n.GeuMxQtBvZYr0nOURDHd {\\n display: flex;\\n width: 190px;\\n flex-direction: column;\\n padding: 10px;\\n gap: 10px;\\n position: fixed;\\n}\\n\\n.NqlHG1MKBiOUUFAed3CM {\\n max-width: 700px;\\n margin: 0 auto;\\n padding-bottom: 60px;\\n}\\n\\n.NqlHG1MKBiOUUFAed3CM table {\\n border-spacing: 0;\\n}\\n.NqlHG1MKBiOUUFAed3CM table thead {\\n text-align: left;\\n}\\n\\n.NqlHG1MKBiOUUFAed3CM table tbody tr td {\\n padding: 10px;\\n margin: 0;\\n}\\n.NqlHG1MKBiOUUFAed3CM table tbody tr:nth-child(even) {\\n background-color: var(--key-bg-base);\\n}\\n\\n.Q3_rmo3XiEVg8qfXgKX_ {\\n cursor: pointer;\\n padding: 5px;\\n opacity: 0.6;\\n}\\n.Q3_rmo3XiEVg8qfXgKX_:hover {\\n opacity: 1;\\n}\\n\\ntable.czOKx_t_EDF44pilzyzA { max-height: 80vh; }\\ntable.czOKx_t_EDF44pilzyzA th { text-align: left }\\ntable.czOKx_t_EDF44pilzyzA input { font-family: monospace }\\ntable.czOKx_t_EDF44pilzyzA td {\\n padding: 4px;\\n vertical-align: top;\\n}\\ntable.czOKx_t_EDF44pilzyzA .s8rWNi6e8BZ7yQubfDws {\\n font-family: monospace;\\n}\\n.Bux6GxjreGZZkcXqx6kv {\\n display: block;\\n font-style: italic;\\n}\\n\\n.xvIZYbb8L5QbOLcesQ4T {\\n color: red;\\n font-style: italic;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Keyboard/Behaviors/styles.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,oBAAoB;AACtB;;AAEA;EACE,aAAa;EACb,YAAY;EACZ,sBAAsB;EACtB,aAAa;EACb,SAAS;EACT,eAAe;AACjB;;AAEA;EACE,gBAAgB;EAChB,cAAc;EACd,oBAAoB;AACtB;;AAEA;EACE,iBAAiB;AACnB;AACA;EACE,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,SAAS;AACX;AACA;EACE,oCAAoC;AACtC;;AAEA;EACE,eAAe;EACf,YAAY;EACZ,YAAY;AACd;AACA;EACE,UAAU;AACZ;;AAEA,6BAAmB,gBAAgB,EAAE;AACrC,gCAAsB,iBAAiB;AACvC,mCAAyB,uBAAuB;AAChD;EACE,YAAY;EACZ,mBAAmB;AACrB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,cAAc;EACd,kBAAkB;AACpB;;AAEA;EACE,UAAU;EACV,kBAAkB;AACpB\",\"sourcesContent\":[\".main {\\n padding-bottom: 60px;\\n}\\n\\n.sidebar {\\n display: flex;\\n width: 190px;\\n flex-direction: column;\\n padding: 10px;\\n gap: 10px;\\n position: fixed;\\n}\\n\\n.panel {\\n max-width: 700px;\\n margin: 0 auto;\\n padding-bottom: 60px;\\n}\\n\\n.panel table {\\n border-spacing: 0;\\n}\\n.panel table thead {\\n text-align: left;\\n}\\n\\n.panel table tbody tr td {\\n padding: 10px;\\n margin: 0;\\n}\\n.panel table tbody tr:nth-child(even) {\\n background-color: var(--key-bg-base);\\n}\\n\\n.action {\\n cursor: pointer;\\n padding: 5px;\\n opacity: 0.6;\\n}\\n.action:hover {\\n opacity: 1;\\n}\\n\\ntable.editorForm { max-height: 80vh; }\\ntable.editorForm th { text-align: left }\\ntable.editorForm input { font-family: monospace }\\ntable.editorForm td {\\n padding: 4px;\\n vertical-align: top;\\n}\\ntable.editorForm .propertyName {\\n font-family: monospace;\\n}\\n.propertyDeprecation {\\n display: block;\\n font-style: italic;\\n}\\n\\n.requiredIndicator {\\n color: red;\\n font-style: italic;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"main\": \"kcj881bnLDph62EcKelj\",\n\t\"sidebar\": \"GeuMxQtBvZYr0nOURDHd\",\n\t\"panel\": \"NqlHG1MKBiOUUFAed3CM\",\n\t\"action\": \"Q3_rmo3XiEVg8qfXgKX_\",\n\t\"editorForm\": \"czOKx_t_EDF44pilzyzA\",\n\t\"propertyName\": \"s8rWNi6e8BZ7yQubfDws\",\n\t\"propertyDeprecation\": \"Bux6GxjreGZZkcXqx6kv\",\n\t\"requiredIndicator\": \"xvIZYbb8L5QbOLcesQ4T\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","Input","validator","required","value","rest","error","className","styles","type","propTypes","PropTypes","BehaviorHeader","props","node","properties","compatible","parsed","NodeIdentifiers","PropertyName","property","schema","title","deprecatedBy","RawPropertyValue","prop","onUpdate","Icon","name","raw","onChange","e","target","useRaw","ConstPropertyValue","join","const","StringPropertyValue","placeholder","default","IntegerPropertyValue","Number","BooleanPropertyValue","checked","ChoicesPicker","choices","prompt","onSelect","formattedChoices","useMemo","map","renderSearchResult","useCallback","result","search","fuzzysort","v","i","description","style","SearchFilter","initialQuery","searchKey","renderResults","results","ResultList","choice","renderResult","isRequired","EnumPropertyValue","enum","handleChange","event","indexOf","MultiSelectPropertyValue","definitions","useContext","DefinitionsContext","Array","isArray","$source","Error","source","$key","useSchemaChoices","selected","MultiSelect","length","MultiSelectChips","MultiSelectCheckboxes","includes","filter","useState","adding","setAdding","addChoice","remove","onClick","ActionButton","secondary","Modal","onDismiss","BehaviorssPropertyValue","selection","editing","setEditing","canAddMore","insertPhandle","updatePhandle","replaceIndex","code","removePhandle","index","withoutIndex","compact","phandle","stopPropagation","ValuePicker","params","slot","context","behaviour","onCancel","BindingsPropertyValue","insertBinding","updateBinding","binding","removeBinding","KeyWrapper","Key","PropertyValue","helper","KeyPositionSelector","schemas","behaviors","pendingChanges","setPendingChanges","handlePropValueChange","confirm","cloneDeep","schemaProps","propertiesList","Object","keys","propDeprecationMapping","reduce","otherProp","requiredPropertiesList","deprecatedProp","requiredPropsMissingValues","DialogBox","dismissText","maxHeight","overflow","labels","acc","key","omit","handleDeleteProp","textAlign","disabled","BetaNoticeDialog","issuesLink","Link","external","href","label","behaviorSchemas","NewBehaviorModal","pendingSelection","setPendingSelection","find","option","formatOptionLabel","opacity","margin","createBehavior","propSchema","isBindingType","times","toString","experimentalSettings","useSelector","state","macros","selectMacros","creating","setCreating","betaDisclaimerVisible","setBetaDisclaimerVisible","selectBehaviors","dispatch","useDispatch","handleAdd","handleAddPending","addBehavior","behavior","setTimeout","handleEdit","handleDelete","deleteBehavior","behaviorIndex","showBetaDialog","hideBetaDialog","toggleBeta","enableBehaviorEditing","settings","updateBehavior","backgroundColor","width","propValueShape","devicetreeNodeShape","propValue","componentName","location","propFullName","err","isCombined","nodeLabel","labelProp","toLowerCase","nameFromBind","setNameFromBind","labelFromBind","setLabelFromBind","slice","toUpperCase","useIdentifierUpdaters","handleUpdateNodeName","handleUpdateNodeLabel","handleUpdateLabelProperty","validateDevicetreeLabel","readOnly","validateDevicetreeNodeName","array","repositionElement","_","arr","val","push","___CSS_LOADER_EXPORT___","module","id","locals"],"sourceRoot":""} \ No newline at end of file
diff --git a/8573.23f7e6791fc94caba204.js b/8573.23f7e6791fc94caba204.js
new file mode 100644
index 0000000..cac5631
--- /dev/null
+++ b/8573.23f7e6791fc94caba204.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[8573],{27926:function(n,e,r){r.d(e,{Z:function(){return E}});var t=r(93379),o=r.n(t),i=r(7795),a=r.n(i),l=r(90569),c=r.n(l),u=r(3565),s=r.n(u),A=r(19216),d=r.n(A),p=r(44589),f=r.n(p),b=r(56281),m={};m.styleTagTransform=f(),m.setAttributes=s(),m.insert=c().bind(null,"head"),m.domAPI=a(),m.insertStyleElement=d(),o()(b.Z,m);var y=b.Z&&b.Z.locals?b.Z.locals:void 0,v=r(85893);function h(n){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},h(n)}var C=["children","secondary","className"];function g(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function x(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?g(Object(r),!0).forEach((function(e){B(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):g(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function B(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==h(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==h(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===h(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function j(n){var e=n.children,r=n.secondary,t=n.className,o=function(n,e){if(null==n)return{};var r,t,o=function(n,e){if(null==n)return{};var r,t,o={},i=Object.keys(n);for(t=0;t<i.length;t++)r=i[t],e.indexOf(r)>=0||(o[r]=n[r]);return o}(n,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(t=0;t<i.length;t++)r=i[t],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(n,r)&&(o[r]=n[r])}return o}(n,C);return(0,v.jsx)("button",x(x({className:[t,y.action,r&&y.secondary].join(" ")},o),{},{children:e}))}j.defaultProps={className:""};var E=j},2062:function(n,e,r){r.d(e,{Z:function(){return C}});var t=r(41051),o=r(93379),i=r.n(o),a=r(7795),l=r.n(a),c=r(90569),u=r.n(c),s=r(3565),A=r.n(s),d=r(19216),p=r.n(d),f=r(44589),b=r.n(f),m=r(528),y={};y.styleTagTransform=b(),y.setAttributes=A(),y.insert=u().bind(null,"head"),y.domAPI=l(),y.insertStyleElement=p(),i()(m.Z,y);var v=m.Z&&m.Z.locals?m.Z.locals:void 0,h=r(85893);function C(n){var e=n.children,r=n.className,o=void 0===r?"":r,i=[v.tip,o].join(" ");return(0,h.jsxs)("div",{className:i,children:[(0,h.jsx)(t.Z,{className:"fa-flip-horizontal",name:"hand-point-up"})," ",e]})}},81404:function(n,e,r){r.d(e,{Z:function(){return p}});var t=r(67294),o=r(39693),i=r.n(o),a=r(35161),l=r.n(a),c=r(52156),u=r(61953),s=r(74871),A=r(85893);function d(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function p(n){var e,r=n.node,o=n.onSelect,a=n.expanded,p=void 0!==a&&a,f=(0,t.useCallback)((function(n){n.stopPropagation(),o({node:r,type:"tree"})}),[r,o]),b=(0,t.useMemo)((function(){return l()((0,s.H)(r),"source")}),[r]),m=(0,t.useMemo)((function(){return b.at(-1)}),[b]),y=(0,t.useMemo)((function(){return b.slice(0,-1).reduce((function(n,e){return"".concat(e.code,"(").concat(n,")")}),null==m?void 0:m.code)}),[b,null==m?void 0:m.code]),v=(0,t.useMemo)((function(){return b.map(c.r8).map((function(n,e){return(0,A.jsx)(t.Fragment,{children:n},e)})).reduce((function(n,e){return 0===n.length?[e]:[].concat(function(n){if(Array.isArray(n))return d(n)}(r=n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(r)||function(n,e){if(n){if("string"==typeof n)return d(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(n,e):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[" ",e]);var r}),[])}),[b]),h=(0,t.useMemo)((function(){return b.map(c.rG).join(" + ")}),[b]),C=(0,t.useMemo)((function(){return b.map((function(n){return n?n.description||n.name:"⦸"})).join(" + ")}),[b]),g=void 0===(null===(e=r.source)||void 0===e?void 0:e.code)||void 0===r.value||r._isPlaceholder,x=p?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)("code",{children:y}),(0,A.jsx)("span",{children:C})]}):v;return(0,A.jsx)("span",{className:i()([u.Z.code,g&&u.Z.missingValue]).join(" "),title:h,onClick:f,children:g?(0,A.jsx)(c.J1,{}):x})}},74871:function(n,e,r){function t(n,e){if(n){if("string"==typeof n)return i(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(n,e):void 0}}function o(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}function i(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function a(n){return n.params.length>0?[n].concat(function(n){if(Array.isArray(n))return i(n)}(e=a(n.params[0]))||o(e)||t(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()):[n];var e}function l(n){var e,r=function(n){if(Array.isArray(n))return n}(e=n)||o(e)||t(e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),i=r[0],a=r.slice(1);return{value:i,params:0===a.length?[]:[l(a)]}}r.d(e,{H:function(){return a},n:function(){return l}})},83197:function(n,e,r){r.d(e,{N:function(){return R},Z:function(){return q}});var t=r(27361),o=r.n(t),i=r(45697),a=r.n(i),l=r(67294),c=r(67069),u=r(52156),s=r(81404),A=r(93379),d=r.n(A),p=r(7795),f=r.n(p),b=r(90569),m=r.n(b),y=r(3565),v=r.n(y),h=r(19216),C=r.n(h),g=r(44589),x=r.n(g),B=r(33151),j={};j.styleTagTransform=x(),j.setAttributes=v(),j.insert=m().bind(null,"head"),j.domAPI=f(),j.insertStyleElement=C(),d()(B.Z,j);var E=B.Z&&B.Z.locals?B.Z.locals:void 0,w=r(85893);function k(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}var S=function(n){var e,r,t=n.node,o=n.onSelect,i=(e=t.params,r=3,function(n){if(Array.isArray(n))return n}(e)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);c=!0);}catch(n){u=!0,o=n}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,r)||function(n,e){if(n){if("string"==typeof n)return k(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?k(n,e):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=i[0],c=i[1],s=i[2],A=(0,l.useCallback)((function(n){var e;null==n||null===(e=n.stopPropagation)||void 0===e||e.call(n),o({node:t,type:"params"})}),[t,o]),d=(0,l.useMemo)((function(){return[a,c,s].some((function(n){return void 0===(null==n?void 0:n.value)||(null==n?void 0:n._isPlaceholder)}))}),[a,c,s]),p=(0,l.useMemo)((function(){return[a,c,s].some((function(n){return void 0===(null==n?void 0:n.value)}))?{}:{backgroundColor:"hsl(".concat(a.value,", ").concat(c.value,"%, ").concat(s.value,"%)"),border:".1em solid hsl(".concat(a.value,", ").concat(c.value,"%, ").concat(.75*s.value,"%)"),boxSizing:"border-box"}}),[a,c,s]);return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(u.ZP,{node:t,onSelect:o}),d?(0,w.jsx)(u.ZP,{node:{},onSelect:A}):(0,w.jsx)("div",{onClick:A,className:E.colorIconWrapper,children:(0,w.jsx)("div",{className:E.colorIcon,title:p.backgroundColor,style:p})})]})},O=r(61953);function P(n){return P="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},P(n)}function Z(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function T(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Z(Object(r),!0).forEach((function(e){I(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):Z(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function I(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==P(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==P(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===P(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function D(n){var e=n.node,r=n.onSelect,t=n.expanded;return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(u.ZP,{node:e,onSelect:r,expanded:t}),o()(e,"source.params.length")>0?(0,w.jsx)(Y,{slots:e.source.params,params:e.params,onSelect:r}):null]})}function R(n){var e=n.node,r=n.onSelect,t=n.slot,o=n.expanded,i=void 0!==o&&o,a=(0,l.useMemo)((function(){var n;return"hsb-color-picker"===(null===(n=e.source)||void 0===n?void 0:n.helper)?S:"code"===t?s.Z:D}),[e,t]);return(0,w.jsx)("span",{className:O.Z.param,children:(0,w.jsx)(a,{node:e,onSelect:r,expanded:i})})}function Y(n){var e=n.slots,r=n.params,t=n.onSelect,o=n.root,i=n.wrapperProps;return(0,w.jsx)("span",T(T({className:O.Z.params,"data-is-root":!!o,"data-param-count":r.length},i),{},{children:e.map((function(n,e){return"placeholder"!==n.type&&(0,w.jsx)(R,{slot:n,node:r[e],onSelect:t},e)}))}))}Y.propTypes={slots:a().arrayOf(c.wu).isRequired,params:a().arrayOf(c.le).isRequired,source:c.qz,onSelect:a().func.isRequired};var q=Y},52156:function(n,e,r){r.d(e,{J1:function(){return d},r8:function(){return f},rG:function(){return p}});var t=r(39693),o=r.n(t),i=r(67294),a=r(45697),l=r.n(a),c=r(67069),u=r(61953),s=r(41051),A=r(85893);function d(){return(0,A.jsx)("span",{children:"⦸"})}function p(n){var e=(null==n?void 0:n.displayName)||(null==n?void 0:n.description);return n&&"(".concat(n.code,") ").concat(e)}function f(n){var e,r=(null==n?void 0:n.symbol)||(null==n||null===(e=n.code)||void 0===e?void 0:e.toString());return(null==n?void 0:n.faIcon)&&(0,A.jsx)(s.Z,{name:null==n?void 0:n.faIcon})||r||(0,A.jsx)(d,{})}function b(n){var e,r,t=n.value,o=n.expanded;if(void 0===o||!o)return f(t);if(!t)return(0,A.jsx)(d,{});var i=t.faIcon?(0,A.jsx)(s.Z,{name:t.faIcon}):t.symbol,a=null===(e=t.code)||void 0===e||null===(r=e.toString)||void 0===r?void 0:r.call(e),l=t.displayName||t.description||t.name;return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)("code",{children:a}),l&&(0,A.jsx)("span",{children:l})," ",i]})}function m(n){var e=n.node,r=n.onSelect,t=n.expanded,a=void 0!==t&&t,l=e.value,c=e.source,s=e._isPlaceholder,f=p(c),m=(0,i.useCallback)((function(n){n.stopPropagation(),r({node:e})}),[e,r]);return(0,A.jsx)("span",{className:o()([u.Z.code,(void 0===l||s)&&u.Z.missingValue]).join(" "),title:f,onClick:m,children:s?(0,A.jsx)(d,{}):(0,A.jsx)(b,{value:c,expanded:a})})}m.propTypes={node:c.le.isRequired,onSelect:l().func.isRequired},e.ZP=m},27213:function(n,e,r){var t=r(39693),o=r.n(t),i=r(45697),a=r.n(i),l=r(98697),c=r(83197),u=r(67069),s=r(39017),A=r(61953),d=r(41051),p=r(98588),f=r(85893);function b(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function m(n){var e,r,t,i,a=n.context,u=void 0===a?"none":a,m=n.hideBehaviour,y=n.value,v=n.params,h=n.paramIndex,C=n.onUpdate,g=(t=(0,l.Z)({value:y,params:v},h,C),i=2,function(n){if(Array.isArray(n))return n}(t)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);c=!0);}catch(n){u=!0,o=n}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(t,i)||function(n,e){if(n){if("string"==typeof n)return b(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?b(n,e):void 0}}(t,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),x=g[0],B=x.behavior,j=x.behaviorParams,E=x.bindTree,w=x.bindTreeParams,k=x.editing,S=x.invalid,O=g[1],P=O.selectNodeForEditing,Z=O.clearEditing,T=O.handleUpdateBindValue;return(0,f.jsxs)(f.Fragment,{children:[B&&!m?(0,f.jsx)("span",{className:o()([A.Z["behaviour-binding"],!(null!==(e=E.source)&&void 0!==e&&e.code)&&A.Z.missingValue]).join(" "),onClick:function(){return P({node:E})},children:(null===(r=E.source)||void 0===r?void 0:r.code)||"⦸"}):null,S&&(0,f.jsx)(d.Z,{name:"warning",className:A.Z.missing,title:"Binding has missing value(s)"}),(0,f.jsx)(c.Z,{root:!0,slots:j,params:w,onSelect:P,wrapperProps:{"data-simple":(0,s.Gg)(E),"data-long":(0,s.Mc)(E,j)}}),k&&(0,f.jsx)(p.Z,{node:k.node,type:k.type,behaviour:B,context:u,prompt:(0,s._I)(k.node.slot),searchKey:"code",onSelect:T,onCancel:Z})]})}m.propTypes={context:a().string,hideBehaviour:a().bool.isRequired,value:u.S3.isRequired,params:a().arrayOf(u.dH),onUpdate:a().func.isRequired},m.defaultProps={hideBehaviour:!1},e.Z=m},67069:function(n,e,r){r.d(e,{S3:function(){return c},dH:function(){return A},le:function(){return d},qz:function(){return u},wu:function(){return a}});var t=r(45697),o=r.n(t),i=o().oneOfType([o().number,o().shape({name:o().string,type:o().string,description:o().string,code:o().any})]),a=o().oneOfType([o().oneOf(["code","layer"]),o().shape({type:o().oneOf(["placeholder"])}),o().shape({enum:o().arrayOf(i),raw:o().bool,name:o().string,type:o().string.isRequired})]),l=o().arrayOf(a),c=o().oneOfType([o().string,o().number]),u=o().shape({params:l,code:c.isRequired,description:o().string,symbol:o().string,faIcon:o().string}),s={value:c,source:u};s.params=o().arrayOf(o().shape(s));var A=o().shape(s),d=A;o().arrayOf(A)},98697:function(n,e,r){r.d(e,{Z:function(){return f}});var t=r(50361),o=r.n(t),i=r(27361),a=r.n(i),l=r(78718),c=r.n(l),u=r(67294),s=r(81485),A=r(39017),d=r(41696);function p(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function f(n,e,r){var t,i,l,f,b=(0,u.useContext)(s.c),m=b.sources,y=(l=(0,u.useState)(null),f=2,function(n){if(Array.isArray(n))return n}(l)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);c=!0);}catch(n){u=!0,o=n}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(l,f)||function(n,e){if(n){if("string"==typeof n)return p(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(n,e):void 0}}(l,f)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),v=y[0],h=y[1],C=(0,u.useMemo)((function(){return(0,A.K4)(n,b)}),[n,b]),g=void 0===e?[0]:[e,e+1],x=n.value,B=a()(m.behaviours,x,{}),j=(t=(0,d.L)(n,b.behaviorParameters)).slice.apply(t,g),E=(i=C.params).slice.apply(i,g),w=(0,A.He)(C),k=(0,u.useMemo)((function(){return(0,A.wx)(w)}),[w]),S=(0,u.useCallback)((function(n){var e=n.node,r=n.type,t=void 0===r?"value":r,o=(0,A._I)(e.slot,e,t);h({node:e,type:t,nodeIndex:w.indexOf(e),prompt:o})}),[w,h]),O=(0,u.useCallback)((function(){return h(null)}),[h]),P=(0,u.useCallback)((function(n){var e=n.value,t=n.params,i=v.nodeIndex,a=o()(C),l=(0,A.He)(a),u=l[i];u.value=e,u.params=t,delete u._isPlaceholder,l.forEach((function(n){delete n.source,delete n.slot})),r(c()(a,["value","params"])),O()}),[C,v,r,O]),Z=(0,u.useCallback)((function(n){var e=v.nodeIndex,t=o()(C),i=(0,A.He)(t);i[e].params=n,i.forEach((function(n){delete n.source,delete n.slot})),r(c()(t,["value","params"])),O()}),[C,v,r,O]),T=(0,u.useCallback)((function(n,e,t){var i=o()(C),a=(0,A.He)(i),l=a[e];if(n.slot.raw)"number"===n.slot.type&&(t.code=Number(t.code));else if(n.slot.enum){var u,s,d,p=(null===(u=l.source)||void 0===u||null===(s=u.additionalParams)||void 0===s?void 0:s.length)||0;if(((null===(d=t.additionalParams)||void 0===d?void 0:d.length)||0)<p){var f=a[0];f.params.splice(1,f.params.length-1),a.splice(2,a.length-1)}}l.value=t.code,delete l._isPlaceholder;var m="behaviour"===l.slot?b.behaviorParameters[l.value]||[]:(null==t?void 0:t.params)||[];l.params=m.reduce((function(n,e,r){var t,o;return(null===(t=l.source)||void 0===t||null===(o=t.params)||void 0===o?void 0:o[r])===m[r]?n.push(l.params[r]):n.push({value:0,_isPlaceholder:!0}),n}),[]),a.forEach((function(n){delete n.source,delete n.slot})),r(c()(i,["value","params","_isPlaceholder"])),O()}),[C,b.behaviorParameters,r,O]),I=(0,u.useCallback)((function(n){if("tree"===v.type)return P(n);if("params"===v.type)return Z(n);var e=v.node,r=v.nodeIndex;T(e,r,n)}),[v,T,P,Z]),D=(0,u.useMemo)((function(){return{behavior:B,behaviorParams:j,bindTree:C,bindTreeParams:E,editing:v,index:w,invalid:k}}),[B,j,C,E,v,w,k]),R=(0,u.useMemo)((function(){return{clearEditing:O,handleUpdateBindValue:I,handleUpdateNode:T,selectNodeForEditing:S}}),[S,O,I,T]);return(0,u.useMemo)((function(){return[D,R]}),[D,R])}},39017:function(n,e,r){r.d(e,{Gg:function(){return m},He:function(){return b},K4:function(){return C},Mc:function(){return y},_I:function(){return v},wx:function(){return h}});var t=r(13311),o=r.n(t),i=r(27361),a=r.n(i),l=r(41696);function c(n){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},c(n)}function u(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function s(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?u(Object(r),!0).forEach((function(e){A(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function A(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==c(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==c(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===c(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function d(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);c=!0);}catch(n){u=!0,o=n}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(n,e)||p(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(n,e){if(n){if("string"==typeof n)return f(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?f(n,e):void 0}}function f(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function b(n){var e=[];return function n(r){var t=r.params||[];e.push(r),t.forEach(n)}(n),e}function m(n){var e=d(n.params,1)[0],r=a()(e,"source.symbol",a()(e,"source.code","")),t=!!a()(e,"source.faIcon")||1===r.length;return 1===n.params.length&&t}function y(n,e){var r=d(n.params,1)[0],t=a()(r,"source.symbol",a()(r,"value","")),o=!a()(r,"source.faIcon")&&t.length>4,i=e.length>1,l=a()(r,"params",[]).length>0;return o||i||l}function v(n,e,r){var t={layer:"Assign layer",mod:"Assign modifier",behaviour:"Assign behavior",keycode:"Assign key code"};if("params"===r){var o,i,a=(null===(o=e.source)||void 0===o?void 0:o.displayName)||(null===(i=e.source)||void 0===i?void 0:i.name);if(a)return a}return n.name?"Assign ".concat(n.name):n.raw?"Enter raw value":t[n]||t.keycode}function h(n){if(!n[0].source.code)return!0;var e,r=function(n,e){var r="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(!r){if(Array.isArray(n)||(r=p(n))){r&&(n=r);var t=0,o=function(){};return{s:o,n:function(){return t>=n.length?{done:!0}:{done:!1,value:n[t++]}},e:function(n){throw n},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,l=!1;return{s:function(){r=r.call(n)},n:function(){var n=r.next();return a=n.done,n},e:function(n){l=!0,i=n},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw i}}}}(n);try{for(r.s();!(e=r.n()).done;){var t,o=e.value;if(((null===(t=o.source)||void 0===t?void 0:t.params)||[]).length>o.params.length)return!0;if(o.params.some((function(n){var e;return void 0===n.value||""===n.value||void 0===n.source||n._isPlaceholder&&"placeholder"!==(null===(e=n.slot)||void 0===e?void 0:e.type)})))return!0}}catch(n){r.e(n)}finally{r.f()}}function C(n,e){var r=n.value,t=n.params,i=e.sources,c=e.mergedGlyphs,u=e.behaviorParameters,A=r;function d(n,e){if(!n)return{value:void 0,slot:e,params:[]};var r=n.value,t=n.params,l=n._isPlaceholder,u=function(n,e){var r;return n=a()(i.defines,n,n),Number.isNaN(Number(n))||(n=Number(n)),e.raw?{code:n}:e.enum?o()(e.enum,{code:n})||o()(e.enum,n)||{code:n}:"placeholder"===e.type?{code:n}:null==i||null===(r=i[e])||void 0===r?void 0:r[n]}(r,e);return{value:r,_isPlaceholder:l,slot:e,source:s(s({},u),{},{symbol:a()(c,[null==u?void 0:u.name,"symbol"],null==u?void 0:u.symbol),faIcon:a()(c,[null==u?void 0:u.name,"faIcon"],null==u?void 0:u.faIcon)}),params:a()(u,"params",[]).map((function(n,e){return d(t[e],n)}))}}return{value:r,slot:"behaviour",source:a()(i.behaviours,A,{}),params:(0,l.L)(n,u).map((function(n,e){return d(t[e],n)}))}}},62417:function(n,e,r){function t(n){return n.length>31?"maximum length: 31":n.match(/^[^a-zA-Z]/)?"first character must be a letter":n.match(/[^a-zA-Z0-9,._+-]/)?"valid characters: a-zA-Z0-9,._+-":void 0}r.d(e,{G3:function(){return o},Gk:function(){return t},zq:function(){return i}});var o=t;function i(n){return n.length>31?"maximum length: 31":n.match(/^[^a-zA-Z]/)?"first character must be a letter":n.match(/[^a-zA-Z0-9_]/)?"valid characters: a-zA-Z0-9_":void 0}},82607:function(n,e,r){var t=r(45697),o=r.n(t),i=r(91118),a=r(27213),l=r(67069),c=r(85893);function u(n){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(n)}function s(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function A(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?s(Object(r),!0).forEach((function(e){d(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function d(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==u(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==u(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===u(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function p(n){var e=n.context,r=n.value,t=n.params,o=n.keyWrapperProps,l=void 0===o?{}:o,u=n.onUpdate;return(0,c.jsx)(i.Z,A(A({},l),{},{children:(0,c.jsx)(a.Z,{context:e,value:r,params:t,onUpdate:u})}))}p.propTypes={label:o().string,value:l.S3.isRequired,params:o().arrayOf(l.dH),onUpdate:o().func.isRequired},e.Z=p},91118:function(n,e,r){var t=r(39693),o=r.n(t),i=r(61953),a=r(85893);function l(n){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},l(n)}var c=["children","selectable","themeClass","className"];function u(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function s(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?u(Object(r),!0).forEach((function(e){A(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function A(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==l(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==l(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===l(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}e.Z=function(n){var e=n.children,r=n.selectable,t=void 0===r||r,l=n.themeClass,u=void 0===l?void 0:l,A=n.className,d=void 0===A?"":A,p=function(n,e){if(null==n)return{};var r,t,o=function(n,e){if(null==n)return{};var r,t,o={},i=Object.keys(n);for(t=0;t<i.length;t++)r=i[t],e.indexOf(r)>=0||(o[r]=n[r]);return o}(n,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(t=0;t<i.length;t++)r=i[t],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(n,r)&&(o[r]=n[r])}return o}(n,c),f=o()([i.Z.key,t&&i.Z.selectable,null!=u?u:i.Z.keyDefaultTheme,d]).join(" ");return(0,a.jsx)("div",s(s({className:f},p),{},{children:e}))}},49519:function(n,e,r){r.d(e,{Z:function(){return A}});var t=r(45697),o=r.n(t),i=r(67294),a=function(n,e){var r=(e+(arguments.length>2&&void 0!==arguments[2]?arguments[2]:1))%n.length;return r<0?n.length+r:r},l=r(45944),c=r(85893);function u(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function s(n){var e,r,t=n.results,o=n.onSelect,s=n.renderResult,A=(e=(0,i.useState)(0),r=2,function(n){if(Array.isArray(n))return n}(e)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);c=!0);}catch(n){u=!0,o=n}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,r)||function(n,e){if(n){if("string"==typeof n)return u(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(n,e):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=A[0],p=A[1],f=(0,i.useRef)(null),b=(0,i.useCallback)((function(n,e){var r,o,i,l,c,u;if(0!==t.length)if(void 0!==e){var s=null!==d?a(t,d,e):n,A='li[data-result-index="'.concat(s,'"]');o=null===(r=f.current)||void 0===r?void 0:r.querySelector(A),i=o.offsetParent.scrollTop,l=o.offsetParent.offsetHeight,c=o.offsetTop,u=c+o.scrollHeight,(c<i||u>i+l)&&o.scrollIntoView(!1),p(s)}else p(n);else p(null)}),[t,d,p]),m=(0,i.useCallback)((function(){b(0,1)}),[b]),y=(0,i.useCallback)((function(){b(t.length-1,-1)}),[b,t]),v=(0,i.useCallback)((function(n){o(t[d],n)}),[t,d,o]),h=(0,i.useCallback)((function(n){if("BUTTON"!==n.target.nodeName){var e={ArrowDown:m,ArrowUp:y,Enter:v}[n.key];e&&(n.preventDefault(),n.stopPropagation(),e(n))}}),[m,y,v]);return(0,i.useEffect)((function(){return document.body.addEventListener("keydown",h),function(){return document.body.removeEventListener("keydown",h)}}),[f,h]),(0,c.jsx)("ul",{className:l.Z.results,ref:f,children:t.map((function(n,e){return(0,c.jsx)("li",{className:d===e?l.Z.highlighted:"",title:n.description,"data-result-index":e,onClick:function(e){return o(n,e)},onDoubleClick:function(e){return o(n,e)},onMouseOver:function(){return b(e)},children:s(n,e)},e)}))})}s.propTypes={results:o().array.isRequired,onSelect:o().func.isRequired,renderResult:o().func.isRequired};var A=s},49671:function(n,e,r){var t=r(87360),o=r.n(t),i=r(45697),a=r.n(i),l=r(67294),c=r(41051),u=r(45944),s=r(85893);function A(n){return A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},A(n)}function d(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function p(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?d(Object(r),!0).forEach((function(e){f(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):d(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function f(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==A(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==A(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===A(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function b(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function m(n){n&&(n.focus(),n.select())}var y=function(n){var e,r,t=n.choices,i=n.searchKey,a=n.searchKeys,A=n.renderResults,d=n.initialQuery,f=!t.length||t.length>10,y=(e=(0,l.useState)(d),r=2,function(n){if(Array.isArray(n))return n}(e)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);c=!0);}catch(n){u=!0,o=n}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,r)||function(n,e){if(n){if("string"==typeof n)return b(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?b(n,e):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),v=y[0],h=y[1],C=(0,l.useMemo)((function(){if(!v||!f)return t;var n=a?{keys:a,limit:30}:{key:i,limit:30};return o().go(v,t,n).map((function(n){return p(p({},n.obj),{},{search:n})}))}),[f,v,t,i,a]),g=(0,l.useCallback)((function(n){h(n.target.value)}),[h]);return(0,s.jsxs)(s.Fragment,{children:[f&&(0,s.jsxs)("div",{className:u.Z.searchWrapper,children:[(0,s.jsx)("input",{ref:m,type:"text",value:v,onChange:g}),(0,s.jsx)(c.Z,{className:u.Z.searchIcon,name:"search"}),(0,s.jsx)(c.Z,{className:u.Z.clearSearchIcon,name:"times",onClick:function(){return h("")}})]}),A(C)]})};y.propTypes={choices:a().array.isRequired,searchKey:a().string,initialQuery:a().string.isRequired,renderResults:a().func.isRequired},y.defaultProps={initialQuery:""},e.Z=y},98588:function(n,e,r){r.d(e,{Z:function(){return Yn}});var t=r(78718),o=r.n(t),i=r(45697),a=r.n(i),l=r(67294),c=r(96186),u=r(64261),s=r(81485),A=r(49519),d=r(45944),p=r(67069),f={onCancel:a().func,onChange:a().func,onSelect:a().func.isRequired,node:p.le.isRequired,searchKey:a().string.isRequired,searchThreshold:a().number},b=r(85893);function m(n){var e=(0,l.useContext)(s.c).getSearchTargets,r=n.param,t=n.onSelect,o=(0,l.useMemo)((function(){return e(r)}),[e,r]);return(0,b.jsx)(A.Z,{results:o,onSelect:t,renderResult:function(n){return(0,b.jsxs)(b.Fragment,{children:[n.code,n.description&&(0,b.jsx)("p",{className:d.Z.description,children:n.description})]})}})}m.propTypes=f;var y=r(87360),v=r.n(y),h=r(49671);function C(n){var e=n.searchKey,r=n.node,t=n.param,o=n.behaviour,i=n.context,a=n.onSelect,c=(0,l.useContext)(s.c).getSearchTargets,u=(0,l.useMemo)((function(){return c(t,o.code,i)}),[c,t,o,i]);return(0,b.jsx)(h.Z,{choices:u,initialQuery:r.value||"",searchKey:e,renderResults:function(n){return n&&(0,b.jsx)(A.Z,{results:n,onSelect:a,renderResult:g})}})}function g(n){var e=n.search?(0,b.jsx)("span",{children:v().highlight(n.search,(function(n,e){return(0,b.jsx)("b",{children:n},e)}))}):(0,b.jsx)("span",{children:n.code}),r=n.displayName||n.description;return(0,b.jsxs)(b.Fragment,{children:[e,r&&(0,b.jsx)("p",{className:d.Z.description,children:r})]})}C.propTypes=f;var x=r(55651),B=r(27926);function j(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function E(n){var e,r,t=n.node,o=n.onSelect,i=(e=(0,l.useState)({h:Number(t.params[0].value),s:Number(t.params[1].value),l:Number(t.params[2].value)}),r=2,function(n){if(Array.isArray(n))return n}(e)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);c=!0);}catch(n){u=!0,o=n}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,r)||function(n,e){if(n){if("string"==typeof n)return j(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?j(n,e):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=i[0],c=i[1],u=(0,l.useCallback)((function(){o([{value:Math.round(a.h)},{value:Math.round(a.s)},{value:Math.round(a.l)}])}),[a,o]);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{style:{display:"flex",justifyContent:"center"},children:(0,b.jsx)(x.Jz,{color:a,onChange:c})}),(0,b.jsx)("p",{style:{textAlign:"center"},children:(0,b.jsx)(B.Z,{onClick:u,children:"Confirm"})})]})}E.propTypes={value:a().any.isRequired,prompt:a().string.isRequired,param:a().oneOfType([a().shape({enum:a().array,raw:a().bool,type:a().string})]).isRequired,onSelect:a().func.isRequired},E.defaultProps={value:""};var w=E,k=r(94184),S=r.n(k),O=r(39693),P=r.n(O),Z=r(35161),T=r.n(Z),I=r(74871),D=r(82569),R=r.n(D);function Y(n){return Y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Y(n)}function q(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function M(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?q(Object(r),!0).forEach((function(e){U(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):q(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function U(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==Y(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==Y(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===Y(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function L(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}var N=r(93379),z=r.n(N),K=r(7795),X=r.n(K),Q=r(90569),W=r.n(Q),J=r(3565),F=r.n(J),G=r(19216),_=r.n(G),H=r(44589),V=r.n(H),$=r(14409),nn={};nn.styleTagTransform=V(),nn.setAttributes=F(),nn.insert=W().bind(null,"head"),nn.domAPI=X(),nn.insertStyleElement=_(),z()($.Z,nn);var en=$.Z&&$.Z.locals?$.Z.locals:void 0;function rn(n){return rn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},rn(n)}function tn(n){return function(n){if(Array.isArray(n))return on(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(n){if("string"==typeof n)return on(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?on(n,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function on(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function an(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==rn(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==rn(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===rn(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}var ln=["LS","LA","LC","LG"],cn=["RS","RA","RC","RG"],un={LS:{short:"LSHFT",full:"Left Shift"},LC:{short:"LCTRL",full:"Left Control"},LA:{short:"LALT",full:"Left Alt"},LG:{short:"LGUI",full:"Left Gui"},RS:{short:"RSHFT",full:"Right Shift"},RC:{short:"RCTRL",full:"Right Control"},RA:{short:"RALT",full:"Right Alt"},RG:{short:"RGUI",full:"Right Gui"}},sn=" (This modifier is implicitly used by the active keycode and cannot be de-selected)";function An(n){var e=n.selected,r=n.implicit,t=n.row,o=n.onChange;return(0,b.jsx)("ul",{className:en.modifiers,children:t.map((function(n,t){var i;return(0,b.jsx)("li",{title:un[n].full+(r.includes(n)?sn:""),className:S()((i={},an(i,en.selected,e.includes(n)),an(i,en.implicit,r.includes(n)),i)),children:(0,b.jsxs)("label",{children:[(0,b.jsx)("input",{type:"checkbox",checked:e.includes(n)||r.includes(n),disabled:r.includes(n),onChange:function(r){o(r.target.checked?[].concat(tn(e),[n]):R()(e,n))}})," ",un[n].short]})},t)}))})}function dn(n){var e=n.selected,r=n.implicit,t=n.onChange;return function(n,e,r){var t,o,i,a,c=(0,l.useCallback)((function(t){var o=function(n){var e,r={Control:"C",Shift:"S",Alt:"A",Meta:"G"}[n.key],t=(e={},an(e,KeyboardEvent.DOM_KEY_LOCATION_LEFT,"L"),an(e,KeyboardEvent.DOM_KEY_LOCATION_RIGHT,"R"),e)[n.location];return r&&t?"".concat(t).concat(r):null}(t);o&&!e.includes(o)&&r(n.includes(o)?R()(n,o):[].concat(tn(n),[o]))}),[n,e,r]);i=c,a=(t=(0,l.useState)({}),o=2,function(n){if(Array.isArray(n))return n}(t)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);c=!0);}catch(n){u=!0,o=n}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(t,o)||function(n,e){if(n){if("string"==typeof n)return L(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?L(n,e):void 0}}(t,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1],(0,l.useEffect)((function(){function n(n){a((function(e){return M(M({},e),{},U({},n.code,!0))}))}function e(n){a((function(e){return e[n.code]&&setTimeout((function(){return i(n)})),M(M({},e),{},U({},n.code,!1))}))}function r(n){a({})}return document.body.addEventListener("keydown",n),document.body.addEventListener("keyup",e),document.body.addEventListener("focusout",r),function(){document.body.removeEventListener("keydown",n),document.body.removeEventListener("keyup",e),document.body.removeEventListener("focusout",r)}}),[a,i])}(e,r,t),(0,b.jsxs)("div",{className:en.allModifiers,children:[(0,b.jsx)(An,{row:ln,selected:e,implicit:r,onChange:t}),(0,b.jsx)(An,{row:cn,selected:e,implicit:r,onChange:t})]})}dn.propTypes={selected:a().arrayOf(a().string),implicit:a().arrayOf(a().string),onChange:a().func.isRequired};var pn=r(81404),fn=r(39017),bn=r(91118),mn=r(2062),yn=r(41051);function vn(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);c=!0);}catch(n){u=!0,o=n}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(n,e)||hn(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function hn(n,e){if(n){if("string"==typeof n)return Cn(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Cn(n,e):void 0}}function Cn(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function gn(n){var e=vn(n.search||[],1)[0],r=e?(0,b.jsx)("span",{dangerouslySetInnerHTML:{__html:v().highlight(e)}}):(0,b.jsx)("span",{children:n.code}),t=function(n){var e=null==n?void 0:n.symbol,r=null==n?void 0:n.faIcon;return r?(0,b.jsx)(yn.Z,{name:r}):e&&!n.aliases.includes(e)?e:void 0}(n);return(0,b.jsxs)("div",{className:en.resultItem,children:[(0,b.jsxs)("div",{className:en.description,children:[r,(0,b.jsx)("p",{className:d.Z.description,children:n.description})]}),t&&(0,b.jsx)("div",{className:en.symbol,children:t})]})}function xn(n){var e=n.node,r=n.onSelect,t=n.behaviour,o=(0,l.useContext)(s.c),i=o.getSearchTargets,a=(0,l.useMemo)((function(){return T()((0,I.H)(e),"source")}),[e]),c=1===a.length?[]:a.slice(0,-1),u=vn((0,l.useState)(T()(c,"code")),2),p=u[0],f=u[1],m=vn((0,l.useState)(a.at(-1)),2),y=m[0],v=m[1],C=(0,l.useMemo)((function(){return i("code",t.code).filter((function(n){return 0===n.params.length}))}),[i,t]),g=(0,fn.K4)({value:"&kp",params:[{value:null==y?void 0:y.code,params:null==y?void 0:y.params}]},o),x=(0,l.useCallback)((function(n,e){var t,o=(0,I.n)(P()([].concat(function(n){if(Array.isArray(n))return Cn(n)}(t=e)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(t)||hn(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[null==n?void 0:n.code])));r(o)}),[r]),j=(0,l.useCallback)((function(n,e){"dblclick"!==e.type?v(n):x(n,p)}),[x,p,v]);return(0,b.jsxs)("div",{className:S()(d.Z.dialog,en.wrapper),children:[(0,b.jsxs)("div",{style:{display:"flex",gap:"10px"},children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{children:"Keycode"}),(0,b.jsx)(bn.Z,{className:en.previewKeycode,selectable:!1,children:(0,b.jsx)(pn.Z,{node:g.params[0],onSelect:function(){}})})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{children:"Modifiers"}),(0,b.jsx)(dn,{selected:p,implicit:(null==y?void 0:y.modifiers)||[],onChange:f})]})]}),(0,b.jsx)("h3",{children:"Available Keycodes"}),(0,b.jsx)(h.Z,{choices:C,initialQuery:null==y?void 0:y.code,searchKeys:["code","symbol"],renderResults:function(n){return n&&(0,b.jsx)(A.Z,{results:n,onSelect:j,renderResult:gn})}}),(0,b.jsx)(mn.Z,{className:en.quickCloseTip,children:"Double-click to select and close the dialog"}),(0,b.jsxs)("div",{style:{marginTop:"10px",textAlign:"center"},children:[(0,b.jsx)(B.Z,{disabled:!(null!=y&&y.code),onClick:function(){x(y,p)},children:"Confirm"}),(0,b.jsx)(B.Z,{onClick:function(){r(e)},secondary:!0,children:"Cancel"})]})]})}xn.propTypes={node:p.le.isRequired,param:a().oneOfType([a().string,a().shape({enum:a().array,raw:a().bool,type:a().string})]).isRequired,searchKey:a().string.isRequired,behaviour:a().object.isRequired,context:a().string.isRequired,onSelect:a().func.isRequired};var Bn=xn;function jn(n,e){(null==e||e>n.length)&&(e=n.length);for(var r=0,t=new Array(e);r<e;r++)t[r]=n[r];return t}function En(n){n&&(n.focus(),n.select())}function wn(n){var e,r,t=n.value,o=n.param,i=n.onSelect,a=(e=(0,l.useState)(t),r=2,function(n){if(Array.isArray(n))return n}(e)||function(n,e){var r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var t,o,i,a,l=[],c=!0,u=!1;try{if(i=(r=r.call(n)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=i.call(r)).done)&&(l.push(t.value),l.length!==e);c=!0);}catch(n){u=!0,o=n}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,r)||function(n,e){if(n){if("string"==typeof n)return jn(n,e);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?jn(n,e):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=a[0],u=a[1],s=(0,l.useCallback)((function(n){"Enter"===n.key&&i({code:c})}),[c,i]),A=(0,l.useCallback)((function(n){var e=n.target.value;"number"===o.type&&(e=Number(e),Number.isNaN(e))||u(e)}),[o,u]);return(0,b.jsx)("input",{ref:En,type:"text",value:c,onChange:A,onKeyDown:s})}wn.propTypes=f;var kn=r(95998),Sn=r(80736);function On(n){var e=n.onSelect,r=(0,kn.v9)(Sn.vl),t=(0,l.useMemo)((function(){return r.map((function(n,e){return{code:e,description:n.name||"Layer ".concat(e)}}))}),[r]);return(0,b.jsx)(A.Z,{results:t,onSelect:e,renderResult:function(n){return(0,b.jsxs)(b.Fragment,{children:[n.code,n.description&&(0,b.jsx)("p",{className:d.Z.description,children:n.description})]})}})}On.propTypes=f;var Pn=["node","prompt","onUpdate","onCancel"];function Zn(n){return Zn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Zn(n)}function Tn(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function In(n){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Tn(Object(r),!0).forEach((function(e){Dn(n,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):Tn(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}function Dn(n,e,r){return(e=function(n){var e=function(n,e){if("object"!==Zn(n)||null===n)return n;var r=n[Symbol.toPrimitive];if(void 0!==r){var t=r.call(n,"string");if("object"!==Zn(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===Zn(e)?e:String(e)}(e))in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function Rn(n){var e=n.node,r=n.type,t=(n.onCancel,n.onSelect),i=o()(n,["node","value","prompt","param","node","behaviour","context","searchKey"]),a=(0,l.useMemo)((function(){var n;return"params"===r&&"hsb-color-picker"===(null===(n=e.source)||void 0===n?void 0:n.helper)?w:e.slot.raw||"placeholder"===e.slot.type?wn:e.slot.enum?m:"code"===e.slot?Bn:"layer"===e.slot?On:C}),[e,r]);return(0,b.jsx)(a,In(In({},i),{},{param:e.slot,onSelect:t}))}function Yn(n){var e=n.node,r=n.prompt,t=n.onUpdate,o=n.onCancel,i=function(n,e){if(null==n)return{};var r,t,o=function(n,e){if(null==n)return{};var r,t,o={},i=Object.keys(n);for(t=0;t<i.length;t++)r=i[t],e.indexOf(r)>=0||(o[r]=n[r]);return o}(n,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(t=0;t<i.length;t++)r=i[t],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(n,r)&&(o[r]=n[r])}return o}(n,Pn);return(0,b.jsx)(u.Z,{onDismiss:o,children:(0,b.jsxs)(c.Z,{dismissText:null,classes:[d.Z.dialogWrapper],children:[(0,b.jsx)("h2",{children:r}),(0,b.jsx)(Rn,In({onSelect:t,node:e},i))]})})}Rn.propTypes={type:a().string.isRequired,node:p.le.isRequired,behaviour:a().object.isRequired,searchKey:a().string.isRequired,searchThreshold:a().number,onCancel:a().func,onUpdate:a().func,onSelect:a().func.isRequired},Rn.defaultProps={type:"value",value:"",freeForm:!1,searchThreshold:10},Yn.propTypes={type:a().string.isRequired,node:p.le.isRequired,behaviour:a().object.isRequired,prompt:a().string.isRequired,searchKey:a().string.isRequired,searchThreshold:a().number,onCancel:a().func.isRequired,onChange:a().func,onSelect:a().func.isRequired}},56281:function(n,e,r){var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([n.id,"button.pi2Ig8c3Fdh4H2Jpxdo7 {\n display: inline-block;\n cursor: pointer;\n background-color: var(--hover-selection);\n color: white;\n\n font-size: 16px;\n border: none;\n border-radius: 5px;\n padding: 0 5px;\n\n height: 30px;\n line-height: 30px;\n vertical-align: middle;\n}\n\nbutton.Ctpu4E2dZYJ6g8CUGFOF {\n color: var(--fg);\n background-color: transparent;\n}\n\nbutton.pi2Ig8c3Fdh4H2Jpxdo7[disabled] {\n filter: saturate(20%);\n opacity: .5;\n cursor: not-allowed;\n}\n","",{version:3,sources:["webpack://./src/Common/action-button.module.css"],names:[],mappings:"AAAA;EACE,qBAAqB;EACrB,eAAe;EACf,wCAAwC;EACxC,YAAY;;EAEZ,eAAe;EACf,YAAY;EACZ,kBAAkB;EAClB,cAAc;;EAEd,YAAY;EACZ,iBAAiB;EACjB,sBAAsB;AACxB;;AAEA;EACE,gBAAgB;EAChB,6BAA6B;AAC/B;;AAEA;EACE,qBAAqB;EACrB,WAAW;EACX,mBAAmB;AACrB",sourcesContent:["button.action {\n display: inline-block;\n cursor: pointer;\n background-color: var(--hover-selection);\n color: white;\n\n font-size: 16px;\n border: none;\n border-radius: 5px;\n padding: 0 5px;\n\n height: 30px;\n line-height: 30px;\n vertical-align: middle;\n}\n\nbutton.secondary {\n color: var(--fg);\n background-color: transparent;\n}\n\nbutton.action[disabled] {\n filter: saturate(20%);\n opacity: .5;\n cursor: not-allowed;\n}\n"],sourceRoot:""}]),a.locals={action:"pi2Ig8c3Fdh4H2Jpxdo7",secondary:"Ctpu4E2dZYJ6g8CUGFOF"},e.Z=a},528:function(n,e,r){var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([n.id,".sq9i7hQeTeeKuarmO8oA {\n display: inline-block;\n font-size: 70%;\n background: rgba(0, 0, 0, 0.5);\n color: white;\n padding: 4px;\n border-radius: 4px;\n width: max-content;\n}\n","",{version:3,sources:["webpack://./src/Common/tip.module.css"],names:[],mappings:"AAAA;EACE,qBAAqB;EACrB,cAAc;EACd,8BAA8B;EAC9B,YAAY;EACZ,YAAY;EACZ,kBAAkB;EAClB,kBAAkB;AACpB",sourcesContent:[".tip {\n display: inline-block;\n font-size: 70%;\n background: rgba(0, 0, 0, 0.5);\n color: white;\n padding: 4px;\n border-radius: 4px;\n width: max-content;\n}\n"],sourceRoot:""}]),a.locals={tip:"sq9i7hQeTeeKuarmO8oA"},e.Z=a},14409:function(n,e,r){var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([n.id,'.AmikJd3HeM7NGUa8io2A {\n width: 350px;\n}\n\n.AmikJd3HeM7NGUa8io2A h3:first-child {\n margin-top: 0px;\n}\n\n.xCOOsvxL5qQ3kR8ri91A {\n pointer-events: none;\n box-shadow: 0 4px 10px 0px rgba(0, 0, 0, 0.5);\n}\n\n.Ox9WHfAMFuthXo6ZOJoI {\n padding: 2px 0;\n}\n\n.u4uW9U2E0DfbUM9vP9pf {\n text-align: center;\n padding: 0;\n margin: 0;\n}\n\n.u4uW9U2E0DfbUM9vP9pf li {\n display: inline-block;\n font-family: monospace, monospace;\n font-size: 70%;\n margin: 2px;\n border-radius: 2px;\n\n background-color: rgba(0, 0, 0, .5);\n opacity: 0.5;\n color: white;\n}\n.u4uW9U2E0DfbUM9vP9pf li label {\n display: inline-block;\n padding: 4px;\n}\n\n.u4uW9U2E0DfbUM9vP9pf li.YcHSun3PLo8dCb9qIZtc {\n opacity: 1;\n background-color: var(--selection);\n color: white;\n}\n\n.u4uW9U2E0DfbUM9vP9pf li.Ix6wQt3EBFUH2PUcsqgm {\n background-color: var(--error-highlight);\n filter: saturate(50%);\n}\n\n.u4uW9U2E0DfbUM9vP9pf li:not(.Ix6wQt3EBFUH2PUcsqgm):hover {\n opacity: 1;\n background-color: var(--hover-selection);\n}\n\n.u4uW9U2E0DfbUM9vP9pf li.Ix6wQt3EBFUH2PUcsqgm:hover * {\n cursor: not-allowed;\n}\n\n.u4uW9U2E0DfbUM9vP9pf li input[type="checkbox"] {\n margin: 0;\n vertical-align: text-bottom;\n}\n\n.d3hMEDpEkH8H7YLG_NjI {\n width: 100% !important;\n box-sizing: border-box;\n text-align: center;\n}\n\n.gFHbtpz6TuduOVYLXwHu {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.AfAg5j2RJEcA0Zh3z7mX {\n flex-grow: 1;\n}\n\n.YeOANHLbze2W1EGYOFiI {\n font-size: 120%;\n padding: 6px 10px;\n color: white !important;\n background-color: rgba(30, 30, 30, 0.4);\n border-radius: 5px;\n}',"",{version:3,sources:["webpack://./src/EnhancedPickers/Keycode/styles.module.css"],names:[],mappings:"AAAA;EACE,YAAY;AACd;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,oBAAoB;EACpB,6CAA6C;AAC/C;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,kBAAkB;EAClB,UAAU;EACV,SAAS;AACX;;AAEA;EACE,qBAAqB;EACrB,iCAAiC;EACjC,cAAc;EACd,WAAW;EACX,kBAAkB;;EAElB,mCAAmC;EACnC,YAAY;EACZ,YAAY;AACd;AACA;EACE,qBAAqB;EACrB,YAAY;AACd;;AAEA;EACE,UAAU;EACV,kCAAkC;EAClC,YAAY;AACd;;AAEA;EACE,wCAAwC;EACxC,qBAAqB;AACvB;;AAEA;EACE,UAAU;EACV,wCAAwC;AAC1C;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,SAAS;EACT,2BAA2B;AAC7B;;AAEA;EACE,sBAAsB;EACtB,sBAAsB;EACtB,kBAAkB;AACpB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;AACrB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,eAAe;EACf,iBAAiB;EACjB,uBAAuB;EACvB,uCAAuC;EACvC,kBAAkB;AACpB",sourcesContent:['.wrapper {\n width: 350px;\n}\n\n.wrapper h3:first-child {\n margin-top: 0px;\n}\n\n.previewKeycode {\n pointer-events: none;\n box-shadow: 0 4px 10px 0px rgba(0, 0, 0, 0.5);\n}\n\n.allModifiers {\n padding: 2px 0;\n}\n\n.modifiers {\n text-align: center;\n padding: 0;\n margin: 0;\n}\n\n.modifiers li {\n display: inline-block;\n font-family: monospace, monospace;\n font-size: 70%;\n margin: 2px;\n border-radius: 2px;\n\n background-color: rgba(0, 0, 0, .5);\n opacity: 0.5;\n color: white;\n}\n.modifiers li label {\n display: inline-block;\n padding: 4px;\n}\n\n.modifiers li.selected {\n opacity: 1;\n background-color: var(--selection);\n color: white;\n}\n\n.modifiers li.implicit {\n background-color: var(--error-highlight);\n filter: saturate(50%);\n}\n\n.modifiers li:not(.implicit):hover {\n opacity: 1;\n background-color: var(--hover-selection);\n}\n\n.modifiers li.implicit:hover * {\n cursor: not-allowed;\n}\n\n.modifiers li input[type="checkbox"] {\n margin: 0;\n vertical-align: text-bottom;\n}\n\n.quickCloseTip {\n width: 100% !important;\n box-sizing: border-box;\n text-align: center;\n}\n\n.resultItem {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.description {\n flex-grow: 1;\n}\n\n.symbol {\n font-size: 120%;\n padding: 6px 10px;\n color: white !important;\n background-color: rgba(30, 30, 30, 0.4);\n border-radius: 5px;\n}'],sourceRoot:""}]),a.locals={wrapper:"AmikJd3HeM7NGUa8io2A",previewKeycode:"xCOOsvxL5qQ3kR8ri91A",allModifiers:"Ox9WHfAMFuthXo6ZOJoI",modifiers:"u4uW9U2E0DfbUM9vP9pf",selected:"YcHSun3PLo8dCb9qIZtc",implicit:"Ix6wQt3EBFUH2PUcsqgm",quickCloseTip:"d3hMEDpEkH8H7YLG_NjI",resultItem:"gFHbtpz6TuduOVYLXwHu",description:"AfAg5j2RJEcA0Zh3z7mX",symbol:"YeOANHLbze2W1EGYOFiI"},e.Z=a},33151:function(n,e,r){var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i),l=r(2),c=a()(o());c.i(l.Z,"",!0),c.push([n.id,'/* @import "../../Keyboard/Keys/styles.module.css"; */\n\n.'+l.Z.locals.key+" .ElYzpTlttqVbs6KKy9ob {\n align-self: center;\n}\n."+l.Z.locals.extracted+" .ElYzpTlttqVbs6KKy9ob {\n display: inline-block;\n border-bottom: .15em dotted var(--key-color-base);\n box-sizing: border-box;\n padding: 6px .25em;\n}\n\n:hover .ElYzpTlttqVbs6KKy9ob:hover {\n cursor: pointer;\n background-color: var(--hover-selection);\n border-radius: 0;\n border-radius: 3px;\n}\n\n.rdE_HhSUTcg2dK35N2WA {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 1em;\n aspect-ratio: 1;\n border-radius: 2px;\n}\n\n."+l.Z.locals.extracted+" .rdE_HhSUTcg2dK35N2WA {\n display: inline-block;\n}\n","",{version:3,sources:["webpack://./src/EnhancedPickers/RGB/styles.module.css"],names:[],mappings:"AAAA,qDAAqD;;AAMrD;EACE,kBAAkB;AACpB;AACA;EACE,qBAAqB;EACrB,iDAAiD;EACjD,sBAAsB;EACtB,kBAAkB;AACpB;;AAEA;EACE,eAAe;EACf,wCAAwC;EACxC,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB,WAAW;EACX,eAAe;EACf,kBAAkB;AACpB;;AAEA;EACE,qBAAqB;AACvB",sourcesContent:['/* @import "../../Keyboard/Keys/styles.module.css"; */\n:import("../../Keyboard/Keys/styles.module.css") {\n key: key;\n extracted: extracted;\n}\n\n.key .colorIconWrapper {\n align-self: center;\n}\n.extracted .colorIconWrapper {\n display: inline-block;\n border-bottom: .15em dotted var(--key-color-base);\n box-sizing: border-box;\n padding: 6px .25em;\n}\n\n:hover .colorIconWrapper:hover {\n cursor: pointer;\n background-color: var(--hover-selection);\n border-radius: 0;\n border-radius: 3px;\n}\n\n.colorIcon {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 1em;\n aspect-ratio: 1;\n border-radius: 2px;\n}\n\n.extracted .colorIcon {\n display: inline-block;\n}\n'],sourceRoot:""}]),c.locals={colorIconWrapper:"ElYzpTlttqVbs6KKy9ob",colorIcon:"rdE_HhSUTcg2dK35N2WA"},e.Z=c},2:function(n,e,r){var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([n.id,'.CoLZlKR1WcMrFd9XhDMC {\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\n\tfont-family: Quicksand, avenir, sans-serif;\n\n\t/* TODO: remove this once I have a wrapper with size defaults */\n\twidth: 65px;\n\theight: 65px;\n\n\tfont-size: 110%;\n\tborder-radius: 5px;\n}\n\n.CoLZlKR1WcMrFd9XhDMC.MZMfZSmJbwqqfp28UUOi { cursor: pointer; }\n.CoLZlKR1WcMrFd9XhDMC.MZMfZSmJbwqqfp28UUOi * {\n\tpointer-events: none;\n\tborder: none;\n\ttext-decoration: none !important;\n}\n\n\n.CT4uGhwl8sY0LwT3p39g:not(:hover) .UNzQquWsoIanOpIN0Q9L,\n.OsA2qRpHoDPcN93o_TUX:not(:hover) .DejZXCvvhJILPbs9Q8ht.UNzQquWsoIanOpIN0Q9L {\n\ttext-decoration: underline wavy var(--error-highlight);\n\ttext-underline-offset: 4px;\n\tcolor: var(--error-highlight);\n\tfont-weight: bold;\n}\n\n.Y5EVt8b0BaXNd9uLxhfh {\n\tposition: absolute;\n\tleft: 2px;\n\tbottom: 2px;\n\tfont-size: 80%;\n\n\tanimation: sYr3l9y03JxO_2AP73jr ease-in-out 1s alternate-reverse;\n}\n.Y5EVt8b0BaXNd9uLxhfh:hover {\n\tcolor: rgb(255, 225, 0);\n}\n\n@keyframes sYr3l9y03JxO_2AP73jr {\n\t0% { color: var(--key-color-base) }\n\t100% { color: var(--key-color-extreme) }\n}\n\n.CoLZlKR1WcMrFd9XhDMC:hover .DejZXCvvhJILPbs9Q8ht,\n.CoLZlKR1WcMrFd9XhDMC:hover .DejZXCvvhJILPbs9Q8ht :before,\n.CoLZlKR1WcMrFd9XhDMC:hover .GliE4Ybwli9X6TNTjD1_ {\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n\ttext-decoration: underline dotted white 2px;\n\ttext-underline-offset: 4px;\n}\n\n\n.huQDP3GbTLThbVIP8wFp {\n\tcolor: var(--key-color-base);\n\tbackground-color: var(--key-bg-base);\n}\n\n.PpMmKpJfEi37Ldw7AeBT {\n\tborder-radius: 100%;\n\tbackground-color: var(--key-bg-base);\n\tcolor: var(--key-color-base);\n}\n\n._F1Vep3btfY3Rl4VJaUQ {\n\twidth: 80px;\n\theight: 80px;\n\tborder-radius: 100%;\n\tbackground-color: var(--key-bg-base);\n\tcolor: var(--key-color-base);\n}\n\n._F1Vep3btfY3Rl4VJaUQ .GliE4Ybwli9X6TNTjD1_ {\n\tleft: 50%;\n\ttransform: translateX(-50%);\n}\n._F1Vep3btfY3Rl4VJaUQ .ApHDJFJGYUaGTgzMeIKZ[data-is-root="true"] {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n._F1Vep3btfY3Rl4VJaUQ .ApHDJFJGYUaGTgzMeIKZ[data-is-root="true"] .mLz637Atn0jZXey6Rx4v:first-child::before {\n\tcontent: "⟳";\n\tfont-size: 140%;\n\tfont-weight: bold;\n}\n._F1Vep3btfY3Rl4VJaUQ .ApHDJFJGYUaGTgzMeIKZ[data-is-root="true"] .mLz637Atn0jZXey6Rx4v:nth-child(2)::before {\n\tcontent: "⟲";\n\tfont-size: 140%;\n\tfont-weight: bold;\n}\n._F1Vep3btfY3Rl4VJaUQ:hover .ApHDJFJGYUaGTgzMeIKZ[data-is-root="true"] .mLz637Atn0jZXey6Rx4v:first-child::before,\n._F1Vep3btfY3Rl4VJaUQ:hover .ApHDJFJGYUaGTgzMeIKZ[data-is-root="true"] .mLz637Atn0jZXey6Rx4v:nth-child(2)::before {\n\tcolor: white;\n}\n\n\n.k2EIh8YlFvp9sBuklSxx {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n\tfont-size: 50%;\n}\n\n.CoLZlKR1WcMrFd9XhDMC:hover, .PpMmKpJfEi37Ldw7AeBT:hover {\n\tbackground-color: var(--hover-selection);\n\ttransition: 200ms;\n\tz-index: 1;\n}\n.CoLZlKR1WcMrFd9XhDMC:hover .DejZXCvvhJILPbs9Q8ht, .CoLZlKR1WcMrFd9XhDMC:hover .GliE4Ybwli9X6TNTjD1_ {\n\tcolor: var(--key-color-hover);\n}\n.CoLZlKR1WcMrFd9XhDMC > .DejZXCvvhJILPbs9Q8ht {\n\tpadding: 5px;\n}\n\n.mLz637Atn0jZXey6Rx4v {\n\tdisplay: inline-flex;\n}\n\n[data-simple="true"] { font-size: 140%; }\n[data-long="true"] { font-size: 60%; }\n\n.ApHDJFJGYUaGTgzMeIKZ:not([data-is-root="true"])::before { content: \'(\'; opacity: 0.4; font-weight: bold; margin: 2px; }\n.ApHDJFJGYUaGTgzMeIKZ:not([data-is-root="true"])::after { content: \')\'; opacity: 0.4; font-weight: bold; margin: 2px; }\n.ApHDJFJGYUaGTgzMeIKZ:not([data-is-root="true"]) .mLz637Atn0jZXey6Rx4v:not(:last-child)::after { content: \',\'; }\n\n.DejZXCvvhJILPbs9Q8ht {\n\tcursor: default;\n\tpadding: 0px 4px;\n\tmargin-left: -2px;\n\tmargin-right: -2px;\n}\n\n.CT4uGhwl8sY0LwT3p39g .DejZXCvvhJILPbs9Q8ht {\n\tcursor: pointer;\n\tdisplay: inline-block;\n\tbox-sizing: content-box;\n\tmin-width: 0.5em;\n\ttext-align: center;\n\tborder-radius: 4px;\n}\n.CoLZlKR1WcMrFd9XhDMC .DejZXCvvhJILPbs9Q8ht:hover {\n\tbackground-color: white !important;\n\tcolor: var(--hover-selection) !important;\n\tborder-radius: 4px !important;\n}\n\n.DejZXCvvhJILPbs9Q8ht * {\n\tpointer-events: none;\n}\n\n.OsA2qRpHoDPcN93o_TUX {\n\t/* display: inline-block; */\n\tmargin: 0 5px;\n\tfont-family: Quicksand, avenir, sans-serif;\n\tfont-size: 110%;\n}\n.OsA2qRpHoDPcN93o_TUX .mLz637Atn0jZXey6Rx4v {\n\talign-items: center;\n\tgap: 6px;\n}\n.OsA2qRpHoDPcN93o_TUX .DejZXCvvhJILPbs9Q8ht {\n\talign-items: center;\n\tpadding: 6px 12px;\n\tborder-radius: 5px;\n\tcolor: var(--key-color-base);\n\tborder-bottom: .15em dotted var(--key-color-base);\n\tborder-radius: 0;\n}\n\n.OsA2qRpHoDPcN93o_TUX .DejZXCvvhJILPbs9Q8ht:hover {\n\tbackground-color: var(--hover-selection);\n\tborder-radius: 5px;\n\tcolor: white;\n\tcursor: pointer;\n}\n\n.DejZXCvvhJILPbs9Q8ht code+*::before {\n\tcontent: "|";\n\tbackground-color: transparent;\n\tmargin: auto 5px;\n}\n\n.GliE4Ybwli9X6TNTjD1_ {\n position: absolute;\n top: 0;\n left: 0;\n font-size: 10px;\n padding: 2px;\n opacity: 0.8;\n}\n\n.GliE4Ybwli9X6TNTjD1_:hover {\n cursor: pointer;\n color: var(--hover-selection) !important;\n background-color: var(--key-bg-hover);\n border-radius: 5px 0;\n opacity: 1;\n}\n',"",{version:3,sources:["webpack://./src/Keyboard/Keys/styles.module.css"],names:[],mappings:"AAAA;CACC,kBAAkB;CAClB,aAAa;CACb,uBAAuB;CACvB,mBAAmB;;CAEnB,0CAA0C;;CAE1C,+DAA+D;CAC/D,WAAW;CACX,YAAY;;CAEZ,eAAe;CACf,kBAAkB;AACnB;;AAEA,6CAAe,eAAe,EAAE;AAChC;CACC,oBAAoB;CACpB,YAAY;CACZ,gCAAgC;AACjC;;;AAGA;;CAEC,sDAAsD;CACtD,0BAA0B;CAC1B,6BAA6B;CAC7B,iBAAiB;AAClB;;AAEA;CACC,kBAAkB;CAClB,SAAS;CACT,WAAW;CACX,cAAc;;CAEd,gEAAiD;AAClD;AACA;CACC,uBAAuB;AACxB;;AAEA;CACC,KAAK,6BAA6B;CAClC,OAAO,gCAAgC;AACxC;;AAEA;;;CAGC,4BAA4B;CAC5B,6BAA6B;CAC7B,2CAA2C;CAC3C,0BAA0B;AAC3B;;;AAGA;CACC,4BAA4B;CAC5B,oCAAoC;AACrC;;AAEA;CACC,mBAAmB;CACnB,oCAAoC;CACpC,4BAA4B;AAC7B;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB,oCAAoC;CACpC,4BAA4B;AAC7B;;AAEA;CACC,SAAS;CACT,2BAA2B;AAC5B;AACA;CACC,aAAa;CACb,sBAAsB;AACvB;AACA;CACC,YAAY;CACZ,eAAe;CACf,iBAAiB;AAClB;AACA;CACC,YAAY;CACZ,eAAe;CACf,iBAAiB;AAClB;AACA;;CAEC,YAAY;AACb;;;AAGA;CACC,kBAAkB;CAClB,MAAM;CACN,SAAS;CACT,2BAA2B;CAC3B,cAAc;AACf;;AAEA;CACC,wCAAwC;CACxC,iBAAiB;CACjB,UAAU;AACX;AACA;CACC,6BAA6B;AAC9B;AACA;CACC,YAAY;AACb;;AAEA;CACC,oBAAoB;AACrB;;AAEA,uBAAuB,eAAe,EAAE;AACxC,qBAAqB,cAAc,EAAE;;AAErC,2DAA6C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE;AACzG,0DAA4C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE;AACxG,iGAAoE,YAAY,EAAE;;AAElF;CACC,eAAe;CACf,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,eAAe;CACf,qBAAqB;CACrB,uBAAuB;CACvB,gBAAgB;CAChB,kBAAkB;CAClB,kBAAkB;AACnB;AACA;CACC,kCAAkC;CAClC,wCAAwC;CACxC,6BAA6B;AAC9B;;AAEA;CACC,oBAAoB;AACrB;;AAEA;CACC,2BAA2B;CAC3B,aAAa;CACb,0CAA0C;CAC1C,eAAe;AAChB;AACA;CACC,mBAAmB;CACnB,QAAQ;AACT;AACA;CACC,mBAAmB;CACnB,iBAAiB;CACjB,kBAAkB;CAClB,4BAA4B;CAC5B,iDAAiD;CACjD,gBAAgB;AACjB;;AAEA;CACC,wCAAwC;CACxC,kBAAkB;CAClB,YAAY;CACZ,eAAe;AAChB;;AAEA;CACC,YAAY;CACZ,6BAA6B;CAC7B,gBAAgB;AACjB;;AAEA;EACE,kBAAkB;EAClB,MAAM;EACN,OAAO;EACP,eAAe;EACf,YAAY;EACZ,YAAY;AACd;;AAEA;EACE,eAAe;EACf,wCAAwC;EACxC,qCAAqC;EACrC,oBAAoB;EACpB,UAAU;AACZ",sourcesContent:['.key {\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\n\tfont-family: Quicksand, avenir, sans-serif;\n\n\t/* TODO: remove this once I have a wrapper with size defaults */\n\twidth: 65px;\n\theight: 65px;\n\n\tfont-size: 110%;\n\tborder-radius: 5px;\n}\n\n.key.unified { cursor: pointer; }\n.key.unified * {\n\tpointer-events: none;\n\tborder: none;\n\ttext-decoration: none !important;\n}\n\n\n.selectable:not(:hover) .missingValue,\n.extracted:not(:hover) .code.missingValue {\n\ttext-decoration: underline wavy var(--error-highlight);\n\ttext-underline-offset: 4px;\n\tcolor: var(--error-highlight);\n\tfont-weight: bold;\n}\n\n.missing {\n\tposition: absolute;\n\tleft: 2px;\n\tbottom: 2px;\n\tfont-size: 80%;\n\n\tanimation: pulse ease-in-out 1s alternate-reverse;\n}\n.missing:hover {\n\tcolor: rgb(255, 225, 0);\n}\n\n@keyframes pulse {\n\t0% { color: var(--key-color-base) }\n\t100% { color: var(--key-color-extreme) }\n}\n\n.key:hover .code,\n.key:hover .code :before,\n.key:hover .behaviour-binding {\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n\ttext-decoration: underline dotted white 2px;\n\ttext-underline-offset: 4px;\n}\n\n\n.keyDefaultTheme {\n\tcolor: var(--key-color-base);\n\tbackground-color: var(--key-bg-base);\n}\n\n.encoder {\n\tborder-radius: 100%;\n\tbackground-color: var(--key-bg-base);\n\tcolor: var(--key-color-base);\n}\n\n.encoder2 {\n\twidth: 80px;\n\theight: 80px;\n\tborder-radius: 100%;\n\tbackground-color: var(--key-bg-base);\n\tcolor: var(--key-color-base);\n}\n\n.encoder2 .behaviour-binding {\n\tleft: 50%;\n\ttransform: translateX(-50%);\n}\n.encoder2 .params[data-is-root="true"] {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n.encoder2 .params[data-is-root="true"] .param:first-child::before {\n\tcontent: "⟳";\n\tfont-size: 140%;\n\tfont-weight: bold;\n}\n.encoder2 .params[data-is-root="true"] .param:nth-child(2)::before {\n\tcontent: "⟲";\n\tfont-size: 140%;\n\tfont-weight: bold;\n}\n.encoder2:hover .params[data-is-root="true"] .param:first-child::before,\n.encoder2:hover .params[data-is-root="true"] .param:nth-child(2)::before {\n\tcolor: white;\n}\n\n\n.encoderDirection {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n\tfont-size: 50%;\n}\n\n.key:hover, .encoder:hover {\n\tbackground-color: var(--hover-selection);\n\ttransition: 200ms;\n\tz-index: 1;\n}\n.key:hover .code, .key:hover .behaviour-binding {\n\tcolor: var(--key-color-hover);\n}\n.key > .code {\n\tpadding: 5px;\n}\n\n.param {\n\tdisplay: inline-flex;\n}\n\n[data-simple="true"] { font-size: 140%; }\n[data-long="true"] { font-size: 60%; }\n\n.params:not([data-is-root="true"])::before { content: \'(\'; opacity: 0.4; font-weight: bold; margin: 2px; }\n.params:not([data-is-root="true"])::after { content: \')\'; opacity: 0.4; font-weight: bold; margin: 2px; }\n.params:not([data-is-root="true"]) .param:not(:last-child)::after { content: \',\'; }\n\n.code {\n\tcursor: default;\n\tpadding: 0px 4px;\n\tmargin-left: -2px;\n\tmargin-right: -2px;\n}\n\n.selectable .code {\n\tcursor: pointer;\n\tdisplay: inline-block;\n\tbox-sizing: content-box;\n\tmin-width: 0.5em;\n\ttext-align: center;\n\tborder-radius: 4px;\n}\n.key .code:hover {\n\tbackground-color: white !important;\n\tcolor: var(--hover-selection) !important;\n\tborder-radius: 4px !important;\n}\n\n.code * {\n\tpointer-events: none;\n}\n\n.extracted {\n\t/* display: inline-block; */\n\tmargin: 0 5px;\n\tfont-family: Quicksand, avenir, sans-serif;\n\tfont-size: 110%;\n}\n.extracted .param {\n\talign-items: center;\n\tgap: 6px;\n}\n.extracted .code {\n\talign-items: center;\n\tpadding: 6px 12px;\n\tborder-radius: 5px;\n\tcolor: var(--key-color-base);\n\tborder-bottom: .15em dotted var(--key-color-base);\n\tborder-radius: 0;\n}\n\n.extracted .code:hover {\n\tbackground-color: var(--hover-selection);\n\tborder-radius: 5px;\n\tcolor: white;\n\tcursor: pointer;\n}\n\n.code code+*::before {\n\tcontent: "|";\n\tbackground-color: transparent;\n\tmargin: auto 5px;\n}\n\n.behaviour-binding {\n position: absolute;\n top: 0;\n left: 0;\n font-size: 10px;\n padding: 2px;\n opacity: 0.8;\n}\n\n.behaviour-binding:hover {\n cursor: pointer;\n color: var(--hover-selection) !important;\n background-color: var(--key-bg-hover);\n border-radius: 5px 0;\n opacity: 1;\n}\n'],sourceRoot:""}]),a.locals={key:"CoLZlKR1WcMrFd9XhDMC",unified:"MZMfZSmJbwqqfp28UUOi",selectable:"CT4uGhwl8sY0LwT3p39g",missingValue:"UNzQquWsoIanOpIN0Q9L",extracted:"OsA2qRpHoDPcN93o_TUX",code:"DejZXCvvhJILPbs9Q8ht",missing:"Y5EVt8b0BaXNd9uLxhfh",pulse:"sYr3l9y03JxO_2AP73jr","behaviour-binding":"GliE4Ybwli9X6TNTjD1_",keyDefaultTheme:"huQDP3GbTLThbVIP8wFp",encoder:"PpMmKpJfEi37Ldw7AeBT",encoder2:"_F1Vep3btfY3Rl4VJaUQ",params:"ApHDJFJGYUaGTgzMeIKZ",param:"mLz637Atn0jZXey6Rx4v",encoderDirection:"k2EIh8YlFvp9sBuklSxx"},e.Z=a},47881:function(n,e,r){var t=r(87537),o=r.n(t),i=r(23645),a=r.n(i)()(o());a.push([n.id,'.sP2kDRoTZElZUTNHq033 {\n\twidth: 300px;\n\tbackground-color: var(--dialog-bg);\n}\n\n.yaxqlR_GEWJ1lBISL3_N {\n min-width: 300px;\n\tpadding: 15px\n}\n.yaxqlR_GEWJ1lBISL3_N input[type="text"] {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 30px;\n\tline-height: 30px;\n\n\tfont-size: 120%;\n\tmargin: 0;\n\tpadding: 4px;\n\tborder: none;\n\tborder-radius: 4px;\n box-sizing: border-box;\n}\nul.inAS9Qunkf3g5K3xz6o6 {\n\tposition: relative;\n\tfont-family: monospace;\n\tlist-style-position: inside;\n\tlist-style-type: none;\n\tmax-height: 300px;\n\toverflow: scroll;\n\tpadding: 4px;\n margin: 4px 0;\n\tbackground: rgba(0, 0, 0, 0.75);\n\tborder-radius: 4px;\n}\n.inAS9Qunkf3g5K3xz6o6 li {\n\tcursor: pointer;\n\tcolor: white;\n\tpadding: 5px;\n}\n.inAS9Qunkf3g5K3xz6o6 li:hover, .inAS9Qunkf3g5K3xz6o6 li.BL7Cxrn_efblQXY3W1Sw {\n\tbackground: white;\n\tcolor: black;\n}\n.inAS9Qunkf3g5K3xz6o6 li b { color: dodgerblue; }\n.inAS9Qunkf3g5K3xz6o6 li .uld0XaeoQaQJJwp0LT0X {\n\tfont-style: italic;\n\tfont-size: 90%;\n\tmargin: 0;\n\tcolor: gray;\n}\n\n.pqiZQublKXvmnT_ESDxQ {\n font-size: 10px;\n}\n\n.pqiZQublKXvmnT_ESDxQ a {\n color: var(--selection);\n border-bottom: 1px dotted var(--selection);\n cursor: pointer;\n}\n\n.ECUs4g2j1rekP4xxgQDr {\n position: relative;\n}\n.yaxqlR_GEWJ1lBISL3_N .ECUs4g2j1rekP4xxgQDr input {\n padding-left: 30px;\n}\n\n.xDUAgQZeBp0TZSOqCwHm {\n position: absolute;\n\ttop: 50%;\n\tleft: 10px;\n\ttransform: translateY(-50%);\n\tpointer-events: none;\n}\n.eY5zRl49sESLjXmizMEP {\n position: absolute;\n\ttop: 50%;\n\tright: 10px;\n\ttransform: translateY(-50%);\n\tcursor: pointer;\n}',"",{version:3,sources:["webpack://./src/ValuePicker/style.module.css"],names:[],mappings:"AAAA;CACC,YAAY;CACZ,kCAAkC;AACnC;;AAEA;EACE,gBAAgB;CACjB;AACD;AACA;CACC,cAAc;CACd,WAAW;CACX,YAAY;CACZ,iBAAiB;;CAEjB,eAAe;CACf,SAAS;CACT,YAAY;CACZ,YAAY;CACZ,kBAAkB;EACjB,sBAAsB;AACxB;AACA;CACC,kBAAkB;CAClB,sBAAsB;CACtB,2BAA2B;CAC3B,qBAAqB;CACrB,iBAAiB;CACjB,gBAAgB;CAChB,YAAY;EACX,aAAa;CACd,+BAA+B;CAC/B,kBAAkB;AACnB;AACA;CACC,eAAe;CACf,YAAY;CACZ,YAAY;AACb;AACA;CACC,iBAAiB;CACjB,YAAY;AACb;AACA,6BAAgB,iBAAiB,EAAE;AACnC;CACC,kBAAkB;CAClB,cAAc;CACd,SAAS;CACT,WAAW;AACZ;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,uBAAuB;EACvB,0CAA0C;EAC1C,eAAe;AACjB;;AAEA;EACE,kBAAkB;AACpB;AACA;EACE,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;CACnB,QAAQ;CACR,UAAU;CACV,2BAA2B;CAC3B,oBAAoB;AACrB;AACA;EACE,kBAAkB;CACnB,QAAQ;CACR,WAAW;CACX,2BAA2B;CAC3B,eAAe;AAChB",sourcesContent:['.dialog {\n\twidth: 300px;\n\tbackground-color: var(--dialog-bg);\n}\n\n.dialogWrapper {\n min-width: 300px;\n\tpadding: 15px\n}\n.dialogWrapper input[type="text"] {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 30px;\n\tline-height: 30px;\n\n\tfont-size: 120%;\n\tmargin: 0;\n\tpadding: 4px;\n\tborder: none;\n\tborder-radius: 4px;\n box-sizing: border-box;\n}\nul.results {\n\tposition: relative;\n\tfont-family: monospace;\n\tlist-style-position: inside;\n\tlist-style-type: none;\n\tmax-height: 300px;\n\toverflow: scroll;\n\tpadding: 4px;\n margin: 4px 0;\n\tbackground: rgba(0, 0, 0, 0.75);\n\tborder-radius: 4px;\n}\n.results li {\n\tcursor: pointer;\n\tcolor: white;\n\tpadding: 5px;\n}\n.results li:hover, .results li.highlighted {\n\tbackground: white;\n\tcolor: black;\n}\n.results li b { color: dodgerblue; }\n.results li .description {\n\tfont-style: italic;\n\tfont-size: 90%;\n\tmargin: 0;\n\tcolor: gray;\n}\n\n.choices-counter {\n font-size: 10px;\n}\n\n.choices-counter a {\n color: var(--selection);\n border-bottom: 1px dotted var(--selection);\n cursor: pointer;\n}\n\n.searchWrapper {\n position: relative;\n}\n.dialogWrapper .searchWrapper input {\n padding-left: 30px;\n}\n\n.searchIcon {\n position: absolute;\n\ttop: 50%;\n\tleft: 10px;\n\ttransform: translateY(-50%);\n\tpointer-events: none;\n}\n.clearSearchIcon {\n position: absolute;\n\ttop: 50%;\n\tright: 10px;\n\ttransform: translateY(-50%);\n\tcursor: pointer;\n}'],sourceRoot:""}]),a.locals={dialog:"sP2kDRoTZElZUTNHq033",dialogWrapper:"yaxqlR_GEWJ1lBISL3_N",results:"inAS9Qunkf3g5K3xz6o6",highlighted:"BL7Cxrn_efblQXY3W1Sw",description:"uld0XaeoQaQJJwp0LT0X","choices-counter":"pqiZQublKXvmnT_ESDxQ",searchWrapper:"ECUs4g2j1rekP4xxgQDr",searchIcon:"xDUAgQZeBp0TZSOqCwHm",clearSearchIcon:"eY5zRl49sESLjXmizMEP"},e.Z=a},61953:function(n,e,r){var t=r(93379),o=r.n(t),i=r(7795),a=r.n(i),l=r(90569),c=r.n(l),u=r(3565),s=r.n(u),A=r(19216),d=r.n(A),p=r(44589),f=r.n(p),b=r(2),m={};m.styleTagTransform=f(),m.setAttributes=s(),m.insert=c().bind(null,"head"),m.domAPI=a(),m.insertStyleElement=d(),o()(b.Z,m),e.Z=b.Z&&b.Z.locals?b.Z.locals:void 0},45944:function(n,e,r){var t=r(93379),o=r.n(t),i=r(7795),a=r.n(i),l=r(90569),c=r.n(l),u=r(3565),s=r.n(u),A=r(19216),d=r.n(A),p=r(44589),f=r.n(p),b=r(47881),m={};m.styleTagTransform=f(),m.setAttributes=s(),m.insert=c().bind(null,"head"),m.domAPI=a(),m.insertStyleElement=d(),o()(b.Z,m),e.Z=b.Z&&b.Z.locals?b.Z.locals:void 0}}]);
+//# sourceMappingURL=8573.23f7e6791fc94caba204.js.map \ No newline at end of file
diff --git a/8573.23f7e6791fc94caba204.js.map b/8573.23f7e6791fc94caba204.js.map
new file mode 100644
index 0000000..8105fb7
--- /dev/null
+++ b/8573.23f7e6791fc94caba204.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"8573.23f7e6791fc94caba204.js","mappings":"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","sources":["webpack:///./src/Common/action-button.module.css?ed83","webpack:///./src/Common/ActionButton.js","webpack:///./src/Common/tip.module.css?4f76","webpack:///./src/Common/Tip.js","webpack:///./src/EnhancedPickers/Keycode/KeycodeBindNode.js","webpack:///./src/EnhancedPickers/Keycode/helpers.js","webpack:///./src/EnhancedPickers/RGB/styles.module.css?270a","webpack:///./src/EnhancedPickers/RGB/HueSatValBindNode.js","webpack:///./src/Keyboard/Binding/BindParamlist.js","webpack:///./src/Keyboard/Binding/BindValue.js","webpack:///./src/Keyboard/Binding/Binding.js","webpack:///./src/Keyboard/Binding/bindPropTypes.js","webpack:///./src/Keyboard/Binding/binding-editor.js","webpack:///./src/Keyboard/Binding/util.js","webpack:///./src/Keyboard/Common/Devicetree/validators.js","webpack:///./src/Keyboard/Keys/Key.js","webpack:///./src/Keyboard/Keys/KeyWrapper.js","webpack:///./src/ValuePicker/util.js","webpack:///./src/ValuePicker/ResultList.js","webpack:///./src/ValuePicker/SearchFilter.js","webpack:///./src/ValuePicker/pickerPropTypes.js","webpack:///./src/ValuePicker/EnumPicker.js","webpack:///./src/ValuePicker/GenericPicker.js","webpack:///./src/EnhancedPickers/RGB/HueSatValPicker.js","webpack:///./src/EnhancedPickers/Keycode/styles.module.css?d2ba","webpack:///./src/EnhancedPickers/Keycode/ModifiersPicker.js","webpack:///./src/Common/hooks/use-cancelable-key-press.js","webpack:///./src/EnhancedPickers/Keycode/KeycodePicker.js","webpack:///./src/ValuePicker/RawValuePicker.js","webpack:///./src/ValuePicker/LayerPicker.js","webpack:///./src/ValuePicker/index.js","webpack:///./src/Common/action-button.module.css","webpack:///./src/Common/tip.module.css","webpack:///./src/EnhancedPickers/Keycode/styles.module.css","webpack:///./src/EnhancedPickers/RGB/styles.module.css","webpack:///./src/Keyboard/Keys/styles.module.css","webpack:///./src/ValuePicker/style.module.css","webpack:///./src/Keyboard/Keys/styles.module.css?bf9c","webpack:///./src/ValuePicker/style.module.css?0fff"],"sourcesContent":["\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./action-button.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./action-button.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import styles from './action-button.module.css'\n\nfunction ActionButton ({ children, secondary, className, ...props }) {\n return (\n <button\n className={[\n className,\n styles.action,\n secondary && styles.secondary\n ].join(' ')}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nActionButton.defaultProps = {\n className: ''\n}\n\nexport default ActionButton\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./tip.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./tip.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import Icon from './Icon'\nimport styles from './tip.module.css'\n\nexport default function Tip ({ children, className = '' }) {\n const classNames = [styles.tip, className].join(' ')\n return (\n <div className={classNames}>\n <Icon className=\"fa-flip-horizontal\" name=\"hand-point-up\" /> {children}\n </div>\n )\n}\n","import { Fragment, useCallback, useMemo } from 'react'\nimport compact from 'lodash/compact'\nimport map from 'lodash/map'\n\nimport { NullKey, getSourceTitle, renderSource } from '../../Keyboard/Binding/BindValue'\nimport styles from '../../Keyboard/Keys/styles.module.css'\nimport { treeToSequence } from './helpers'\n\nexport default function KeycodeBindNode ({ node, onSelect, expanded = false }) {\n const handleClick = useCallback(function (event) {\n event.stopPropagation()\n onSelect({ node, type: 'tree' })\n }, [node, onSelect])\n\n const codes = useMemo(() => map(treeToSequence(node), 'source'), [node])\n const key = useMemo(() => codes.at(-1), [codes])\n const codesSerialized = useMemo(() => {\n const mods = codes.slice(0, -1)\n return mods.reduce((serialized, mod) => (\n `${mod.code}(${serialized})`\n ), key?.code)\n }, [codes, key?.code])\n const codeLabels = useMemo(() => (\n codes.map(renderSource)\n .map((label, i) => <Fragment key={i}>{label}</Fragment>)\n .reduce((labels, label) => (\n labels.length === 0\n ? [label]\n : [...labels, ' ', label]\n ), [])\n ), [codes])\n const title = useMemo(() => (\n codes.map(getSourceTitle).join(' + ')\n ), [codes])\n\n const display = useMemo(() => (\n codes.map(code => (\n code\n ? code.description || code.name\n : '⦸'\n )).join(' + ')\n ), [codes])\n\n const missing = (\n node.source?.code === undefined ||\n node.value === undefined ||\n node._isPlaceholder\n )\n\n const content = !expanded\n ? codeLabels\n : (\n <>\n <code>{codesSerialized}</code>\n <span>{display}</span>\n </>\n )\n\n return (\n <span\n className={compact([\n styles.code,\n missing && styles.missingValue\n ]).join(' ')}\n title={title}\n onClick={handleClick}\n >\n {missing ? <NullKey /> : content}\n </span>\n )\n}\n","// `code` values may be \"trees\" in terms of structure, but this is only\n// because of \"modifier macros\" (e.g. `LS(A)`) which may be nested recursively\n// but each level of the tree has at most one child. This means the deepest\n// node is our actual keycode and everything above that is a modifier.\nexport function treeToSequence (tree) {\n return tree.params.length > 0\n ? [tree, ...treeToSequence(tree.params[0])]\n : [tree]\n}\n\nexport function sequenceToTree ([value, ...seq]) {\n const params = seq.length === 0 ? [] : [sequenceToTree(seq)]\n return { value, params }\n}\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { useCallback, useMemo } from 'react'\n\nimport BindValue from '../../Keyboard/Binding/BindValue'\nimport styles from './styles.module.css'\n\nfunction HueSatValBindNode ({ node, onSelect }) {\n const { params: [h, s, b] } = node\n\n // TODO: this component continues to work because of a hack/inconsistency in\n // the &rgb_ug behavior definition's HSB_SEL command. RGB support is really\n // unimportant so this will be left alone for now, but it probably comes down\n // to an issue in correctly setting placeholder HSB values when selecting the\n // applicable command, so that might be something that gets resolved with a\n // proper refactor of the Binding node and its update functionality.\n\n const handleSelectParams = useCallback(event => {\n event?.stopPropagation?.()\n onSelect({ node, type: 'params' })\n }, [node, onSelect])\n\n const isEmpty = useMemo(() => (\n [h, s, b].some(v => v?.value === undefined || v?._isPlaceholder)\n ), [h, s, b])\n\n const bgStyle = useMemo(() => {\n if ([h, s, b].some(v => v?.value === undefined)) {\n return {}\n }\n\n return {\n backgroundColor: `hsl(${h.value}, ${s.value}%, ${b.value}%)`,\n border: `.1em solid hsl(${h.value}, ${s.value}%, ${b.value * 0.75}%)`,\n boxSizing: 'border-box'\n }\n }, [h, s, b])\n\n return (\n <>\n <BindValue node={node} onSelect={onSelect} />\n {!isEmpty\n ? (\n <div onClick={handleSelectParams} className={styles.colorIconWrapper}>\n <div\n className={styles.colorIcon}\n title={bgStyle.backgroundColor}\n style={bgStyle}\n />\n </div>\n )\n : <BindValue node={{}} onSelect={handleSelectParams} />}\n </>\n )\n}\n\nexport default HueSatValBindNode\n","import get from 'lodash/get'\nimport PropTypes from 'prop-types'\nimport { useMemo } from 'react'\n\nimport * as bindPropTypes from './bindPropTypes'\nimport BindValue from './BindValue'\nimport KeycodeBindNode from '../../EnhancedPickers/Keycode/KeycodeBindNode'\nimport HueSatValBindNode from '../../EnhancedPickers/RGB/HueSatValBindNode'\n\nimport styles from '../Keys/styles.module.css'\n\nfunction GenericBindNode ({ node, onSelect, expanded }) {\n return (\n <>\n <BindValue\n node={node}\n onSelect={onSelect}\n expanded={expanded}\n />\n {get(node, 'source.params.length') > 0\n ? (\n <BindParamlist\n slots={node.source.params}\n params={node.params}\n onSelect={onSelect}\n />\n )\n : null}\n </>\n )\n}\n\nexport function BindParam (props) {\n const { node, onSelect, slot, expanded = false } = props\n const BindComponent = useMemo(() => {\n // TODO: allow components to register helpers\n if (node.source?.helper === 'hsb-color-picker') return HueSatValBindNode\n if (slot === 'code') return KeycodeBindNode\n return GenericBindNode\n }, [node, slot])\n\n return (\n <span className={styles.param}>\n <BindComponent node={node} onSelect={onSelect} expanded={expanded} />\n </span>\n )\n}\n\nfunction BindParamlist (props) {\n const { slots, params, onSelect, root, wrapperProps } = props\n return (\n <span\n className={styles.params}\n data-is-root={!!root}\n data-param-count={params.length}\n {...wrapperProps}\n >\n {slots.map((slot, i) => slot.type !== 'placeholder' && (\n <BindParam\n key={i}\n slot={slot}\n node={params[i]}\n onSelect={onSelect}\n />\n ))}\n </span>\n )\n}\n\nBindParamlist.propTypes = {\n slots: PropTypes.arrayOf(bindPropTypes.param).isRequired,\n params: PropTypes.arrayOf(bindPropTypes.bindNode).isRequired,\n source: bindPropTypes.source,\n onSelect: PropTypes.func.isRequired\n}\n\nexport default BindParamlist\n","import compact from 'lodash/compact'\nimport { useCallback } from 'react'\nimport PropTypes from 'prop-types'\n\nimport * as bindPropTypes from './bindPropTypes'\nimport styles from '../Keys/styles.module.css'\nimport Icon from '../../Common/Icon'\n\nexport function NullKey () {\n return <span>⦸</span>\n}\n\nexport function getSourceTitle (source) {\n const description = source?.displayName || source?.description\n return source && `(${source.code}) ${description}`\n}\n\nexport function renderSource (source) {\n const text = source?.symbol || source?.code?.toString()\n const icon = source?.faIcon && <Icon name={source?.faIcon} />\n return icon || text || <NullKey />\n}\n\nexport function Source ({ value, expanded = false }) {\n if (!expanded) {\n return renderSource(value)\n } else if (!value) {\n return <NullKey />\n }\n\n const icon = value.faIcon ? <Icon name={value.faIcon} /> : value.symbol\n const code = value.code?.toString?.()\n const name = value.displayName || value.description || value.name\n\n // TODO: `name` will be falsey for raw values, maybe a RawValueBindNode would\n // be a more appropriate way to handle them.\n\n return (\n <>\n <code>{code}</code>\n {name && <span>{name}</span>} {icon}\n </>\n )\n}\n\nfunction BindValue (props) {\n const { node, onSelect, expanded = false } = props\n const { value, source, _isPlaceholder } = node\n const title = getSourceTitle(source)\n\n const handleClick = useCallback(function (event) {\n event.stopPropagation()\n onSelect({ node })\n }, [node, onSelect])\n\n return (\n <span\n className={compact([\n styles.code,\n (value === undefined || _isPlaceholder) && styles.missingValue\n ]).join(' ')}\n title={title}\n onClick={handleClick}\n >\n {_isPlaceholder ? <NullKey /> : <Source value={source} expanded={expanded} />}\n </span>\n )\n}\n\nBindValue.propTypes = {\n node: bindPropTypes.bindNode.isRequired,\n onSelect: PropTypes.func.isRequired\n}\n\nexport default BindValue\n","import compact from 'lodash/compact'\nimport PropTypes from 'prop-types'\n\nimport useBindingEditor from './binding-editor'\n\nimport BindParamlist from './BindParamlist'\nimport * as bindPropTypes from './bindPropTypes'\nimport {\n createPromptMessage,\n isSimple,\n isComplex\n} from './util'\nimport styles from '../Keys/styles.module.css'\n\nimport Icon from '../../Common/Icon'\nimport ValuePicker from '../../ValuePicker'\n\nfunction Binding (props) {\n const { context = 'none', hideBehaviour, value, params, paramIndex, onUpdate } = props\n const [\n { behavior, behaviorParams, bindTree, bindTreeParams, editing, invalid },\n { selectNodeForEditing, clearEditing, handleUpdateBindValue }\n ] = useBindingEditor({ value, params }, paramIndex, onUpdate)\n\n return (\n <>\n {behavior && !hideBehaviour\n ? (\n <span\n className={compact([\n styles['behaviour-binding'],\n !bindTree.source?.code && styles.missingValue\n ]).join(' ')}\n onClick={() => selectNodeForEditing({ node: bindTree })}\n >\n {bindTree.source?.code || '⦸'}\n </span>\n )\n : null}\n {invalid && (\n <Icon\n name=\"warning\"\n className={styles.missing}\n title=\"Binding has missing value(s)\"\n />\n )}\n <BindParamlist\n root={true}\n slots={behaviorParams}\n params={bindTreeParams}\n onSelect={selectNodeForEditing}\n wrapperProps={{\n 'data-simple': isSimple(bindTree),\n 'data-long': isComplex(bindTree, behaviorParams)\n }}\n />\n {editing && (\n <ValuePicker\n node={editing.node}\n type={editing.type}\n behaviour={behavior}\n context={context}\n prompt={createPromptMessage(editing.node.slot)}\n searchKey=\"code\"\n onSelect={handleUpdateBindValue}\n onCancel={clearEditing}\n />\n )}\n </>\n )\n}\n\nBinding.propTypes = {\n context: PropTypes.string,\n hideBehaviour: PropTypes.bool.isRequired,\n value: bindPropTypes.value.isRequired,\n params: PropTypes.arrayOf(bindPropTypes.node),\n onUpdate: PropTypes.func.isRequired\n}\n\nBinding.defaultProps = {\n hideBehaviour: false\n}\n\nexport default Binding\n","import PropTypes from 'prop-types'\n\nexport const enumOption = PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n description: PropTypes.string,\n code: PropTypes.any\n })\n])\n\nexport const param = PropTypes.oneOfType([\n PropTypes.oneOf(['code', 'layer']),\n PropTypes.shape({ type: PropTypes.oneOf(['placeholder']) }),\n PropTypes.shape({\n enum: PropTypes.arrayOf(enumOption),\n raw: PropTypes.bool,\n name: PropTypes.string,\n type: PropTypes.string.isRequired\n })\n])\n\nexport const params = PropTypes.arrayOf(param)\nexport const value = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n])\nexport const source = PropTypes.shape({\n params,\n code: value.isRequired,\n description: PropTypes.string,\n symbol: PropTypes.string,\n faIcon: PropTypes.string\n})\n\nconst nodeShape = { value, source }\nnodeShape.params = PropTypes.arrayOf(PropTypes.shape(nodeShape))\n\nexport const node = PropTypes.shape(nodeShape)\n\nexport const bindNode = node\n\nexport const index = PropTypes.arrayOf(node)\n","import cloneDeep from 'lodash/cloneDeep'\nimport get from 'lodash/get'\nimport pick from 'lodash/pick'\nimport { useCallback, useContext, useMemo, useState } from 'react'\n\nimport { SearchContext } from '../../providers'\nimport { createPromptMessage, hasErrors, hydrateTree, makeIndex } from './util'\nimport { getBindingSlots } from '../../keymap'\n\nexport default function useBindingEditor (binding, paramIndex, onUpdate) {\n const context = useContext(SearchContext)\n const { sources } = context\n const [editing, setEditing] = useState(null)\n\n const bindTree = useMemo(() => (\n hydrateTree(binding, context)\n ), [binding, context])\n\n const paramSlice = paramIndex === undefined ? [0] : [paramIndex, paramIndex + 1]\n\n const bind = binding.value\n const behavior = get(sources.behaviours, bind, {})\n const behaviorParams = getBindingSlots(binding, context.behaviorParameters).slice(...paramSlice)\n const bindTreeParams = bindTree.params.slice(...paramSlice)\n const index = makeIndex(bindTree)\n const invalid = useMemo(() => hasErrors(index), [index])\n\n const selectNodeForEditing = useCallback(({ node, type = 'value' }) => {\n const prompt = createPromptMessage(node.slot, node, type)\n setEditing({ node, type, nodeIndex: index.indexOf(node), prompt })\n }, [index, setEditing])\n\n const clearEditing = useCallback(() => setEditing(null), [setEditing])\n\n const handleUpdateTree = useCallback(({ value, params }) => {\n const { nodeIndex } = editing\n const updated = cloneDeep(bindTree)\n const index = makeIndex(updated)\n const targetNode = index[nodeIndex]\n\n // Assume these are all fine?\n targetNode.value = value\n targetNode.params = params\n delete targetNode._isPlaceholder\n\n index.forEach(node => {\n delete node.source\n delete node.slot\n })\n\n onUpdate(pick(updated, ['value', 'params']))\n clearEditing()\n }, [bindTree, editing, onUpdate, clearEditing])\n\n const handleUpdateParams = useCallback(params => {\n const { nodeIndex } = editing\n const updated = cloneDeep(bindTree)\n const index = makeIndex(updated)\n const targetNode = index[nodeIndex]\n\n // Assume these are all fine?\n targetNode.params = params\n\n index.forEach(node => {\n delete node.source\n delete node.slot\n })\n\n onUpdate(pick(updated, ['value', 'params']))\n clearEditing()\n }, [bindTree, editing, onUpdate, clearEditing])\n\n const handleUpdateNode = useCallback((node, nodeIndex, source) => {\n const updated = cloneDeep(bindTree)\n const index = makeIndex(updated)\n const targetNode = index[nodeIndex]\n\n // Attempt to cast raw inputs to non-string type if such a type is defined\n // and I've specifically accounted for casting to that type here.\n // No error handling yet, so...\n if (node.slot.raw) {\n if (node.slot.type === 'number') {\n source.code = Number(source.code)\n }\n } else if (node.slot.enum) {\n const oldAdditionalParams = targetNode.source?.additionalParams?.length || 0\n const newAdditionalParams = source.additionalParams?.length || 0\n // When switching from a command parameter that has additionalParams to\n // another command parameter that has fewer (or none), the selected values\n // are still present in the tree but aren't rendered. Therefore it's still\n // possible for the unused values to be saved when the keymap is written.\n // This technically doesn't cause errors because behaviours are written to\n // ignore these values, but it can be confusing.\n // TODO: look into actually making sure that we aren't sending these\n // phantom values when submitting keymap state.\n if (newAdditionalParams < oldAdditionalParams) {\n // technically this could be anywhere in the tree but lets assume for\n // convenience that switching a \"command\" param can only happen to the\n // first child of the behavior bind.\n const tree = index[0]\n tree.params.splice(1, tree.params.length - 1)\n index.splice(2, index.length - 1)\n }\n }\n\n targetNode.value = source.code\n delete targetNode._isPlaceholder\n\n const newParams = targetNode.slot === 'behaviour'\n ? (context.behaviorParameters[targetNode.value] || [])\n : (source?.params || [])\n\n // Clear parameters if the new source params list doesn't match the old one.\n // TODO: instead of a reduce and iterating through the entire array in all\n // cases, this could look for the first index where both params lists don't\n // match and then splice targetNode.params from there\n targetNode.params = newParams.reduce((params, p, i) => {\n if (targetNode.source?.params?.[i] === newParams[i]) {\n params.push(targetNode.params[i])\n } else {\n params.push({ value: 0, _isPlaceholder: true })\n }\n return params\n }, [])\n\n index.forEach(node => {\n delete node.source\n delete node.slot\n })\n\n onUpdate(pick(updated, ['value', 'params', '_isPlaceholder']))\n clearEditing()\n }, [bindTree, context.behaviorParameters, onUpdate, clearEditing])\n\n const handleUpdateBindValue = useCallback(source => {\n if (editing.type === 'tree') {\n return handleUpdateTree(source)\n }\n\n if (editing.type === 'params') {\n return handleUpdateParams(source) // ugh\n }\n\n const { node, nodeIndex } = editing\n handleUpdateNode(node, nodeIndex, source)\n }, [editing, handleUpdateNode, handleUpdateTree, handleUpdateParams])\n\n const state = useMemo(\n () => ({\n behavior,\n behaviorParams,\n bindTree,\n bindTreeParams,\n editing,\n index,\n invalid\n }),\n [behavior, behaviorParams, bindTree, bindTreeParams, editing, index, invalid]\n )\n\n const callbacks = useMemo(\n () => ({\n clearEditing,\n handleUpdateBindValue,\n handleUpdateNode,\n selectNodeForEditing\n }),\n [\n selectNodeForEditing,\n clearEditing,\n handleUpdateBindValue,\n handleUpdateNode\n ]\n )\n\n return useMemo(() => ([state, callbacks]), [state, callbacks])\n}\n","import find from 'lodash/find'\nimport get from 'lodash/get'\n\nimport { getBindingSlots } from '../../keymap'\n\nexport function makeIndex (tree) {\n const index = []\n ;(function traverse (tree) {\n const params = tree.params || []\n index.push(tree)\n params.forEach(traverse)\n })(tree)\n\n return index\n}\n\nexport function isSimple (normalized) {\n const [first] = normalized.params\n const symbol = get(first, 'source.symbol', get(first, 'source.code', ''))\n const hasIcon = !!get(first, 'source.faIcon')\n const shortSymbol = hasIcon || symbol.length === 1\n const singleParam = normalized.params.length === 1\n return singleParam && shortSymbol\n}\n\nexport function isComplex (normalized, behaviourParams) {\n const [first] = normalized.params\n const symbol = get(first, 'source.symbol', get(first, 'value', ''))\n const hasIcon = !!get(first, 'source.faIcon')\n const isLongSymbol = !hasIcon && symbol.length > 4\n const isMultiParam = behaviourParams.length > 1\n const isNestedParam = get(first, 'params', []).length > 0\n\n return isLongSymbol || isMultiParam || isNestedParam\n}\n\nexport function createPromptMessage (param, node, type) {\n const promptMapping = {\n layer: 'Assign layer',\n mod: 'Assign modifier',\n behaviour: 'Assign behavior',\n keycode: 'Assign key code'\n }\n\n // This currently only applies to &rgb_ug RGB_COLOR_HSB(...) because it is\n // technically a single binding cell in the devicetree and we treat it as\n // multiple parameters.\n if (type === 'params') {\n const name = node.source?.displayName || node.source?.name\n if (name) {\n return name\n }\n }\n\n if (param.name) {\n return `Assign ${param.name}`\n }\n\n if (param.raw) {\n return 'Enter raw value'\n }\n\n return (\n promptMapping[param] ||\n promptMapping.keycode\n )\n}\n\nexport function hasErrors (index) {\n // The first value in the list is the behaviour. If it doesn't have a source\n // that means that we don't have details about what it is.\n if (!index[0].source.code) {\n return true\n }\n\n for (const value of index) {\n if ((value.source?.params || []).length > value.params.length) {\n return true\n }\n\n if (value.params.some(v => (\n v.value === undefined ||\n v.value === '' ||\n v.source === undefined ||\n (v._isPlaceholder && v.slot?.type !== 'placeholder')\n ))) {\n return true\n }\n }\n}\n\nexport function hydrateTree (binding, context) {\n const { value, params } = binding\n const { sources, mergedGlyphs, behaviorParameters } = context\n\n const bind = value\n const behaviour = get(sources.behaviours, bind, {})\n const behaviourParams = getBindingSlots(binding, behaviorParameters)\n\n function getSourceValue (value, as) {\n value = get(sources.defines, value, value)\n if (!Number.isNaN(Number(value))) {\n value = Number(value)\n }\n if (as.raw) return { code: value }\n if (as.enum) {\n // TODO: this doesn't seem to handle type mismatches like `1` vs `\"1\"` but\n // in fairness this has probably been true for some time.\n // TODO: rewrite all behavior enums to wrap choices in objects instead of\n // handling object and raw value formats.\n return (\n find(as.enum, { code: value }) ||\n find(as.enum, value) ||\n { code: value }\n )\n }\n // TODO: Shouldn't need to render placeholder\n if (as.type === 'placeholder') return { code: value }\n return sources?.[as]?.[value]\n }\n\n function hydrateNode (node, slot) {\n if (!node) {\n return { value: undefined, slot, params: [] }\n }\n const { value, params, _isPlaceholder } = node\n const source = getSourceValue(value, slot)\n\n return {\n value,\n _isPlaceholder,\n slot,\n source: {\n ...source,\n symbol: get(mergedGlyphs, [source?.name, 'symbol'], source?.symbol),\n faIcon: get(mergedGlyphs, [source?.name, 'faIcon'], source?.faIcon)\n },\n params: get(source, 'params', []).map((slot, i) => (\n hydrateNode(params[i], slot)\n ))\n }\n }\n\n return {\n value,\n slot: 'behaviour',\n source: behaviour,\n params: behaviourParams.map((slot, i) => (\n hydrateNode(params[i], slot)\n ))\n }\n}\n","\nexport function validateDevicetreeNodeName (value) {\n if (value.length > 31) {\n return 'maximum length: 31'\n } else if (value.match(/^[^a-zA-Z]/)) {\n return 'first character must be a letter'\n } else if (value.match(/[^a-zA-Z0-9,._+-]/)) {\n return 'valid characters: a-zA-Z0-9,._+-'\n }\n}\n\nexport const validateDevicetreeIdentifier = validateDevicetreeNodeName\n\nexport function validateDevicetreeLabel (value) {\n if (value.length > 31) {\n return 'maximum length: 31'\n } else if (value.match(/^[^a-zA-Z]/)) {\n return 'first character must be a letter'\n } else if (value.match(/[^a-zA-Z0-9_]/)) {\n return 'valid characters: a-zA-Z0-9_'\n }\n}\n\nexport function validateDevicetreeReference (value) {\n if (value.length > 31) {\n return 'maximum length: 31'\n } else if (value.match(/^[^&]/)) {\n return 'must start with \"&\"'\n } else if (value.match(/^&[^a-zA-Z]/)) {\n return 'first character must be a letter'\n } else if (value.slice(1).match(/[^a-zA-Z0-9_]/)) {\n return 'valid characters: a-zA-Z0-9_'\n }\n}\n","import PropTypes from 'prop-types'\n\nimport KeyWrapper from './KeyWrapper'\n\nimport Binding from '../Binding/Binding'\nimport * as bindPropTypes from '../Binding/bindPropTypes'\n\nfunction Key (props) {\n const { context, value, params, keyWrapperProps = {}, onUpdate } = props\n\n return (\n <KeyWrapper {...keyWrapperProps}>\n <Binding\n context={context}\n value={value}\n params={params}\n onUpdate={onUpdate}\n />\n </KeyWrapper>\n )\n}\n\nKey.propTypes = {\n label: PropTypes.string,\n value: bindPropTypes.value.isRequired,\n params: PropTypes.arrayOf(bindPropTypes.node),\n onUpdate: PropTypes.func.isRequired\n}\n\nexport default Key\n","import compact from 'lodash/compact'\nimport styles from './styles.module.css'\n\nfunction KeyWrapper (props) {\n const {\n children,\n selectable = true,\n themeClass = undefined,\n className = '',\n ...rest\n } = props\n\n const classes = compact([\n styles.key,\n selectable && styles.selectable,\n themeClass ?? styles.keyDefaultTheme,\n className\n ]).join(' ')\n\n return (\n <div className={classes} {...rest}>\n {children}\n </div>\n )\n}\n\nexport default KeyWrapper\n","\nexport const cycle = (array, index, step = 1) => {\n const next = (index + step) % array.length\n return next < 0 ? array.length + next : next\n}\n\nexport function scrollIntoViewIfNeeded (element, alignToTop) {\n const scroll = element.offsetParent.scrollTop\n const height = element.offsetParent.offsetHeight\n const top = element.offsetTop\n const bottom = top + element.scrollHeight\n\n if (top < scroll || bottom > scroll + height) {\n element.scrollIntoView(alignToTop)\n }\n}\n","import PropTypes from 'prop-types'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { cycle, scrollIntoViewIfNeeded } from './util'\nimport style from './style.module.css'\n\nfunction ResultList ({ results, onSelect, renderResult }) {\n const [cursorIndex, setCursorIndex] = useState(0)\n const listRef = useRef(null)\n\n const moveCursor = useCallback(function (initial, offset) {\n if (results.length === 0) {\n setCursorIndex(null)\n return\n } else if (offset === undefined) {\n setCursorIndex(initial)\n return\n }\n\n const next = cursorIndex !== null\n ? cycle(results, cursorIndex, offset)\n : initial\n\n const selector = `li[data-result-index=\"${next}\"]`\n const element = listRef.current?.querySelector(selector)\n\n scrollIntoViewIfNeeded(element, false)\n setCursorIndex(next)\n }, [results, cursorIndex, setCursorIndex])\n\n const handleHighlightNext = useCallback(function () {\n moveCursor(0, 1)\n }, [moveCursor])\n\n const handleHightightPrev = useCallback(function () {\n moveCursor(results.length - 1, -1)\n }, [moveCursor, results])\n\n const handleSelectActive = useCallback(function (event) {\n onSelect(results[cursorIndex], event)\n }, [results, cursorIndex, onSelect])\n\n const handleKeyDown = useCallback(function (event) {\n // If the focus is on a button (most likely confirm/cancel) then we don't\n // want to prevent 'Enter' from triggering that button. This isn't really\n // a great solution but it's convenient in the short term until I can be\n // bothered to refactor things.\n if (event.target.nodeName === 'BUTTON') {\n return\n }\n\n const mapping = {\n ArrowDown: handleHighlightNext,\n ArrowUp: handleHightightPrev,\n Enter: handleSelectActive\n }\n\n const action = mapping[event.key]\n if (action) {\n event.preventDefault()\n event.stopPropagation()\n action(event)\n }\n }, [\n handleHighlightNext,\n handleHightightPrev,\n handleSelectActive\n ])\n\n useEffect(() => {\n document.body.addEventListener('keydown', handleKeyDown)\n return () => document.body.removeEventListener('keydown', handleKeyDown)\n }, [listRef, handleKeyDown])\n\n return (\n <ul className={style.results} ref={listRef}>\n {results.map((result, i) => (\n <li\n key={i}\n className={cursorIndex === i ? style.highlighted : ''}\n title={result.description}\n data-result-index={i}\n onClick={event => onSelect(result, event)}\n onDoubleClick={event => onSelect(result, event)}\n onMouseOver={() => moveCursor(i)}\n >\n {renderResult(result, i)}\n </li>\n ))}\n </ul>\n )\n}\n\nResultList.propTypes = {\n results: PropTypes.array.isRequired,\n onSelect: PropTypes.func.isRequired,\n renderResult: PropTypes.func.isRequired\n}\n\nexport default ResultList\n","import fuzzysort from 'fuzzysort'\nimport PropTypes from 'prop-types'\nimport { useCallback, useMemo, useState } from 'react'\n\nimport Icon from '../Common/Icon'\nimport style from './style.module.css'\n\nconst searchThreshold = 10\n\nfunction focusInput (node) {\n if (node) {\n node.focus()\n node.select()\n }\n}\n\nconst SearchFilter = ({ choices, searchKey, searchKeys, renderResults, initialQuery }) => {\n const useSearch = !choices.length || choices.length > searchThreshold\n const [query, setQuery] = useState(initialQuery)\n const results = useMemo(() => {\n if (!query || !useSearch) {\n return choices\n }\n\n const options = searchKeys ? { keys: searchKeys, limit: 30 } : { key: searchKey, limit: 30 }\n const filtered = fuzzysort.go(query, choices, options)\n return filtered.map(result => ({\n ...result.obj,\n search: result\n }))\n }, [useSearch, query, choices, searchKey, searchKeys])\n\n const handleKeyPress = useCallback(event => {\n setQuery(event.target.value)\n }, [setQuery])\n\n return (\n <>\n {useSearch && (\n <div className={style.searchWrapper}>\n <input\n ref={focusInput}\n type=\"text\"\n value={query}\n onChange={handleKeyPress}\n />\n <Icon className={style.searchIcon} name=\"search\" />\n <Icon\n className={style.clearSearchIcon}\n name=\"times\"\n onClick={() => setQuery('')}\n />\n </div>\n )}\n {renderResults(results)}\n </>\n )\n}\n\nSearchFilter.propTypes = {\n choices: PropTypes.array.isRequired,\n searchKey: PropTypes.string,\n initialQuery: PropTypes.string.isRequired,\n renderResults: PropTypes.func.isRequired\n}\n\nSearchFilter.defaultProps = {\n initialQuery: ''\n}\n\nexport default SearchFilter\n","import PropTypes from 'prop-types'\nimport { bindNode } from '../Keyboard/Binding/bindPropTypes'\n\nexport const pickerPropTypes = {\n onCancel: PropTypes.func,\n\n /**\n * For multi-step selections, this just updates the parent component\n */\n onChange: PropTypes.func,\n\n /**\n * For single-step selections or other events that \"complete\" the interaction\n * this callback cues the parent to close the picker.\n */\n onSelect: PropTypes.func.isRequired,\n node: bindNode.isRequired,\n searchKey: PropTypes.string.isRequired,\n searchThreshold: PropTypes.number\n}\n","import { useContext, useMemo } from 'react'\n\nimport { SearchContext } from '../providers'\nimport ResultList from './ResultList'\nimport style from './style.module.css'\nimport { pickerPropTypes } from './pickerPropTypes'\n\nexport default function EnumPicker (props) {\n const { getSearchTargets } = useContext(SearchContext)\n const { param, onSelect } = props\n\n const choices = useMemo(() => (\n getSearchTargets(param)\n ), [getSearchTargets, param])\n\n return (\n <ResultList\n results={choices}\n onSelect={onSelect}\n renderResult={result => (\n <>\n {result.code}\n {result.description && (\n <p className={style.description}>\n {result.description}\n </p>\n )}\n </>\n )}\n />\n )\n}\n\nEnumPicker.propTypes = pickerPropTypes\n","import fuzzysort from 'fuzzysort'\nimport { useContext, useMemo } from 'react'\n\nimport { SearchContext } from '../providers'\nimport ResultList from './ResultList'\nimport SearchFilter from './SearchFilter'\nimport style from './style.module.css'\nimport { pickerPropTypes } from './pickerPropTypes'\n\nexport default function GenericPicker (props) {\n const { searchKey, node, param, behaviour, context, onSelect } = props\n const { getSearchTargets } = useContext(SearchContext)\n\n const choices = useMemo(() => {\n return getSearchTargets(param, behaviour.code, context)\n }, [getSearchTargets, param, behaviour, context])\n\n return (\n <SearchFilter\n choices={choices}\n initialQuery={node.value || ''}\n searchKey={searchKey}\n renderResults={results => results && (\n <ResultList\n results={results}\n onSelect={onSelect}\n renderResult={renderSearchResult}\n />\n )}\n />\n )\n}\n\nGenericPicker.propTypes = pickerPropTypes\n\nfunction renderSearchResult (result) {\n const title = result.search\n ? (\n <span>\n {fuzzysort.highlight(result.search, (v, i) => (\n <b key={i}>{v}</b>\n ))}\n </span>\n )\n : <span>{result.code}</span>\n\n const description = result.displayName || result.description\n\n return (\n <>\n {title}\n {description && (\n <p className={style.description}>\n {description}\n </p>\n )}\n </>\n )\n}\n","import PropTypes from 'prop-types'\nimport { useCallback, useState } from 'react'\nimport { HslColorPicker } from 'react-colorful'\n\nimport ActionButton from '../../Common/ActionButton'\n\nfunction HSBPicker (props) {\n const { node, onSelect } = props\n const [hsl, setHsl] = useState({\n h: Number(node.params[0].value),\n s: Number(node.params[1].value),\n l: Number(node.params[2].value)\n })\n\n const handleConfirm = useCallback(() => {\n onSelect([\n { value: Math.round(hsl.h) },\n { value: Math.round(hsl.s) },\n { value: Math.round(hsl.l) }\n ])\n }, [hsl, onSelect])\n\n return (\n <>\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <HslColorPicker\n color={hsl}\n onChange={setHsl}\n />\n </div>\n <p style={{ textAlign: 'center' }}>\n <ActionButton onClick={handleConfirm}>Confirm</ActionButton>\n </p>\n </>\n )\n}\n\nHSBPicker.propTypes = {\n value: PropTypes.any.isRequired,\n prompt: PropTypes.string.isRequired,\n param: PropTypes.oneOfType([\n PropTypes.shape({\n enum: PropTypes.array,\n raw: PropTypes.bool,\n type: PropTypes.string\n })\n ]).isRequired,\n onSelect: PropTypes.func.isRequired\n}\n\nHSBPicker.defaultProps = {\n value: ''\n}\n\nexport default HSBPicker\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","import classNames from 'classnames'\nimport without from 'lodash/without'\nimport PropTypes from 'prop-types'\nimport { useCallback } from 'react'\n\nimport useCancelableKeyPress from '../../Common/hooks/use-cancelable-key-press'\nimport style from './styles.module.css'\n\nconst leftModifiers = ['LS', 'LA', 'LC', 'LG']\nconst rightModifiers = ['RS', 'RA', 'RC', 'RG']\n\nconst modifiersMap = {\n LS: { short: 'LSHFT', full: 'Left Shift' },\n LC: { short: 'LCTRL', full: 'Left Control' },\n LA: { short: 'LALT', full: 'Left Alt' },\n LG: { short: 'LGUI', full: 'Left Gui' },\n RS: { short: 'RSHFT', full: 'Right Shift' },\n RC: { short: 'RCTRL', full: 'Right Control' },\n RA: { short: 'RALT', full: 'Right Alt' },\n RG: { short: 'RGUI', full: 'Right Gui' }\n}\n\nfunction mapDomModifier (event) {\n const modKey = {\n Control: 'C',\n Shift: 'S',\n Alt: 'A',\n Meta: 'G'\n }[event.key]\n const side = {\n [KeyboardEvent.DOM_KEY_LOCATION_LEFT]: 'L',\n [KeyboardEvent.DOM_KEY_LOCATION_RIGHT]: 'R'\n }[event.location]\n\n return (modKey && side) ? `${side}${modKey}` : null\n}\n\nconst noDeselectMessage = ' (This modifier is implicitly used by the active keycode and cannot be de-selected)'\n\nfunction ModifiersRow ({ selected, implicit, row, onChange }) {\n return (\n <ul className={style.modifiers}>\n {row.map((mod, i) => (\n <li\n key={i}\n title={modifiersMap[mod].full + (implicit.includes(mod) ? noDeselectMessage : '')}\n className={classNames({\n [style.selected]: selected.includes(mod),\n [style.implicit]: implicit.includes(mod)\n })}\n >\n <label>\n <input\n type=\"checkbox\"\n checked={(\n selected.includes(mod) ||\n implicit.includes(mod)\n )}\n disabled={implicit.includes(mod)}\n onChange={e => {\n onChange(\n e.target.checked\n ? [...selected, mod]\n : without(selected, mod)\n )\n }}\n /> {(\n modifiersMap[mod].short\n )}\n </label>\n </li>\n ))}\n </ul>\n )\n}\n\nexport default function ModifiersPicker ({ selected, implicit, onChange }) {\n useModifierToggle(selected, implicit, onChange)\n\n return (\n <div className={style.allModifiers}>\n <ModifiersRow row={leftModifiers} selected={selected} implicit={implicit} onChange={onChange} />\n <ModifiersRow row={rightModifiers} selected={selected} implicit={implicit} onChange={onChange} />\n </div>\n )\n}\n\nModifiersPicker.propTypes = {\n selected: PropTypes.arrayOf(PropTypes.string),\n implicit: PropTypes.arrayOf(PropTypes.string),\n onChange: PropTypes.func.isRequired\n}\n\nfunction useModifierToggle (selected, implicit, onChange) {\n const handleKeyUp = useCallback(event => {\n const modifier = mapDomModifier(event)\n if (modifier && !implicit.includes(modifier)) {\n onChange(\n selected.includes(modifier)\n ? without(selected, modifier)\n : [...selected, modifier]\n )\n }\n }, [selected, implicit, onChange])\n\n useCancelableKeyPress(handleKeyUp)\n}\n","import { useEffect, useState } from 'react'\n\n/**\n * Handle document keyup events, except when focus changed mid-keypress.\n *\n * Mostly this means we can have a handler for something like Ctrl that should\n * not trigger if the user is pressing Ctrl+Tab to switch focus to another\n * browser tab.\n *\n * This probably doesn't work for Cmd+Tab due to how macos gets in the way of\n * handling events for key combinations involving Command.\n *\n * @param {Function} onKeyup\n */\nexport default function useCancelableKeyPress (onKeyup) {\n const [, setHeld] = useState({})\n\n useEffect(() => {\n function handleKeyDown (event) {\n setHeld(held => ({ ...held, [event.code]: true }))\n }\n\n function handleKeyUp (event) {\n setHeld(held => {\n if (held[event.code]) {\n // This is hacky but triggering this within the setState callback\n // means we don't need to use the state as a dependency of the effect\n // and triggering onKeyup asynchronously doesn't seem to be a problem\n // (so far) for handling the event.\n setTimeout(() => onKeyup(event))\n }\n\n return { ...held, [event.code]: false }\n })\n }\n\n function focusOut (event) {\n setHeld({})\n }\n\n document.body.addEventListener('keydown', handleKeyDown)\n document.body.addEventListener('keyup', handleKeyUp)\n document.body.addEventListener('focusout', focusOut)\n return () => {\n document.body.removeEventListener('keydown', handleKeyDown)\n document.body.removeEventListener('keyup', handleKeyUp)\n document.body.removeEventListener('focusout', focusOut)\n }\n }, [setHeld, onKeyup])\n}\n","import classNames from 'classnames'\nimport fuzzysort from 'fuzzysort'\nimport compact from 'lodash/compact'\nimport map from 'lodash/map'\nimport PropTypes from 'prop-types'\nimport { useCallback, useContext, useMemo, useState } from 'react'\n\nimport { treeToSequence, sequenceToTree } from './helpers'\nimport { SearchContext } from '../../providers'\nimport { bindNode } from '../../Keyboard/Binding/bindPropTypes'\n\nimport ResultList from '../../ValuePicker/ResultList'\nimport resultListStyle from '../../ValuePicker/style.module.css'\nimport SearchFilter from '../../ValuePicker/SearchFilter'\nimport ModifiersPicker from './ModifiersPicker'\nimport KeycodeBindNode from './KeycodeBindNode'\nimport { hydrateTree } from '../../Keyboard/Binding/util'\nimport KeyWrapper from '../../Keyboard/Keys/KeyWrapper'\nimport ActionButton from '../../Common/ActionButton'\nimport styles from './styles.module.css'\nimport Tip from '../../Common/Tip'\nimport Icon from '../../Common/Icon'\n\nfunction renderSymbol (result) {\n const symbol = result?.symbol\n const icon = result?.faIcon\n\n if (icon) {\n return <Icon name={icon} />\n }\n\n if (symbol && !result.aliases.includes(symbol)) {\n return symbol\n }\n}\n\nfunction renderSearchResult (result) {\n const [titleResult] = result.search || []\n const title = titleResult\n ? <span dangerouslySetInnerHTML={{ __html: fuzzysort.highlight(titleResult) }} />\n : <span>{result.code}</span>\n\n const symbol = renderSymbol(result)\n\n return (\n <div className={styles.resultItem}>\n <div className={styles.description}>\n {title}\n <p className={resultListStyle.description}>{result.description}</p>\n </div>\n {symbol && <div className={styles.symbol}>{symbol}</div>}\n </div>\n )\n}\n\nfunction KeycodePicker ({ node, onSelect, behaviour }) {\n const context = useContext(SearchContext)\n const { getSearchTargets } = context\n\n const codes = useMemo(() => map(treeToSequence(node), 'source'), [node])\n const initialModifiers = codes.length === 1 ? [] : codes.slice(0, -1)\n const [selectedModifiers, setSelectedModifiers] = useState(map(initialModifiers, 'code'))\n const [selectedKeycode, setSelectedKeycode] = useState(codes.at(-1))\n\n const choices = useMemo(() => {\n // bit of a hack; we can't use the search picker to select the \"function\"\n // version of modifier keycodes because they won't end up in the modifiers\n // list and we aren't allowing for population of their parameters.\n // TODO: once this picker becomes the \"standard\" the function macros should\n // not be treated as keycodes.\n const codes = getSearchTargets('code', behaviour.code)\n return codes.filter(code => code.params.length === 0)\n }, [getSearchTargets, behaviour])\n\n // have to hydrate to get merged glyphs\n // hardcoding isn't great but it's the keycode picker so maybe '&kp' is reasonable\n const hydrated = hydrateTree({\n value: '&kp',\n params: [{\n value: selectedKeycode?.code,\n params: selectedKeycode?.params\n }]\n }, context)\n\n const select = useCallback(function (keycode, modifiers) {\n const tree = sequenceToTree(compact([...modifiers, keycode?.code]))\n\n onSelect(tree)\n }, [onSelect])\n\n const handleSelectKeycode = useCallback((result, event) => {\n if (event.type === 'dblclick') {\n select(result, selectedModifiers)\n return\n }\n\n setSelectedKeycode(result)\n }, [select, selectedModifiers, setSelectedKeycode])\n\n function handleConfirm () {\n select(selectedKeycode, selectedModifiers)\n }\n\n function handleCancel () {\n onSelect(node)\n }\n\n return (\n <div className={classNames(resultListStyle.dialog, styles.wrapper)}>\n <div style={{ display: 'flex', gap: '10px' }}>\n <div>\n <h3>Keycode</h3>\n <KeyWrapper className={styles.previewKeycode} selectable={false}>\n <KeycodeBindNode\n node={hydrated.params[0]}\n onSelect={() => {}}\n />\n </KeyWrapper>\n </div>\n <div>\n <h3>Modifiers</h3>\n <ModifiersPicker\n selected={selectedModifiers}\n implicit={selectedKeycode?.modifiers || []}\n onChange={setSelectedModifiers}\n />\n </div>\n </div>\n <h3>Available Keycodes</h3>\n <SearchFilter\n choices={choices}\n initialQuery={selectedKeycode?.code}\n searchKeys={['code', 'symbol']}\n renderResults={results => results && (\n <ResultList\n results={results}\n onSelect={handleSelectKeycode}\n renderResult={renderSearchResult}\n />\n )}\n />\n <Tip className={styles.quickCloseTip}>\n Double-click to select and close the dialog\n </Tip>\n <div style={{ marginTop: '10px', textAlign: 'center' }}>\n <ActionButton disabled={!selectedKeycode?.code} onClick={handleConfirm}>Confirm</ActionButton>\n <ActionButton onClick={handleCancel} secondary>Cancel</ActionButton>\n </div>\n </div>\n )\n}\n\nKeycodePicker.propTypes = {\n node: bindNode.isRequired,\n param: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n enum: PropTypes.array,\n raw: PropTypes.bool,\n type: PropTypes.string\n })\n ]).isRequired,\n searchKey: PropTypes.string.isRequired,\n behaviour: PropTypes.object.isRequired,\n context: PropTypes.string.isRequired,\n onSelect: PropTypes.func.isRequired\n}\n\nexport default KeycodePicker\n","import { useCallback, useState } from 'react'\n\nimport { pickerPropTypes } from './pickerPropTypes'\n\nfunction focusInput (node) {\n if (node) {\n node.focus()\n node.select()\n }\n}\n\nexport default function RawValuePicker (props) {\n const { value: initialValue, param, onSelect } = props\n const [value, setValue] = useState(initialValue)\n\n const handleKeyDown = useCallback(event => {\n if (event.key === 'Enter') {\n onSelect({ code: value })\n }\n }, [value, onSelect])\n\n const handleKeyPress = useCallback(event => {\n let value = event.target.value\n\n if (param.type === 'number') {\n value = Number(value)\n if (Number.isNaN(value)) {\n return\n }\n }\n\n setValue(value)\n }, [param, setValue])\n\n return (\n <input\n ref={focusInput}\n type=\"text\"\n value={value}\n onChange={handleKeyPress}\n onKeyDown={handleKeyDown}\n />\n )\n}\n\nRawValuePicker.propTypes = pickerPropTypes\n","import { useMemo } from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { selectLayers } from '../Keyboard/Layers/layersSlice'\nimport ResultList from './ResultList'\nimport style from './style.module.css'\nimport { pickerPropTypes } from './pickerPropTypes'\n\nexport default function LayerPicker ({ onSelect }) {\n const layers = useSelector(selectLayers)\n const choices = useMemo(() => layers.map((layer, i) => ({\n code: i,\n description: layer.name || `Layer ${i}`\n })), [layers])\n\n return (\n <ResultList\n results={choices}\n onSelect={onSelect}\n renderResult={result => (\n <>\n {result.code}\n {result.description && (\n <p className={style.description}>\n {result.description}\n </p>\n )}\n </>\n )}\n />\n )\n}\n\nLayerPicker.propTypes = pickerPropTypes\n","import pick from 'lodash/pick'\nimport PropTypes from 'prop-types'\nimport { useMemo } from 'react'\n\nimport DialogBox from '../Common/DialogBox'\nimport Modal from '../Common/Modal'\nimport EnumPicker from './EnumPicker'\nimport { bindNode } from '../Keyboard/Binding/bindPropTypes'\n\nimport GenericPicker from './GenericPicker'\nimport HueSatValPicker from '../EnhancedPickers/RGB/HueSatValPicker'\nimport KeycodePicker from '../EnhancedPickers/Keycode/KeycodePicker'\nimport RawValuePicker from './RawValuePicker'\nimport LayerPicker from './LayerPicker'\nimport styles from './style.module.css'\n\nexport function ValuePicker (props) {\n const { node, type, onCancel, onSelect } = props\n const pickerProps = pick(props, [\n 'node', 'value', 'prompt', 'param', 'node', 'behaviour', 'context', 'searchKey'\n ])\n\n const PickerComponent = useMemo(() => {\n // TODO: allow components to register helpers\n if (type === 'params' && node.source?.helper === 'hsb-color-picker') return HueSatValPicker\n if (node.slot.raw) return RawValuePicker\n // TODO: Shouldn't need to render placeholder\n if (node.slot.type === 'placeholder') return RawValuePicker\n if (node.slot.enum) return EnumPicker\n if (node.slot === 'code') return KeycodePicker\n if (node.slot === 'layer') return LayerPicker\n return GenericPicker\n }, [node, type])\n\n return (\n <PickerComponent\n {...pickerProps}\n param={node.slot}\n onSelect={onSelect}\n />\n )\n}\n\nValuePicker.propTypes = {\n type: PropTypes.string.isRequired,\n node: bindNode.isRequired,\n behaviour: PropTypes.object.isRequired,\n searchKey: PropTypes.string.isRequired,\n searchThreshold: PropTypes.number,\n onCancel: PropTypes.func,\n onUpdate: PropTypes.func,\n onSelect: PropTypes.func.isRequired\n}\n\nValuePicker.defaultProps = {\n type: 'value',\n value: '',\n freeForm: false,\n searchThreshold: 10\n}\n\nexport default function ValuePickerDialog (props) {\n const { node, prompt, onUpdate, onCancel, ...rest } = props\n\n // const handleConfirm = useCallback(() => {\n // onUpdate(node)\n // }, [node, onUpdate])\n\n return (\n <Modal onDismiss={onCancel}>\n <DialogBox dismissText={null} classes={[styles.dialogWrapper]}>\n <h2>{prompt}</h2>\n <ValuePicker\n onSelect={onUpdate}\n node={node}\n {...rest}\n />\n {/* <div style={{ marginTop: '10px', textAlign: 'center' }}>\n <ActionButton onClick={handleConfirm}>Confirm</ActionButton>\n <ActionButton onClick={onCancel} secondary>Cancel</ActionButton>\n </div> */}\n </DialogBox>\n </Modal>\n )\n}\n\nValuePickerDialog.propTypes = {\n type: PropTypes.string.isRequired,\n node: bindNode.isRequired,\n behaviour: PropTypes.object.isRequired,\n prompt: PropTypes.string.isRequired,\n searchKey: PropTypes.string.isRequired,\n searchThreshold: PropTypes.number,\n onCancel: PropTypes.func.isRequired,\n onChange: PropTypes.func,\n onSelect: PropTypes.func.isRequired\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"button.pi2Ig8c3Fdh4H2Jpxdo7 {\\n display: inline-block;\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n color: white;\\n\\n font-size: 16px;\\n border: none;\\n border-radius: 5px;\\n padding: 0 5px;\\n\\n height: 30px;\\n line-height: 30px;\\n vertical-align: middle;\\n}\\n\\nbutton.Ctpu4E2dZYJ6g8CUGFOF {\\n color: var(--fg);\\n background-color: transparent;\\n}\\n\\nbutton.pi2Ig8c3Fdh4H2Jpxdo7[disabled] {\\n filter: saturate(20%);\\n opacity: .5;\\n cursor: not-allowed;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Common/action-button.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qBAAqB;EACrB,eAAe;EACf,wCAAwC;EACxC,YAAY;;EAEZ,eAAe;EACf,YAAY;EACZ,kBAAkB;EAClB,cAAc;;EAEd,YAAY;EACZ,iBAAiB;EACjB,sBAAsB;AACxB;;AAEA;EACE,gBAAgB;EAChB,6BAA6B;AAC/B;;AAEA;EACE,qBAAqB;EACrB,WAAW;EACX,mBAAmB;AACrB\",\"sourcesContent\":[\"button.action {\\n display: inline-block;\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n color: white;\\n\\n font-size: 16px;\\n border: none;\\n border-radius: 5px;\\n padding: 0 5px;\\n\\n height: 30px;\\n line-height: 30px;\\n vertical-align: middle;\\n}\\n\\nbutton.secondary {\\n color: var(--fg);\\n background-color: transparent;\\n}\\n\\nbutton.action[disabled] {\\n filter: saturate(20%);\\n opacity: .5;\\n cursor: not-allowed;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"action\": \"pi2Ig8c3Fdh4H2Jpxdo7\",\n\t\"secondary\": \"Ctpu4E2dZYJ6g8CUGFOF\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sq9i7hQeTeeKuarmO8oA {\\n display: inline-block;\\n font-size: 70%;\\n background: rgba(0, 0, 0, 0.5);\\n color: white;\\n padding: 4px;\\n border-radius: 4px;\\n width: max-content;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Common/tip.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qBAAqB;EACrB,cAAc;EACd,8BAA8B;EAC9B,YAAY;EACZ,YAAY;EACZ,kBAAkB;EAClB,kBAAkB;AACpB\",\"sourcesContent\":[\".tip {\\n display: inline-block;\\n font-size: 70%;\\n background: rgba(0, 0, 0, 0.5);\\n color: white;\\n padding: 4px;\\n border-radius: 4px;\\n width: max-content;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"tip\": \"sq9i7hQeTeeKuarmO8oA\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".AmikJd3HeM7NGUa8io2A {\\n width: 350px;\\n}\\n\\n.AmikJd3HeM7NGUa8io2A h3:first-child {\\n margin-top: 0px;\\n}\\n\\n.xCOOsvxL5qQ3kR8ri91A {\\n pointer-events: none;\\n box-shadow: 0 4px 10px 0px rgba(0, 0, 0, 0.5);\\n}\\n\\n.Ox9WHfAMFuthXo6ZOJoI {\\n padding: 2px 0;\\n}\\n\\n.u4uW9U2E0DfbUM9vP9pf {\\n text-align: center;\\n padding: 0;\\n margin: 0;\\n}\\n\\n.u4uW9U2E0DfbUM9vP9pf li {\\n display: inline-block;\\n font-family: monospace, monospace;\\n font-size: 70%;\\n margin: 2px;\\n border-radius: 2px;\\n\\n background-color: rgba(0, 0, 0, .5);\\n opacity: 0.5;\\n color: white;\\n}\\n.u4uW9U2E0DfbUM9vP9pf li label {\\n display: inline-block;\\n padding: 4px;\\n}\\n\\n.u4uW9U2E0DfbUM9vP9pf li.YcHSun3PLo8dCb9qIZtc {\\n opacity: 1;\\n background-color: var(--selection);\\n color: white;\\n}\\n\\n.u4uW9U2E0DfbUM9vP9pf li.Ix6wQt3EBFUH2PUcsqgm {\\n background-color: var(--error-highlight);\\n filter: saturate(50%);\\n}\\n\\n.u4uW9U2E0DfbUM9vP9pf li:not(.Ix6wQt3EBFUH2PUcsqgm):hover {\\n opacity: 1;\\n background-color: var(--hover-selection);\\n}\\n\\n.u4uW9U2E0DfbUM9vP9pf li.Ix6wQt3EBFUH2PUcsqgm:hover * {\\n cursor: not-allowed;\\n}\\n\\n.u4uW9U2E0DfbUM9vP9pf li input[type=\\\"checkbox\\\"] {\\n margin: 0;\\n vertical-align: text-bottom;\\n}\\n\\n.d3hMEDpEkH8H7YLG_NjI {\\n width: 100% !important;\\n box-sizing: border-box;\\n text-align: center;\\n}\\n\\n.gFHbtpz6TuduOVYLXwHu {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n}\\n\\n.AfAg5j2RJEcA0Zh3z7mX {\\n flex-grow: 1;\\n}\\n\\n.YeOANHLbze2W1EGYOFiI {\\n font-size: 120%;\\n padding: 6px 10px;\\n color: white !important;\\n background-color: rgba(30, 30, 30, 0.4);\\n border-radius: 5px;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/EnhancedPickers/Keycode/styles.module.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,YAAY;AACd;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,oBAAoB;EACpB,6CAA6C;AAC/C;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,kBAAkB;EAClB,UAAU;EACV,SAAS;AACX;;AAEA;EACE,qBAAqB;EACrB,iCAAiC;EACjC,cAAc;EACd,WAAW;EACX,kBAAkB;;EAElB,mCAAmC;EACnC,YAAY;EACZ,YAAY;AACd;AACA;EACE,qBAAqB;EACrB,YAAY;AACd;;AAEA;EACE,UAAU;EACV,kCAAkC;EAClC,YAAY;AACd;;AAEA;EACE,wCAAwC;EACxC,qBAAqB;AACvB;;AAEA;EACE,UAAU;EACV,wCAAwC;AAC1C;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,SAAS;EACT,2BAA2B;AAC7B;;AAEA;EACE,sBAAsB;EACtB,sBAAsB;EACtB,kBAAkB;AACpB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;AACrB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,eAAe;EACf,iBAAiB;EACjB,uBAAuB;EACvB,uCAAuC;EACvC,kBAAkB;AACpB\",\"sourcesContent\":[\".wrapper {\\n width: 350px;\\n}\\n\\n.wrapper h3:first-child {\\n margin-top: 0px;\\n}\\n\\n.previewKeycode {\\n pointer-events: none;\\n box-shadow: 0 4px 10px 0px rgba(0, 0, 0, 0.5);\\n}\\n\\n.allModifiers {\\n padding: 2px 0;\\n}\\n\\n.modifiers {\\n text-align: center;\\n padding: 0;\\n margin: 0;\\n}\\n\\n.modifiers li {\\n display: inline-block;\\n font-family: monospace, monospace;\\n font-size: 70%;\\n margin: 2px;\\n border-radius: 2px;\\n\\n background-color: rgba(0, 0, 0, .5);\\n opacity: 0.5;\\n color: white;\\n}\\n.modifiers li label {\\n display: inline-block;\\n padding: 4px;\\n}\\n\\n.modifiers li.selected {\\n opacity: 1;\\n background-color: var(--selection);\\n color: white;\\n}\\n\\n.modifiers li.implicit {\\n background-color: var(--error-highlight);\\n filter: saturate(50%);\\n}\\n\\n.modifiers li:not(.implicit):hover {\\n opacity: 1;\\n background-color: var(--hover-selection);\\n}\\n\\n.modifiers li.implicit:hover * {\\n cursor: not-allowed;\\n}\\n\\n.modifiers li input[type=\\\"checkbox\\\"] {\\n margin: 0;\\n vertical-align: text-bottom;\\n}\\n\\n.quickCloseTip {\\n width: 100% !important;\\n box-sizing: border-box;\\n text-align: center;\\n}\\n\\n.resultItem {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n}\\n\\n.description {\\n flex-grow: 1;\\n}\\n\\n.symbol {\\n font-size: 120%;\\n padding: 6px 10px;\\n color: white !important;\\n background-color: rgba(30, 30, 30, 0.4);\\n border-radius: 5px;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"wrapper\": \"AmikJd3HeM7NGUa8io2A\",\n\t\"previewKeycode\": \"xCOOsvxL5qQ3kR8ri91A\",\n\t\"allModifiers\": \"Ox9WHfAMFuthXo6ZOJoI\",\n\t\"modifiers\": \"u4uW9U2E0DfbUM9vP9pf\",\n\t\"selected\": \"YcHSun3PLo8dCb9qIZtc\",\n\t\"implicit\": \"Ix6wQt3EBFUH2PUcsqgm\",\n\t\"quickCloseTip\": \"d3hMEDpEkH8H7YLG_NjI\",\n\t\"resultItem\": \"gFHbtpz6TuduOVYLXwHu\",\n\t\"description\": \"AfAg5j2RJEcA0Zh3z7mX\",\n\t\"symbol\": \"YeOANHLbze2W1EGYOFiI\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_ICSS_IMPORT_0___ from \"-!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../Keyboard/Keys/styles.module.css\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_ICSS_IMPORT_0___, \"\", true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* @import \\\"../../Keyboard/Keys/styles.module.css\\\"; */\\n\\n.\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\"key\"] + \" .ElYzpTlttqVbs6KKy9ob {\\n align-self: center;\\n}\\n.\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\"extracted\"] + \" .ElYzpTlttqVbs6KKy9ob {\\n display: inline-block;\\n border-bottom: .15em dotted var(--key-color-base);\\n box-sizing: border-box;\\n padding: 6px .25em;\\n}\\n\\n:hover .ElYzpTlttqVbs6KKy9ob:hover {\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n border-radius: 0;\\n border-radius: 3px;\\n}\\n\\n.rdE_HhSUTcg2dK35N2WA {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 1em;\\n aspect-ratio: 1;\\n border-radius: 2px;\\n}\\n\\n.\" + ___CSS_LOADER_ICSS_IMPORT_0___.locals[\"extracted\"] + \" .rdE_HhSUTcg2dK35N2WA {\\n display: inline-block;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/EnhancedPickers/RGB/styles.module.css\"],\"names\":[],\"mappings\":\"AAAA,qDAAqD;;AAMrD;EACE,kBAAkB;AACpB;AACA;EACE,qBAAqB;EACrB,iDAAiD;EACjD,sBAAsB;EACtB,kBAAkB;AACpB;;AAEA;EACE,eAAe;EACf,wCAAwC;EACxC,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB,WAAW;EACX,eAAe;EACf,kBAAkB;AACpB;;AAEA;EACE,qBAAqB;AACvB\",\"sourcesContent\":[\"/* @import \\\"../../Keyboard/Keys/styles.module.css\\\"; */\\n:import(\\\"../../Keyboard/Keys/styles.module.css\\\") {\\n key: key;\\n extracted: extracted;\\n}\\n\\n.key .colorIconWrapper {\\n align-self: center;\\n}\\n.extracted .colorIconWrapper {\\n display: inline-block;\\n border-bottom: .15em dotted var(--key-color-base);\\n box-sizing: border-box;\\n padding: 6px .25em;\\n}\\n\\n:hover .colorIconWrapper:hover {\\n cursor: pointer;\\n background-color: var(--hover-selection);\\n border-radius: 0;\\n border-radius: 3px;\\n}\\n\\n.colorIcon {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 1em;\\n aspect-ratio: 1;\\n border-radius: 2px;\\n}\\n\\n.extracted .colorIcon {\\n display: inline-block;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"colorIconWrapper\": \"ElYzpTlttqVbs6KKy9ob\",\n\t\"colorIcon\": \"rdE_HhSUTcg2dK35N2WA\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".CoLZlKR1WcMrFd9XhDMC {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\talign-items: center;\\n\\n\\tfont-family: Quicksand, avenir, sans-serif;\\n\\n\\t/* TODO: remove this once I have a wrapper with size defaults */\\n\\twidth: 65px;\\n\\theight: 65px;\\n\\n\\tfont-size: 110%;\\n\\tborder-radius: 5px;\\n}\\n\\n.CoLZlKR1WcMrFd9XhDMC.MZMfZSmJbwqqfp28UUOi { cursor: pointer; }\\n.CoLZlKR1WcMrFd9XhDMC.MZMfZSmJbwqqfp28UUOi * {\\n\\tpointer-events: none;\\n\\tborder: none;\\n\\ttext-decoration: none !important;\\n}\\n\\n\\n.CT4uGhwl8sY0LwT3p39g:not(:hover) .UNzQquWsoIanOpIN0Q9L,\\n.OsA2qRpHoDPcN93o_TUX:not(:hover) .DejZXCvvhJILPbs9Q8ht.UNzQquWsoIanOpIN0Q9L {\\n\\ttext-decoration: underline wavy var(--error-highlight);\\n\\ttext-underline-offset: 4px;\\n\\tcolor: var(--error-highlight);\\n\\tfont-weight: bold;\\n}\\n\\n.Y5EVt8b0BaXNd9uLxhfh {\\n\\tposition: absolute;\\n\\tleft: 2px;\\n\\tbottom: 2px;\\n\\tfont-size: 80%;\\n\\n\\tanimation: sYr3l9y03JxO_2AP73jr ease-in-out 1s alternate-reverse;\\n}\\n.Y5EVt8b0BaXNd9uLxhfh:hover {\\n\\tcolor: rgb(255, 225, 0);\\n}\\n\\n@keyframes sYr3l9y03JxO_2AP73jr {\\n\\t0% { color: var(--key-color-base) }\\n\\t100% { color: var(--key-color-extreme) }\\n}\\n\\n.CoLZlKR1WcMrFd9XhDMC:hover .DejZXCvvhJILPbs9Q8ht,\\n.CoLZlKR1WcMrFd9XhDMC:hover .DejZXCvvhJILPbs9Q8ht :before,\\n.CoLZlKR1WcMrFd9XhDMC:hover .GliE4Ybwli9X6TNTjD1_ {\\n\\tborder-bottom-left-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n\\ttext-decoration: underline dotted white 2px;\\n\\ttext-underline-offset: 4px;\\n}\\n\\n\\n.huQDP3GbTLThbVIP8wFp {\\n\\tcolor: var(--key-color-base);\\n\\tbackground-color: var(--key-bg-base);\\n}\\n\\n.PpMmKpJfEi37Ldw7AeBT {\\n\\tborder-radius: 100%;\\n\\tbackground-color: var(--key-bg-base);\\n\\tcolor: var(--key-color-base);\\n}\\n\\n._F1Vep3btfY3Rl4VJaUQ {\\n\\twidth: 80px;\\n\\theight: 80px;\\n\\tborder-radius: 100%;\\n\\tbackground-color: var(--key-bg-base);\\n\\tcolor: var(--key-color-base);\\n}\\n\\n._F1Vep3btfY3Rl4VJaUQ .GliE4Ybwli9X6TNTjD1_ {\\n\\tleft: 50%;\\n\\ttransform: translateX(-50%);\\n}\\n._F1Vep3btfY3Rl4VJaUQ .ApHDJFJGYUaGTgzMeIKZ[data-is-root=\\\"true\\\"] {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n._F1Vep3btfY3Rl4VJaUQ .ApHDJFJGYUaGTgzMeIKZ[data-is-root=\\\"true\\\"] .mLz637Atn0jZXey6Rx4v:first-child::before {\\n\\tcontent: \\\"⟳\\\";\\n\\tfont-size: 140%;\\n\\tfont-weight: bold;\\n}\\n._F1Vep3btfY3Rl4VJaUQ .ApHDJFJGYUaGTgzMeIKZ[data-is-root=\\\"true\\\"] .mLz637Atn0jZXey6Rx4v:nth-child(2)::before {\\n\\tcontent: \\\"⟲\\\";\\n\\tfont-size: 140%;\\n\\tfont-weight: bold;\\n}\\n._F1Vep3btfY3Rl4VJaUQ:hover .ApHDJFJGYUaGTgzMeIKZ[data-is-root=\\\"true\\\"] .mLz637Atn0jZXey6Rx4v:first-child::before,\\n._F1Vep3btfY3Rl4VJaUQ:hover .ApHDJFJGYUaGTgzMeIKZ[data-is-root=\\\"true\\\"] .mLz637Atn0jZXey6Rx4v:nth-child(2)::before {\\n\\tcolor: white;\\n}\\n\\n\\n.k2EIh8YlFvp9sBuklSxx {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 50%;\\n\\ttransform: translateX(-50%);\\n\\tfont-size: 50%;\\n}\\n\\n.CoLZlKR1WcMrFd9XhDMC:hover, .PpMmKpJfEi37Ldw7AeBT:hover {\\n\\tbackground-color: var(--hover-selection);\\n\\ttransition: 200ms;\\n\\tz-index: 1;\\n}\\n.CoLZlKR1WcMrFd9XhDMC:hover .DejZXCvvhJILPbs9Q8ht, .CoLZlKR1WcMrFd9XhDMC:hover .GliE4Ybwli9X6TNTjD1_ {\\n\\tcolor: var(--key-color-hover);\\n}\\n.CoLZlKR1WcMrFd9XhDMC > .DejZXCvvhJILPbs9Q8ht {\\n\\tpadding: 5px;\\n}\\n\\n.mLz637Atn0jZXey6Rx4v {\\n\\tdisplay: inline-flex;\\n}\\n\\n[data-simple=\\\"true\\\"] { font-size: 140%; }\\n[data-long=\\\"true\\\"] { font-size: 60%; }\\n\\n.ApHDJFJGYUaGTgzMeIKZ:not([data-is-root=\\\"true\\\"])::before { content: '('; opacity: 0.4; font-weight: bold; margin: 2px; }\\n.ApHDJFJGYUaGTgzMeIKZ:not([data-is-root=\\\"true\\\"])::after { content: ')'; opacity: 0.4; font-weight: bold; margin: 2px; }\\n.ApHDJFJGYUaGTgzMeIKZ:not([data-is-root=\\\"true\\\"]) .mLz637Atn0jZXey6Rx4v:not(:last-child)::after { content: ','; }\\n\\n.DejZXCvvhJILPbs9Q8ht {\\n\\tcursor: default;\\n\\tpadding: 0px 4px;\\n\\tmargin-left: -2px;\\n\\tmargin-right: -2px;\\n}\\n\\n.CT4uGhwl8sY0LwT3p39g .DejZXCvvhJILPbs9Q8ht {\\n\\tcursor: pointer;\\n\\tdisplay: inline-block;\\n\\tbox-sizing: content-box;\\n\\tmin-width: 0.5em;\\n\\ttext-align: center;\\n\\tborder-radius: 4px;\\n}\\n.CoLZlKR1WcMrFd9XhDMC .DejZXCvvhJILPbs9Q8ht:hover {\\n\\tbackground-color: white !important;\\n\\tcolor: var(--hover-selection) !important;\\n\\tborder-radius: 4px !important;\\n}\\n\\n.DejZXCvvhJILPbs9Q8ht * {\\n\\tpointer-events: none;\\n}\\n\\n.OsA2qRpHoDPcN93o_TUX {\\n\\t/* display: inline-block; */\\n\\tmargin: 0 5px;\\n\\tfont-family: Quicksand, avenir, sans-serif;\\n\\tfont-size: 110%;\\n}\\n.OsA2qRpHoDPcN93o_TUX .mLz637Atn0jZXey6Rx4v {\\n\\talign-items: center;\\n\\tgap: 6px;\\n}\\n.OsA2qRpHoDPcN93o_TUX .DejZXCvvhJILPbs9Q8ht {\\n\\talign-items: center;\\n\\tpadding: 6px 12px;\\n\\tborder-radius: 5px;\\n\\tcolor: var(--key-color-base);\\n\\tborder-bottom: .15em dotted var(--key-color-base);\\n\\tborder-radius: 0;\\n}\\n\\n.OsA2qRpHoDPcN93o_TUX .DejZXCvvhJILPbs9Q8ht:hover {\\n\\tbackground-color: var(--hover-selection);\\n\\tborder-radius: 5px;\\n\\tcolor: white;\\n\\tcursor: pointer;\\n}\\n\\n.DejZXCvvhJILPbs9Q8ht code+*::before {\\n\\tcontent: \\\"|\\\";\\n\\tbackground-color: transparent;\\n\\tmargin: auto 5px;\\n}\\n\\n.GliE4Ybwli9X6TNTjD1_ {\\n position: absolute;\\n top: 0;\\n left: 0;\\n font-size: 10px;\\n padding: 2px;\\n opacity: 0.8;\\n}\\n\\n.GliE4Ybwli9X6TNTjD1_:hover {\\n cursor: pointer;\\n color: var(--hover-selection) !important;\\n background-color: var(--key-bg-hover);\\n border-radius: 5px 0;\\n opacity: 1;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/Keyboard/Keys/styles.module.css\"],\"names\":[],\"mappings\":\"AAAA;CACC,kBAAkB;CAClB,aAAa;CACb,uBAAuB;CACvB,mBAAmB;;CAEnB,0CAA0C;;CAE1C,+DAA+D;CAC/D,WAAW;CACX,YAAY;;CAEZ,eAAe;CACf,kBAAkB;AACnB;;AAEA,6CAAe,eAAe,EAAE;AAChC;CACC,oBAAoB;CACpB,YAAY;CACZ,gCAAgC;AACjC;;;AAGA;;CAEC,sDAAsD;CACtD,0BAA0B;CAC1B,6BAA6B;CAC7B,iBAAiB;AAClB;;AAEA;CACC,kBAAkB;CAClB,SAAS;CACT,WAAW;CACX,cAAc;;CAEd,gEAAiD;AAClD;AACA;CACC,uBAAuB;AACxB;;AAEA;CACC,KAAK,6BAA6B;CAClC,OAAO,gCAAgC;AACxC;;AAEA;;;CAGC,4BAA4B;CAC5B,6BAA6B;CAC7B,2CAA2C;CAC3C,0BAA0B;AAC3B;;;AAGA;CACC,4BAA4B;CAC5B,oCAAoC;AACrC;;AAEA;CACC,mBAAmB;CACnB,oCAAoC;CACpC,4BAA4B;AAC7B;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB,oCAAoC;CACpC,4BAA4B;AAC7B;;AAEA;CACC,SAAS;CACT,2BAA2B;AAC5B;AACA;CACC,aAAa;CACb,sBAAsB;AACvB;AACA;CACC,YAAY;CACZ,eAAe;CACf,iBAAiB;AAClB;AACA;CACC,YAAY;CACZ,eAAe;CACf,iBAAiB;AAClB;AACA;;CAEC,YAAY;AACb;;;AAGA;CACC,kBAAkB;CAClB,MAAM;CACN,SAAS;CACT,2BAA2B;CAC3B,cAAc;AACf;;AAEA;CACC,wCAAwC;CACxC,iBAAiB;CACjB,UAAU;AACX;AACA;CACC,6BAA6B;AAC9B;AACA;CACC,YAAY;AACb;;AAEA;CACC,oBAAoB;AACrB;;AAEA,uBAAuB,eAAe,EAAE;AACxC,qBAAqB,cAAc,EAAE;;AAErC,2DAA6C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE;AACzG,0DAA4C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE;AACxG,iGAAoE,YAAY,EAAE;;AAElF;CACC,eAAe;CACf,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,eAAe;CACf,qBAAqB;CACrB,uBAAuB;CACvB,gBAAgB;CAChB,kBAAkB;CAClB,kBAAkB;AACnB;AACA;CACC,kCAAkC;CAClC,wCAAwC;CACxC,6BAA6B;AAC9B;;AAEA;CACC,oBAAoB;AACrB;;AAEA;CACC,2BAA2B;CAC3B,aAAa;CACb,0CAA0C;CAC1C,eAAe;AAChB;AACA;CACC,mBAAmB;CACnB,QAAQ;AACT;AACA;CACC,mBAAmB;CACnB,iBAAiB;CACjB,kBAAkB;CAClB,4BAA4B;CAC5B,iDAAiD;CACjD,gBAAgB;AACjB;;AAEA;CACC,wCAAwC;CACxC,kBAAkB;CAClB,YAAY;CACZ,eAAe;AAChB;;AAEA;CACC,YAAY;CACZ,6BAA6B;CAC7B,gBAAgB;AACjB;;AAEA;EACE,kBAAkB;EAClB,MAAM;EACN,OAAO;EACP,eAAe;EACf,YAAY;EACZ,YAAY;AACd;;AAEA;EACE,eAAe;EACf,wCAAwC;EACxC,qCAAqC;EACrC,oBAAoB;EACpB,UAAU;AACZ\",\"sourcesContent\":[\".key {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\talign-items: center;\\n\\n\\tfont-family: Quicksand, avenir, sans-serif;\\n\\n\\t/* TODO: remove this once I have a wrapper with size defaults */\\n\\twidth: 65px;\\n\\theight: 65px;\\n\\n\\tfont-size: 110%;\\n\\tborder-radius: 5px;\\n}\\n\\n.key.unified { cursor: pointer; }\\n.key.unified * {\\n\\tpointer-events: none;\\n\\tborder: none;\\n\\ttext-decoration: none !important;\\n}\\n\\n\\n.selectable:not(:hover) .missingValue,\\n.extracted:not(:hover) .code.missingValue {\\n\\ttext-decoration: underline wavy var(--error-highlight);\\n\\ttext-underline-offset: 4px;\\n\\tcolor: var(--error-highlight);\\n\\tfont-weight: bold;\\n}\\n\\n.missing {\\n\\tposition: absolute;\\n\\tleft: 2px;\\n\\tbottom: 2px;\\n\\tfont-size: 80%;\\n\\n\\tanimation: pulse ease-in-out 1s alternate-reverse;\\n}\\n.missing:hover {\\n\\tcolor: rgb(255, 225, 0);\\n}\\n\\n@keyframes pulse {\\n\\t0% { color: var(--key-color-base) }\\n\\t100% { color: var(--key-color-extreme) }\\n}\\n\\n.key:hover .code,\\n.key:hover .code :before,\\n.key:hover .behaviour-binding {\\n\\tborder-bottom-left-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n\\ttext-decoration: underline dotted white 2px;\\n\\ttext-underline-offset: 4px;\\n}\\n\\n\\n.keyDefaultTheme {\\n\\tcolor: var(--key-color-base);\\n\\tbackground-color: var(--key-bg-base);\\n}\\n\\n.encoder {\\n\\tborder-radius: 100%;\\n\\tbackground-color: var(--key-bg-base);\\n\\tcolor: var(--key-color-base);\\n}\\n\\n.encoder2 {\\n\\twidth: 80px;\\n\\theight: 80px;\\n\\tborder-radius: 100%;\\n\\tbackground-color: var(--key-bg-base);\\n\\tcolor: var(--key-color-base);\\n}\\n\\n.encoder2 .behaviour-binding {\\n\\tleft: 50%;\\n\\ttransform: translateX(-50%);\\n}\\n.encoder2 .params[data-is-root=\\\"true\\\"] {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n.encoder2 .params[data-is-root=\\\"true\\\"] .param:first-child::before {\\n\\tcontent: \\\"⟳\\\";\\n\\tfont-size: 140%;\\n\\tfont-weight: bold;\\n}\\n.encoder2 .params[data-is-root=\\\"true\\\"] .param:nth-child(2)::before {\\n\\tcontent: \\\"⟲\\\";\\n\\tfont-size: 140%;\\n\\tfont-weight: bold;\\n}\\n.encoder2:hover .params[data-is-root=\\\"true\\\"] .param:first-child::before,\\n.encoder2:hover .params[data-is-root=\\\"true\\\"] .param:nth-child(2)::before {\\n\\tcolor: white;\\n}\\n\\n\\n.encoderDirection {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 50%;\\n\\ttransform: translateX(-50%);\\n\\tfont-size: 50%;\\n}\\n\\n.key:hover, .encoder:hover {\\n\\tbackground-color: var(--hover-selection);\\n\\ttransition: 200ms;\\n\\tz-index: 1;\\n}\\n.key:hover .code, .key:hover .behaviour-binding {\\n\\tcolor: var(--key-color-hover);\\n}\\n.key > .code {\\n\\tpadding: 5px;\\n}\\n\\n.param {\\n\\tdisplay: inline-flex;\\n}\\n\\n[data-simple=\\\"true\\\"] { font-size: 140%; }\\n[data-long=\\\"true\\\"] { font-size: 60%; }\\n\\n.params:not([data-is-root=\\\"true\\\"])::before { content: '('; opacity: 0.4; font-weight: bold; margin: 2px; }\\n.params:not([data-is-root=\\\"true\\\"])::after { content: ')'; opacity: 0.4; font-weight: bold; margin: 2px; }\\n.params:not([data-is-root=\\\"true\\\"]) .param:not(:last-child)::after { content: ','; }\\n\\n.code {\\n\\tcursor: default;\\n\\tpadding: 0px 4px;\\n\\tmargin-left: -2px;\\n\\tmargin-right: -2px;\\n}\\n\\n.selectable .code {\\n\\tcursor: pointer;\\n\\tdisplay: inline-block;\\n\\tbox-sizing: content-box;\\n\\tmin-width: 0.5em;\\n\\ttext-align: center;\\n\\tborder-radius: 4px;\\n}\\n.key .code:hover {\\n\\tbackground-color: white !important;\\n\\tcolor: var(--hover-selection) !important;\\n\\tborder-radius: 4px !important;\\n}\\n\\n.code * {\\n\\tpointer-events: none;\\n}\\n\\n.extracted {\\n\\t/* display: inline-block; */\\n\\tmargin: 0 5px;\\n\\tfont-family: Quicksand, avenir, sans-serif;\\n\\tfont-size: 110%;\\n}\\n.extracted .param {\\n\\talign-items: center;\\n\\tgap: 6px;\\n}\\n.extracted .code {\\n\\talign-items: center;\\n\\tpadding: 6px 12px;\\n\\tborder-radius: 5px;\\n\\tcolor: var(--key-color-base);\\n\\tborder-bottom: .15em dotted var(--key-color-base);\\n\\tborder-radius: 0;\\n}\\n\\n.extracted .code:hover {\\n\\tbackground-color: var(--hover-selection);\\n\\tborder-radius: 5px;\\n\\tcolor: white;\\n\\tcursor: pointer;\\n}\\n\\n.code code+*::before {\\n\\tcontent: \\\"|\\\";\\n\\tbackground-color: transparent;\\n\\tmargin: auto 5px;\\n}\\n\\n.behaviour-binding {\\n position: absolute;\\n top: 0;\\n left: 0;\\n font-size: 10px;\\n padding: 2px;\\n opacity: 0.8;\\n}\\n\\n.behaviour-binding:hover {\\n cursor: pointer;\\n color: var(--hover-selection) !important;\\n background-color: var(--key-bg-hover);\\n border-radius: 5px 0;\\n opacity: 1;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"key\": \"CoLZlKR1WcMrFd9XhDMC\",\n\t\"unified\": \"MZMfZSmJbwqqfp28UUOi\",\n\t\"selectable\": \"CT4uGhwl8sY0LwT3p39g\",\n\t\"missingValue\": \"UNzQquWsoIanOpIN0Q9L\",\n\t\"extracted\": \"OsA2qRpHoDPcN93o_TUX\",\n\t\"code\": \"DejZXCvvhJILPbs9Q8ht\",\n\t\"missing\": \"Y5EVt8b0BaXNd9uLxhfh\",\n\t\"pulse\": \"sYr3l9y03JxO_2AP73jr\",\n\t\"behaviour-binding\": \"GliE4Ybwli9X6TNTjD1_\",\n\t\"keyDefaultTheme\": \"huQDP3GbTLThbVIP8wFp\",\n\t\"encoder\": \"PpMmKpJfEi37Ldw7AeBT\",\n\t\"encoder2\": \"_F1Vep3btfY3Rl4VJaUQ\",\n\t\"params\": \"ApHDJFJGYUaGTgzMeIKZ\",\n\t\"param\": \"mLz637Atn0jZXey6Rx4v\",\n\t\"encoderDirection\": \"k2EIh8YlFvp9sBuklSxx\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sP2kDRoTZElZUTNHq033 {\\n\\twidth: 300px;\\n\\tbackground-color: var(--dialog-bg);\\n}\\n\\n.yaxqlR_GEWJ1lBISL3_N {\\n min-width: 300px;\\n\\tpadding: 15px\\n}\\n.yaxqlR_GEWJ1lBISL3_N input[type=\\\"text\\\"] {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 30px;\\n\\tline-height: 30px;\\n\\n\\tfont-size: 120%;\\n\\tmargin: 0;\\n\\tpadding: 4px;\\n\\tborder: none;\\n\\tborder-radius: 4px;\\n box-sizing: border-box;\\n}\\nul.inAS9Qunkf3g5K3xz6o6 {\\n\\tposition: relative;\\n\\tfont-family: monospace;\\n\\tlist-style-position: inside;\\n\\tlist-style-type: none;\\n\\tmax-height: 300px;\\n\\toverflow: scroll;\\n\\tpadding: 4px;\\n margin: 4px 0;\\n\\tbackground: rgba(0, 0, 0, 0.75);\\n\\tborder-radius: 4px;\\n}\\n.inAS9Qunkf3g5K3xz6o6 li {\\n\\tcursor: pointer;\\n\\tcolor: white;\\n\\tpadding: 5px;\\n}\\n.inAS9Qunkf3g5K3xz6o6 li:hover, .inAS9Qunkf3g5K3xz6o6 li.BL7Cxrn_efblQXY3W1Sw {\\n\\tbackground: white;\\n\\tcolor: black;\\n}\\n.inAS9Qunkf3g5K3xz6o6 li b { color: dodgerblue; }\\n.inAS9Qunkf3g5K3xz6o6 li .uld0XaeoQaQJJwp0LT0X {\\n\\tfont-style: italic;\\n\\tfont-size: 90%;\\n\\tmargin: 0;\\n\\tcolor: gray;\\n}\\n\\n.pqiZQublKXvmnT_ESDxQ {\\n font-size: 10px;\\n}\\n\\n.pqiZQublKXvmnT_ESDxQ a {\\n color: var(--selection);\\n border-bottom: 1px dotted var(--selection);\\n cursor: pointer;\\n}\\n\\n.ECUs4g2j1rekP4xxgQDr {\\n position: relative;\\n}\\n.yaxqlR_GEWJ1lBISL3_N .ECUs4g2j1rekP4xxgQDr input {\\n padding-left: 30px;\\n}\\n\\n.xDUAgQZeBp0TZSOqCwHm {\\n position: absolute;\\n\\ttop: 50%;\\n\\tleft: 10px;\\n\\ttransform: translateY(-50%);\\n\\tpointer-events: none;\\n}\\n.eY5zRl49sESLjXmizMEP {\\n position: absolute;\\n\\ttop: 50%;\\n\\tright: 10px;\\n\\ttransform: translateY(-50%);\\n\\tcursor: pointer;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/ValuePicker/style.module.css\"],\"names\":[],\"mappings\":\"AAAA;CACC,YAAY;CACZ,kCAAkC;AACnC;;AAEA;EACE,gBAAgB;CACjB;AACD;AACA;CACC,cAAc;CACd,WAAW;CACX,YAAY;CACZ,iBAAiB;;CAEjB,eAAe;CACf,SAAS;CACT,YAAY;CACZ,YAAY;CACZ,kBAAkB;EACjB,sBAAsB;AACxB;AACA;CACC,kBAAkB;CAClB,sBAAsB;CACtB,2BAA2B;CAC3B,qBAAqB;CACrB,iBAAiB;CACjB,gBAAgB;CAChB,YAAY;EACX,aAAa;CACd,+BAA+B;CAC/B,kBAAkB;AACnB;AACA;CACC,eAAe;CACf,YAAY;CACZ,YAAY;AACb;AACA;CACC,iBAAiB;CACjB,YAAY;AACb;AACA,6BAAgB,iBAAiB,EAAE;AACnC;CACC,kBAAkB;CAClB,cAAc;CACd,SAAS;CACT,WAAW;AACZ;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,uBAAuB;EACvB,0CAA0C;EAC1C,eAAe;AACjB;;AAEA;EACE,kBAAkB;AACpB;AACA;EACE,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;CACnB,QAAQ;CACR,UAAU;CACV,2BAA2B;CAC3B,oBAAoB;AACrB;AACA;EACE,kBAAkB;CACnB,QAAQ;CACR,WAAW;CACX,2BAA2B;CAC3B,eAAe;AAChB\",\"sourcesContent\":[\".dialog {\\n\\twidth: 300px;\\n\\tbackground-color: var(--dialog-bg);\\n}\\n\\n.dialogWrapper {\\n min-width: 300px;\\n\\tpadding: 15px\\n}\\n.dialogWrapper input[type=\\\"text\\\"] {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 30px;\\n\\tline-height: 30px;\\n\\n\\tfont-size: 120%;\\n\\tmargin: 0;\\n\\tpadding: 4px;\\n\\tborder: none;\\n\\tborder-radius: 4px;\\n box-sizing: border-box;\\n}\\nul.results {\\n\\tposition: relative;\\n\\tfont-family: monospace;\\n\\tlist-style-position: inside;\\n\\tlist-style-type: none;\\n\\tmax-height: 300px;\\n\\toverflow: scroll;\\n\\tpadding: 4px;\\n margin: 4px 0;\\n\\tbackground: rgba(0, 0, 0, 0.75);\\n\\tborder-radius: 4px;\\n}\\n.results li {\\n\\tcursor: pointer;\\n\\tcolor: white;\\n\\tpadding: 5px;\\n}\\n.results li:hover, .results li.highlighted {\\n\\tbackground: white;\\n\\tcolor: black;\\n}\\n.results li b { color: dodgerblue; }\\n.results li .description {\\n\\tfont-style: italic;\\n\\tfont-size: 90%;\\n\\tmargin: 0;\\n\\tcolor: gray;\\n}\\n\\n.choices-counter {\\n font-size: 10px;\\n}\\n\\n.choices-counter a {\\n color: var(--selection);\\n border-bottom: 1px dotted var(--selection);\\n cursor: pointer;\\n}\\n\\n.searchWrapper {\\n position: relative;\\n}\\n.dialogWrapper .searchWrapper input {\\n padding-left: 30px;\\n}\\n\\n.searchIcon {\\n position: absolute;\\n\\ttop: 50%;\\n\\tleft: 10px;\\n\\ttransform: translateY(-50%);\\n\\tpointer-events: none;\\n}\\n.clearSearchIcon {\\n position: absolute;\\n\\ttop: 50%;\\n\\tright: 10px;\\n\\ttransform: translateY(-50%);\\n\\tcursor: pointer;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"dialog\": \"sP2kDRoTZElZUTNHq033\",\n\t\"dialogWrapper\": \"yaxqlR_GEWJ1lBISL3_N\",\n\t\"results\": \"inAS9Qunkf3g5K3xz6o6\",\n\t\"highlighted\": \"BL7Cxrn_efblQXY3W1Sw\",\n\t\"description\": \"uld0XaeoQaQJJwp0LT0X\",\n\t\"choices-counter\": \"pqiZQublKXvmnT_ESDxQ\",\n\t\"searchWrapper\": \"ECUs4g2j1rekP4xxgQDr\",\n\t\"searchIcon\": \"xDUAgQZeBp0TZSOqCwHm\",\n\t\"clearSearchIcon\": \"eY5zRl49sESLjXmizMEP\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./styles.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./style.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./style.module.css\";\n export default content && content.locals ? content.locals : undefined;\n"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","ActionButton","children","secondary","className","props","styles","join","defaultProps","Tip","classNames","Icon","name","KeycodeBindNode","node","onSelect","expanded","handleClick","useCallback","event","stopPropagation","type","codes","useMemo","map","treeToSequence","key","at","codesSerialized","slice","reduce","serialized","mod","code","codeLabels","renderSource","label","i","Fragment","labels","length","title","getSourceTitle","display","description","missing","source","value","_isPlaceholder","content","compact","onClick","tree","params","sequenceToTree","seq","h","s","b","handleSelectParams","isEmpty","some","v","bgStyle","backgroundColor","border","boxSizing","BindValue","style","GenericBindNode","get","BindParamlist","slots","BindParam","slot","BindComponent","helper","HueSatValBindNode","root","wrapperProps","propTypes","PropTypes","bindPropTypes","isRequired","NullKey","displayName","text","symbol","toString","faIcon","Source","icon","Binding","context","hideBehaviour","paramIndex","onUpdate","useBindingEditor","behavior","behaviorParams","bindTree","bindTreeParams","editing","invalid","selectNodeForEditing","clearEditing","handleUpdateBindValue","isSimple","isComplex","behaviour","prompt","createPromptMessage","searchKey","onCancel","enumOption","param","enum","raw","nodeShape","bindNode","binding","useContext","SearchContext","sources","useState","setEditing","hydrateTree","paramSlice","bind","behaviours","getBindingSlots","behaviorParameters","index","makeIndex","hasErrors","nodeIndex","indexOf","handleUpdateTree","updated","cloneDeep","targetNode","forEach","pick","handleUpdateParams","handleUpdateNode","Number","oldAdditionalParams","additionalParams","splice","newParams","p","push","state","callbacks","traverse","normalized","first","shortSymbol","behaviourParams","isLongSymbol","isMultiParam","isNestedParam","promptMapping","layer","keycode","mergedGlyphs","hydrateNode","as","defines","isNaN","find","getSourceValue","validateDevicetreeNodeName","match","validateDevicetreeIdentifier","validateDevicetreeLabel","Key","keyWrapperProps","selectable","themeClass","rest","classes","cycle","array","next","ResultList","results","renderResult","cursorIndex","setCursorIndex","listRef","useRef","moveCursor","initial","offset","element","scroll","height","top","bottom","selector","current","querySelector","offsetParent","scrollTop","offsetHeight","offsetTop","scrollHeight","scrollIntoView","handleHighlightNext","handleHightightPrev","handleSelectActive","handleKeyDown","target","nodeName","action","ArrowDown","ArrowUp","Enter","preventDefault","useEffect","document","body","addEventListener","removeEventListener","ref","result","onDoubleClick","onMouseOver","focusInput","focus","select","SearchFilter","choices","searchKeys","renderResults","initialQuery","useSearch","query","setQuery","keys","limit","fuzzysort","obj","search","handleKeyPress","onChange","pickerPropTypes","searchThreshold","EnumPicker","getSearchTargets","GenericPicker","renderSearchResult","HSBPicker","l","hsl","setHsl","handleConfirm","Math","round","justifyContent","color","textAlign","leftModifiers","rightModifiers","modifiersMap","LS","short","full","LC","LA","LG","RS","RC","RA","RG","noDeselectMessage","ModifiersRow","selected","implicit","row","includes","checked","disabled","e","without","ModifiersPicker","onKeyup","setHeld","handleKeyUp","modifier","modKey","Control","Shift","Alt","Meta","side","KeyboardEvent","DOM_KEY_LOCATION_LEFT","DOM_KEY_LOCATION_RIGHT","location","mapDomModifier","held","setTimeout","focusOut","useModifierToggle","titleResult","dangerouslySetInnerHTML","__html","aliases","renderSymbol","resultListStyle","KeycodePicker","initialModifiers","selectedModifiers","setSelectedModifiers","selectedKeycode","setSelectedKeycode","filter","hydrated","modifiers","handleSelectKeycode","gap","KeyWrapper","marginTop","RawValuePicker","initialValue","setValue","onKeyDown","LayerPicker","layers","useSelector","selectLayers","ValuePicker","pickerProps","PickerComponent","HueSatValPicker","ValuePickerDialog","Modal","onDismiss","DialogBox","dismissText","freeForm","___CSS_LOADER_EXPORT___","module","id","locals"],"sourceRoot":""} \ No newline at end of file
diff --git a/index.html b/index.html
index 25e84e5..c9dc425 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="https://nickcoutsos.github.io/keymap-editor/keycap.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>Keymap Editor</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Nunito:wght@700&family=Quicksand:wght@500&display=swap" rel="stylesheet"><meta name="description" content="A web-based editor for ZMK Keymaps"><meta property="og:url" content="https://nickcoutsos.github.io/keymap-editor"><meta property="og:type" content="website"><meta property="og:title" content="Keymap Editor"><meta property="og:description" content="A web-based editor for ZMK Keymaps"><meta property="og:image" content="https://nickcoutsos.github.io/keymap-editor/og-banner.png"><meta name="twitter:card" content="summary_large_image"><meta property="twitter:domain" content="nickcoutsos.github.io"><meta property="twitter:url" content="https://nickcoutsos.github.io/keymap-editor"><meta name="twitter:title" content="Keymap Editor"><meta name="twitter:description" content="A web-based editor for ZMK Keymaps"><meta name="twitter:image" content="https://nickcoutsos.github.io/keymap-editor/og-banner.png"><script defer="defer" src="runtime.a40c24775970b5e2279a.js"></script><script defer="defer" src="shared.de35a9113a55f74d95ad.js"></script><script defer="defer" src="vendors.efd274a1d4a4371c9b0d.js"></script><script defer="defer" src="react.0b7d83a58560e2038899.js"></script><script defer="defer" src="main.696e6442329cdd2bc627.js"></script></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="app-root"></div><div id="modal-root"></div></body></html> \ No newline at end of file
+<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="https://nickcoutsos.github.io/keymap-editor/keycap.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>Keymap Editor</title><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Nunito:wght@700&family=Quicksand:wght@500&display=swap" rel="stylesheet"><meta name="description" content="A web-based editor for ZMK Keymaps"><meta property="og:url" content="https://nickcoutsos.github.io/keymap-editor"><meta property="og:type" content="website"><meta property="og:title" content="Keymap Editor"><meta property="og:description" content="A web-based editor for ZMK Keymaps"><meta property="og:image" content="https://nickcoutsos.github.io/keymap-editor/og-banner.png"><meta name="twitter:card" content="summary_large_image"><meta property="twitter:domain" content="nickcoutsos.github.io"><meta property="twitter:url" content="https://nickcoutsos.github.io/keymap-editor"><meta name="twitter:title" content="Keymap Editor"><meta name="twitter:description" content="A web-based editor for ZMK Keymaps"><meta name="twitter:image" content="https://nickcoutsos.github.io/keymap-editor/og-banner.png"><script defer="defer" src="runtime.468f843980ecae0d5a57.js"></script><script defer="defer" src="shared.de35a9113a55f74d95ad.js"></script><script defer="defer" src="vendors.efd274a1d4a4371c9b0d.js"></script><script defer="defer" src="react.0b7d83a58560e2038899.js"></script><script defer="defer" src="main.696e6442329cdd2bc627.js"></script></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="app-root"></div><div id="modal-root"></div></body></html> \ No newline at end of file
diff --git a/runtime.468f843980ecae0d5a57.js b/runtime.468f843980ecae0d5a57.js
new file mode 100644
index 0000000..f25d87c
--- /dev/null
+++ b/runtime.468f843980ecae0d5a57.js
@@ -0,0 +1,2 @@
+!function(){"use strict";var e,c,s,a,o,d={},l={};function y(e){var c=l[e];if(void 0!==c)return c.exports;var s=l[e]={id:e,loaded:!1,exports:{}};return d[e].call(s.exports,s,s.exports,y),s.loaded=!0,s.exports}y.m=d,e=[],y.O=function(c,s,a,o){if(!s){var d=1/0;for(b=0;b<e.length;b++){s=e[b][0],a=e[b][1],o=e[b][2];for(var l=!0,k=0;k<s.length;k++)(!1&o||d>=o)&&Object.keys(y.O).every((function(e){return y.O[e](s[k])}))?s.splice(k--,1):(l=!1,o<d&&(d=o));if(l){e.splice(b--,1);var f=a();void 0!==f&&(c=f)}}return c}o=o||0;for(var b=e.length;b>0&&e[b-1][2]>o;b--)e[b]=e[b-1];e[b]=[s,a,o]},y.n=function(e){var c=e&&e.__esModule?function(){return e.default}:function(){return e};return y.d(c,{a:c}),c},s=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},y.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);y.r(o);var d={};c=c||[null,s({}),s([]),s(s)];for(var l=2&a&&e;"object"==typeof l&&!~c.indexOf(l);l=s(l))Object.getOwnPropertyNames(l).forEach((function(c){d[c]=function(){return e[c]}}));return d.default=function(){return e},y.d(o,d),o},y.d=function(e,c){for(var s in c)y.o(c,s)&&!y.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:c[s]})},y.f={},y.e=function(e){return Promise.all(Object.keys(y.f).reduce((function(c,s){return y.f[s](e,c),c}),[]))},y.u=function(e){return({68:"locales/keys_ro-keycodes",129:"locales/keys_lt_ibm-keycodes",308:"locales/keys_be-keycodes",389:"locales/keys_mn-keycodes",398:"locales/keys_lo-keycodes",421:"locales/keys_bg_latin-keycodes",422:"locales/keys_th_pattachote-keycodes",539:"locales/keys_khb_tai_le-keycodes",578:"locales/keys_sr_latin-keycodes",749:"locales/keys_dyu-keycodes",771:"locales/keys_es-keycodes",814:"locales/keys_tzm-keycodes",819:"locales/keys_fa_standard-keycodes",833:"locales/keys_it_142-keycodes",920:"locales/keys_pl_programmers-keycodes",951:"locales/keys_kk-keycodes",1156:"locales/keys_man-keycodes",1315:"locales/keys_bs-keycodes",1343:"locales/keys_en_gb_extended-keycodes",1480:"locales/keys_bn-keycodes",1507:"locales/keys_de_ibm-keycodes",1514:"locales/keys_fr_swiss-keycodes",1545:"locales/keys_el-keycodes",1547:"locales/keys_ml-keycodes",1671:"locales/keys_lv-keycodes",1720:"locales/keys_sk_qwerty-keycodes",1808:"locales/keys_de_belgian_period-keycodes",1872:"locales/keys_pt_abnt-keycodes",1936:"locales/keys_ckb-keycodes",2015:"locales/keys_hy-keycodes",2231:"locales/keys_sr-keycodes",2247:"locales/keys_mr-keycodes",2271:"locales/keys_nl_period-keycodes",2275:"locales/keys_tk-keycodes",2383:"locales/keys_or-keycodes",2408:"locales/keys_bg-keycodes",2602:"locales/keys_uk-keycodes",2619:"locales/keys_syr_phonetic-keycodes",2621:"locales/keys_ka_qwerty-keycodes",2650:"locales/keys_ar_azerty-keycodes",2659:"locales/keys_cs_qwerty-keycodes",2787:"locales/keys_gu-keycodes",2835:"locales/keys_tmh-keycodes",2947:"locales/keys_us_international-keycodes",2982:"locales/keys_ha-keycodes",3033:"locales/keys_es_variation-keycodes",3194:"locales/keys_mn_phags_pa-keycodes",3268:"locales/keys_km_nida-keycodes",3282:"locales/keys_bo-keycodes",3322:"locales/keys_hu_101-keycodes",3359:"locales/keys_de-keycodes",3362:"locales/keys_dvorak_right-keycodes",3393:"locales/keys_tg-keycodes",3474:"locales/keys_ug-keycodes",3618:"locales/keys_haw-keycodes",3647:"locales/keys_az_standard-keycodes",3687:"locales/keys_ka-keycodes",3735:"locales/keys_cs_programmers-keycodes",3743:"locales/keys_el_220-keycodes",3746:"locales/keys_lt_standard-keycodes",3880:"locales/keys_mt_101-keycodes",3893:"locales/keys_dz-keycodes",4036:"locales/keys_ta-keycodes",4156:"locales/keys_hu-keycodes",4257:"locales/keys_tn-keycodes",4263:"locales/keys_el_319-keycodes",4289:"locales/keys_gn-keycodes",4296:"locales/keys_el_polytonic-keycodes",4443:"locales/keys_bug-keycodes",4465:"locales/keys_it-keycodes",4491:"locales/keys_fr_canadian_french-keycodes",4595:"locales/keys_bg_phonetic-keycodes",4670:"locales/keys_tr_f-keycodes",4688:"locales/keys_chr_phonetic-keycodes",4717:"locales/keys_sv_sami-keycodes",4777:"locales/keys_syr-keycodes",4795:"locales/keys_ro_programmers-keycodes",4821:"locales/keys_pt-keycodes",4824:"locales/keys_te-keycodes",4887:"locales/keys_lis_standard-keycodes",4892:"locales/keys_ne-keycodes",4919:"locales/keys_nb-keycodes",5015:"locales/keys_my-keycodes",5303:"locales/keys_tr-keycodes",5332:"locales/keys_ba-keycodes",5354:"locales/keys_srb-keycodes",5485:"locales/keys_dv-keycodes",5604:"locales/keys_is-keycodes",5606:"locales/keys_lb-keycodes",5715:"locales/keys_sl-keycodes",5821:"locales/keys_el_latin_319-keycodes",5840:"locales/keys_iu-keycodes",5842:"locales/keys_khb-keycodes",5991:"locales/keys_non-keycodes",5998:"locales/keys_yo-keycodes",6049:"locales/keys_ps-keycodes",6157:"locales/keys_dvorak-keycodes",6184:"locales/keys_de_swiss-keycodes",6392:"locales/keys_ar-keycodes",6415:"locales/keys_nl-keycodes",6429:"locales/keys_es_latin_american-keycodes",6457:"locales/keys_gd-keycodes",6684:"locales/keys_th-keycodes",6688:"locales/keys_hi-keycodes",6691:"locales/keys_da-keycodes",6710:"locales/keys_jv-keycodes",6777:"locales/keys_lv_qwerty-keycodes",6794:"locales/keys_km-keycodes",6943:"locales/keys_chr-keycodes",7022:"locales/keys_et-keycodes",7069:"locales/keys_wo-keycodes",7080:"locales/keys_uz-keycodes",7108:"locales/keys_he_standard-keycodes",7228:"locales/keys_uk_enhanced-keycodes",7289:"locales/keys_sah-keycodes",7292:"locales/keys_ru_phonetic-keycodes",7303:"locales/keys_kl-keycodes",7305:"locales/keys_tt-keycodes",7446:"locales/keys_he-keycodes",7495:"locales/keys_en_gb-keycodes",7554:"locales/keys_fr-keycodes",7568:"locales/keys_mt-keycodes",7603:"locales/keys_el_latin_220-keycodes",7686:"locales/keys_dsb_extended-keycodes",7771:"locales/keys_lt-keycodes",7803:"locales/keys_sk-keycodes",7892:"locales/keys_ig-keycodes",7950:"locales/keys_fr_belgian_period-keycodes",7994:"locales/keys_vi-keycodes",8017:"locales/keys_ar_102-keycodes",8019:"locales/keys_se-keycodes",8041:"locales/keys_mk-keycodes",8070:"locales/keys_az-keycodes",8110:"locales/keys_tmh_extended-keycodes",8119:"locales/keys_hi_traditional-keycodes",8173:"locales/keys_sq-keycodes",8185:"locales/keys_ga-keycodes",8207:"locales/keys_cs-keycodes",8216:"locales/keys_ur-keycodes",8242:"locales/keys_az_cyrillic-keycodes",8251:"locales/keys_fr_canadian_standard-keycodes",8302:"locales/keys_en_india-keycodes",8307:"locales/keys_nso-keycodes",8391:"locales/keys_pl-keycodes",8427:"locales/keys_ko-keycodes",8438:"locales/keys_la_old_italic-keycodes",8568:"locales/keys_mn_traditional-keycodes",8599:"locales/keys_fa-keycodes",8636:"locales/keys_nb_sami-keycodes",8649:"locales/keys_sv-keycodes",8699:"locales/keys_se_finland_sweden-keycodes",8706:"locales/keys_fi-keycodes",8709:"locales/keys_kn-keycodes",8793:"locales/keys_dvorak_left-keycodes",8855:"locales/keys_fr_belgian-keycodes",8945:"locales/keys_lis-keycodes",8956:"locales/keys_bm-keycodes",8971:"locales/keys_el_latin-keycodes",8986:"locales/keys_ru-keycodes",9081:"locales/keys_lv_standard-keycodes",9082:"locales/keys_as-keycodes",9112:"locales/keys_pt_abnt2-keycodes",9136:"locales/keys_hy_phonetic-keycodes",9142:"locales/keys_bn_inscript-keycodes",9176:"locales/keys_iu_latin-keycodes",9193:"locales/keys_so-keycodes",9244:"locales/keys_ky-keycodes",9414:"locales/keys_sat-keycodes",9512:"locales/keys_mi-keycodes",9586:"locales/keys_fo-keycodes",9616:"locales/keys_dsb-keycodes",9619:"locales/keys_de_belgian-keycodes",9698:"locales/keys_ka_ergonomic-keycodes",9707:"locales/keys_si-keycodes",9866:"locales/keys_fi_sami-keycodes",9893:"locales/keys_got-keycodes",9989:"locales/keys_pa-keycodes"}[e]||e)+"."+{68:"7b17882894d827d4a691",129:"93e9e7b55ff4db1b45f4",308:"e7d0c13e3ecc92b49444",389:"606dc039dbee5e7de1d4",398:"c8c541aaf844eeda8149",401:"bdae6943931998cef4fd",421:"dbb2c1733f9a7579098e",422:"666bd3a0ce35c4a274ff",539:"f13efc888eac2aa8e903",542:"b08e94331b5e117681ac",578:"04d1220d52840040f60b",727:"2919567394fbd9d07a87",749:"76b287374b8ae5f7a06c",771:"476e9ba05219d84921f3",814:"4764231c07fa0d0a04f6",819:"0795ba54cbc82dd190cf",833:"46444cf657dcf1bb1593",920:"dc595b5183e9c47ff557",951:"f0042702141cbb2ccabf",1040:"668a24817c3f3941bb2c",1156:"bb15c7631776a604bdb7",1315:"0db48f03173200e045f2",1343:"8f70c7bbb298f625412f",1480:"dd1c948a8c44aac28b53",1507:"8cada04b0e43007bb4be",1514:"649b8ed65f356fa690ac",1545:"b152a1976be0001bfb43",1547:"c246a45983470f77e595",1671:"6bdbbb20361914659d30",1720:"3328c6b7c20fbf918852",1808:"abb32a6fe65c55952158",1872:"719fd6d2cfbc98065faa",1936:"8e41309b9c19de95960a",2015:"1189ea9050bf52385110",2231:"5080f1cbf58c1317f585",2247:"3459beb60f5e45f7a659",2271:"b737428706ade1ab91ed",2275:"6c3d70cbc0a2a960dede",2383:"45d4631f706b18beb2d9",2408:"49d33aa415e8f4992f21",2602:"d7b17cf5cd894ba30b64",2619:"5153da3fbe85b2f1f7f8",2621:"bd9a8dabd0cd755853b5",2650:"a829372aef4170ca51a4",2659:"c36d1660242da4a6482d",2787:"23f639d1d9e06f080ea7",2835:"551ed1eddb65a0855ec0",2946:"972b1c0cded5c7511836",2947:"2b19227a71dd755ae4b6",2982:"36e9273f2ce6ff4f4673",3033:"b26fcf2e16e386fb33b1",3194:"8a08d0da753f48f7f95e",3268:"f3f0e12f35d6ede0f40f",3282:"01584f37d4d33ad63efb",3322:"7ebaf8ec7ac148f4669d",3359:"2b1b7a00d5f5a3f3d4d7",3362:"4b171d128973788c904e",3393:"2b68325532554cc8d8ba",3474:"d8e51748742a2c676e34",3618:"d8420dbaf5d768e5d2d4",3647:"6703ed839e825c8771d3",3687:"e750c133ca55d5c6e548",3735:"c9d93c92c6c0423a5416",3743:"ebb2429d5bbde92909c4",3746:"a4deb37dc8a93b498757",3880:"fcaa03e1df43df95ab97",3893:"c7df98614033002329af",4036:"909dd7500874d97524c9",4156:"b9b13036d2669cc053d2",4257:"f5fd10e05ad3d0536453",4263:"931dcb76dcb966d4c80f",4289:"fa48da5f908e2f1c31fc",4296:"6398e9a1092dbd966cd4",4443:"3d9b42bc9254f6af0784",4465:"f4574a240d1cc776a64d",4491:"85813c1f613b510d8c53",4595:"32f60188d0eaea679456",4670:"c00667ffdde3a68622ab",4688:"31df1ae6ad5f78bd01fc",4717:"abfe395f6284ad19bfcd",4777:"2224cbda2741be9da336",4795:"ed0ccd39951359fbbbca",4821:"ddd40fd58db42a579031",4824:"0a6f4db1962949f69a35",4887:"f052ae8bfdfdb1d513db",4892:"960290e8d85e0b47f102",4919:"4a12c76edfa94312b0ea",5015:"0f3a2242ea9f9a42c4f9",5303:"a4497d24307a9897e5b5",5332:"777b50e4b114b352d258",5354:"2e00aaedbbdc1642bb92",5485:"55a0ec07c8abbfe214b4",5604:"f11c3e2dd4430602f243",5606:"8cfe7dc5f09ec96ea95e",5634:"f56c2bafa5e611ff718e",5715:"4ef9b548b6cfc7c605f9",5821:"a4f5e6f31f799696cdaf",5840:"7e4e574c1214010c07dc",5842:"f7c89fd7bf3602a3399e",5858:"bf34e04d013932522f46",5991:"512b59c58af9c82a47d5",5998:"91c971fb3f5767c3d295",6049:"a62bb2191cc0eecda711",6157:"8b93a87cbbec10359b5d",6184:"732ddeb1a32a40e2fc3a",6392:"fa88aea6ab27afd6da50",6415:"627e38aee29608a5d6d2",6429:"b9b3578a604e51fa3455",6457:"ba688263a9c85e9843e1",6684:"1274b7cfa9914c7663c9",6688:"5d24e1f96d6a6cfefcb0",6691:"b6cb655f0aa7dcd8787b",6710:"69f4ed313d19455e88f9",6777:"dab38c8f01434d45eb86",6794:"aa4330a831430380f7ca",6849:"30183c5e1965724c1b6d",6943:"9c0653724d1cbfa9ed86",7022:"9ece5bc0d21090bf91ad",7069:"9929a74e7e92648a0f87",7080:"f083c93705b5e80e4a4e",7108:"906eeacc617750894b22",7198:"aec09ef07d003f7d7a91",7228:"0a7f301444940610aa3a",7289:"2fcc4bbd19c8e23bcfd9",7292:"364542469a1dd2fd041b",7303:"8f0ef5a9295943353ecf",7305:"ac74249c913980666520",7406:"11b0b86fb5919cd2d239",7446:"f26521f672e3d94f3c62",7495:"cb22512c8cea97bbcf19",7553:"b6c1ba6d52fa85ac8595",7554:"bdf065db03088c4a4a5d",7568:"d9f3ad26c7b8b70fc1ec",7603:"d2d72bb470a9b2e1ede0",7686:"940990bf96e9413b2e9b",7771:"9942586e9e23d5059127",7803:"8760edf191caa0f69869",7892:"86c938c7b27b9a67ef50",7950:"6fb177a4414f9a190484",7994:"c160e150f1431807c681",8017:"837d18f3c4fcf868010b",8019:"02f2f252639bb1d459b6",8041:"dae4eea51cfd6e1fbef3",8070:"27f10e0739c78ab95d16",8110:"c132517c950a214d5731",8119:"58eb56bfeb45579c084c",8173:"1776ba2cbbdeb9918f9c",8185:"ece0dc278594eee67cb1",8207:"7e346d396cf1e067b94f",8216:"bd2ef62dab7ca40f6d44",8242:"3891fea81cc045034ad4",8251:"7bcdee9a73a0eb39baaa",8302:"6b483d8d7739ff515b8f",8307:"e12dd0aad5e6a036ed3b",8371:"f3862461b21b77cd6730",8381:"171cf958a1d260f201e4",8391:"eb08511c704d549f8237",8427:"409e29315cd91dfb038b",8438:"41a503f1b2737d035a74",8568:"bf0989c363612ba74ac9",8573:"23f7e6791fc94caba204",8599:"1c088737758fa51d0a0a",8636:"48c3cab70569554b8655",8649:"519f8992d7c5b42bf4e1",8699:"6d4b2f405c48cf71aa4b",8706:"db5988f190774b8ecd7e",8709:"edbea20e0b917271d7a2",8793:"9639129fefdac959af3a",8855:"38f81f640e33d713ea2c",8873:"75782887b6b9e72b1dc9",8945:"d5a920b4e65ee30d8356",8956:"b025b7e50cad64b75370",8971:"f906bba2b2b7e87a8ae0",8986:"4ad17334f3ef911b6b0b",9081:"b6c8611601548f3554f7",9082:"35cb59b22a293243df26",9112:"7ebcaf2caf566e7902b8",9136:"3249d48fcb94ad9e44a1",9142:"8933a018c2a618e987a4",9176:"2557b40f7b4fcef345a9",9193:"e2b545b8ea15c0016312",9244:"0e4e64562de0635942ff",9414:"b9aecaa9ab601ffcc6b4",9512:"dc6d783fb73d92e5a7fb",9586:"01151d539dca32e61272",9616:"0a4f102b3e946346e2d6",9619:"b044962c66577434486e",9657:"6f4e9f754310b1969c2f",9698:"41ef3f798533a2b1c7cf",9707:"bbda1adb51b744127204",9866:"110121669330cd9e737c",9893:"4ff6eee70cdc1c6e3325",9989:"e7d2ba9eda5b0ac31cac"}[e]+".js"},y.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),y.o=function(e,c){return Object.prototype.hasOwnProperty.call(e,c)},a={},o="app:",y.l=function(e,c,s,d){if(a[e])a[e].push(c);else{var l,k;if(void 0!==s)for(var f=document.getElementsByTagName("script"),b=0;b<f.length;b++){var t=f[b];if(t.getAttribute("src")==e||t.getAttribute("data-webpack")==o+s){l=t;break}}l||(k=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,y.nc&&l.setAttribute("nonce",y.nc),l.setAttribute("data-webpack",o+s),l.src=e),a[e]=[c];var _=function(c,s){l.onerror=l.onload=null,clearTimeout(n);var o=a[e];if(delete a[e],l.parentNode&&l.parentNode.removeChild(l),o&&o.forEach((function(e){return e(s)})),c)return c(s)},n=setTimeout(_.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=_.bind(null,l.onerror),l.onload=_.bind(null,l.onload),k&&document.head.appendChild(l)}},y.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},y.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},function(){var e;y.g.importScripts&&(e=y.g.location+"");var c=y.g.document;if(!e&&c&&(c.currentScript&&(e=c.currentScript.src),!e)){var s=c.getElementsByTagName("script");s.length&&(e=s[s.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),y.p=e}(),function(){y.b=document.baseURI||self.location.href;var e={3666:0};y.f.j=function(c,s){var a=y.o(e,c)?e[c]:void 0;if(0!==a)if(a)s.push(a[2]);else if(3666!=c){var o=new Promise((function(s,o){a=e[c]=[s,o]}));s.push(a[2]=o);var d=y.p+y.u(c),l=new Error;y.l(d,(function(s){if(y.o(e,c)&&(0!==(a=e[c])&&(e[c]=void 0),a)){var o=s&&("load"===s.type?"missing":s.type),d=s&&s.target&&s.target.src;l.message="Loading chunk "+c+" failed.\n("+o+": "+d+")",l.name="ChunkLoadError",l.type=o,l.request=d,a[1](l)}}),"chunk-"+c,c)}else e[c]=0},y.O.j=function(c){return 0===e[c]};var c=function(c,s){var a,o,d=s[0],l=s[1],k=s[2],f=0;if(d.some((function(c){return 0!==e[c]}))){for(a in l)y.o(l,a)&&(y.m[a]=l[a]);if(k)var b=k(y)}for(c&&c(s);f<d.length;f++)o=d[f],y.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return y.O(b)},s=self.webpackChunkapp=self.webpackChunkapp||[];s.forEach(c.bind(null,0)),s.push=c.bind(null,s.push.bind(s))}(),y.nc=void 0}();
+//# sourceMappingURL=runtime.468f843980ecae0d5a57.js.map \ No newline at end of file
diff --git a/runtime.468f843980ecae0d5a57.js.map b/runtime.468f843980ecae0d5a57.js.map
new file mode 100644
index 0000000..fa0a2a8
--- /dev/null
+++ b/runtime.468f843980ecae0d5a57.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"runtime.468f843980ecae0d5a57.js","mappings":"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AO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KA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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///webpack/runtime/create fake namespace object","webpack:///webpack/runtime/load script","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/runtime/nonce"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"68\":\"locales/keys_ro-keycodes\",\"129\":\"locales/keys_lt_ibm-keycodes\",\"308\":\"locales/keys_be-keycodes\",\"389\":\"locales/keys_mn-keycodes\",\"398\":\"locales/keys_lo-keycodes\",\"421\":\"locales/keys_bg_latin-keycodes\",\"422\":\"locales/keys_th_pattachote-keycodes\",\"539\":\"locales/keys_khb_tai_le-keycodes\",\"578\":\"locales/keys_sr_latin-keycodes\",\"749\":\"locales/keys_dyu-keycodes\",\"771\":\"locales/keys_es-keycodes\",\"814\":\"locales/keys_tzm-keycodes\",\"819\":\"locales/keys_fa_standard-keycodes\",\"833\":\"locales/keys_it_142-keycodes\",\"920\":\"locales/keys_pl_programmers-keycodes\",\"951\":\"locales/keys_kk-keycodes\",\"1156\":\"locales/keys_man-keycodes\",\"1315\":\"locales/keys_bs-keycodes\",\"1343\":\"locales/keys_en_gb_extended-keycodes\",\"1480\":\"locales/keys_bn-keycodes\",\"1507\":\"locales/keys_de_ibm-keycodes\",\"1514\":\"locales/keys_fr_swiss-keycodes\",\"1545\":\"locales/keys_el-keycodes\",\"1547\":\"locales/keys_ml-keycodes\",\"1671\":\"locales/keys_lv-keycodes\",\"1720\":\"locales/keys_sk_qwerty-keycodes\",\"1808\":\"locales/keys_de_belgian_period-keycodes\",\"1872\":\"locales/keys_pt_abnt-keycodes\",\"1936\":\"locales/keys_ckb-keycodes\",\"2015\":\"locales/keys_hy-keycodes\",\"2231\":\"locales/keys_sr-keycodes\",\"2247\":\"locales/keys_mr-keycodes\",\"2271\":\"locales/keys_nl_period-keycodes\",\"2275\":\"locales/keys_tk-keycodes\",\"2383\":\"locales/keys_or-keycodes\",\"2408\":\"locales/keys_bg-keycodes\",\"2602\":\"locales/keys_uk-keycodes\",\"2619\":\"locales/keys_syr_phonetic-keycodes\",\"2621\":\"locales/keys_ka_qwerty-keycodes\",\"2650\":\"locales/keys_ar_azerty-keycodes\",\"2659\":\"locales/keys_cs_qwerty-keycodes\",\"2787\":\"locales/keys_gu-keycodes\",\"2835\":\"locales/keys_tmh-keycodes\",\"2947\":\"locales/keys_us_international-keycodes\",\"2982\":\"locales/keys_ha-keycodes\",\"3033\":\"locales/keys_es_variation-keycodes\",\"3194\":\"locales/keys_mn_phags_pa-keycodes\",\"3268\":\"locales/keys_km_nida-keycodes\",\"3282\":\"locales/keys_bo-keycodes\",\"3322\":\"locales/keys_hu_101-keycodes\",\"3359\":\"locales/keys_de-keycodes\",\"3362\":\"locales/keys_dvorak_right-keycodes\",\"3393\":\"locales/keys_tg-keycodes\",\"3474\":\"locales/keys_ug-keycodes\",\"3618\":\"locales/keys_haw-keycodes\",\"3647\":\"locales/keys_az_standard-keycodes\",\"3687\":\"locales/keys_ka-keycodes\",\"3735\":\"locales/keys_cs_programmers-keycodes\",\"3743\":\"locales/keys_el_220-keycodes\",\"3746\":\"locales/keys_lt_standard-keycodes\",\"3880\":\"locales/keys_mt_101-keycodes\",\"3893\":\"locales/keys_dz-keycodes\",\"4036\":\"locales/keys_ta-keycodes\",\"4156\":\"locales/keys_hu-keycodes\",\"4257\":\"locales/keys_tn-keycodes\",\"4263\":\"locales/keys_el_319-keycodes\",\"4289\":\"locales/keys_gn-keycodes\",\"4296\":\"locales/keys_el_polytonic-keycodes\",\"4443\":\"locales/keys_bug-keycodes\",\"4465\":\"locales/keys_it-keycodes\",\"4491\":\"locales/keys_fr_canadian_french-keycodes\",\"4595\":\"locales/keys_bg_phonetic-keycodes\",\"4670\":\"locales/keys_tr_f-keycodes\",\"4688\":\"locales/keys_chr_phonetic-keycodes\",\"4717\":\"locales/keys_sv_sami-keycodes\",\"4777\":\"locales/keys_syr-keycodes\",\"4795\":\"locales/keys_ro_programmers-keycodes\",\"4821\":\"locales/keys_pt-keycodes\",\"4824\":\"locales/keys_te-keycodes\",\"4887\":\"locales/keys_lis_standard-keycodes\",\"4892\":\"locales/keys_ne-keycodes\",\"4919\":\"locales/keys_nb-keycodes\",\"5015\":\"locales/keys_my-keycodes\",\"5303\":\"locales/keys_tr-keycodes\",\"5332\":\"locales/keys_ba-keycodes\",\"5354\":\"locales/keys_srb-keycodes\",\"5485\":\"locales/keys_dv-keycodes\",\"5604\":\"locales/keys_is-keycodes\",\"5606\":\"locales/keys_lb-keycodes\",\"5715\":\"locales/keys_sl-keycodes\",\"5821\":\"locales/keys_el_latin_319-keycodes\",\"5840\":\"locales/keys_iu-keycodes\",\"5842\":\"locales/keys_khb-keycodes\",\"5991\":\"locales/keys_non-keycodes\",\"5998\":\"locales/keys_yo-keycodes\",\"6049\":\"locales/keys_ps-keycodes\",\"6157\":\"locales/keys_dvorak-keycodes\",\"6184\":\"locales/keys_de_swiss-keycodes\",\"6392\":\"locales/keys_ar-keycodes\",\"6415\":\"locales/keys_nl-keycodes\",\"6429\":\"locales/keys_es_latin_american-keycodes\",\"6457\":\"locales/keys_gd-keycodes\",\"6684\":\"locales/keys_th-keycodes\",\"6688\":\"locales/keys_hi-keycodes\",\"6691\":\"locales/keys_da-keycodes\",\"6710\":\"locales/keys_jv-keycodes\",\"6777\":\"locales/keys_lv_qwerty-keycodes\",\"6794\":\"locales/keys_km-keycodes\",\"6943\":\"locales/keys_chr-keycodes\",\"7022\":\"locales/keys_et-keycodes\",\"7069\":\"locales/keys_wo-keycodes\",\"7080\":\"locales/keys_uz-keycodes\",\"7108\":\"locales/keys_he_standard-keycodes\",\"7228\":\"locales/keys_uk_enhanced-keycodes\",\"7289\":\"locales/keys_sah-keycodes\",\"7292\":\"locales/keys_ru_phonetic-keycodes\",\"7303\":\"locales/keys_kl-keycodes\",\"7305\":\"locales/keys_tt-keycodes\",\"7446\":\"locales/keys_he-keycodes\",\"7495\":\"locales/keys_en_gb-keycodes\",\"7554\":\"locales/keys_fr-keycodes\",\"7568\":\"locales/keys_mt-keycodes\",\"7603\":\"locales/keys_el_latin_220-keycodes\",\"7686\":\"locales/keys_dsb_extended-keycodes\",\"7771\":\"locales/keys_lt-keycodes\",\"7803\":\"locales/keys_sk-keycodes\",\"7892\":\"locales/keys_ig-keycodes\",\"7950\":\"locales/keys_fr_belgian_period-keycodes\",\"7994\":\"locales/keys_vi-keycodes\",\"8017\":\"locales/keys_ar_102-keycodes\",\"8019\":\"locales/keys_se-keycodes\",\"8041\":\"locales/keys_mk-keycodes\",\"8070\":\"locales/keys_az-keycodes\",\"8110\":\"locales/keys_tmh_extended-keycodes\",\"8119\":\"locales/keys_hi_traditional-keycodes\",\"8173\":\"locales/keys_sq-keycodes\",\"8185\":\"locales/keys_ga-keycodes\",\"8207\":\"locales/keys_cs-keycodes\",\"8216\":\"locales/keys_ur-keycodes\",\"8242\":\"locales/keys_az_cyrillic-keycodes\",\"8251\":\"locales/keys_fr_canadian_standard-keycodes\",\"8302\":\"locales/keys_en_india-keycodes\",\"8307\":\"locales/keys_nso-keycodes\",\"8391\":\"locales/keys_pl-keycodes\",\"8427\":\"locales/keys_ko-keycodes\",\"8438\":\"locales/keys_la_old_italic-keycodes\",\"8568\":\"locales/keys_mn_traditional-keycodes\",\"8599\":\"locales/keys_fa-keycodes\",\"8636\":\"locales/keys_nb_sami-keycodes\",\"8649\":\"locales/keys_sv-keycodes\",\"8699\":\"locales/keys_se_finland_sweden-keycodes\",\"8706\":\"locales/keys_fi-keycodes\",\"8709\":\"locales/keys_kn-keycodes\",\"8793\":\"locales/keys_dvorak_left-keycodes\",\"8855\":\"locales/keys_fr_belgian-keycodes\",\"8945\":\"locales/keys_lis-keycodes\",\"8956\":\"locales/keys_bm-keycodes\",\"8971\":\"locales/keys_el_latin-keycodes\",\"8986\":\"locales/keys_ru-keycodes\",\"9081\":\"locales/keys_lv_standard-keycodes\",\"9082\":\"locales/keys_as-keycodes\",\"9112\":\"locales/keys_pt_abnt2-keycodes\",\"9136\":\"locales/keys_hy_phonetic-keycodes\",\"9142\":\"locales/keys_bn_inscript-keycodes\",\"9176\":\"locales/keys_iu_latin-keycodes\",\"9193\":\"locales/keys_so-keycodes\",\"9244\":\"locales/keys_ky-keycodes\",\"9414\":\"locales/keys_sat-keycodes\",\"9512\":\"locales/keys_mi-keycodes\",\"9586\":\"locales/keys_fo-keycodes\",\"9616\":\"locales/keys_dsb-keycodes\",\"9619\":\"locales/keys_de_belgian-keycodes\",\"9698\":\"locales/keys_ka_ergonomic-keycodes\",\"9707\":\"locales/keys_si-keycodes\",\"9866\":\"locales/keys_fi_sami-keycodes\",\"9893\":\"locales/keys_got-keycodes\",\"9989\":\"locales/keys_pa-keycodes\"}[chunkId] || chunkId) + \".\" + {\"68\":\"7b17882894d827d4a691\",\"129\":\"93e9e7b55ff4db1b45f4\",\"308\":\"e7d0c13e3ecc92b49444\",\"389\":\"606dc039dbee5e7de1d4\",\"398\":\"c8c541aaf844eeda8149\",\"401\":\"bdae6943931998cef4fd\",\"421\":\"dbb2c1733f9a7579098e\",\"422\":\"666bd3a0ce35c4a274ff\",\"539\":\"f13efc888eac2aa8e903\",\"542\":\"b08e94331b5e117681ac\",\"578\":\"04d1220d52840040f60b\",\"727\":\"2919567394fbd9d07a87\",\"749\":\"76b287374b8ae5f7a06c\",\"771\":\"476e9ba05219d84921f3\",\"814\":\"4764231c07fa0d0a04f6\",\"819\":\"0795ba54cbc82dd190cf\",\"833\":\"46444cf657dcf1bb1593\",\"920\":\"dc595b5183e9c47ff557\",\"951\":\"f0042702141cbb2ccabf\",\"1040\":\"668a24817c3f3941bb2c\",\"1156\":\"bb15c7631776a604bdb7\",\"1315\":\"0db48f03173200e045f2\",\"1343\":\"8f70c7bbb298f625412f\",\"1480\":\"dd1c948a8c44aac28b53\",\"1507\":\"8cada04b0e43007bb4be\",\"1514\":\"649b8ed65f356fa690ac\",\"1545\":\"b152a1976be0001bfb43\",\"1547\":\"c246a45983470f77e595\",\"1671\":\"6bdbbb20361914659d30\",\"1720\":\"3328c6b7c20fbf918852\",\"1808\":\"abb32a6fe65c55952158\",\"1872\":\"719fd6d2cfbc98065faa\",\"1936\":\"8e41309b9c19de95960a\",\"2015\":\"1189ea9050bf52385110\",\"2231\":\"5080f1cbf58c1317f585\",\"2247\":\"3459beb60f5e45f7a659\",\"2271\":\"b737428706ade1ab91ed\",\"2275\":\"6c3d70cbc0a2a960dede\",\"2383\":\"45d4631f706b18beb2d9\",\"2408\":\"49d33aa415e8f4992f21\",\"2602\":\"d7b17cf5cd894ba30b64\",\"2619\":\"5153da3fbe85b2f1f7f8\",\"2621\":\"bd9a8dabd0cd755853b5\",\"2650\":\"a829372aef4170ca51a4\",\"2659\":\"c36d1660242da4a6482d\",\"2787\":\"23f639d1d9e06f080ea7\",\"2835\":\"551ed1eddb65a0855ec0\",\"2946\":\"972b1c0cded5c7511836\",\"2947\":\"2b19227a71dd755ae4b6\",\"2982\":\"36e9273f2ce6ff4f4673\",\"3033\":\"b26fcf2e16e386fb33b1\",\"3194\":\"8a08d0da753f48f7f95e\",\"3268\":\"f3f0e12f35d6ede0f40f\",\"3282\":\"01584f37d4d33ad63efb\",\"3322\":\"7ebaf8ec7ac148f4669d\",\"3359\":\"2b1b7a00d5f5a3f3d4d7\",\"3362\":\"4b171d128973788c904e\",\"3393\":\"2b68325532554cc8d8ba\",\"3474\":\"d8e51748742a2c676e34\",\"3618\":\"d8420dbaf5d768e5d2d4\",\"3647\":\"6703ed839e825c8771d3\",\"3687\":\"e750c133ca55d5c6e548\",\"3735\":\"c9d93c92c6c0423a5416\",\"3743\":\"ebb2429d5bbde92909c4\",\"3746\":\"a4deb37dc8a93b498757\",\"3880\":\"fcaa03e1df43df95ab97\",\"3893\":\"c7df98614033002329af\",\"4036\":\"909dd7500874d97524c9\",\"4156\":\"b9b13036d2669cc053d2\",\"4257\":\"f5fd10e05ad3d0536453\",\"4263\":\"931dcb76dcb966d4c80f\",\"4289\":\"fa48da5f908e2f1c31fc\",\"4296\":\"6398e9a1092dbd966cd4\",\"4443\":\"3d9b42bc9254f6af0784\",\"4465\":\"f4574a240d1cc776a64d\",\"4491\":\"85813c1f613b510d8c53\",\"4595\":\"32f60188d0eaea679456\",\"4670\":\"c00667ffdde3a68622ab\",\"4688\":\"31df1ae6ad5f78bd01fc\",\"4717\":\"abfe395f6284ad19bfcd\",\"4777\":\"2224cbda2741be9da336\",\"4795\":\"ed0ccd39951359fbbbca\",\"4821\":\"ddd40fd58db42a579031\",\"4824\":\"0a6f4db1962949f69a35\",\"4887\":\"f052ae8bfdfdb1d513db\",\"4892\":\"960290e8d85e0b47f102\",\"4919\":\"4a12c76edfa94312b0ea\",\"5015\":\"0f3a2242ea9f9a42c4f9\",\"5303\":\"a4497d24307a9897e5b5\",\"5332\":\"777b50e4b114b352d258\",\"5354\":\"2e00aaedbbdc1642bb92\",\"5485\":\"55a0ec07c8abbfe214b4\",\"5604\":\"f11c3e2dd4430602f243\",\"5606\":\"8cfe7dc5f09ec96ea95e\",\"5634\":\"f56c2bafa5e611ff718e\",\"5715\":\"4ef9b548b6cfc7c605f9\",\"5821\":\"a4f5e6f31f799696cdaf\",\"5840\":\"7e4e574c1214010c07dc\",\"5842\":\"f7c89fd7bf3602a3399e\",\"5858\":\"bf34e04d013932522f46\",\"5991\":\"512b59c58af9c82a47d5\",\"5998\":\"91c971fb3f5767c3d295\",\"6049\":\"a62bb2191cc0eecda711\",\"6157\":\"8b93a87cbbec10359b5d\",\"6184\":\"732ddeb1a32a40e2fc3a\",\"6392\":\"fa88aea6ab27afd6da50\",\"6415\":\"627e38aee29608a5d6d2\",\"6429\":\"b9b3578a604e51fa3455\",\"6457\":\"ba688263a9c85e9843e1\",\"6684\":\"1274b7cfa9914c7663c9\",\"6688\":\"5d24e1f96d6a6cfefcb0\",\"6691\":\"b6cb655f0aa7dcd8787b\",\"6710\":\"69f4ed313d19455e88f9\",\"6777\":\"dab38c8f01434d45eb86\",\"6794\":\"aa4330a831430380f7ca\",\"6849\":\"30183c5e1965724c1b6d\",\"6943\":\"9c0653724d1cbfa9ed86\",\"7022\":\"9ece5bc0d21090bf91ad\",\"7069\":\"9929a74e7e92648a0f87\",\"7080\":\"f083c93705b5e80e4a4e\",\"7108\":\"906eeacc617750894b22\",\"7198\":\"aec09ef07d003f7d7a91\",\"7228\":\"0a7f301444940610aa3a\",\"7289\":\"2fcc4bbd19c8e23bcfd9\",\"7292\":\"364542469a1dd2fd041b\",\"7303\":\"8f0ef5a9295943353ecf\",\"7305\":\"ac74249c913980666520\",\"7406\":\"11b0b86fb5919cd2d239\",\"7446\":\"f26521f672e3d94f3c62\",\"7495\":\"cb22512c8cea97bbcf19\",\"7553\":\"b6c1ba6d52fa85ac8595\",\"7554\":\"bdf065db03088c4a4a5d\",\"7568\":\"d9f3ad26c7b8b70fc1ec\",\"7603\":\"d2d72bb470a9b2e1ede0\",\"7686\":\"940990bf96e9413b2e9b\",\"7771\":\"9942586e9e23d5059127\",\"7803\":\"8760edf191caa0f69869\",\"7892\":\"86c938c7b27b9a67ef50\",\"7950\":\"6fb177a4414f9a190484\",\"7994\":\"c160e150f1431807c681\",\"8017\":\"837d18f3c4fcf868010b\",\"8019\":\"02f2f252639bb1d459b6\",\"8041\":\"dae4eea51cfd6e1fbef3\",\"8070\":\"27f10e0739c78ab95d16\",\"8110\":\"c132517c950a214d5731\",\"8119\":\"58eb56bfeb45579c084c\",\"8173\":\"1776ba2cbbdeb9918f9c\",\"8185\":\"ece0dc278594eee67cb1\",\"8207\":\"7e346d396cf1e067b94f\",\"8216\":\"bd2ef62dab7ca40f6d44\",\"8242\":\"3891fea81cc045034ad4\",\"8251\":\"7bcdee9a73a0eb39baaa\",\"8302\":\"6b483d8d7739ff515b8f\",\"8307\":\"e12dd0aad5e6a036ed3b\",\"8371\":\"f3862461b21b77cd6730\",\"8381\":\"171cf958a1d260f201e4\",\"8391\":\"eb08511c704d549f8237\",\"8427\":\"409e29315cd91dfb038b\",\"8438\":\"41a503f1b2737d035a74\",\"8568\":\"bf0989c363612ba74ac9\",\"8573\":\"23f7e6791fc94caba204\",\"8599\":\"1c088737758fa51d0a0a\",\"8636\":\"48c3cab70569554b8655\",\"8649\":\"519f8992d7c5b42bf4e1\",\"8699\":\"6d4b2f405c48cf71aa4b\",\"8706\":\"db5988f190774b8ecd7e\",\"8709\":\"edbea20e0b917271d7a2\",\"8793\":\"9639129fefdac959af3a\",\"8855\":\"38f81f640e33d713ea2c\",\"8873\":\"75782887b6b9e72b1dc9\",\"8945\":\"d5a920b4e65ee30d8356\",\"8956\":\"b025b7e50cad64b75370\",\"8971\":\"f906bba2b2b7e87a8ae0\",\"8986\":\"4ad17334f3ef911b6b0b\",\"9081\":\"b6c8611601548f3554f7\",\"9082\":\"35cb59b22a293243df26\",\"9112\":\"7ebcaf2caf566e7902b8\",\"9136\":\"3249d48fcb94ad9e44a1\",\"9142\":\"8933a018c2a618e987a4\",\"9176\":\"2557b40f7b4fcef345a9\",\"9193\":\"e2b545b8ea15c0016312\",\"9244\":\"0e4e64562de0635942ff\",\"9414\":\"b9aecaa9ab601ffcc6b4\",\"9512\":\"dc6d783fb73d92e5a7fb\",\"9586\":\"01151d539dca32e61272\",\"9616\":\"0a4f102b3e946346e2d6\",\"9619\":\"b044962c66577434486e\",\"9657\":\"6f4e9f754310b1969c2f\",\"9698\":\"41ef3f798533a2b1c7cf\",\"9707\":\"bbda1adb51b744127204\",\"9866\":\"110121669330cd9e737c\",\"9893\":\"4ff6eee70cdc1c6e3325\",\"9989\":\"e7d2ba9eda5b0ac31cac\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3666: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(3666 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkapp\"] = self[\"webpackChunkapp\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","importScripts","location","currentScript","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","error","errorType","realSrc","message","name","request","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal"],"sourceRoot":""} \ No newline at end of file