lilact 0.0.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -2
- package/dist/{lilact.development.js → lilact.development.min.js} +690 -315
- package/dist/lilact.development.min.js.LICENSE.txt +77 -0
- package/dist/lilact.development.min.js.map +1 -0
- package/dist/lilact.production.min.js +1 -1
- package/dist/lilact.production.min.js.map +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/accessories.ErrorBoundary.html +11 -10
- package/docs/classes/accessories.Suspense.html +12 -22
- package/docs/classes/components.Component.html +11 -10
- package/docs/classes/components.HTMLComponent.html +11 -10
- package/docs/classes/components.RootComponent.html +11 -10
- package/docs/functions/accessories.Spinner.html +1 -1
- package/docs/functions/components.createComponent.html +1 -1
- package/docs/functions/components.createRoot.html +1 -1
- package/docs/functions/components.render.html +1 -1
- package/docs/functions/hooks.createContext.html +1 -1
- package/docs/functions/hooks.forwardRef.html +4 -0
- package/docs/functions/hooks.useActionState.html +1 -1
- package/docs/functions/hooks.useImperativeHandle.html +7 -0
- package/docs/functions/hooks.useReducer.html +1 -1
- package/docs/functions/hooks.useState.html +2 -2
- package/docs/functions/hooks.useTransition.html +1 -1
- package/docs/functions/jsx.transpileJSX.html +1 -1
- package/docs/functions/run.lazy.html +7 -0
- package/docs/functions/run.require.html +11 -11
- package/docs/functions/run.run.html +3 -5
- package/docs/functions/run.runScripts.html +1 -1
- package/docs/functions/run.traceError.html +1 -1
- package/docs/functions/transition.CSSTransition.html +1 -1
- package/docs/functions/transition.Transition.html +15 -0
- package/docs/functions/transition.TransitionGroup.html +1 -1
- package/docs/index.html +8 -2
- package/docs/modules/hooks.html +1 -1
- package/docs/modules/jsx.html +1 -1
- package/docs/modules/run.html +1 -1
- package/docs/modules/transition.html +1 -1
- package/docs/static/demos/actionstate.jsx +5 -7
- package/docs/static/demos/context.jsx +2 -4
- package/docs/static/demos/css-transition.jsx +1 -1
- package/docs/static/demos/lazy.jsx +14 -0
- package/docs/static/demos/modal.jsx +14 -16
- package/docs/static/demos/proptypes.jsx +6 -9
- package/docs/static/demos/reducer.jsx +22 -24
- package/docs/static/demos/redux.jsx +1 -1
- package/docs/static/demos/router.jsx +1 -8
- package/docs/static/demos/stopwatch.jsx +1 -1
- package/docs/static/demos/suspense.jsx +5 -7
- package/docs/static/demos/transition.jsx +25 -25
- package/{root/demos/use-differed.jsx → docs/static/demos/use-deffered.jsx} +1 -1
- package/docs/static/demos/usetransition.jsx +2 -4
- package/docs/static/index 2.html +95 -0
- package/docs/static/index.html +27 -29
- package/docs/static/{lilact.development.js → lilact.development.min.js} +690 -315
- package/docs/static/lilact.production.min.js +1 -1
- package/package.json +2 -2
- package/root/demos/actionstate.jsx +5 -7
- package/root/demos/context.jsx +2 -4
- package/root/demos/css-transition.jsx +1 -1
- package/root/demos/lazy.jsx +14 -0
- package/root/demos/modal.jsx +14 -16
- package/root/demos/proptypes.jsx +6 -9
- package/root/demos/reducer.jsx +22 -24
- package/root/demos/redux.jsx +1 -1
- package/root/demos/router.jsx +1 -8
- package/root/demos/stopwatch.jsx +1 -1
- package/root/demos/suspense.jsx +5 -7
- package/root/demos/transition.jsx +25 -25
- package/{docs/static/demos/use-differed.jsx → root/demos/use-deffered.jsx} +1 -1
- package/root/demos/usetransition.jsx +2 -4
- package/root/index 2.html +95 -0
- package/root/index.html +27 -29
- package/root/{lilact.development.js → lilact.development.min.js} +690 -315
- package/root/lilact.production.min.js +1 -1
- package/src/accessories.jsx +12 -11
- package/src/components.jsx +11 -5
- package/src/hooks.jsx +47 -6
- package/src/jsx.js +1 -0
- package/src/lilact.jsx +5 -7
- package/src/pane.jsx +287 -0
- package/src/run.jsx +91 -43
- package/src/transition.jsx +32 -21
- package/webpack.config.js +2 -12
- package/dist/lilact.development.js.map +0 -1
- package/docs/classes/transition.Transition.html +0 -31
- package/docs/variables/jsx.transpilerConfig.html +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lilact.development.js","mappings":";;;;;;;;;;;;;;;AAAA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAE6C;;AAEtC;AACP,SAAS,2CAAS;AAClB;AACA;AACA;AACA;AACA;AACA;;;AAGA,aAAa;AACb,gBAAgB;AAChB;AACA;;;AAGA;;AAEgC;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,MAAM;AAChD;AACA;;AAEA;;AAEA;AACA,gBAAgB,MAAM,iBAAiB,uCAAuC;AAC9E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,gBAAgB,2CAAS,kBAAkB,0BAA0B;;AAE9F;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;AACA;;AAEA,0BAA0B;AAC1B,yBAAyB;;AAEzB;AACA;AACA;;AAEA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;;AAEA,gCAAgC,mBAAmB,KAAK,KAAK,GAAG;AAChE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB,IAAI,cAAc,EAAE;AAC1E;AACA,mCAAmC,mBAAmB,EAAE;AACxD;AACA;AACA;AACA;;AAEA,6BAA6B;;AAE7B;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,kCAAkC,EAAE;AACtD;;AAEA;;AAEA;AACA,0CAA0C,cAAc,GAAG,IAAI,IAAI,EAAE;AACrE;;AAEA;;AAEA,gCAAgC;AAChC,0BAA0B;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAe,YAAY,IAAI;AAC/B;;AAEA;AACA,SAAS;;AAET,aAAa;AACb;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAA0D,QAAQ;AAClE;;;AAGA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uCAAuC,OAAO,QAAQ,QAAQ;AAC9D;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qDAAqD,OAAO,cAAc,QAAQ;;AAElF;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,0BAA0B;;AAE1C;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;;AAEA;AACA,wCAAwC;AACxC,6CAA6C,4BAA4B,GAAG,MAAM,GAAG,MAAM,MAAM;AACjG;AACA,sDAAsD,UAAU,wCAAwC,kBAAkB,0BAA0B,iBAAiB,QAAQ;AAC7K;AACA;AACA,sDAAsD,UAAU,wCAAwC,iBAAiB,2BAA2B,QAAQ;AAC5J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,+CAA+C;;AAE/C;;AAEA;;AAEA;;AAEA;AACA,uBAAuB,4BAA4B,GAAG,MAAM,eAAe;;AAE3E;AACA;AACA,WAAW,SAAS,wCAAwC,kBAAkB,0BAA0B,iBAAiB,QAAQ;AACjI;AACA;AACA;AACA,WAAW,SAAS,wCAAwC,iBAAiB,2BAA2B,QAAQ;AAChH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,cAAc,cAAc;AAC5B;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;;AAEA,UAAU,2CAAU;;AAEpB;AACA;AACA;AACA;;AAEA,kDAAkD,OAAO;;AAEzD,wDAAwD,cAAc;;AAEtE;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK;AACP;;AAEA;AACA;AACA,iDAAiD;AACjD;AACA,2DAA2D;;AAE3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF,0BAA0B,EAAE,MAAM;;AAElC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kBAAkB,0BAA0B;AAC5C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;;AAEA;;;AAGA;;AAEA;AACA;;AAEA,YAAY,iBAAiB,EAAE,GAAG;AAClC;AACA;;;AAGA;AACA;AACA,aAAa,iBAAiB,GAAG,EAAE,KAAK,sDAAsD;AAC9F;AACA;AACA;;AAEA,WAAW;;AAEX;AACA;AACA;AACA;AACA,gBAAgB,EAAE;AAClB;AACA;AACA;AACA;;AAEA;AACA,YAAY,QAAQ,IAAI,SAAS,IAAI,EAAE,KAAK,IAAI,qBAAqB,KAAK,KAAK,IAAI;;AAEnF;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,4BAA4B,iBAAiB;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY,UAAU,wCAAwC,kBAAkB,0BAA0B,iBAAiB,QAAQ;AACnI;AACA;AACA,YAAY,UAAU,wCAAwC,iBAAiB,2BAA2B,QAAQ;AAClH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,+IAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA,2CAA2C,cAAc,mP;;;;;;;;;;AClpCzD;AACA;AACA;AACA;AACA;;AAEa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;ACzFa;;AAEb,IAAI,KAAqC,EAAE;AAAA,EAE1C,CAAC;AACF,EAAE,8EAAyD;AAC3D;;;;;;;;;;;ACNA;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;;;AAIb,IAAI,IAAqC;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB,sBAAsB;AACtB,uBAAuB;AACvB,uBAAuB;AACvB,eAAe;AACf,kBAAkB;AAClB,gBAAgB;AAChB,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,gBAAgB;AAChB,kBAAkB;AAClB,gBAAgB;AAChB,mBAAmB;AACnB,wBAAwB;AACxB,yBAAyB;AACzB,yBAAyB;AACzB,iBAAiB;AACjB,oBAAoB;AACpB,kBAAkB;AAClB,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,kBAAkB;AAClB,oBAAoB;AACpB,kBAAkB;AAClB,0BAA0B;AAC1B,cAAc;AACd,GAAG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpLA;AACA;AACA,kCAAkC,OAAO,yCAAyC,MAAM;AACxF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,+BAA+B;AACtD,6BAA6B,+BAA+B;AAC5D,6DAA6D,eAAe;AAC5E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,MAAqC,GAAG,CAAyB,sEAAsE,gBAAgB;AAC3K;AACA;AACA,oBAAoB,MAAqC,GAAG,CAAyB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAqC,GAAG,CAAyB,kEAAkE,iBAAiB;AAC1K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,sBAAsB,MAAqC,GAAG,CAAyB;AACvF;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAqC,GAAG,CAAyB,kEAAkE,iBAAiB;AAC1K;AACA;AACA,sBAAsB,MAAqC,GAAG,CAAyB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,MAAqC,GAAG,CAAyB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAqC,GAAG,CAAyB,oEAAoE,eAAe;AAC1K;AACA;AACA,sBAAsB,MAAqC,GAAG,CAAyB;AACvF;AACA;AACA,sBAAsB,MAAqC,GAAG,CAA0B,8EAA8E,oBAAoB,iBAAiB,YAAY;AACvN;AACA;AACA,sBAAsB,MAAqC,GAAG,CAAyB;AACvF;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,sBAAsB,MAAqC,GAAG,CAA0B,qEAAqE,oBAAoB;AACjL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,MAAqC,GAAG,CAA0B,iEAAiE,iBAAiB;AAC9K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAc,0BAA0B,mBAAmB,iEAAiE,yBAAyB;AACvK;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,yBAAyB,4CAA4C,GAAG,4BAA4B,aAAa,aAAa,6DAA6D,yBAAyB;AACpN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,sBAAsB,MAAqC,GAAG,CAA0B,iCAAiC,IAAI;AAC7H;AACA;AACA;AACA,KAAK;AACL,sBAAsB,MAAqC,GAAG,CAA0B,iCAAiC,IAAI,4EAA4E,yBAAyB;AAClO;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA,QAAQ,IAAqC;AAC7C;AACA,gDAAgD,IAAI;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6BAA6B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,MAAqC,GAAG,CAA0B,yCAAyC,iBAAiB,mBAAmB,sBAAsB,+BAA+B,IAAI;AAChO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,MAAqC,GAAG,CAA0B,kFAAkF,uBAAuB;AAC/L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAqC,GAAG,CAA0B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AAWE;AACF,kC;;AC5YA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,SAAS,aAAa;;AAEtB,kCAAkC,mCAAmC;;AAErE,0BAA0B,wBAAwB;AAClD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;;;AAGA,kBAAkB,iCAAiC;AACnD;AACA;AACA;AACA,IAAI;AACJ;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR,uJAAuJ;AACvJ;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEqB;;;AC/JtB;AACA,WAAW;AACX,YAAY;AACZ;AACO;;AAEP;AACA,WAAW;AACX,YAAY;AACZ;AACO;;AAEP;AACA,WAAW;AACX,YAAY;AACZ;AACO,IAAI,cAAM;;AAEjB;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,iBAAiB;AAC5B,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,KAAK;AAChB,WAAW,OAAO;AAClB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,YAAY;AACZ;AACO;AACP;AACA;;;AClH+E;;AAExE;AACA;AACA,IAAI,gBAAM;AACV;AACA;AACA;;AAEP;AACA,WAAW,QAAQ;AACnB,WAAW,eAAe;AAC1B,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,mBAAmB;AAC9B,WAAW,mBAAmB;AAC9B,WAAW,QAAQ;AACnB;AACO;AACP,SAAS;AACT;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP,QAAQ,cAAM,iDAAiD,qBAAqB;AACpF;;AAEA;AACA,YAAY;AACZ;AACO,SAAS,cAAI;AACpB;AACA;;AAEA;AACA,YAAY;AACZ;AACO;AACP,4BAA4B,MAAM;;AAElC;AACA;;AAEA;AACA;;AAEA;AACA,YAAY;AACZ;AACO;AACP,wBAAwB,gBAAM,GAAG,MAAM;;AAEvC;AACA;;AAEA;AACA;;AAEA;AACA,YAAY;AACZ;AACO;AACP,QAAQ,MAAM;AACd;;AAEA;AACA,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP,QAAQ,MAAM;AACd;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP,2BAA2B,gBAAM,GAAG,MAAM;AAC1C;;AAEA;AACA,WAAW,KAAK;AAChB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP,QAAQ,IAAI;AACZ;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,UAAU;AACrB,YAAY;AACZ;AACO;AACP;AACA;AACA,WAAW,MAAM;AACjB;AACA,WAAW,MAAM;AACjB;AACA,YAAY,MAAM,CAAC,IAAI;AACvB;;AAEA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,IAAI;AACtD;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA;;;ACrPO;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpB0E;AACtC;;AAE3C;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,YAAY;AACZ;AACO;AACP;AACA,cAAc,MAAM;;AAEpB,iBAAiB,YAAY;AAC7B;;AAEA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,YAAY;AACZ;AACO;AACP;AACA,OAAO,KAAK;AACZ,OAAO,MAAM,OAAO,WAAW;AAC/B,OAAO,OAAO;AACd,OAAO,SAAS,4CAA4C,8CAA8C;AAC1G,OAAO,OAAO;AACd;;AAEA,QAAQ,MAAM,wFAAwF,iBAAiB;AACvH;;;ACnCyC;AACyC;;AAElF;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,YAAY;AACZ;AACO;AACP,SAAS,IAAI;AACb;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA,UAAU,GAAG;AACb;AACA;AACA,UAAU,MAAM,WAAW,GAAG,WAAW,EAAE;AAC3C;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA,YAAY,MAAM,WAAW,EAAE,GAAG,OAAO,yBAAyB,EAAE;AACpE;AACA;AACA,YAAY,MAAM,WAAW,EAAE,GAAG,OAAO,yBAAyB,EAAE;AACpE;AACA;AACA,YAAY,MAAM,WAAW,EAAE,GAAG,OAAO,yBAAyB,EAAE;AACpE;AACA;AACA;AACA;AACA,UAAU,MAAM,WAAW,EAAE;AAC7B;AACA;AACA,UAAU,MAAM,WAAW,EAAE;AAC7B;AACA;AACA,UAAU,MAAM,WAAW,OAAO,0BAA0B,MAAM,gBAAgB,EAAE;AACpF;AACA;AACA,UAAU,MAAM,WAAW,EAAE,kBAAkB,OAAO,gCAAgC,KAAK,4BAA4B,EAAE,iBAAiB,OAAO;AACjJ;AACA;AACA,UAAU,MAAM,WAAW,EAAE,sBAAsB,OAAO;AAC1D;AACA;AACA,UAAU,MAAM,WAAW,EAAE,GAAG,OAAO;AACvC;AACA;AACA,UAAU,MAAM,WAAW,EAAE,GAAG,OAAO;AACvC;AACA;AACA,UAAU,MAAM,YAAY,OAAO,uBAAuB,MAAM,WAAW,EAAE,GAAG,OAAO;AACvF;AACA;AACA,UAAU,MAAM,GAAG,OAAO,qCAAqC,MAAM;AACrE;AACA;AACA,UAAU,OAAO,CAAC,OAAO,CAAC,OAAO,wBAAwB,MAAM,yBAAyB,MAAM;AAC9F;AACA;AACA,UAAU,OAAO,6BAA6B,MAAM;AACpD;AACA;AACA,UAAU,OAAO,CAAC,OAAO,6BAA6B,MAAM,mBAAmB,EAAE,6BAA6B,kBAAkB,MAAM;AACtI;AACA;AACA,QAAQ,KAAK,kCAAkC,EAAE,yBAAyB,MAAM;AAChF;AACA;AACA;AACA,UAAU,EAAE,GAAG,OAAO;AACtB;AACA;AACA,6DAA6D,uBAAuB,KAAK,iCAAiC;AAC1H,YAAY,OAAO,iEAAiE,EAAE,GAAG,OAAO,gCAAgC,EAAE,wBAAwB,OAAO,qBAAqB,KAAK,qBAAqB,KAAK,qBAAqB,KAAK,oBAAoB;AACnQ;AACA,UAAU,EAAE,GAAG,OAAO;AACtB;AACA;AACA,0DAA0D,OAAO,KAAK,mCAAmC,aAAa,EAAE,GAAG,OAAO,CAAC,OAAO;AAC1I;AACA;AACA,UAAU,OAAO,2BAA2B,MAAM;AAClD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAM;AACb,YAAY,MAAM;AAClB;AACA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;AACA,aAAa,OAAO,mCAAmC,MAAM,oBAAoB,GAAG,IAAI,MAAM;AAC9F;AACA;AACA,cAAc,OAAO,4BAA4B,OAAO;AACxD;AACA;AACA;AACA;AACA,UAAU,OAAO,sFAAsF,QAAQ,EAAE,4BAA4B,EAAE,wDAAwD;AACvM;AACA;AACA;AACA,OAAO,MAAM;AACb,WAAW,OAAO,mBAAmB,MAAM;AAC3C;AACA;AACA;AACA,WAAW,MAAM,QAAQ,MAAM;AAC/B;AACA;AACA,YAAY,OAAO,kBAAkB,QAAQ,sBAAsB,MAAM,IAAI,MAAM,wDAAwD,MAAM,mBAAmB,EAAE;AACtK;AACA;AACA,YAAY,OAAO,mBAAmB,EAAE;AACxC;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB;;AAEA;AACA;;;AChJ0E;AACU;AACvC;AACJ;AACL;;AAEpC;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACO;AACP,cAAc,MAAM;;AAEpB;AACA;;AAEA,kBAAkB,YAAY;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,UAAU;AACrB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB;AACO;AACP;AACA;AACA;AACA,SAAS,WAAW,mBAAmB,MAAM;AAC7C;AACA,SAAS,SAAS;AAClB,YAAY,SAAS,EAAE,IAAI,WAAW,OAAO,OAAO,2BAA2B,MAAM,EAAE;AACvF,SAAS,OAAO;AAChB;AACA,aAAa,OAAO;AACpB,eAAe,KAAK;AACpB;AACA;AACA,gBAAgB,SAAS,EAAE,IAAI,WAAW,QAAQ,OAAO,6BAA6B,GAAG,UAAU;AACnG;AACA;AACA,gBAAgB,SAAS;AACzB,UAAU,IAAI,WAAW,QAAQ,OAAO,4BAA4B,MAAM,gBAAgB;AAC1F,UAAU,IAAI,WAAW,QAAQ,OAAO,4BAA4B,GAAG,UAAU;AACjF,UAAU,IAAI,WAAW,QAAQ,OAAO,sBAAsB,EAAE,gBAAgB;AAChF;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB;AACO;AACP;AACA,OAAO,OAAO;AACd;AACA,WAAW,OAAO,CAAC,QAAQ;AAC3B,aAAa,MAAM;AACnB;AACA;AACA,cAAc,MAAM,WAAW,MAAM;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,MAAM;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB,qBAAqB,MAAM;AAC3B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;;AC3GuD;AAC+C;AACkC;;AAExI;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP,QAAQ,OAAO,2CAA2C,KAAK;AAC/D;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;AAChD;AACA;AACA,2BAA2B,MAAM;AACjC,SAAS,OAAO,eAAe,OAAO,CAAC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA;AACA;AACA,kBAAkB,QAAQ,CAAC,KAAK;AAChC;AACA;AACA;AACA,YAAY,IAAI;AAChB;AACA,MAAM,MAAM,SAAS,SAAS,CAAC,IAAI,IAAI,KAAK;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAM;AAC5B,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE,2BAA2B,MAAM;AACjC,OAAO,MAAM,4CAA4C,2CAA2C,OAAO,0BAA0B;AACrI;AACA;AACA,8BAA8B;AAC9B,UAAU;AACV;AACA,MAAM,MAAM;;AAEZ;AACA;AACA;AACA;AACA,iCAAiC,MAAM;AACvC;AACA;AACA,qDAAqD,MAAM;AAC3D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,qDAAqD,IAAI;AACzD;;AAEA,0BAA0B,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;AACA,UAAU,IAAI;AACd,qBAAqB,OAAO,CAAC,IAAI;;AAEjC,eAAe,IAAI,sBAAsB,MAAM,sBAAsB,UAAU,CAAC,KAAK;AACrF;AACA;AACA;AACA,6BAA6B,MAAM;AACnC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;AACA,YAAY,MAAM;;AAElB,+BAA+B,WAAW;AAC1C,sBAAsB,MAAM,yBAAyB,GAAG,6BAA6B,UAAU;AAC/F,WAAW,IAAI,6BAA6B,OAAO;AACnD;;AAEA,QAAQ,IAAI,qCAAqC,OAAO;AACxD;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,YAAY;AACZ;AACO;AACP,QAAQ,IAAI,sBAAsB,OAAO,EAAE,IAAI,CAAC,cAAI,KAAK,MAAM;AAC/D;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP,QAAQ,IAAI,sBAAsB,WAAW,EAAE,MAAM,oBAAoB,MAAM;AAC/E;;;AC9LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEkC;;;ACflC;AACA;AACA;AACA;AACA;AACA;AACA;;AAE8B;;;ACRc;AACmN;AAChO;AACL;;AAE1B;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,IAAI,IAAI;;AAExB;AACA;AACA;;AAEA,QAAQ,KAAK;AACb;AACA;;AAEA,IAAI,IAAI;AACR;;AAEA,SAAS,KAAK,QAAQ,QAAQ;AAC9B;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,KAAK;AACjB;AACA;AACA,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAqD,QAAQ;AAC7D;;AAEA;AACA,yBAAyB,OAAO;AAChC;;AAEA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC;AACA;AACA;;AAEA;;AAEA;AACA,yBAAyB,IAAI;AAC7B;AACA,IAAI,mBAAmB,IAAI;;AAE3B;AACA;;AAEA;AACA,SAAS,OAAO,SAAS,KAAK;AAC9B,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA,IAAI;AACJ;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,kBAAkB;AAC3C,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gDAAgD,QAAQ;AACxD;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,4CAAM;AACf,UAAU,IAAI;AACd;AACA;AACA,aAAa,MAAM;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM,WAAW,GAAG,WAAW,EAAE;AAC9C;;AAEA;AACA;AACA,aAAa,MAAM,WAAW,EAAE;AAChC;;AAEA;AACA,aAAa,MAAM,WAAW,EAAE;AAChC;;AAEA;AACA,aAAa,MAAM,WAAW,OAAO,0BAA0B,MAAM,gBAAgB,EAAE;AACvF;;AAEA;AACA,aAAa,MAAM,WAAW,EAAE,kBAAkB,OAAO;AACzD;;AAEA;AACA,aAAa,MAAM,WAAW,EAAE,sBAAsB,OAAO;AAC7D;;AAEA;AACA,aAAa,MAAM,WAAW,EAAE,GAAG,OAAO;AAC1C;;AAEA;AACA,aAAa,MAAM,WAAW,EAAE,GAAG,OAAO;AAC1C;;AAEA;AACA,aAAa,MAAM,YAAY,OAAO,uBAAuB,MAAM,WAAW,EAAE,GAAG,OAAO;AAC1F;;AAEA;AACA,aAAa,MAAM,GAAG,OAAO,qCAAqC,MAAM;AACxE;;AAEA;AACA,aAAa,OAAO,CAAC,OAAO,CAAC,OAAO,wBAAwB,MAAM,yBAAyB,MAAM;AACjG;;AAEA;AACA;AACA,aAAa,OAAO,6BAA6B,MAAM;AACvD;;AAEA;AACA,aAAa,OAAO,CAAC,OAAO,6BAA6B,MAAM,mBAAmB,EAAE,6BAA6B,kBAAkB,MAAM;AACzI;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO,2BAA2B,MAAM;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,MAAM,kCAAkC,MAAM;AACxD;AACA;AACA;AACA,cAAc,MAAM;AACpB;;AAEA;AACA,iBAAiB,OAAO,mCAAmC,MAAM,oBAAoB,GAAG,IAAI,MAAM;AAClG;;AAEA;AACA,kBAAkB,OAAO,qBAAqB,4CAAM,CAAC,OAAO;AAC5D;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;;AAEA;AACA,cAAc,MAAM,QAAQ,MAAM,gBAAgB,OAAO;AACzD;AACA;AACA,iBAAiB,OAAO,mBAAmB,MAAM;AACjD;;AAEA;AACA,iBAAiB,OAAO,kBAAkB,MAAM,gBAAgB,MAAM,IAAI,MAAM,wDAAwD,MAAM,mBAAmB,EAAE;AACnK;;AAEA;AACA;;AAEA;AACA,cAAc,MAAM;AACpB;AACA;AACA,iBAAiB,MAAM,WAAW,EAAE,GAAG,OAAO,yBAAyB,EAAE;AACzE;;AAEA;AACA,iBAAiB,MAAM,WAAW,EAAE,GAAG,OAAO,yBAAyB,EAAE;AACzE;;AAEA;AACA,iBAAiB,MAAM,WAAW,EAAE,GAAG,OAAO,yBAAyB,EAAE;AACzE;;AAEA,aAAa,MAAM,WAAW,EAAE;AAChC;;AAEA;AACA;;AAEA,IAAI,8CAAQ;AACZ;AACA,SAAS,WAAW;AACpB,0BAA0B,4CAAM;AAChC;;AAEA,SAAS,SAAS;AAClB,aAAa,SAAS,EAAE,IAAI;AAC5B,eAAe,OAAO,2BAA2B,MAAM;AACvD,OAAO;;AAEP,SAAS,OAAO;AAChB,iCAAiC,OAAO;AACxC,gBAAgB,KAAK;AACrB;AACA;AACA;AACA,mBAAmB,SAAS,EAAE,IAAI;AAClC,sBAAsB,OAAO,6BAA6B,GAAG;AAC7D,aAAa;AACb;;AAEA;AACA,mBAAmB,SAAS,EAAE,IAAI;AAClC,sBAAsB,OAAO,4BAA4B,MAAM;AAC/D,aAAa,GAAG,IAAI;AACpB,sBAAsB,OAAO,4BAA4B,GAAG;AAC5D,aAAa,GAAG,IAAI;AACpB,sBAAsB,OAAO,sBAAsB,EAAE;AACrD,aAAa;AACb;;AAEA;AACA,OAAO;AACP;AACA;;AAEA,4BAA4B,8CAAQ;AACpC;;AAEA;AACA,yEAAyE;;AAEzE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oFAAoF;AACpF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,mBAAmB;AACzC;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;;AAEA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA,UAAU,2CAA2C,OAAO;AAC5D;AACA;AACA,iDAAiD;AACjD;AACA;AACA,MAAM;AACN,qBAAqB,UAAU;;AAE/B;AACA,aAAa,SAAS,CAAC,OAAO;AAC9B;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,0BAA0B;;AAE/D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEkC;;;ACnlBlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA,SAAS,UAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAE8B;;;ACtD9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEmC;;;ACnDI;AACE;AACF;;AAEvC,IAAI,+CAAa;;AAEjB,gRAAgR,uCAAuC;AACvT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sCAAsC,OAAO;AAC7C;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA,MAAM,YAAQ;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mDAAmD;AACnD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,qPAAqP,YAAY,kIAAkI,aAAa;AAChZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,gBAAgB;AACpC,yEAAyE;AACzE;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA,4BAA4B,6BAA6B;AACzD,UAAU;AACV,uFAAuF;AACvF;AACA,QAAQ;AACR,+CAA+C,+CAAa;AAC5D;AACA;;AAEA;AACA,2BAA2B,mBAAmB;AAC9C;AACA,4FAA4F;AAC5F;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,qBAAqB;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oCAAoC,QAAQ,OAAO;AACnD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ,kBAAkB,iBAAiB;AACnC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA,aAAa,OAAU;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE2B;;;AC/S3B;;AAEA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM;AACN;AACA;;AAE6D;;;AC5CpB;AACY;AACc;;AAEnE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,mBAAmB;;AAExC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,WAAW;;AAEzB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,wEAAwE,aAAa;AACrF;AACA;;AAEA,qBAAqB,eAAe;AACpC,IAAI,YAAY;AAChB;AACA;;AAEA;AACA,2EAA2E,eAAe;AAC1F;AACA;;AAEA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA,4CAA4C,0BAA0B;AACtE,KAAK;AACL;AACA;;AAEA;AACA,2EAA2E,eAAe;AAC1F;AACA;;AAEA,qBAAqB,eAAe;AACpC;AACA;;AAEA;AACA,2EAA2E,eAAe;AAC1F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,iBAAiB;AACnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEoC;;;AC9I+D;AAC3E;AACI;AACJ;;AAExB,qBAAqB,aAAa;AAClC;AACA,CAAC;AACD;AACA;AACA;AACA,IAAI,iCAAK;AACT,IAAI,+CAAmB;AACvB;AACA;AACA;AACA;AACA;;AAEsG;;;;;;ACnBtG;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;AAEkC;;;AAGlC;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO;;AAEP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,mBAAmB,SAAS;;;AAGnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACO;AACP;AACA;;AAEA;AACA,SAAS,MAAM;AACf;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,IAAI;;AAEJ;;;AAGA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACO,SAAS,YAAO;AACvB;AACA;;;;;AAKA;;AAEA;AACO;AACP;AACO;AACP;AACO;AACP;AACO;;;AAGP;AACA;AACO;AACP;AACO;AACP;AACO;AACP;AACO;AACP;AACO;AACP;AACO,gBAAgB;AACvB;AACO;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA,2CAA2C,cAAc,2P;;ACrazD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;AAEA,OAAO,eAAI,CAAC,oBAAS,CAAC,eAAI,oCAAoC,mBAAQ;;AAE9B;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,eAAI,QAAQ,eAAI;AAC3B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iBAAiB,oBAAS;AAC1B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,gBAAgB,qBAAqB;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,eAAI;AACjB;AACA;AACA;AACA;AACA;AACA,oDAAoD,eAAI;AACxD,YAAY,eAAI,SAAS,eAAI;AAC7B;AACA,mBAAmB,eAAI,SAAS,eAAI;AACpC,uCAAuC,eAAI;AAC3C,YAAY,eAAI,SAAS,eAAI;AAC7B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,sEAAsE,UAAU,KAAK;AACrF;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,sEAAsE;AAC/F;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,oDAAoD;AACxF;AACA;;AAEA;;;AAGA;;;;AAIA,iDAAiD,MAAM;AACvD;AACA;;AAEA,UAAU,eAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,eAAI;;AAEf;AACA,eAAe,YAAY,eAAI,SAAS;AACxC;AACA;AACA,gBAAgB,eAAI;AACpB,cAAc,eAAI;AAClB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,oBAAoB;AACpB;;AAEA;;AAEA;AACA;AACA;AACA,SAAS,eAAI;AACb,SAAS,eAAI;AACb;AACA;AACA;AACA;AACA;;AAEA,QAAQ,eAAI;;AAEZ;AACA,SAAS,eAAI;AACb;AACA;;AAEA;;AAEA,0CAA0C,eAAI;;AAE9C;AACA;;;AAGA;AACA;AACA;AACA;AACA,mCAAmC,eAAI;AACvC,sBAAsB,eAAI;AAC1B,+CAA+C,eAAI;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAI;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,eAAe,YAAY,eAAI;AAC/B;AACA;AACA,UAAU,eAAI;AACd,QAAQ,eAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,iBAAiB,YAAY,eAAI;AACjC,kBAAkB;;AAElB;AACA;AACA;AACA,UAAU;AACV;AACA,cAAc,YAAY,eAAI;AAC9B,eAAe;;AAEf;AACA;AACA;AACA,UAAU;AACV;AACA,eAAe,YAAY,eAAI;AAC/B,gBAAgB;;AAEhB;AACA;AACA;AACA,UAAU;AACV;AACA,aAAa,YAAY,eAAI;AAC7B,cAAc;;AAEd;AACA;AACA;AACA,UAAU;AACV;AACA,aAAa,YAAY,eAAI;AAC7B,cAAc;;AAEd;AACA;AACA,OAAO,eAAI;AACX;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA,6BAA6B,eAAI,oBAAoB,eAAI;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa;AACb;AACA;AACA;AACA;AACA,QAAQ,eAAI,oDAAoD,eAAI;AACpE;;AAEA,OAAO,eAAI;AACX;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB;AACA,yCAAyC,kBAAkB;AAC3D;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;;AAEO;AACP;AACA;AACA;AACA;AACA,OAAO,eAAI;AACX;;AAEA;AACA;AACA,cAAc,eAAI;AAClB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iBAAiB;AAC1D;AACA;AACA,4CAA4C,iBAAiB;AAC7D;AACA,WAAW,oBAAoB;AAC/B,WAAW,QAAQ;AACnB;AACA,cAAc,oBAAoB;AAClC,cAAc,QAAQ;AACtB;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO,eAAI;;AAEX;AACA,SAAS,eAAI,MAAM,eAAI,mBAAmB,eAAI;AAC9C,4BAA4B,eAAI;AAChC;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ,SAAS;AAC5B,WAAW,QAAQ;AACnB;AACA,aAAa,eAAe;AAC5B;;AAEO,yCAAyC;AAChD;;AAEA,cAAc,mBAAmB;AACjC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,CAAC,eAAI;AACxB;AACA;AACA;AACA;AACA;;AAEA,oCAAoC;;AAEpC;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,eAAe;AAC5B;AACA,aAAa,gBAAgB;AAC7B;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D,0BAA0B,eAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,oBAAoB;AAC/B;AACA;AACA,aAAa;AACb;;AAEO;AACP;AACA,cAAc,eAAI,gBAAgB,eAAI,yBAAyB,eAAI;AACnE;AACA;AACA;AACA;;AAEA;AACO;;AAEP,2CAA2C,cAAc,2Q;;ACliCzD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;AAEA,OAAO,UAAI,CAAC,eAAS;;;AAGrB;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACO;AACP;AACA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK,uCAAuC;AACzD;AACO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,YAAY;AACvB,aAAa,UAAU;AACvB;AACO,uCAAuC;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACO;AACP;AACA,wBAAwB,gBAAgB;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK,0CAA0C;AAC5D;AACO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,YAAY;AACvB,aAAa;AACb;AACO,wCAAwC;AAC/C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,uBAAuB;AACzD;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,YAAY;AACvB,aAAa;AACb;AACO,kCAAkC;AACzC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,uBAAuB;;AAEjD;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,YAAY;AACvB,aAAa,KAAK;AAClB;AACO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACO;AACP;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,KAAK;AAChB,WAAW,UAAU;AACrB,aAAa,KAAK,uCAAuC;AACzD;AACO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACO;AACP;;AAEA,SAAS,8BAA8B;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;;;AAKA,2CAA2C,cAAc,2P;;;;AC/czD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA,OAAO,WAAI,CAAC,UAAG;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,UAAG;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,UAAG;AAC5B;AACA;AACA;AACA,wBAAwB,UAAG;AAC3B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,aAAa;AACb;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,KAAK;AAClB;;;AAGO,SAAS,iBAAU;AAC1B;AACA,qBAAqB,oGAAoG;AACzH;;AAEA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,KAAK;AAClB;;AAEO,SAAS,kBAAW;AAC3B;AACA,qBAAqB,mGAAmG;AACxH;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa;AACb;AACO,SAAS,mBAAY;AAC5B;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa;AACb;AACO,SAAS,oBAAa;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,SAAS;AACtB;AACO;AACP;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;AAIA,2CAA2C,cAAc,+P;;AC3TzD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;AAEA,OAAO,eAAI,CAAC,oBAAS,CAAC,+BAAoB;;AAE1C;AACA;AACA;AACA;AACA;AACA;;AAEqD;AAClB;AACE;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD,MAAM,eAAI;AACV,MAAM,eAAI;AACV,MAAM,eAAI;;AAEV;AACA,YAAY,eAAI;AAChB;AACA,gCAAgC,eAAI;AACpC;AACA;AACA;;AAEA,CAAC,SAAS;AACV,eAAe,mBAAY,MAAM,eAAI;AACrC,EAAE;;AAEF,CAAC,SAAS;AACV,YAAY,eAAI;AAChB;AACA;AACA,uBAAuB,eAAI;AAC3B,IAAI,mBAAY,MAAM,eAAI;AAC1B,SAAS,eAAI,UAAU,iBAAU;AACjC;AACA,UAAU,eAAI;AACd,uBAAuB,eAAI;AAC3B,KAAK;AACL,IAAI;AACJ;AACA,EAAE;;AAEF,CAAC,SAAS;AACV;AACA,QAAQ,eAAI;AACZ;AACA;;AAEA,mBAAmB,eAAI;AACvB;AACA,uBAAuB,eAAI;AAC3B,IAAI,mBAAY,MAAM,eAAI;AAC1B,SAAS,eAAI,UAAU,iBAAU;AACjC;AACA,UAAU,eAAI;AACd;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,mBAAY,MAAM,eAAI;AAC1B,SAAS,eAAI,UAAU,iBAAU;AACjC;AACA;AACA;AACA,WAAW,eAAI;AACf;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA,EAAE;;AAEF,WAAW,eAAI;;AAEf;AACA;AACA,WAAW,eAAI;AACf,SAAS,eAAI,EAAE,+BAAoB;AACnC;AACA,SAAS,eAAI,EAAE,+BAAoB;AACnC;AACA;AACA,WAAW,eAAI;AACf,SAAS,eAAI,EAAE,+BAAoB;AACnC;AACA,SAAS,eAAI,EAAE,+BAAoB;AACnC;AACA,wCAAwC,eAAI,EAAE,+BAAoB;AAClE,uCAAuC,eAAI,EAAE,+BAAoB;AACjE;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,cAAc,WAAW,SAAS,WAAW;AAC7C,oBAAoB,WAAW,gBAAgB,WAAW;AAC1D,kBAAkB,WAAW,cAAc,WAAW;AACtD,aAAa,WAAW;AACxB,mBAAmB,WAAW;AAC9B,iBAAiB,WAAW;AAC5B,YAAY,WAAW;AACvB,kBAAkB,WAAW;AAC7B,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA,wCAAwC,mRAAmR;AAC3T;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,UAAU;AAC5C;AACA;;;AAGA,2CAA2C,cAAc,2Q;;ACvOzD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC,WAAW;AACX,mCAAmC;AACnC,SAAS,sCAAsC;;AAE/C;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA,+DAA+D;AAC/D;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAAe,YAAY,EAAC;;;AAG5B,2CAA2C,cAAc,+P;;ACjLzD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;;AAGA,OAAO,UAAI;;AAEX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,oBAAoB,iBAAiB;AAC5C;AACA;AACA;AACA,mDAAmD,gBAAgB;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4CAA4C;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB;;AAEzB,sDAAsD,iBAAiB;AACvE;;AAEA;AACA;;AAEA;AACA;AACA;;;;AAIA,2CAA2C,cAAc,2P;;ACtMzD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;AAEA,OAAO,WAAI,CAAC,gBAAS;;AAEkE;AACpD;;AAEnC,sBAAsB,aAAa;AACnC,qBAAqB,aAAa,GAAG,YAAY;;AAEjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,sBAAsB,yBAAyB;AACtD;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,QAAQ;AACzC,CAAC,SAAS;AACV;AACA;AACA;AACA,EAAE;;AAEF,kBAAkB,WAAW,QAAQ,yBAAyB,IAAI;AAClE;AACA;AACA,sCAAsC,gBAAgB;AACtD,2BAA2B,gBAAgB;AAC3C;AACA,EAAE;;AAEF,0DAA0D,WAAW,gCAAgC;AACrG;;AAEA;AACA;AACA;AACA;AACA;AACO;AACP,aAAa,UAAU;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO;AACP,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,gBAAgB,4FAA4F;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA,iCAAiC,+HAA+H;AAChK;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,yEAAyE,UAAU;AACnF;AACA,6DAA6D,UAAU;AACvE,kCAAkC,uBAAuB,wBAAwB,IAAI;AACrF;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA,iCAAiC,iJAAiJ,8CAA8C,UAAU;AAC1O;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA,GAAG;AACH,gCAAgC;AAChC;AACA;AACA,UAAU;AACV;;AAEA;AACA,+BAA+B,6BAA6B;AAC5D,SAAS,oBAAoB;AAC7B;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,iBAAiB,gCAAgC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,kBAAkB,UAAU;AACnC;AACA;AACA;AACA,gBAAgB,QAAQ;;AAExB,iBAAiB,mBAAmB;AACpC;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;;AAEA,UAAU,kBAAkB;AAC5B;AACA;AACA;AACA,4DAA4D,WAAW,UAAU;AACjF,KAAK;AACL;AACA,4DAA4D,WAAW,UAAU,sCAAsC;AACvH,KAAK;AACL,4DAA4D,WAAW,UAAU,sCAAsC;AACvH;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA,2CAA2C,cAAc,+P;;ACxRzD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;AAEqC;AACgB;AACX;;AAE1C;AACA;AACA,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,OAAO,6CAA6C,mCAAmC;AACvF;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA,YAAY,wCAAwC;AACpD,mCAAmC,KAAK;AACxC;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB;AACA;AACA,WAAW,UAAU;AACrB;;AAEO,4BAA4B,SAAS;AAC5C;AACA,WAAW;;AAEX;AACA,WAAW;AACX;;AAEA;AACA,UAAU,UAAU;AACpB,QAAQ,qCAAqC,YAAY;AACzD;;AAEA,+BAA+B,8BAA8B;;AAE7D;AACA,UAAU,qBAAqB;AAC/B,sEAAsE,iDAAiD;AACvH;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB;;AAEO,uBAAuB,SAAS;AACvC;;AAEA,yBAAyB;;AAEzB;;AAEA;AACA,iBAAiB;;AAEjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,qBAAqB,wBAAwB;AAC7C;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,wBAAwB;AAC7C,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wBAAwB;AAC9C,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C;AACA,2CAA2C;AAC3C;AACA;;;;AAIA,2CAA2C,cAAc,2Q;;;;ACvRzD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;;;AAI+B;AACS;;AAEL;;AAEY;AACV;AACJ;AACc;AACP;AACK;AACN;AACJ;;;AAGI;AACU;;AAEI;;AAErD;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,aAAM;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI,0BAAU;AACd,IAAI,qBAAK;AACT,IAAI,GAAG;AACP,IAAI,0BAAU;AACd,IAAI,yBAAa;AACjB,IAAI,sBAAM;AACV,IAAI,oBAAI;AACR,IAAI,MAAY;AAChB;;AAEA,IAAI,sBAAM;AACV,IAAI,2BAAW;;AAEf,aAAa;AACb,iBAAiB;;AAEjB;;AAEA,UAAU;AACV,MAAM;AACN,QAAQ;;AAER;;;AAGA;AACA;AACA,EAAE,aAAM;AACR,CAAC;;AAED;AACA;AACA;;AAEA,iCAAiC,aAAM,SAAS;AAChD;;AAEA,6CAAe,aAAM,EAAC;;AAEtB,2CAA2C,cAAc,+P;;;;;;;;;;AClHzD;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,IAAqC;AACzC,gBAAgB,mBAAO,CAAC,mBAAU;;AAElC;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,oCAA2B;AACtD,EAAE,KAAK;AAAA,EAIN;;;;;;;;;;;AClBD;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb,cAAc,mBAAO,CAAC,mBAAU;AAChC,aAAa,mBAAO,CAAC,wBAAe;;AAEpC,2BAA2B,mBAAO,CAAC,qCAA4B;AAC/D,UAAU,mBAAO,CAAC,oBAAW;AAC7B,qBAAqB,mBAAO,CAAC,2BAAkB;;AAE/C;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,8BAA8B;AAC9B,QAAQ;AACR;AACA;AACA;AACA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4BAA4B;AAC5B,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,SAAS,KAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,2BAA2B;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,KAAqC,4FAA4F,CAAM;AAC7I;AACA;;AAEA,oBAAoB,gCAAgC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,gCAAgC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iHAAiH;AACjH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;ACjmBA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA,IAAI,IAAqC;AACzC,6BAA6B,mBAAO,CAAC,qCAA4B;AACjE;AACA,YAAY,mBAAO,CAAC,oBAAW;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,WAAW;AACtB;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6GAA6G;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;ACtGA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;AAEA;;AAEkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wCAAwC,EAAE,mDAAM,UAAU;AACjE;AACA,IAAI,mDAAM,mBAAmB,mDAAM;;AAEnC;;AAEA;;AAEA;AACA,cAAc,mDAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC,mDAAM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,mDAAM;;AAEP,CAAC,mDAAM;AACP;AACA;AACA;AACA;AACA,YAAY,mDAAM;AAClB;;AAEA;AACA,sBAAsB,mDAAM;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,IAAI,mDAAM,sEAAsE,mDAAM;;AAEtF;;AAEA;;AAEA;AACA,UAAU,mDAAM;AAChB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU,mDAAM;AAChB;AACA;;AAEA,uCAAuC,KAAK;AAC5C;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,aAAa,mDAAM;;AAEnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS,mDAAM;AACf;AACA;AACA;AACA,SAAS,mDAAM;AACf;AACA;;AAEA;AACA;;AAEA,uBAAuB,mDAAM;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEO;AACP;AACA;;AAEA;AACA,YAAY,mDAAM;AAClB,gBAAgB,mDAAM;AACtB;AACA;;AAEA,2CAA2C,cAAc,uP;;;;;;;;;;;;;;;;ACpRzD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;;AAEA;;;AAGO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,GAAG,EAAE,EAAE;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe,KAAK,cAAc,EAAE;AACvD;AACA;;AAEO,uBAAuB,sCAAsC;;;AAGpE;AACA;;AAEO;AACP;AACA;;;AAGA,2CAA2C,cAAc,uQ;;;;;;;;;;;;;;;ACxEzD;AACA;AACA;;AAEA,WAAW,wBAAwB;AACnC;;AAEA,WAAW,wBAAwB;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF,YAAY,QAAQ;AACb;AACP,YAAY,UAAU;AACtB;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,YAAY,mBAAmB;AACxB;AACP;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;;AAEA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;;AAGA,2CAA2C,cAAc,mP;;;;;;;;;;AChGzD;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA;;;;;;;SCXA;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA;UACA,iCAAiC,WAAW;UAC5C;UACA,E;;;;;UCPA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA,E;;;;;UCPA,wF;;;;;UCAA;UACA;UACA;UACA,uDAAuD,iBAAiB;UACxE;UACA,gDAAgD,aAAa;UAC7D,E;;;;;SENA;SACA;SACA;SACA","sources":["webpack://lilact/./src/jsx.js","webpack://lilact/./node_modules/object-assign/index.js","webpack://lilact/./node_modules/react-is/index.js","webpack://lilact/./node_modules/prop-types/lib/has.js","webpack://lilact/./node_modules/react-is/cjs/react-is.development.js","webpack://lilact/./node_modules/redux/dist/redux.mjs","webpack://lilact/./node_modules/@emotion/sheet/dist/emotion-sheet.development.esm.js","webpack://lilact/./node_modules/stylis/src/Utility.js","webpack://lilact/./node_modules/stylis/src/Tokenizer.js","webpack://lilact/./node_modules/stylis/src/Enum.js","webpack://lilact/./node_modules/stylis/src/Serializer.js","webpack://lilact/./node_modules/stylis/src/Prefixer.js","webpack://lilact/./node_modules/stylis/src/Middleware.js","webpack://lilact/./node_modules/stylis/src/Parser.js","webpack://lilact/./node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js","webpack://lilact/./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack://lilact/./node_modules/@emotion/cache/dist/emotion-cache.browser.development.esm.js","webpack://lilact/./node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack://lilact/./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack://lilact/./node_modules/@emotion/serialize/dist/emotion-serialize.development.esm.js","webpack://lilact/./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack://lilact/./node_modules/@emotion/css/create-instance/dist/emotion-css-create-instance.development.esm.js","webpack://lilact/./node_modules/@emotion/css/dist/emotion-css.development.esm.js","webpack://lilact/./src/misc.jsx","webpack://lilact/./src/components.jsx","webpack://lilact/./src/hooks.jsx","webpack://lilact/./src/timers.jsx","webpack://lilact/./src/transition.jsx","webpack://lilact/./src/events.jsx","webpack://lilact/./src/redux.jsx","webpack://lilact/./src/router.jsx","webpack://lilact/./src/accessories.jsx","webpack://lilact/./src/lilact.jsx","webpack://lilact/./node_modules/prop-types/index.js","webpack://lilact/./node_modules/prop-types/factoryWithTypeCheckers.js","webpack://lilact/./node_modules/prop-types/checkPropTypes.js","webpack://lilact/./src/run.jsx","webpack://lilact/./src/jsx.addons.js","webpack://lilact/./src/vlq.js","webpack://lilact/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://lilact/webpack/bootstrap","webpack://lilact/webpack/runtime/compat get default export","webpack://lilact/webpack/runtime/define property getters","webpack://lilact/webpack/runtime/hasOwnProperty shorthand","webpack://lilact/webpack/runtime/make namespace object","webpack://lilact/webpack/before-startup","webpack://lilact/webpack/startup","webpack://lilact/webpack/after-startup"],"sourcesContent":["/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\n// This is a JSX transpiler that covers all the standard with some \n// additional features like a nice preprocessor. It doesn't rely on any other \n// library, even Lilact itself. It also generates sourcemap internally!\n// It is not very fast, the xml look-ahead can be quite expensive, but it is not \n// slow at all.\n\n// Check the webpack config and also the transpiler.js helper script for\n// usage outside Lilact. Also make sure to check the default configuration.\n\n// There are some situations that are solved with tricks, as some aspects of\n// javascripts import a complete parser and I didn't want to get into that!\n// Works almosr perfectly so far (all observed bugs except 1 are fixed), works \n// even on nasty things like the compressed version of tensorflow.js! Feel free \n// to report any bugs, and please include a testable example. Thanks! :)\n//\n// note: until an efficient fix is found, make sure the slashes inside\n// \t\t a regexp are escaped, even if they work without escaping.\n\n\n// todo: injected string try catchs should be generated by a function\n\nimport * as jsxAddons from './jsx.addons.js';\n\nexport const transpilerConfig = {\n\taddons: jsxAddons,\n\tsetFunctionLabels: true,\n\tenableLabelStack: false,\n\tinjectLabels: true,\n\t// todo: alt+shift+7 on apple abc extended layout is better i think, \n\t// but my current editor doesn't support syntax highlighting with it.\n\tpreprocessorDelimiter: 'ʔ', // alt+shift+. on apple abc extended layout \n\n\n\trequired: {},\n\tfunc_labels: {},\n\tfunc_num: Math.floor(Math.random()*10000)\n}\n\n\nconst TRANSPILER_OUTPUT = Symbol.for(\"LILACT:TRANSPILER_OUTPUT\");\n\nimport * as vlq from './vlq.js';\n\nlet raiseError;\nlet tab=0;\n\nfunction lookAhead(f, code, index, ...args)\n{\n\tconst b = f(code, index, ...args);\n\tif(b) {\n\t\treturn [b.end, b];\n\t}\n\treturn [index];\n}\n\nfunction parseRegex(code, index, container)\n{\n\t// previous token can only be(end with) ;=,([{}!^~&|:?*-+\\\\/<> or directive or \n\t// the slash can only be the first character\n\t// the backward scan automatically passes for i=0\n\n\t// todo: i have doubts about including preprocessorDelimiter\n\n\tlet i = index;\n\tconst dels = `;=,([{}!^~&|:?*-+\\\\/<>${transpilerConfig.preprocessorDelimiter}`;\n\twhile(--i>0) { \n\t\tif( ' \\t\\n\\r'.indexOf(code[i])!==-1 ) continue;\n\t\tif( dels.indexOf(code[i])!==-1 ) break;\n\t\treturn;\n\t}\n\n\tconst b = {\n\t\ttype: \"regex\",\n\t\tbegin: index++\n\t};\n\n\twhile(index<code.length) {\n\t\tconst ch = code[index];\n\t\tswitch(ch) {\n\t\tcase '\\n':\n\t\t\treturn;\n\t\tcase '/':\n\t\t\tb.end = index+1;\n\t\t\tif(container) container.children.push(b);\n\t\t\treturn b;\n\t\tcase '\\\\':\n\t\t\tindex++;\n\t\tdefault:\n\t\t\tindex++;\n\t\t}\n\t}\t\n}\n\nfunction parseComment(code, index, container)\n{\n\tconst b = {\n\t\ttype: \"comment\",\n\t\tbegin: index++\n\t};\n\n\tif(code[index]!=='*' && code[index]!=='/') {\n\t\treturn parseRegex(code, index-1, container);\n\t}\n\n\tconst is_multiline = code[index]==='*';\n\n\tindex++;\n\n\twhile(index<code.length) {\n\n\t\tconst ch = code[index];\n\t\tswitch(ch) {\n\n\t\tcase '*':\n\t\t\tif(is_multiline && code[index+1]==='/') {\n\t\t\t\tb.end=index+2;\n\t\t\t\tif(container) container.children.push(b);\n\t\t\t\treturn b;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase '\\n':\n\t\t\tif(!is_multiline) {\n\t\t\t\tb.end = index+1;\n\t\t\t\tif(container) container.children.push(b);\n\t\t\t\treturn b;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t}\n\n\t\tindex++;\n\t}\n\n\traiseError(`unterminated comment`, index);\n}\n\n\nfunction parseDirective(code, index, container)\n{\t\n\tlet i=index+1;\n\twhile(\tcode[i] && \n\t\t\t(code[i]!=='\\n' && code[i]!==transpilerConfig.preprocessorDelimiter) || \n\t\t\tcode[i-1]==='\\\\') \n\t{\n\t\ti++;\n\t}\n\n\tconst is_exp = code[i]===transpilerConfig.preprocessorDelimiter;\n\n\tif(is_exp) {\n\t\tconst b = {\n\t\t\ttype: \"directive\",\n\t\t\tbegin: index,\n\t\t\tcbegin: index,\n\t\t\tend: i+1,\n\n\t\t\texpression: code.slice(index+1,i).replace(/\\\\(.)/gs, '$1'),\n\t\t\tvalue: ''\n\t\t};\n\n\t\tif(container) container.children.push(b);\t\n\t\treturn b;\n\n\t}\n\telse {\n\t\tlet j=index;\n\n\t\twhile(j-->=0 && (code[j]===' ' || code[j]==='\\t'));\n\t\tconst is_first = j===-1 || code[j]==='\\n';\n\n\t\tif(is_first) {\n\t\t\tconst b = {\n\t\t\t\ttype: \"directive\",\n\t\t\t\tbegin: index,\n\t\t\t\tcbegin: index,\n\t\t\t\tend: i+1,\n\n\t\t\t\tpragma: code.slice(index+1,i+1).replace(/\\\\(.)/gs, '$1'),\n\t\t\t\tvalue: ''\n\t\t\t};\n\t\t\tif(container) container.children.push(b);\t\n\t\t\treturn b;\n\t\t}\n\t}\n\n\traiseError('error in preprocessor statement.')\n}\n\n\n// note: pragma blocks should begin and end in same block main trunk (not its children).\n// note: preprocessor code must be JS, not JSX.\n\nfunction preprocessPragmas(node, context)\n{\n\tconst all_nodes = [];\n\n\tvar segments = [\"const {\" + Object.keys(jsxAddons).join(', ') + \"} = transpilerConfig.addons;\"];\n\n\tvar scope_stack = [];\n\tvar last_block = null;\n\n\tconst clone_block = (i, val)=>{ \n\t\tlast_block = typeof(all_nodes[i])==='object'? \n\t\t\t\t\t\tstructuredClone(\n\t\t\t\t\t\t\t\t{ ...all_nodes[i], children: undefined, attributes: {} }\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t:all_nodes[i];\n\n\t\tif(last_block.type==='directive') {\n\t\t\tlast_block.value = val;\n\t\t}\n\n\t\tscope_stack[0].out ??= [];\n\t\tscope_stack[0].out.push(last_block);\n\n\t\treturn last_block;\n\t};\n\n\tconst clone_attr = (i, name)=>{ \n\t\tlast_block = typeof(all_nodes[i])==='object'? \n\t\t\t\t\t\tstructuredClone(\n\t\t\t\t\t\t\t\t{ ...all_nodes[i], children: undefined, attributes: {} }\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t:all_nodes[i];\n\n\t\tscope_stack[0].attributes[name] = last_block;\n\n\t\treturn last_block;\n\t};\n\n\tconst push_scope = ()=>{ scope_stack = [last_block, scope_stack]; };\n\tconst pop_scope = ()=>{ scope_stack = scope_stack[1]; };\n\n\tconst vine_traverse = (nd)=> {\n\t\t\n\t\tif(typeof(nd)!=='object') return segments;\n\n\t\tsegments.push(`push_scope();`);\n\n\t\tif(nd.attributes) {\n\t\t\tfor(const attr in nd.attributes) {\n\t\t\t\tconst ch = nd.attributes[attr];\n\n\t\t\t\tall_nodes.push(ch);\n\n\t\t\t\tsegments.push(`clone_attr(${all_nodes.length-1}, \"${attr}\");`);\n\t\t\t\tvine_traverse(ch);\n\n\t\t\t}\n\t\t}\n\t\tif(nd.children) {\n\t\t\tfor(const ch of nd.children) {\n\t\t\t\tall_nodes.push(ch);\n\n\t\t\t\tif(ch.type==='directive' && ch.expression===undefined) {\n\t\t\t\t\tsegments.push(ch.pragma);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(ch.expression)\n\t\t\t\t\t\tsegments.push(`clone_block(${all_nodes.length-1}, ${ch.expression});`);\n\t\t\t\t\telse\n\t\t\t\t\t\tsegments.push(`clone_block(${all_nodes.length-1});`);\n\t\t\t\t\tvine_traverse(ch);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsegments.push(`pop_scope();`);\n\n\t\treturn segments;\n\t}\n\n\n\tnode.out = [];\n\tlast_block = node;\n\tpush_scope();\n\tvine_traverse(node);\n\n\tconst cmd = segments.join('\\n');\n\teval(cmd);\n\n\treturn segments;\n}\n\n\nfunction parseString(code, index, q, container)\n{\n\tconst b = {\n\t\ttype: \"string\",\n\t\tbegin: index++,\n\t\tcbegin: index\n\t};\n\n\twhile(index<code.length) {\n\n\t\tconst ch = code[index];\n\n\t\tswitch(ch) {\n\n\t\tcase q:\n\t\t\tb.cend=index;\n\t\t\tb.end=index+1;\n\t\t\tif(container) container.children.push(b);\n\t\t\treturn b;\n\n\t\tcase '\\n':\n\t\t\tif(q!=='\\`') raiseError(`unterminated string`, index);\n\t\t\tbreak;\n\n\t\tcase '$':\n\t\t\tif(q==='`') {\n\t\t\t\tindex++;\n\t\t\t\tif(code[index]==='{') {\n\t\t\t\t\t[index] = lookAhead( parseJS, code, index, true, container );\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase '\\\\':\n\t\t\tindex++;\n\t\t\tbreak;\n\t\t}\n\n\t\tindex++;\n\t}\n\n\traiseError(`unterminated string`, index);\n}\n\n\nfunction parseXMLContent(code, index, container, eols)\n{\n\tlet i = index;\n\tlet cur = index;\n\n\twhile(i<code.length) {\n\t\tswitch(code[i]) {\n\n\t\tcase '<':\n\t\t\tif(code[i+1]==='/') {\n\n\t\t\t\ti+=2;\n\n\t\t\t\tlet j=i;\n\n\t\t\t\twhile(j<code.length && code[j]!=='>') {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\n\t\t\t\tif(j===code.length) {\n\t\t\t\t\treturn null; //throw `ill-formed xml (slash) ${j}`;\n\t\t\t\t}\n\n\t\t\t\tconst tag = code.substring(i,j).trim();\n\n\t\t\t\tif(container.tag!==tag) {\n\t\t\t\t\tthrow `ill-formed xml (close tag) [${container.tag},${tag}] ${j}`;\n\t\t\t\t}\n\n\t\t\t\tcontainer.end = j+1;\n\n\t\t\t\tcontainer.cbegin = index+1; // content begin index\n\t\t\t\tcontainer.cend = i-2; // content end index\n\n\t\t\t\treturn j;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t[i] = lookAhead( parseXML, code, i, container );\n\n\t\t\t\tif(i>cur) {\n\t\t\t\t\tcur = i;\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t\telse cur++;\n\t\t\t\t\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase '{':\n\t\t\tconst j=i;\n\t\t\t[i] = lookAhead( parseJS, code, i, true, container );\n\t\t\ti--;\n\t\t\tbreak;\n\n\t\t}\n\t\ti++;\n\t}\n\n\treturn cur;\n}\n\n\nfunction parseXML(code, index, container)\n{\n\t// delimiters\n\tconst delims = [ ' ','\\t','\\n', '/','&','^','%','|','!','~','+','*','?',\n\t\t\t\t\t'<','>',';',',','=','{','}','(',')','[',']','\\'','\\\"',\n\t\t\t\t\t'\\`', '\\\\', '', undefined ]; \n\n\tconst skip_spaces = \n\t\t()=> { while( code[index]===' ' || code[index]==='\\t' || code[index]==='\\n' ) index++; };\n\n\tconst b = { // block\n\t\ttype: \"xml\",\n\t\tbegin: index++,\n\t\tchildren: [],\n\t\tattributes: {},\n\t\tself_closing: false,\n\t\tjs_attributes: []\n\t};\n\n\tskip_spaces();\n\t\n\tlet i = index;\n\twhile(i<code.length && delims.indexOf(code[i])===-1) i++;\n\tif(i===code.length) return;\n\n\tb.tag = code.substring(index,i);\n\n\tindex = i;\n\n\n\tlet last_attr = undefined;\n\n\twhile(index<code.length) {\n\t\ti = index;\n\n\t\twhile( i<code.length && delims.indexOf(code[i])===-1 ) {\n\t\t\ti++;\n\t\t}\n\t\tif(i===code.length) return;\n\n\t\tconst tok = code.substring(index,i);\n\t\tif(tok.length) {\n\t\t\tlast_attr = tok;\n\t\t\tb.attributes[tok] = true;\n\t\t}\n\n\t\tindex = i;\n\n\t\tswitch(code[index]) {\n\n\t\tcase '=':\n\n\t\t\tif(last_attr) {\n\t\t\t\tindex++;\n\t\t\t\tskip_spaces();\n\n\t\t\t\tif(code[index]==='/') { // todo: comment after =, should be tested\n\t\t\t\t\t[i] = lookAhead( parseComment, code, index );\n\t\t\t\t\tif(i>index) index = i;\n\t\t\t\t\telse index++;\n\t\t\t\t}\n\n\t\t\t\tlet av; // attribute value\n\n\t\t\t\tswitch(code[index]) {\n\t\t\t\tcase '\\'':\n\t\t\t\tcase '\\\"':\n\t\t\t\t\t//case '\\`':\n\t\t\t\t\t[index, av] = lookAhead( parseString, code, index, code[index] );\n\t\t\t\t\tb.attributes[last_attr] = av;\n\t\t\t\t\tlast_attr = undefined;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase '{':\n\t\t\t\t\t[index, av] = lookAhead( parseJS, code, index, true );\n\t\t\t\t\tb.attributes[last_attr] = av;\n\t\t\t\t\tlast_attr = undefined;\n\t\t\t\t\tbreak;\t\t\t\t\t\n\n\t\t\t\tdefault: \n\t\t\t\t\t{\n\t\t\t\t\t\ti = index;\n\t\t\t\t\t\twhile( i<code.length && delims.indexOf(code[i])===-1 ) {\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(i===code.length) {\n\t\t\t\t\t\t\treturn; // not xml\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst tok = code.substring(index,i);\n\t\t\t\t\t\tindex = i;\n\n\t\t\t\t\t\tb.attributes[last_attr] = tok;\n\t\t\t\t\t\tlast_attr = undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t//console.log(`ill-formed xml (attribute)`, index);\n\t\t\t\treturn; // not xml\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase '{':\n\t\t\tlet jsc;\n\t\t\t[index, jsc] = lookAhead( parseJS, code, index, true );\n\t\t\tjsc.is_xml_js = true;\n\t\t\tb.js_attributes.push(jsc);\n\t\t\tbreak;\t\t\t\t\t\n\n\t\tcase '/':\n\t\t\tif(code[index+1]==='>') {\n\t\t\t\tb.end = index+2;\n\t\t\t\tb.cbegin = b.begin;\n\t\t\t\tb.cend = b.end;\n\n\t\t\t\t//b.children = undefined;\n\t\t\t\tb.self_closing = true;\n\n\t\t\t\tif(container) container.children.push(b);\n\t\t\t\treturn b;\n\t\t\t}\n\n\t\t\t[i] = lookAhead( parseComment, code, index );\n\t\t\tif(i>index) index = i;\n\t\t\telse index++;\n\n\t\t\tbreak;\n\n\t\tcase '>':\n\t\t\tconst i = parseXMLContent(code, index, b);\n\n\t\t\t// not xml\n\t\t\t// todo: side effects must be checked\n\t\t\tif(i===null) return;\n\n\t\t\tif(i>index) index = i;\n\t\t\telse index++;\n\n\t\t\tif(b.end) {\n\t\t\t\tif(container) container.children.push(b);\n\t\t\t\treturn b;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase ' ':\n\t\tcase '\\t':\n\t\tcase '\\n':\n\t\t\tskip_spaces();\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\treturn;\n\n\t\t}\n\t}\n}\n\n\nfunction parseParanthesis(code, index, container)\n{\n\tconst b = { // block\n\t\ttype: \"paranthesis\",\n\t\tbegin: index,\n\t\tcbegin: ++index,\n\t\tchildren: [],\n\t\tself_closing: false\n\t};\n\n\twhile(index<code.length) {\n\t\tconst ch = code[index];\n\n\t\tswitch(ch) {\n\n\t\tcase '<':{\n\t\t\tlet [i] = lookAhead( parseXML, code, index, b );\n\t\t\tif(i>index) index = i;\n\t\t\telse index++;\n\t\t\tbreak;\n\t\t}\n\t\tcase '\\\"':\n\t\tcase '\\'':\n\t\tcase '\\`': \n\t\t\t[index] = lookAhead( parseString, code, index, ch );\n\t\t\tbreak;\n\n\t\tcase '{':\n\t\t\t[index] = lookAhead( parseJS, code, index, true, b );\n\t\t\tbreak;\n\n\t\tcase '(':\n\t\t\t[index] = lookAhead( parseParanthesis, code, index, b );\n\t\t\tbreak;\n\n\t\tcase '}':\n\t\t\traiseError(`unmatched curly bracket`, index);\n\t\t\tbreak;\n\n\t\tcase ')':\n\t\t\tb.end = index+1;\n\t\t\tb.cend = index;\n\t\t\tif(container) container.children.push(b);\n\t\t\treturn b;\n\n\t\tcase '/':\n\t\t\tconst [i] = lookAhead( parseComment, code, index, b );\n\t\t\tif(i>index) index = i;\n\t\t\telse index++;\n\t\t\tbreak;\n\n\t\tcase '\\\\':\n\t\t\tindex++;\n\t\tdefault:\n\t\t\tindex++;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\traiseError(`unterminated paranthesis block (started at ${b.begin})`, index);\n}\n\n\nfunction parseJS(code, index=0, is_block=false, container)\n{\n\tconst b = { // block\n\t\ttype: \"js\",\n\t\tbegin: index,\n\t\tcbegin: index+=(is_block?1:0),\n\t\tchildren: []\n\t};\n\n\twhile(index<code.length) {\n\t\tconst ch = code[index];\n\n\t\tswitch(ch) {\n\n\t\tcase '<': {\n\t\t\tlet [i] = lookAhead( parseXML, code, index, b );\n\n\t\t\tif(i>index) index = i;\n\t\t\telse index++;\n\t\t\tbreak;\n\t\t}\n\n\t\tcase '\\\"':\n\t\tcase '\\'':\n\t\tcase '\\`': \n\t\t\t[index] = lookAhead( parseString, code, index, ch );\n\t\t\tbreak;\n\n\t\tcase '{': {\n\t\t\tconst i = index;\n\t\t\t[index] = lookAhead( parseJS, code, index, true, b );\n\t\t\tbreak;\n\t\t}\n\n\t\tcase '(': // this is only for function detection\n\t\t\t[index] = lookAhead( parseParanthesis, code, index, b );\n\t\t\tbreak;\n\n\t\tcase ')': // this is only for function detection\n\t\t\traiseError(`unmatched paranthesis ${index} [from ${b.begin}]`, index);\n\t\t\tbreak;\n\n\t\tcase '}':\n\t\t\tif(is_block) {\n\t\t\t\tb.end = index+1;\n\t\t\t\tb.cend = index;\n\t\t\t\tif(container) container.children.push(b);\n\t\t\t\treturn b;\n\t\t\t}\n\t\t\traiseError(`unmatched curly bracket`, index);\n\t\t\tbreak;\n\n\t\tcase '/':\n\t\t\t{\n\t\t\t\tlet [i] = lookAhead( parseComment, code, index, b );\n\t\t\t\tif(i>index) index = i;\n\t\t\t\telse index++;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\tcase transpilerConfig.preprocessorDelimiter:\n\t\t\t{\n\t\t\t\tlet [i] = lookAhead( parseDirective, code, index, b );\n\t\t\t\tif(i>index) index = i;\n\t\t\t\telse index++;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\tcase '\\\\':\n\t\t\tindex++;\n\n\t\tdefault:\n\t\t\tindex++;\n\t\t}\n\t}\n\n\tif(is_block) raiseError(`unterminated js block at ${index} (started at ${b.begin})`);\n\n\tb.end = index;\n\tb.cend = index;\n\tif(container) container.children.push(b);\n\treturn b;\n}\n\n\n// this is for lilact internal use, it is a workaround for approximating error location\n// in eval when transpiling and running jsx directly in browser.\n\nfunction labelFunctions(node, eols)\n{\n\n\tnode.already_labeled = true;\n\n\tfunction getNext(i, step=1)\n\t{\n\t\twhile( (i+=step) < node.children.length && i>=0) {\n\t\t\tconst ch = node.children[i];\n\n\t\t\tif(typeof(ch)==='string') {\n\t\t\t\tconst t = ch.trim();\n\t\t\t\tif(t.length) return [i, t];\n\t\t\t}\n\t\t\tif(typeof(ch)==='object' && ch.type!=='comment') {\n\t\t\t\treturn [i,ch];\n\t\t\t}\n\t\t}\n\t\treturn [null,null];\n\t}\n\n\tlet i, nxt, prev;\n\tfor(let chi=0; chi<node.children.length; chi++) {\n\n\t\tif(typeof(node.children[chi])==='object' && node.children[chi].type==='paranthesis') {\n\n\t\t\t[i, prev] = getNext(chi, -1);\n\t\t\tif(prev===null) continue;\n\n\t\t\tif(typeof(prev)!=='string' || ['switch', 'catch', 'try', 'class'].find((x)=>prev.trim().endsWith(x))!==undefined) continue;\n\t\t\tlet label = prev;\n\n\t\t\t[i, prev] = getNext(i, -1);\n\t\t\tif(prev===null) continue;\n\t\t\tif(typeof(prev)==='string' && ['extern', 'class'].indexOf(prev)!==-1) continue;\n\n\n\t\t\t[i, nxt] = getNext(chi);\n\n\t\t\tif(nxt===null) continue;\n\n\t\t\tif(transpilerConfig.injectTraceLabels && typeof(nxt)==='object' && nxt.type==='js') {\n\t\t\t\tconst begin = getRowCol(eols, chi); // begin is always the location of function args paranthesis\n\t\t\t\tnxt.children.splice(1,0, `/*LILACTBLOCK${++transpilerConfig.func_num}:${begin}:${label}*/try{`);\n\t\t\t\tif(transpilerConfig.enableLabelStack) {\n\t\t\t\t\tnxt.children.splice(nxt.children.length-1, 0, `} catch(e){ if(typeof(e)!=='object') e=new Error(e);e.lilact_trace=[${transpilerConfig.func_num},e.lilact_trace];throw e}`);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnxt.children.splice(nxt.children.length-1, 0, `} catch(e){ if(typeof(e)!=='object') e=new Error(e);e.lilact_trace=${transpilerConfig.func_num};throw e}`);\n\t\t\t\t}\n\t\t\t\tchi += 2;\t\t\t\t\n\t\t\t}\n\t\t}\n\n\t\telse if(node.children[chi]==='=>') {\n\t\t\t[i, prev] = getNext(chi, -1);\n\n\t\t\tif(typeof(prev)==='object' && prev.type==='paranthesis') {\n\n\t\t\t\tconst begin = getRowCol(eols, prev.begin); // begin is always the location of function args paranthesis\n\n\t\t\t\t[i, nxt] = getNext(chi);\n\n\t\t\t\tif(typeof(nxt)==='object' && nxt.type==='js') {\n\n\t\t\t\t\tif(transpilerConfig.injectTraceLabels) {\n\n\t\t\t\t\t\tnxt.children.splice(1,0, \n\t\t\t\t\t\t\t`/*LILACTBLOCK${++transpilerConfig.func_num}:${begin}:<ARROW>*/try {`);\n\n\t\t\t\t\t\tif(transpilerConfig.enableLabelStack) {\n\t\t\t\t\t\t\tnxt.children.splice(nxt.children.length-1, 0, \n\t\t\t\t\t\t\t\t`} catch(e){if(typeof(e)!=='object') e=new Error(e);e.lilact_trace=[${transpilerConfig.func_num},e.lilact_trace];throw e}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnxt.children.splice(nxt.children.length-1, 0, \n\t\t\t\t\t\t\t\t`} catch(e){if(typeof(e)!=='object') e=new Error(e);e.lilact_trace=${transpilerConfig.func_num};throw e}`);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\t\t\t\t\t\n\t\t\t\t\tchi += 2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\t\t\t\n\n}\n\nfunction scanEOLs(code)\n{\n\tconst endlines = [0];\n\n\tfor(let i in code) {\n\t\tif(code[i]==='\\n') {\n\t\t\tendlines.push(parseInt(i));\n\t\t}\n\t}\n\tendlines.push(code.length);\n\n\treturn endlines;\n}\n\nfunction getRowCol(eols, i)\n{\n\tif(!eols.last) eols.last=1;\n\n\twhile(i>eols[eols.last]) {\n\t\teols.last++;\n\t\tif(eols.last===eols.length) {\n\t\t\teols.last=eols.length-1;\n\t\t\tbreak;\n\t\t}\n\t}\n\twhile(i<eols[eols.last-1] && eols.last>1) {\n\t\teols.last--;\n\t}\n\n\treturn [eols.last-1, i-eols[eols.last-1]];\n}\n\n\nfunction generateSourceMap(json, path, jsx_eols, out_eols, mappings=[])\n{\n\tlet mpps = [];\n\n\tconst sourcemap = {\n\t\t\"version\":3,\n\t\t\"file\":path,\n\t\t\"sourceRoot\":\"\",\n\t\t\"sources\":[path],\n\t\t\"names\":[],\n\t\t\"mappings\":\"\"\n\t};\n\n\n\tconst scan_leaves = (node)=>{\n\t\tif(!!node.children) {\n\n\t\t\tfor(const ch of node.children) {\n\t\t\t\tscan_leaves(ch);\n\t\t\t}\n\t\t}\n\t\tif(node.begin!==undefined && node.out_index!==undefined) {\n\t\t\tmpps.push( [ ...getRowCol(out_eols,node.out_index), ...getRowCol(jsx_eols,node.begin), node ] );\n\t\t}\n\t}\n\n\tscan_leaves(json);\n\n\tmpps = mpps.sort( \t(a,b)=>{ \n\t\tif (a[0] == b[0]) {\n\t\t\treturn a[1] - b[1];\n\t\t}\n\t\treturn a[0] - b[0];\n\t}\n\t);\n\n\tmappings.push(...mpps);\n\n\tlet mstr = \"\";\n\tlet r=0, oc=0;\n\n\tlet lr = 0, lc=0;\n\n\tfor(let i=0; i<mpps.length;i++) {\n\t\tconst m = mpps[i];\n\n\t\twhile(r<m[0]) {\n\t\t\toc=0;\n\t\t\tmstr+=(\";\");\n\t\t\tr++;\n\t\t}\n\n\t\tmstr+=',';\n\n\t\tmstr+=( vlq.encode(m[1]-oc,0,m[2]-lr,m[3]-lc) );\n\n\t\toc = m[1];\n\t\tlr = m[2];\n\t\tlc = m[3];\n\t}\n\n\tsourcemap.mappings = mstr.substring(1).replace(/;,/g, \";\"); \n\n\treturn \"\\n\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(JSON.stringify(sourcemap));\n\n}\n\n\n/**\n * This is the function that transpiles jsx code to js. It is not recommended to use directly.\n * \n * Use `Lilact.require` instead, or `Lilact.run` available in `run`, or add a `<scirpt type=\"text/jsx\" .../>` to your html.\n * \n * Lilact jsx parser doesn't rely on the Lilact itself, and can be used by other engines. The easiest way\n * is using the `bin/transpile.js` script. It has its own help.\n *\n * @returns The transpiled javascript code.\n */\n\nexport function transpileJSX( jsx, { \n\tfactory = \"Lilact.createComponent\", \n\tpath = \"anonymous\", \n\tappendSourcemap = true,\n\tmappings = [], \n\tinjectTraceLabels = false,\n\tdiscardComments = false\n} = {} )\n{\n\n\t// func_num is shared so consecutive transpilations create new ids each time.\n\ttranspilerConfig.func_num ??= 0;\n\ttranspilerConfig.preprocessorDelimiter ??= 'ʔ'; // alt+shift+. on apple abc extended layout \n\t\n\ttranspilerConfig.injectTraceLabels ??= injectTraceLabels; // alt+shift+. on apple abc extended layout \n\n\tconst eols = scanEOLs(jsx);\n\n\traiseError = ((eols, msg, index)=>{\n\t\tconst er = new Error(msg);\n\t\ter.name = 'JSXParseError';\n\t\t[er.lineNumber, er.columnNumber] = getRowCol(eols, index);\n\t\ter.lilact_trace = 'parse';\n\t\tthrow er;\n\t}).bind(null, eols);\n\n\tconst tokenize_re = /([\\{\\}\\(\\),;\\[\\]\\n]|[\\s^\\n]+)/g; \n\n\tconst json = parseJS(jsx);\n\tjson.data = jsx;\n\n\tconst prepare = (node)=>{\n\n\t\tif(node.attributes!==undefined) {\n\t\t\tfor(const attr in node.attributes) {\n\t\t\t\tif(typeof(node.attributes[attr])==='object') {\n\t\t\t\t\tprepare(node.attributes[attr]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(node.children!==undefined && !node.self_closing) {\n\n\t\t\tlet i = node.type==='js'? node.begin : (node.cbegin || node.begin);\n\t\t\tfor(let chi=0; chi<node.children.length; chi++) {\n\t\t\t\tconst ch = node.children[chi];\n\n\t\t\t\tif(ch.begin>i) {\n\t\t\t\t\tlet s = jsx.substring(i, ch.begin);\n\n\t\t\t\t\tif(node.type==='xml') s = s.trim();\n\t\t\t\t\tif(s.length) {\n\t\t\t\t\t\tif(node.type==='xml') {\n\t\t\t\t\t\t\tnode.children.splice(chi, 0, '\"'+s.replaceAll(\"\\n\", \"\\\\\\n\")+'\"');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnode.children.splice(chi, 0, ...s.split(tokenize_re)); \n\t\t\t\t\t\t}\n\t\t\t\t\t\tchi++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ti = ch.end;\n\n\t\t\t\tprepare(ch);\n\t\t\t}\n\n\t\t\tconst e = node.type==='js'? node.end : (node.cend || node.end);\n\n\t\t\tif(i<e && !node.self_closing) {\n\t\t\t\tlet s = jsx.substring(i, e);\n\t\t\t\tif(node.type==='xml') s = s.trim();\n\t\t\t\tif(s.length) {\n\t\t\t\t\tif(node.type==='xml') {\n\t\t\t\t\t\tnode.children.push( '\"'+s.replaceAll(\"\\n\", \"\\\\\\n\")+'\"' );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnode.children.push( ...s.split(tokenize_re) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnode.children = node.children.filter( (x)=>x!==\"\" );\n\n\t\t\tif(transpilerConfig.setFunctionLabels && !node.already_labeled) {\n\t\t\t\tlabelFunctions(node,eols);\n\t\t\t}\n\t\t}\n\t}\n\n\tprepare(json);\n\n\tpreprocessPragmas(json);\n\n\tconst codify = (outlen, node, is_attr=false, is_xml=false)=> {\n\n\t\tif(typeof(node)!=='object') return node;\n\n\t\tnode.out_index = outlen;\n\n\t\tif(node.type==='string') return jsx.substring(node.begin, node.end);\n\t\tif(node.type==='regex') return jsx.substring(node.begin, node.end);\n\t\tif(node.type==='comment') return (discardComments || is_attr)?'':jsx.substring(node.begin, node.end);\n\t\tif(node.type==='directive') return node.value;\n\n\n\t\tif(node.type==='paranthesis') {\n\t\t\tlet out = \"(\";\n\n\t\t\tif(node.out) {\n\t\t\t\tfor(const ch of node.out) {\n\t\t\t\t\tout+=codify(outlen+out.length-1, ch);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn out + \")\";\n\t\t}\n\n\t\tif(node.type==='js') {\n\t\t\tlet out = \"\";\n\n\t\t\tif(node.out) {\n\t\t\t\tfor(const ch of node.out) {\n\t\t\t\t\tif(is_xml && ch.type==='comment') continue;\n\t\t\t\t\tout+=codify( outlen + out.length - (is_attr?1:0), ch);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(is_attr) {\n\t\t\t\treturn out.substring(1, out.length-1);\n\t\t\t}\n\n\t\t\t// todo: this is very simple, it should parse recursively\n\t\t\tif(node?.is_xml_js) {\n\t\t\t\treturn jsx.substring(node.begin+1, node.end-1);\n\t\t\t}\n\n\t\t\treturn out;\n\t\t}\n\n\t\tif(node.type==='xml') {\n\n\t\t\tif(node.tag.length===0) {\n\t\t\t\tnode.tag = \"null\";\n\t\t\t}\n\t\t\telse if(node.tag[0]!==node.tag[0].toUpperCase()) {\n\t\t\t\tnode.tag = `\"${node.tag}\"`;\n\t\t\t}\n\n\t\t\tlet out = '';\n\n\n\t\t\tlet is_first=true;\n\n\t\t\tfor(const a of node.js_attributes) {\n\t\t\t\tlet oo = codify(outlen + out.length, a, false);\n\n\t\t\t\tout+=`${is_first?'':', '}${oo}`\n\t\t\t\tis_first=false;\n\t\t\t}\n\n\n\t\t\tif(node.attributes) {\n\t\t\t\tfor(const a in node.attributes) {\n\t\t\t\t\tout+=`${is_first?'':', '}\"${a}\": ${codify(outlen + out.length, node.attributes[a], true)}`\n\t\t\t\t\tis_first=false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout+=\" }\";\n\n\t\t\tif(node.out) {\n\t\t\t\tfor(const ch of node.out) {\n\t\t\t\t\tconst o = codify(outlen + out.length, ch, true, true);\n\t\t\t\t\tif(o.length>0) {\n\t\t\t\t\t\tout+=`, ${o}`\n\t\t\t\t\t\tis_first=false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst loc = getRowCol(eols,node.begin);\n\t\t\tout = `${factory}( ${node.tag}, { ${out} )`; //lilact_jsx_loc:[\"${path}\", ${loc}]\n\n\t\t\treturn out;\n\t\t}\n\t}\n\n\tlet out = '';\n\tif(injectTraceLabels) {\n\t\tout=`/*LILACTBLOCK${++transpilerConfig.func_num}:0,0:<EXEC>*/try{`\n\n\t\ttranspilerConfig.func_labels[transpilerConfig.func_num] = {\n\t\t\tpath,\n\t\t\trow: 1,\n\t\t\tcol: 1,\n\t\t\tlabel: transpilerConfig.func_num,\n\t\t\trequired: transpilerConfig.required[path]\n\t\t};\n\n\t}\n\tout+=codify(0, json);\n\n\tif(injectTraceLabels) {\n\t\tif(transpilerConfig.enableLabelStack) {\n\t\t\tout += `}catch(e){ if(typeof(e)!=='object') e=new Error(e);e.lilact_trace=[${transpilerConfig.func_num},e.lilact_trace];throw e}`;\n\t\t}\n\t\telse {\n\t\t\tout += `}catch(e){ if(typeof(e)!=='object') e=new Error(e);e.lilact_trace=${transpilerConfig.func_num};throw e}`;\n\t\t}\n\t}\n\n\tconst inline_sm = generateSourceMap(json, path, eols, scanEOLs(out), mappings);\n\tif(appendSourcemap) {\n\t\tout += inline_sm;\n\t}\n\n\tif(globalThis[TRANSPILER_OUTPUT]) {\n\t\ttry {\n\t\t\tconst fs = import('fs');\n\t\t\tfs.writeFileSync(globalThis[TRANSPILER_OUTPUT], out);\t\n\t\t}\n\t\tcatch(e) {}\n\t\tglobalThis[TRANSPILER_OUTPUT] = undefined;\n\t}\n\t//console.log(out);\n\n\treturn out;\n}\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9qc3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL2pzeC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","// src/utils/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\n\n// src/utils/symbol-observable.ts\nvar $$observable = /* @__PURE__ */ (() => typeof Symbol === \"function\" && Symbol.observable || \"@@observable\")();\nvar symbol_observable_default = $$observable;\n\n// src/utils/actionTypes.ts\nvar randomString = () => Math.random().toString(36).substring(7).split(\"\").join(\".\");\nvar ActionTypes = {\n INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,\n REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nvar actionTypes_default = ActionTypes;\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null)\n return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}\n\n// src/utils/kindOf.ts\nfunction miniKindOf(val) {\n if (val === void 0)\n return \"undefined\";\n if (val === null)\n return \"null\";\n const type = typeof val;\n switch (type) {\n case \"boolean\":\n case \"string\":\n case \"number\":\n case \"symbol\":\n case \"function\": {\n return type;\n }\n }\n if (Array.isArray(val))\n return \"array\";\n if (isDate(val))\n return \"date\";\n if (isError(val))\n return \"error\";\n const constructorName = ctorName(val);\n switch (constructorName) {\n case \"Symbol\":\n case \"Promise\":\n case \"WeakMap\":\n case \"WeakSet\":\n case \"Map\":\n case \"Set\":\n return constructorName;\n }\n return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate(val) {\n if (val instanceof Date)\n return true;\n return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n let typeOfVal = typeof val;\n if (process.env.NODE_ENV !== \"production\") {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\n\n// src/createStore.ts\nfunction createStore(reducer, preloadedState, enhancer) {\n if (typeof reducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n enhancer = preloadedState;\n preloadedState = void 0;\n }\n if (typeof enhancer !== \"undefined\") {\n if (typeof enhancer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, preloadedState);\n }\n let currentReducer = reducer;\n let currentState = preloadedState;\n let currentListeners = /* @__PURE__ */ new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = /* @__PURE__ */ new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");\n }\n return currentState;\n }\n function subscribe(listener) {\n if (typeof listener !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\n };\n }\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== \"string\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : \"Reducers may not dispatch actions.\");\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach((listener) => {\n listener();\n });\n return action;\n }\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = nextReducer;\n dispatch({\n type: actionTypes_default.REPLACE\n });\n }\n function observable() {\n const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer) {\n if (typeof observer !== \"object\" || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = observer;\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [symbol_observable_default]() {\n return this;\n }\n };\n }\n dispatch({\n type: actionTypes_default.INIT\n });\n const store = {\n dispatch,\n subscribe,\n getState,\n replaceReducer,\n [symbol_observable_default]: observable\n };\n return store;\n}\nfunction legacy_createStore(reducer, preloadedState, enhancer) {\n return createStore(reducer, preloadedState, enhancer);\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/combineReducers.ts\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === actionTypes_default.INIT ? \"preloadedState argument passed to createStore\" : \"previous state received by the reducer\";\n if (reducerKeys.length === 0) {\n return \"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";\n }\n if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter((key) => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach((key) => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === actionTypes_default.REPLACE)\n return;\n if (unexpectedKeys.length > 0) {\n return `Unexpected ${unexpectedKeys.length > 1 ? \"keys\" : \"key\"} \"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. Expected to find one of the known reducer keys instead: \"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n }\n}\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach((key) => {\n const reducer = reducers[key];\n const initialState = reducer(void 0, {\n type: actionTypes_default.INIT\n });\n if (typeof initialState === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n if (typeof reducer(void 0, {\n type: actionTypes_default.PROBE_UNKNOWN_ACTION()\n }) === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. Don't try to handle '${actionTypes_default.INIT}' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`);\n }\n });\n}\nfunction combineReducers(reducers) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducers[key] === \"undefined\") {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === \"function\") {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n let unexpectedKeyCache;\n if (process.env.NODE_ENV !== \"production\") {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state = {}, action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== \"production\") {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === \"undefined\") {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : \"(unknown type)\"}, the slice reducer for key \"${key}\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\n// src/bindActionCreators.ts\nfunction bindActionCreator(actionCreator, dispatch) {\n return function(...args) {\n return dispatch(actionCreator.apply(this, args));\n };\n}\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === \"function\") {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== \"object\" || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n }\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n// src/compose.ts\nfunction compose(...funcs) {\n if (funcs.length === 0) {\n return (arg) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\n\n// src/applyMiddleware.ts\nfunction applyMiddleware(...middlewares) {\n return (createStore2) => (reducer, preloadedState) => {\n const store = createStore2(reducer, preloadedState);\n let dispatch = () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\");\n };\n const middlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map((middleware) => middleware(middlewareAPI));\n dispatch = compose(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}\n\n// src/utils/isAction.ts\nfunction isAction(action) {\n return isPlainObject(action) && \"type\" in action && typeof action.type === \"string\";\n}\nexport {\n actionTypes_default as __DO_NOT_USE__ActionTypes,\n applyMiddleware,\n bindActionCreators,\n combineReducers,\n compose,\n createStore,\n isAction,\n isPlainObject,\n legacy_createStore\n};\n//# sourceMappingURL=redux.mjs.map","var isDevelopment = true;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (!/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace, substr, match} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nexport function prefix (value, length, children) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599: case 4855:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t\treturn WEBKIT + value + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/g, '') + (!match(value, /flex-|baseline/) ? MS + 'grid-row-' + replace(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!match(value, /flex-|baseline/)) return MS + 'grid-column-align' + substr(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn MS + replace(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, match(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~indexof(value + (children = children[length].value), 'span') ? value : (MS + replace(value, '-start', '') + value + MS + 'grid-row-span:' + (~indexof(children, 'span') ? match(children, /\\d+/) : +match(children, /\\d+/) - +match(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn MS + replace(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return match(element.props, /grid-\\w+-start/) })) ? value : MS + replace(replace(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn replace(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (MS + a + ':' + b + f) + (c ? (MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif (charat(value, length + 6) === 121)\n\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, charat(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn replace(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn replace(value, ':', ':' + MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn replace(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","var weakMemoize = function weakMemoize(func) {\n var cache = new WeakMap();\n return function (arg) {\n if (cache.has(arg)) {\n // Use non-null assertion because we just checked that the cache `has` it\n // This allows us to remove `undefined` from the return value\n return cache.get(arg);\n }\n\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\n\nexport { weakMemoize as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, middleware, stringify, COMMENT, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\nvar getSourceMap;\n\n{\n var sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n\n getSourceMap = function getSourceMap(styles) {\n var matches = styles.match(sourceMapPattern);\n if (!matches) return;\n return matches[matches.length - 1];\n };\n}\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (!key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n {\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } ];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (getSourceMap) {\n var sourceMap = getSourceMap(serialized.styles);\n\n if (sourceMap) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + sourceMap);\n }\n };\n }\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = true;\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\n{\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n if (String(componentSelector) === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (_match, _p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error(\"`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\nInstead of doing this:\\n\\n\" + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + \"\\n\\nYou should wrap it with `css` like this:\\n\\ncss`\" + replaced + \"`\");\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n if (asTemplateStringsArr[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n if (templateStringsArr[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n {\n var devStyles = {\n name: name,\n styles: styles,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n return devStyles;\n }\n}\n\nexport { serializeStyles };\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","import createCache from '@emotion/cache';\nimport { serializeStyles } from '@emotion/serialize';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\n\nfunction insertWithoutScoping(cache, serialized) {\n if (cache.inserted[serialized.name] === undefined) {\n return cache.insert('', serialized, cache.sheet, true);\n }\n}\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar createEmotion = function createEmotion(options) {\n var cache = createCache(options);\n\n cache.sheet.speedy = function (value) {\n if (this.ctr !== 0) {\n throw new Error('speedy must be changed before any rules are inserted');\n }\n\n this.isSpeedy = value;\n };\n\n cache.compat = true;\n\n var css = function css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered, undefined);\n insertStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var keyframes = function keyframes() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n var animation = \"animation-\" + serialized.name;\n insertWithoutScoping(cache, {\n name: serialized.name,\n styles: \"@keyframes \" + animation + \"{\" + serialized.styles + \"}\"\n });\n return animation;\n };\n\n var injectGlobal = function injectGlobal() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n insertWithoutScoping(cache, serialized);\n };\n\n var cx = function cx() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n return {\n css: css,\n cx: cx,\n injectGlobal: injectGlobal,\n keyframes: keyframes,\n hydrate: function hydrate(ids) {\n ids.forEach(function (key) {\n cache.inserted[key] = true;\n });\n },\n flush: function flush() {\n cache.registered = {};\n cache.inserted = {};\n cache.sheet.flush();\n },\n sheet: cache.sheet,\n cache: cache,\n getRegisteredStyles: getRegisteredStyles.bind(null, cache.registered),\n merge: merge.bind(null, cache.registered, css)\n };\n};\n\nvar classnames = function classnames(args) {\n var cls = '';\n\n for (var i = 0; i < args.length; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nexport { createEmotion as default };\n","import createEmotion from '../create-instance/dist/emotion-css-create-instance.development.esm.js';\nimport '@emotion/cache';\nimport '@emotion/serialize';\nimport '@emotion/utils';\n\nvar _createEmotion = createEmotion({\n key: 'css'\n}),\n flush = _createEmotion.flush,\n hydrate = _createEmotion.hydrate,\n cx = _createEmotion.cx,\n merge = _createEmotion.merge,\n getRegisteredStyles = _createEmotion.getRegisteredStyles,\n injectGlobal = _createEmotion.injectGlobal,\n keyframes = _createEmotion.keyframes,\n css = _createEmotion.css,\n sheet = _createEmotion.sheet,\n cache = _createEmotion.cache;\n\nexport { cache, css, cx, flush, getRegisteredStyles, hydrate, injectGlobal, keyframes, merge, sheet };\n","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\nimport Lilact from './lilact.jsx';\n\n\nconst [CORE,COMPONENT,MEMOIZED]=[Symbol.for('LILACT:CORE'),Symbol.for('LILACT:COMPONENT'),Symbol.for('LILACT:MEMOIZED')];\n\n\nconst typeOf = (input) => {\n\t// used for object comparison functions\n\t// https://monsterlessons-academy.com/posts/shallow-comparison-vs-deep-comparison-in-javascript\n\n const rawObject = Object.prototype.toString.call(input).toLowerCase();\n const typeOfRegex = /\\[object (.*)]/g;\n const type = typeOfRegex.exec(rawObject)[1];\n return type;\n};\n\n\n\n// React API\n\n/**\n * Checks whether a value is a Lilact component.\n *\n * @param value - Value to inspect.\n * @returns True if the value is a class component; otherwise false.\n */\nexport const isValidElement = (o) => {\n\treturn o[CORE]!==undefined || o[TEXT]!==undefined;\n}\n\n/**\n * Utility to find the underlying DOM node for a mounted Lilact component.\n *\n * @param element - A Lilact component instance to locate its DOM node.\n * @returns The corresponding DOM element (or null if unavailable).\n */\nexport const findDOMNode = (comp)=>{\n\n\t/*\n\tWhen a component renders to null or false, findDOMNode returns null. \n\tWhen a component renders to a string, findDOMNode returns a text DOM node containing that value. \n\n\tNote:\n\n\tfindDOMNode only works on mounted components (that is, components that have been placed in the DOM). \n\tIf you try to call this on a component that has not been mounted yet (like calling findDOMNode() in \n\trender() on a component that has yet to be created) an exception will be thrown.\n\n\tUnlike React, in Lilact findDOMNode can also be used on function components.\n\t*/\n\n\tconsole.warn(\"NOT IMPLEMENTED YET\")\n\n\tif(!comp[CORE]?.element?.parentNode) throw \"findDOMNode only works on mounted components.\";\n\treturn comp[CORE].element;\n}\n\n/**\n * Fragment helper/utility (same behavior as an array of children).\n *\n * @param children - The nodes to group without adding an extra DOM element.\n */\nexport const Fragment = ({children})=>children;\n\n\n/**\n * Children namespace for utilities that operate on `props.children`. `Children` is deprecated\n * and not recommended by React documentation itself. But `only` and `toArray` are used \n * extensively everywhere, so I included them.\n *\n * @property only - Filters to the single child (or returns null/throws based on count).\n * @property toArray - Converts children to a flat array.\n */\nexport const Children = {\n\t\n/**\n * Returns the only child from a children collection.\n *\n * @param children - The children to read.\n * @returns The single child (or null/exception based on the number of children).\n */\n\tonly(children) {\n\t\tchildren = [...children];\n\t\tlet i=0;\n\t\twhile(i<children.length) {\n\t\t\tif(children[i]?.constructor?.name==='Array') {\n\t\t\t\tchildren.splice(i, 1, ...children[i]);\n\t\t\t\ti--;\n\t\t\t}\n\t\t\telse if(children[i]===null || children[i]===undefined) {\n\t\t\t\tchildren.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t\tif(i>1) {\n\t\t\t\tthrow \"no child or child is not the only one\";\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\tif(children.length===1) return children[0];\n\n\t},\n\n/**\n * Converts component children into a flat array.\n *\n * @param children - The children to convert.\n * @returns An array representation of the children.\n */\n\ttoArray(children) {\n\t\tif(children) {\n\t\t\tif(children?.constructor?.name==='Array') return [...children];\n\t\t\treturn [children];\n\t\t}\n\t\treturn [];\n\t}\n};\n\n\n// Lilact API\n/** @ignore */\nexport function getErrorLocation(err) // works for both error and error-event, and also in node env\n{\n\tif(err.lineno!==undefined || err.line!==undefined || err.lineNumber!==undefined) {\n\t\tconst l = err.lineno || err.line || err.lineNumber;\n\t\tconst c = err.colno || err.column || err.columnNumber;\n\n\t\treturn [l, c];\n\t}\n\n\tlet match = /:(\\d+):(\\d+)[\\n].*/m.exec(err.stack);\n\tif(match===null) {\n\t\tmatch = /:(\\d+):(\\d+)\\)\\s+at .*/m.exec(err.stack);\n\t}\n\n\tif(match) {\n\t\treturn [parseInt(match[1]), parseInt(match[2])]\n\t}\n\n\treturn null;\n}\n\n/** @ignore */\nexport function mapLocation(mps, r,c)\n{\n\tlet map = [0,0,0,0];\n\n\tfor(const i in mps) {\n\t\tif(mps[i][0]<r) continue;\n\t\tif(mps[i][0]>r || mps[i][1]>=c) {\n\t\t\tmap = mps[i-1];\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn [r-map[0]+map[2], ((r-map[0]===0)?map[3]:0)];\n}\n\n\n/** @ignore */\nexport function scanFunctionLabels(code, path)\n{\n\tconst ls = Array.from( code.matchAll(/LILACTBLOCK(\\d+):(\\d+),(\\d+):([^*]+)\\*\\//mg) );\n\n\tls.forEach(\n\t\t(x) => Lilact.transpilerConfig.func_labels[x[1]] = {\n\t\t\tpath,\n\t\t\trow: parseInt(x[2])+1,\n\t\t\tcol: parseInt(x[3])+1,\n\t\t\tlabel: x[4],\n\t\t\trequired: Lilact.transpilerConfig.required[path]\n\t\t} );\n\n}\n\n\n/**\n * Debug tool to detect the component visible at a point on screen.\n *\n * @returns A promise that is resolved when the user clicks on screen and its value will be the component if any.\n */\nexport function getComponentByPointer()\n{\n\tlet resolve_func;\n\n\tconst pr = new Promise( (res, rej)=> {\n\t\tresolve_func = res;\n\t});\n\n\tfunction click_handler(event) {\n\n\t\tevent.stopImmediatePropagation();\n\t\twindow.removeEventListener('click', click_handler, true);\n\n\t\tlet t = event.target;\n\n\t\twhile( !t[COMPONENT] && t.parentNode ) {\n\t\t\tt = t.parentNode;\n\t\t}\n\n\t\tresolve_func( t[COMPONENT] );\n\n\t\treturn false;\n\t}\n\n\twindow.addEventListener('click', click_handler, true);\n\n\treturn pr;\n}\n\n\n/**\n * Utility for applying one or more class names to an element.\n *\n * @param classNames - One or more class name values to combine.\n */\nexport function classNames(classes) {\n\treturn Object.entries(classes)\n\t.filter(([key, value]) => value)\n\t.map(([key, value]) => key)\n\t.join(' ');\n}\n\n\n/**\n * Checks whether a collection/set/array is empty.\n *\n * @param value - Value to check for emptiness.\n * @returns True if empty; otherwise false.\n */\nexport function isEmpty(o) {\n\tfor(let i in o) return false;\n\t\treturn true;\n}\n\n\n/**\n * Determines whether two values are shallowly equal.\n *\n * @param objA - First object to compare.\n * @param objB - Second object to compare.\n * @returns True if shallowly equal; otherwise false.\n */\nexport const shallowEqual = (source, target) => {\n\tif (typeOf(source) !== typeOf(target)) {\n\t\treturn false;\n\t}\n\n\tif (typeOf(source) === \"array\") {\n\t\tif (source.length !== target.length) {\n\t\t\treturn false;\n\t\t}\n\t\treturn source.every((el, index) => el === target[index]);\n\t} else if (typeOf(source) === \"object\") {\n\t\treturn Object.keys(source).every((key) => source[key] === target[key]);\n\t} else if (typeOf(source) === \"date\") {\n\t\treturn source.getTime() === target.getTime();\n\t}\n\n\treturn source === target;\n}\n\n\n/**\n * Determines whether two values are deeply equal.\n *\n * @param objA - First object to compare.\n * @param objB - Second object to compare.\n * @returns True if deeply equal; otherwise false.\n */\nexport function deepEqual(source, target) {\n\tif (typeOf(source) !== typeOf(target)) {\n\t\treturn false;\n\t}\n\n\tif (typeOf(source) === \"array\") {\n\t\tif (source.length !== target.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn source.every((entry, index) => deepEqual(entry, target[index]));\n\t} else if (typeOf(source) === \"object\") {\n\t\tif (Object.keys(source).length !== Object.keys(target).length) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn Object.keys(source).every((key) =>\n\t\t\tdeepEqual(source[key], target[key])\n\t\t\t);\n\t} else if (typeOf(source) === \"date\") {\n\t\treturn source.getTime() === target.getTime();\n\t}\n\n\treturn source === target;\n}\n\n\n\n/**\n * Checks whether a value is a js class.\n *\n * @param value - Value to inspect.\n * @returns True if the value is a js class; otherwise false.\n */\nexport function isClass(func) {\n\t// from https://stackoverflow.com/a/66120819\n\tif(!(func && func.constructor === Function) || func.prototype === undefined)\n\t\treturn false;\n\tif(Function.prototype !== Object.getPrototypeOf(func))\n\t\treturn true;\n\treturn Object.getOwnPropertyNames(func.prototype).length > 1;\n}\n\n/**\n * Checks whether a value is an async function.\n *\n * @param value - Value to inspect.\n * @returns True if the value is an async function; otherwise false.\n */\nexport function isAsync(fn) {\n return typeof fn === 'function' && fn.constructor && fn.constructor.name === 'AsyncFunction';\n}\n\n/**\n * Checks whether a value is thenable (supports `.then` like a Promise).\n *\n * @param value - Value to inspect.\n * @returns True if thenable; otherwise false.\n */\nexport function isThenable(x) {\n\treturn x && (typeof x === \"object\" || typeof x === \"function\") && typeof x.then === \"function\";\n}\n\n/**\n * Checks whether a value is an error.\n *\n * @param value - Value to inspect.\n * @returns True if thenable; otherwise false.\n */\nexport function isError(x) { \n\treturn x instanceof Error || Object.prototype.toString.call(x) === '[object Error]';\n}\n\n\n\n\n// Internals\n\n/** @ignore */\nexport let update_timeout = undefined;\n/** @ignore */\nexport let update_interval_margin = 0;\n/** @ignore */\nexport let id_num = Math.floor(Math.random()*10000);\n/** @ignore */\nexport let eval_num = Math.floor(Math.random()*10000);\n\n\n// todo =improve these stacks\n/** @ignore */\nexport let current_component = [];\n/** @ignore */\nexport let update_set = new Set;\n/** @ignore */\nexport let update_cbs = new Set;\n/** @ignore */\nexport let roots = new Set;\n/** @ignore */\nexport let special_attributes = new Set([\"classname\", \"classname\", \"ref\", \"action\", \"lilact_jsx_loc\", \"children\", \"key\"]);\n/** @ignore */\nexport let err = null; // this is only to ease debuggin,\n/** @ignore */\nexport let layout_effects = new Set;\n/** @ignore */\nexport let events_set = new Set([\n\t\"onafterprint\",\"onbeforeprint\",\"onbeforeunload\",\"onerror\",\"onhashchange\",\"onload\",\"onmessage\",\n\t\"onoffline\",\"ononline\",\"onpagehide\",\"onpageshow\",\"onpopstate\",\"onresize\",\"onstorage\",\"onunload\",\n\t\"onblur\",\"onchange\",\"oncontextmenu\",\"onfocus\",\"oninput\",\"oninvalid\",\"onreset\",\"onsearch\",\"onselect\",\n\t\"onsubmit\",\n\t\"onkeydown\",\"onkeypress\",\"onkeyup\",\n\t\"onclick\",\"ondblclick\",\"onmousedown\",\"onmousemove\",\"onmouseout\",\"onmouseover\",\"onmouseup\",\"onmousewheel\",\n\t\"onwheel\",\n\t\"ondrag\",\"ondragend\",\"ondragenter\",\"ondragleave\",\"ondragover\",\"ondragstart\",\"ondrop\",\"onscroll\",\n\t\"oncopy\",\"oncut\",\"onpaste\",\n\t\"onabort\",\"oncanplay\",\"oncanplaythrough\",\"oncuechange\",\"ondurationchange\",\"onemptied\",\"onended\",\"onerror\",\n\t\"onloadeddata\",\"onloadedmetadata\",\"onloadstart\",\"onpause\",\"onplay\",\"onplaying\",\"onprogress\",\"onratechange\",\n\t\"onseeked\",\"onseeking\",\"onstalled\",\"onsuspend\",\"ontimeupdate\",\"onvolumechange\",\"onwaiting\",\n\t\"ontoggle\"\n])\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9taXNjLmpzeCIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9hcmFzaC9EZXNrdG9wL1Byb2plY3RzL0xpbGFjdC9zcmMvbWlzYy5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEifQ==","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t\tnotice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t\tnotice, this list of conditions and the following disclaimer in the\n\t\tdocumentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\nconst [CORE,COMPONENT,TEXT,IS_ZOMBIE,IDX,CHILD_CLASS_ADDENDUM,MEMOIZED]=[Symbol.for('LILACT:CORE'),Symbol.for('LILACT:COMPONENT'),Symbol.for('LILACT:TEXT'),Symbol.for('LILACT:IS_ZOMBIE'),Symbol.for('LILACT:IDX'),Symbol.for('LILACT:CHILD_CLASS_ADDENDUM'),Symbol.for('LILACT:MEMOIZED')];\n\nimport {shallowEqual} from \"./misc.jsx\";\n/* \nComponentCache is for internal use. It is the heart of the JSX runtime,\nit holds child components and detects which one is being rendered or updated.\n*/\n\nclass ComponentCache \n{\n\towner;\n\tcurrent_map = new Map;\n\tnew_map = new Map;\n\tpick_index = 0;\n\n\tconstructor(owner)\n\t{\n\t\tthis.owner = owner;\n\t}\n\n\tpick(key, construct_func)\n\t{\n\t\tlet comp;\n\t\tlet buck = this.current_map.get(key);\n\n\t\tif(buck && buck.length>buck[IDX]) {\n\t\t\tcomp = buck[buck[IDX]];\n\t\t\tbuck[IDX]++;\n\n\t\t\tbuck = this.new_map.get(key);\n\t\t\tif(buck!==undefined) {\n\t\t\t\tbuck.push( comp );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbuck = [ comp ];\n\t\t\t\tthis.new_map.set(key, buck);\n\t\t\t\tbuck[IDX]=0;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tcomp = construct_func();\n\n\t\t\tbuck = this.new_map.get(key);\n\t\t\tif(buck!==undefined) {\n\t\t\t\tbuck.push( comp );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbuck = [ comp ];\n\t\t\t\tthis.new_map.set(key, buck);\n\t\t\t\tbuck[IDX]=0;\n\t\t\t}\n\n\t\t\tif(comp[CORE]) comp[CORE].parent ??= this.owner;\n\t\t}\n\n\t\treturn comp;\n\t}\n\n\tcommit() \n\t{\n\t\tthis.current_map.forEach( (arr)=>{\n\t\t\tarr.slice(arr[IDX]).forEach((ex)=>{\n\t\t\t\tif(ex.cleanup) ex.cleanup();\n\t\t\t});\n\t\t});\n\n\t\tthis.current_map = this.new_map; \n\t\tthis.new_map = new Map;\n\t}\n\n}\n\n/** ComponentCore - Mostly for internal use. This is where all the component data and methods\n* used by lilact are kept. The Component class uses it under the hood, so there is a separation\n* and user can set whatever property they want in the component. Each Lilact.Component \n* has a core that is accessible via lilact symbol CORE, i.e. component[CORE]. Note\n* that you should either define a LILACT:CORE symbol or use the lilact preprocessor\n* tools which is a wiser choice.\n* \n* ComponentCore methods are not to be called by the user. But it can also be used\n* to store data more efficiently, and I have used it extensively. But it is\n* better for the user to work according react paradigms instead if memory\n* efficiency is not a high priority. It is not compatible with React API. So if\n* you want to do so, check the code to prevent accidental shadowing of the methods\n* and properties.\n*\n*\t@class ComponentCore\n*/\n\nclass ComponentCore\n{ \n\t/* \n\n\t// these are commented so they are not allocated by default. i just wanted to keep a list.\n\n\tentity = undefined\n\n\tref = undefined;\n\n\tcontext = undefined;\n\tstate = undefined;\n\n\tcontainer = null;\n\toutlet = null;\n\n\tdepo = new ComponentCache;\n\n\telement = undefined;\n\tmount_state\n\n\tinsert_index\n\tloader_args\n\n\t*/\n\n\tcomponent;\n\tprops;\n\n\tconstructor(comp, props)\n\t{\n\t\tthis.component = comp;\n\t\tthis.props = props || {};\n\t}\n\n\tapply(next_props = this.props, next_state = this.next_state || this.state)\n\t{\n\t\t//let do_rerender = true;\n\n\t\t// if(this.outlet && this.entity[MEMOIZED]) {\n\t\t// \tif(shallowEqual(this.props, next_props)) do_rerender=false;\n\t\t// \tdelete this.entity[MEMOIZED];\n\t\t// }\n\n\t\t/*if(do_rerender)*/ {\n\n\t\t\tif(this.entity?.propTypes) {\n\t\t\t\tLilact.PropTypes.checkPropTypes(this.entity.propTypes, this.props, 'prop', this.entity.name);\n\t\t\t}\n\t\t\telse if(this.component?.propTypes) {\n\t\t\t\tLilact.PropTypes.checkPropTypes(this.component.propTypes, this.props, 'prop', this.component.name);\n\t\t\t}\n\n\t\t\tif(typeof(next_state)==='function') next_state = next_state(this.state);\n\n\t\t\tif(this.component.constructor.defaultProps) {\n\t\t\t\tnext_props = {...this.component.constructor.defaultProps, ...next_props};\n\t\t\t}\n\n\t\t\tif( this.component.shouldComponentUpdate && \n\t\t\t\t!this.component.shouldComponentUpdate\n\t\t\t\t\t(next_state, next_props, this.context) ) return;\n\n\n\t\t\tif( typeof(this.entity)==='string' ) {\n\t\t\t\tif(!(this.element instanceof Element)) {\n\t\t\t\t\tthis.element = document.createElement(this.entity);\n\t\t\t\t}\n\t\t\t\tthis.element[COMPONENT] = this.component;\n\t\t\t}\n\n\n\t\t\tif(next_props.ref) {\n\t\t\t\tif(this.element) {\n\t\t\t\t\tnext_props.ref.current = this.element;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnext_props.ref.current = this.component;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(next_props!==undefined && this.component.componentWillReceiveProps) {\n\t\t\t\tthis.component.componentWillReceiveProps(next_props);\n\t\t\t}\n\n\t\t\tif(this.component.componentWillUpdate) {\n\t\t\t\tthis.component.componentWillUpdate(next_props, next_state);\n\t\t\t}\n\n\t\t\tconst prev_state = this.state, prev_props=this.props;\n\n\t\t\tif(this.element) {\n\t\t\t\tthis.updateElementProps(next_props);\n\t\t\t}\n\t\t\tthis.props = next_props;\n\n\t\t\tif(this.state!==undefined || next_state!==undefined) this.state = next_state;\n\t\t\telse delete this.state;\n\n\t\t\tif(this.next_state) delete this.next_state;\n\n\n\t\t\tif(this.hooks!==undefined) {\n\t\t\t\tthis.hook_index = 0;\n\t\t\t\tLilact.current_component = [this, Lilact.current_component];\n\n\t\t\t\ttry {\n\t\t\t\t\tthis.outlet = this.component.render(next_props);\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\trenderErrorHandler(this, e);\n\t\t\t\t}\n\n\t\t\t\tLilact.current_component = Lilact.current_component[1];\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttry {\n\t\t\t\t\tthis.outlet = this.component.render();\n\t\t\t\t}\n\t\t\t\tcatch(e) {\n\t\t\t\t\trenderErrorHandler(this, e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.outlet?.constructor?.name!=='Array') {\n\t\t\t\tthis.outlet = [this.outlet];\n\t\t\t}\n\n\t\t\tthis.outlet = [...this.outlet];\t\t\t\n\n\t\t\tfor (let i=0;i<this.outlet.length;i++) {\n\t\t\t\tlet item = this.outlet[i];\t\t\t\n\n\t\t\t\tif(item===undefined || item===null || typeof(item)==='boolean') {\n\t\t\t\t\tthis.outlet.splice(i, 1);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t\telse if(typeof item==='function') {\n\t\t\t\t\tconst res = this.childFunctionHandler(item);\n\t\t\t\t\tthis.outlet.splice(i, 1, res);\n\t\t\t\t\ti--;\n\t\t\t\t} \n\t\t\t\telse if(item.constructor.name === 'Array') {\n\t\t\t\t\tthis.outlet.splice(i, 1, ...item);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst core = prepareCore(this, item);\n\t\t\t\t\tthis.outlet[i] = core;\n\n\t\t\t\t\tif(core[TEXT]===undefined) {\n\t\t\t\t\t\tcore.container= this.element? this : this.container;\n\t\t\t\t\t\tcore.apply(item.props);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif(!core.element) {\n\t\t\t\t\t\t\tcore.element = document.createTextNode( item[TEXT]);\n\t\t\t\t\t\t\tcore[TEXT] = item[TEXT];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if(core[TEXT]!==item[TEXT]) {\n\t\t\t\t\t\t\tcore.element.textContent = item[TEXT];\n\t\t\t\t\t\t\tcore[TEXT] = item[TEXT];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.cache) this.cache.commit();\n\n\t\t}\n\t\tif(this.element) this.arrangeOutlet();\n\n\t\t// TODO: should componentDidUpdate be called after arranging/appending the outlet or before?\n\t\tif(this.component.componentDidUpdate) {\n\t\t\tthis.component.componentDidUpdate(prev_props, prev_state, this.last_snapshot);\n\t\t}\n\n\t\tif(this.last_snapshot) delete this.last_snapshot;\n\n\t}\n\n\tasync cleanup()\n\t{\n\t\ttry {\n\t\t\tconst promises = [];\n\t\n\t\t\tif(this.component.componentWillUnmount) {\n\t\t\t\tthis.component.componentWillUnmount();\n\t\t\t}\n\n\t\t\tif(this?.element?.parentElement) {\n\t\t\t\tthis.element.parentElement.removeChild( this.element );\n\t\t\t}\n\n\t\t\tif(this.outlet!==undefined) {\n\t\t\t\tfor(let c of this.outlet) {\n\t\t\t\t\tif(c.cleanup) {\n\t\t\t\t\t\tc.cleanup();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.props?.children!==undefined) {\n\t\t\t\tfor(let c of this.props.children) {\n\t\t\t\t\tif(c.cleanup) {\n\t\t\t\t\t\tc.cleanup();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(this.hooks!==undefined) {\n\t\t\t\tfor(let h of this.hooks) {\n\t\t\t\t\tif(h.cleanup) {\n\t\t\t\t\t\th.cleanup();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcatch(e) {\n\t\t\t// todo: should did catch be called? and state be modified?\n\t\t\t/*if(this.component.componentDidCatch) {\n\t\t\t\tthis.component.componentDidCatch(e);\n\t\t\t}\n\t\t\telse */\n\t\t\tthrow(e);\n\t\t}\n\t}\n\n\tupdateElementProps(patch, force=false) \n\t{\n\t\tif(this.entity===\"input\") {\n\t\t\tif(patch?.type!==this.element.type) {\n\t\t\t\tthis.element.type=patch.type;\n\t\t\t}\n\t\t\t\n\t\t\tif(patch?.value!==this.element.value) {\n\t\t\t\tthis.element.value=patch.value;\n\t\t\t}\n\t\t\t\n\t\t\tif(patch?.type===\"checkbox\") {\n\t\t\t\tconst chk = !!patch?.checked;\n\n\t\t\t\tif(this.element.checked != chk || this.element.parentNode===null) {\n\t\t\t\t\tthis.element.checked = chk;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// old ones that don't exist in the new one\n\t\tfor(let a in this.props) {\n\t\t\tconst al = a.toLowerCase();\n\n\t\t\tif( !patch.hasOwnProperty(a) ) {\n\n\t\t\t\tif( Lilact.events_set.has(al) ) {\n\t\t\t\t\tthis.event_detachers[al]();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.element.setAttribute(a, undefined);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor(let a in patch) {\n\t\t\tconst al = a.toLowerCase();\n\n\t\t\tif( Lilact.special_attributes.has(al) ) continue;\n\n\t\t\tif( patch===this.props || !Lilact.defaultIsEqual(patch[a], this.props[a]) || force ) {\n\n\t\t\t\tif( Lilact.events_set.has(al) ) {\n\t\t\t\t\tthis.event_detachers ??= {};\n\t\t\t\t\tthis.event_detachers[al]?.();\n\t\t\t\t\tthis.event_detachers[al] = Lilact.addWrappedEventListener(this.element, al.substring(2), patch[a]);\n\t\t\t\t}\n\t\t\t\telse if(al==='style') {\n\t\t\t\t\tObject.assign(this.element.style, patch[a]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.element.setAttribute(al, patch[a]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t\tif(patch?.action) {\n\t\t\tthis.element.onsubmit = patch.action;\n\t\t}\n\t\telse {\n\t\t\tthis.element.onsubmit = undefined;\n\t\t}\n\n\t\tthis.element.setAttribute('key', this.props.key);\n\n\t\tthis.updateElementClass(patch);\n\t}\n\n\tupdateElementClass(patch=this.props) \n\t{\n\t\tlet cn = patch?.className;\n\t\tcn ??= patch?.class ? patch.class : '';\n\n\t\tif(this?.parent?.[CHILD_CLASS_ADDENDUM]) {\n\t\t\tcn += ' ' + this?.parent?.[CHILD_CLASS_ADDENDUM];\n\t\t}\n\t\t\n\t\tif(cn.length>0) {\n\t\t\tcn = cn.split(/\\s+/g);\n\t\t\tfor(const n of Array.from(this.element.classList)) {\n\t\t\t\tif(cn.indexOf(n)===-1) {\n\t\t\t\t\tthis.element.classList.remove(n);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(const n of cn) {\n\t\t\t\tif(n.length>0) {\n\t\t\t\t\tthis.element.classList.add(n);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdelete this.element.className;\n\t\t}\n\t}\n\n\n\tscanZombies(container, next_element) \n\t{\n\t\tconst chs = container.element.childNodes;\n\t\twhile( \tchs[container.insert_index] && \n\t\t\t\tchs[container.insert_index][IS_ZOMBIE] && \n\t\t\t\tchs[container.insert_index]!==next_element ) \n\t\t{\n\t\t\tcontainer.insert_index++;\n\t\t}\n\t}\n\n\tappendElement(core)\n\t{\n\t\tthis.scanZombies(core.container, core.element);\n\n\t\tif(core?.element.parentNode===null) {\n\t\t\tcore.container.element.insertBefore(\n\t\t\t\t\t\tcore.element, \n\t\t\t\t\t\tcore.container.element.childNodes[core.container.insert_index] || null \n\t\t\t\t\t);\t\t\t\n\n\t\t\tif(core?.component?.componentDidMount) {\n\t\t\t\tcore.component.componentDidMount();\n\t\t\t}\n\n\t\t}\n\t\telse {\n\t\t\tif(core.container.element.childNodes[core.container.insert_index]!==core.element) {\n\t\t\t\tcore.container.element.insertBefore(\n\t\t\t\t\t\tcore.element, \n\t\t\t\t\t\tcore.container.element.childNodes[core.container.insert_index] || null\n\t\t\t\t\t);\t\t\t\t\t\t\n\t\t\t}\n\t\t}\n\t\tcore.container.insert_index++;\n\t}\n\t\n\tarrangeOutlet()\n\t{\n\t\tthis.insert_index = 0;\n\t\t\n\t\tfor(const core of this.outlet) {\n\t\t\tif(core) {\n\t\t\t\tif(core.element) {\n\t\t\t\t\tcore.container = this.element?this:this.container;\n\t\t\t\t\tcore.container.appendElement(core);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(core.arrangeOutlet) core.arrangeOutlet();\n\n\t\t\t\t\t// todo: is there a way to remove this useless flag?\n\t\t\t\t\tif(!core?.mounted) {\n\t\t\t\t\t\tcore.mounted = true;\n\t\t\t\t\t\tif(core?.component?.componentDidMount) {\n\t\t\t\t\t\t\tcore.component.componentDidMount();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// note: override this to tailor function children like <Transition>{(state)=>{...}}</Transition>\n\tchildFunctionHandler(func) {\n\t\treturn func(this.state); \n\t}\n\n}\n\n\n\nconst renderErrorHandler = (c, e) =>\n{\n\tconst stack = [c];\n\n\twhile(c && !c?.component?.componentDidCatch) {\n\t\tc = c.parent;\n\t\tif(c) stack.push(c);\n\t}\n\tif(c?.component?.componentDidCatch) {\n\t\tif(c.entity?.getDerivedStateFromError) {\n\t\t\tc.component.setState({...c.component.state, ...c.entity.getDerivedStateFromError.call(c, e)});\n\t\t}\n\n\t\tif(Lilact.isError(e)) {\n\t\t\te = Lilact.traceError(e);\n\t\t}\n\n\t\tlet stack_log = Array.prototype\n\t\t\t\t .map.call(stack, x => (\"in \" + \n\t\t\t\t \t\t( (typeof x.entity==='string'? x.entity:x.entity?.name) || \n\t\t\t\t \t\t\tx.component?.name || \n\t\t\t\t \t\t\tx.constructor?.name\n\t\t\t\t \t\t) ?? 'undefined') ) \n\t\t\t\t .join('\\n');\n\n\t\tc.component.componentDidCatch(e, {componentStack: stack, componentStackLog: stack_log}); \n\t}\n\telse throw(e);\n\n}\n\n\n//////////\n\n\n\nfunction constructFunc(core, parent) // returns {text} or component, and not component core.\n{\n\tlet comp = core;\n\n\tif( core[TEXT]!==undefined ) {\n\t\t// do nothing...\n\t}\n\telse {\n\t\tif(typeof(core.entity)==='string') {\n\t\t\tcomp = new HTMLComponent(core.entity, core.props);\n\t\t}\n\t\telse {\n\n\t\t\tif( Lilact.isClass(core.entity) ) {\n\t\t\t\tif(core.entity?.defaultProps) {\n\t\t\t\t\tcore.props = { ...core.entity.defaultProps, ...core.props };\n\t\t\t\t}\n\n\t\t\t\tcomp = new core.entity(core.props);\n\n\t\t\t\tconst desc = Object.getOwnPropertyDescriptor(comp, \"state\");\n\t\t\t\tif(desc) {\n\t\t\t\t\tif (typeof desc.get !== \"function\" && typeof desc.set !== \"function\") {\n\t\t\t\t\t\tcomp[CORE].state = comp.state;\n\n\t\t\t\t\t\tObject.defineProperty(comp, \"state\", {\n\t\t\t\t\t\t\tget() { return this[CORE].state },\n\t\t\t\t\t\t\tset(v) { \n\t\t\t\t\t\t\t\t// todo: this should be changed, it should be only directly settable in constructor.\n\t\t\t\t\t\t\t\tif(this[CORE].state===undefined) {\n\t\t\t\t\t\t\t\t\tthis[CORE].state = v;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tthrow 'assigning component state this way is not allowed.';\n\t\t\t\t\t\t\t\t}\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}\n\t\t\t}\n\t\t\telse if(typeof(core.entity)==='function') {\n\n\t\t\t\tif(core.entity?.defaultProps) {\n\t\t\t\t\tcore.props = { ...core.entity.defaultProps, ...core.props };\n\t\t\t\t}\n\n\t\t\t\tcomp = new Component(core.props);\n\n\t\t\t\t// the binding is not necessary and is not according to the specs, \n\t\t\t\t// probably not even recommended! but helpful.\n\t\t\t\tcomp.render = core.entity.bind(comp); \n\t\t\t\tcomp[CORE].hooks = [];\n\t\t\t\tcomp[CORE].hook_index = 0;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconsole.error(core);\n\t\t\t\tthrow \"createComponent accepts a component class or a function or undefined for the first argument.\";\n\t\t\t}\n\n\t\t\tcomp[CORE].entity = core.entity;\n\n\t\t\tif(core.container) {\n\t\t\t\tcomp[CORE].container = core.container;\n\t\t\t}\n\t\t}\n\n\t}\n\n\tif(parent instanceof ComponentCore) comp[CORE].parent = parent;\n\n\treturn comp;\n}\n\n\nfunction prepareCore(parent, core)\n{\n\ttry {\n\t\tparent.cache ??= new ComponentCache(parent);\n\t\tcore = parent.cache.pick( \tcore[TEXT]===undefined?core?.props?.key:':text', \n\t\t\t\t\t\t\t\t\t()=>( (core[TEXT]!==undefined || core instanceof ComponentCore) ? \n\t\t\t\t\t\t\t\t\t\t\t core : constructFunc(core, parent)[CORE] ) \n\t\t\t\t\t\t\t\t);\n\t\treturn core;\n\t}\n\tcatch(e) {\n\t\tif(core?.component?.componentDidCatch) {\n\t\t\tcore.component.componentDidCatch(e);\n\t\t}\n\t\telse throw(e);\n\t}\n}\n\n\nfunction doUpdates()\n{\n\trequestAnimationFrame(()=>{\n\t\tlet layout_effects = Lilact.layout_effects;\n\t\tlet update_cbs = Lilact.update_cbs;\n\t\tlet update_set = Lilact.update_set;\n\n\t\tLilact.layout_effects = new Set;\n\t\tLilact.update_cbs = new Set;\n\t\tLilact.update_set = new Set;\n\n\t\tfor(const le of layout_effects) le();\n\n\t\tfor(const u of update_set) u.apply();\n\t\tfor(const cb of update_cbs) cb();\n\n\t});\n}\n\n\nfunction decode(html) \n{\n\tdecode.parser ??= new DOMParser;\n\treturn decode.parser.parseFromString(html, 'text/html').body.textContent;\n}\n\n\nfunction escapeHtml(str) { \n\tescapeHtml.div ??= document.createElement('div'); \n\tdiv.textContent = String(str); \n\treturn div.innerHTML;\n}\n\nconst generateComponentKey = (entity, props)=> {\n\tlet key;\n\n\tif(props.key!==undefined) {\n\t\tkey = /*':k:'+*/ props.key;\n\t}\n\telse if(props.id!==undefined) {\n\t\tkey = ':i:'+props.id;\n\t}\n\telse if(props.path!==undefined) {\n\t\tkey = ':p:'+props.path;\n\t}\n\telse if(props[TEXT]!==undefined) {\n\t\tkey = ':text';\n\t}\n\telse {\n\n\t\tif(typeof(entity)==='string') { \n\t\t\tkey = ':t:'+entity;\n\t\t}\n\t\telse if(!entity) {\n\t\t\tkey = \"::\";\n\t\t}\n\t\telse {\n\t\t\tkey = entity.name;\n\t\t}\n\n\t\tif(props.name!==undefined) {\n\t\t\tkey = key+\":\"+props.name;\n\t\t}\n\t\telse if(props.path!==undefined) {\n\t\t\tkey = key+\":\"+props.path;\n\t\t}\n\t\t// else if(props.className!==undefined) {\n\t\t// \tkey = key+\".\"+props.className;\n\t\t// }\n\t}\n\n\treturn key;\n}\n\n\n\n\n// API\n\n\n\n/**\n* @class\n* Base class that mimics `React.Component` (stateful component with lifecycle hooks).\n* Extend this class to implement `render()` and (optionally) override lifecycle methods.\n* \n* This user functions and members are supported:\n*\n*\tstatic defaultProps\n*\n*\trender() {}\n*\n*\tcomponentWillReceiveProps (nextProps)\n*\tcomponentWillUpdate (nextProps, nextState)\n*\tcomponentDidCatch (error, info) \t\n*\tcomponentDidMount () \t\t\t\n*\tcomponentDidUpdate (prevProps, prevState, lastSnapshot) \n*\tcomponentWillUnmount () \n*\tgetSnapshotBeforeUpdate (prevProps, prevState) \n*\tshouldComponentUpdate (nextProps, nextState) \n*\n*\tstatic getDerivedStateFromError (error) {}\n*\tstatic getDerivedStateFromProps (props, state) {}\n* \n* For more details see official React documentation.\n*/\nexport class Component\n{\n\n\t/**\n\t* Component state used to drive rendering.\n\t* Update it with `setState()` to trigger a re-render.\n\t* @type {object}\n\t*/\n\tget state() { return this[CORE].state }\n\tset state(v) { \n\t\t// todo: this should be changed, it should be only directly settable in constructor.\n\t\tif(this[CORE].state===undefined) {\n\t\t\tthis[CORE].state = v;\n\t\t}\n\t\telse {\n\t\t\tthrow 'assigning component state this way is not allowed.';\n\t\t}\n\t}\n\t\t\n\t/**\n\t* Component context.\n\t* @type {any}\n\t* @protected\n\t*/\n\tget context() { return this[CORE].context }\n\tset context(v) { throw 'assigning component context this way is not allowed.' }\n\n\t/**\n\t* Component context value.\n\t* Use it to access shared data provided by an outer component/system.\n\t* @type {any}\n\t*/\n\tget type() { return this[CORE].entity }\n\tset type(v) { throw 'component type is immutable.' }\n\n\t/**\n\t* Props passed into the component instance.\n\t* Use it as read-only input when rendering.\n\t* @type {any}\n\t*/\n\tget props() { return this[CORE].props }\n\tset props(v) { throw 'assigning component props this way is not allowed.' }\n\n\t/**\n\t* A reference associated with the component to be used with useRef.\n\t* Can be used to expose the component instance or an underlying DOM node.\n\t* @type {any}\n\t*/\n\tget ref() { return this[CORE].ref }\n\tset ref(v) { throw 'component ref is immutable.' }\n\n\t/**\n\t* A unique identifier for the component instance. \n\t* The key is immutable and can only be set when the component is declared.\n\t* @type {string|number}\n\t*/\n\tget key() { return this[CORE].props.key }\n\tset key(v) { throw 'component key is immutable.' }\n\n\tconstructor(props)\n\t{\n\t\tthis[CORE] = new ComponentCore(this, props);\n\t}\n\n\t/**\n\t* Force the component to re-render even if no state/props change.\n\t* Useful for imperative updates.\n\t* @returns {void}\n\t*/\n\tforceUpdate(callback)\n\t{\n\t\tLilact.clearTimeout(Lilact.update_timeout);\n\n\t\tLilact.update_set.add(this[CORE].container || this[CORE]);\n\t\tif(callback) Lilact.update_cbs.add(callback);\n\t\tLilact.update_timeout = Lilact.setTimeout( doUpdates, Lilact.update_interval_margin );\n\t}\n\n\t/**\n\t* Update component state.\n\t* Accepts a partial state (or a function returning partial state) and schedules a re-render.\n\t* @param {any} new state\n\t* @returns {void}\n\t*/\n\tsetState(next_state, callback)\n\t{\n\t\tif(this.getSnapshotBeforeUpdate!==undefined) {\n\t\t\tthis[CORE].last_snapshot = this.getSnapshotBeforeUpdate(this[CORE].props, this.state);\n\t\t}\n\n\t\tthis[CORE].next_state = next_state;\n\t\tthis.forceUpdate(callback?callback.bind(this):undefined);\n\t}\n\n\t/* User Functions\n\t\n\tstatic defaultProps\n\n\trender\t\t\t\t\t\t\t () {}\n\n\tcomponentWillReceiveProps\t\t (next_props)\n\tcomponentWillUpdate\t\t\t\t (next_props, next_state)\n\tcomponentDidCatch\t\t\t\t (error, info) \t{}\n\tcomponentDidMount\t\t\t\t () \t\t\t{}\n\tcomponentDidUpdate\t\t\t\t (prevProps, prevState, last_snapshot) {}\n\tcomponentWillUnmount\t\t\t () {}\n\tgetSnapshotBeforeUpdate\t\t\t (prevProps, prevState) {}\n\tshouldComponentUpdate\t\t\t (nextProps, nextState) {}\n\n\tstatic getDerivedStateFromError\t (error) {}\n\tstatic getDerivedStateFromProps\t (props, state) {}\n\n\n\t*/\t\n\t/* // todo: maybe \n\tstatic get contextType() { }\n\tstatic set contextType(ctxt) { } \n\n\tstatic get childContextTypes() {}\n\tstatic set childContextTypes(ctxt) { } \n\n\tgetChildContext()\n\t*/\n}\n\n/**\n * @class HTMLComponent\n * @extends Component\n *\n * Lightweight React-like component that creates and manages a single HTML element.\n * It renders an HTML element of the given tag/type (`entity`) and applies the provided `props`.\n *\n * @example\n * <div {...props}>...</div>\n * or\n * const el = new HTMLComponent('div', { className: 'box' });\n *\n * @param {string} entity - The HTML tag/type to create (e.g., 'div', 'span', 'button').\n * @param {Object} props - Props to apply to the created element.\n */\n\nexport class HTMLComponent extends Component \n{\n\tconstructor(entity, props)\n\t{\n\t\tsuper(props);\n\t\tthis[CORE].entity = entity;\n\t}\n\n\trender()\n\t{\t\n\t\treturn this[CORE].props.children;\n\t}\n}\n\n\n/**\n * @class RootComponent\n * @extends HTMLComponent\n *\n * Root-level component that receives a pre-existing root HTML element and builds/receives its children using `props`.\n * It uses `props.children` (and related conventions) as the primary input for what to render inside the root.\n *\n * @example\n * // Accept an element reference\n * const root = document.getElementById('app')\n * const app = new RootComponent(root, { children: [...] })\n *\n * // Or accept a selector string\n * const app2 = new RootComponent('#app', { children: [...] })\n *\n * @param {HTMLElement|string} rootElement - Root HTML element (or a selector string resolved via `document.querySelector`).\n * @param {Object} props - Root props used to configure how children are provided and attached (typically includes `props.children`).\n *\n * @property {HTMLElement|string} rootElement - The root element reference (or tag/type/selector depending on how you pass it in).\n * @property {Object} props - Root props used to build/receive children.\n */\n\nexport class RootComponent extends HTMLComponent \n{\n\tconstructor(element, props)\n\t{\n\t\tsuper(':root', props);\n\n\t\tif(typeof this.element==='string') {\n\t\t\telement = document.querySelector(element);\n\t\t}\n\n\t\tthis[CORE].element = element;\n\n\t\tfor(const ch of props.children) {\n\t\t\tif(ch[CORE]) ch[CORE].container = this[CORE];\n\t\t\telse ch.container = this[CORE];\n\t\t}\n\t}\n}\n\n\n/**\n * Creates an HTML/React-like component instance.\n * This is what the JSX transpiler uses internally for `<Component>...</Component>`-style expressions.\n * It is also aliased to `createElement` for compatibility with the React API.\n *\n * @param {string} entity - The HTML tag/type to create (e.g., 'div', 'span', 'button').\n * @param {Object} [props={}] - Props/attributes to apply to the created element.\n * @param {...any} children - Child nodes or values to attach (e.g., strings, HTMLElements, component instances, or arrays).\n *\n * @returns {HTMLComponent} The created component instance.\n */\n\nexport function createComponent(entity, props={}, ...children)\n{\n\n\tfor(let i=0; i<children.length; i++) {\n\t\tlet ch = children[i];\n\n\t\tif(ch===undefined || ch===null || typeof(ch)==='boolean') {\n\t\t\tchildren.splice(i, 1);\n\t\t\ti--;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif( [\"number\", \"bigint\"].indexOf(typeof(ch))!==-1 ) {\n\t\t\tch = ch.toString();\n\t\t}\n\n\t\tif( typeof(ch)==='string' ) {\n\t\t\tchildren[i] = { [TEXT]: ch };\n\t\t}\n\t\telse {\n\t\t\tchildren[i] = ch;\n\t\t}\n\t}\n\n\tif(entity===null) return children; // <> style fragment\n\n\tprops.key = generateComponentKey(entity, props);\n\tprops.children = children;\n\n\treturn { entity, props };\n}\n\n/**\n * Creates a root controller bound to a specific DOM element.\n * The returned object manages mounting/updating and removal of component trees.\n *\n * @param {HTMLElement|string} element\n * Root HTML element to use. If a string is provided, it is resolved via `document.querySelector`.\n *\n * @returns {Object} Root controller.\n * @returns {Object.render} controller.render(component)\n * Mounts (or updates) the provided component into the root element.\n * @returns {Object.unmount} controller.unmount()\n * Removes/unmounts the currently rendered component tree from the root element.\n */\n\nexport function createRoot(element)\n{\n\tlet root;\n\n\treturn {\n\t\trender(component) {\n\t\t\tif(!root) {\n\t\t\t\troot = new RootComponent( element, {children:[component]} );\n\t\t\t\tLilact.roots.add(root[CORE]);\n\t\t\t\troot.forceUpdate();\n\t\t\t\treturn root;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow \"root already initialized!\";\n\t\t\t}\n\t\t},\n\n\t\tunmount() {\n\t\t\tif(root) {\n\t\t\t\troot.cleanup();\n\t\t\t\telement.innerHTML=\"\";\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Renders a component into a target DOM element.\n * If the component maintains internal state, this typically mounts it (or updates the existing tree) under `element`.\n *\n * @param {Object} component - Component instance to render.\n * @param {HTMLElement|string} element\n * Target element to render into. If a string is provided, it is resolved via `document.querySelector`.\n *\n * @returns {void}\n */\n\nexport function render(component, element)\n{\n\tif(component[CORE] && (component[CORE].container || component[CORE].parent)) {\n\t\tthrow \"component is already in use\";\n\t}\n\treturn createRoot(element).render(component);\n}\n\n/** @ignore */\nexport const createElement = createComponent;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9jb21wb25lbnRzLmpzeCIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9hcmFzaC9EZXNrdG9wL1Byb2plY3RzL0xpbGFjdC9zcmMvY29tcG9uZW50cy5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEifQ==","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t\tnotice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t\tnotice, this list of conditions and the following disclaimer in the\n\t\tdocumentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\nconst [CORE,COMPONENT]=[Symbol.for('LILACT:CORE'),Symbol.for('LILACT:COMPONENT')];\n\n\n/**\n * Hook wrapper/primitive used to implement custom hooks.\n * Can be used by the user, but not encouraged. Only use after you\n * study how Lilact itself uses it.\n *\n * @returns {hook} Hook result.\n */\nexport function useHook()\n{\n\tconst core = Lilact.current_component[0];\n\t\n\tif(core.hooks[core.hook_index]===undefined) {\n\t\tcore.hooks.push({});\n\t}\n\n\treturn core.hooks[core.hook_index++];\n}\n\n/**\n * Adds state to a component using a React-like [value, setter] pattern.\n *\n * @param {any} initialValue - Initial state value.\n * @returns {any} Hook result (implementation-dependent; typically `[state, setState]`).\n */\nexport function useState(val)\n{\n\tconst hk = Lilact.useHook();\n\n\tif( Lilact.isEmpty(hk) ) {\n\t\tif(typeof(val)==='function') hk.value = val();\n\t\telse hk.value = val;\n\t\t\n\t\thk.set_func = function(core, hk, val) {\n\t\t\tif(typeof(val)==='function') hk.value = val(hk.value);\n\t\t\telse hk.value = val;\n\n\t\t\tcore.component.forceUpdate();\n\t\t}.bind(undefined, Lilact.current_component[0], hk);\n\n\t}\n\n\treturn [hk.value, hk.set_func];\n}\n\n/**\n * Returns a memoized callback function whose identity stays stable until dependencies change.\n *\n * @param {Function} callback - Function to memoize.\n * @param {Array<any>} deps - Dependency list.\n * @returns {Function} Memoized callback.\n */\nexport function useCallback(callback, deps=[{}])\n{\n\tconst hk = Lilact.useHook();\n\n\tif( Lilact.isEmpty(hk) ) {\n\t\thk.callback = callback;\n\t\thk.deps = deps;\n\t}\n\telse {\n\t\tfor(let d in deps) {\n\t\t\tif( !Lilact.defaultIsEqual(deps[d],hk.deps[d]) ) {\n\t\t\t\thk.callback = callback;\n\n\t\t\t\thk.deps = deps;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn hk.callback;\n}\n\n/**\n * Creates a context object for sharing a value through the component tree.\n *\n * @param {any} [defaultValue] - Initial context value when no Provider is present.\n * @returns {any} A context object (implementation-dependent).\n */\nexport function createContext(val)\n{\n\tconst prov = function({value, children}) {\n\t\treturn children;\n\t};\n\n\treturn {\n\t\tdefault: val,\n\t\tProvider: prov\n\t}\n}\n\n/**\n * Reads the current value from a context.\n *\n * @param {any} context - Context object created by `createContext`.\n * @returns {any} Current context value.\n */\nexport function useContext(ctx)\n{\n\tlet core = Lilact.current_component[0].parent;\n\n\twhile(core.entity!==ctx.Provider && core.parent) {\n\t\tcore = core.parent;\n\t}\n\n\tif(core.parent) {\n\t\tlet v = core.props?.value;\n\t\treturn v??=ctx.default;\n\t}\n\n\treturn ctx.default;\n}\n\n/**\n * Returns a stable, unique ID that is consistent across renders.\n *\n * @param {string} [prefix] - Optional id prefix.\n * @returns {string} Stable unique id.\n */\nexport function useId(prefix=\"N\")\n{\n\tconst hk = Lilact.useHook();\n\n\tif( Lilact.isEmpty(hk) ) {\n\t\thk.id = prefix+Lilact.id_num++;\n\t}\n\n\treturn hk.id;\n}\n\n/**\n * Starts a transition and returns helpers for pending updates vs immediate ones.\n *\n * @returns {any} Transition API (implementation-dependent; typically `[isPending, startTransition]`).\n */\nexport function useTransition()\n{\n\tconst hk = Lilact.useHook();\n\n\tif( Lilact.isEmpty(hk) ) {\n\t\thk.count=0;\n\n\t\thk.func =\n\n\t\t(async function(core, hk, fn) {\n\n\t\t\thk.count++;\n\n\t\t\tif(hk.count===1) {\n\t\t\t\tcore.component.forceUpdate();\n\t\t\t}\n\n\t\t\tawait fn();\n\n\t\t\thk.count--;\n\n\t\t\tif(hk.count===0) {\n\t\t\t\tcore.component.forceUpdate();\n\t\t\t}\n\t\t}\n\n\t\t).bind(undefined, Lilact.current_component[0], hk);\n\t}\n\n\treturn [ hk.count!=0, hk.func ];\n}\n\n/**\n * Persists state in localStorage and keeps it in sync with the app.\n *\n * @param {string} key - localStorage key.\n * @param {any} initialValue - Initial value used if nothing exists in localStorage.\n * @returns {any} Stored state/result.\n */\nexport function useLocalStorage(key, default_val)\n{\n\n\tconst hk = Lilact.useHook();\n\tlet val;\n\n\ttry {\n\t\tval = JSON.parse(localStorage[key]);\n\t}\n\tcatch(e) {\n\t}\n\n\tif(val===undefined) {\n\t\tif(typeof(default_val)==='function') default_val = default_val();\n\t\tval = default_val;\n\t\tlocalStorage[key] = JSON.stringify(val);\n\t}\n\n\tif( Lilact.isEmpty(hk) ) {\n\t\thk.value = val;\n\t\thk.set_func = function(core, hk, val) {\n\n\t\t\tif(typeof(val)==='function') val = val(hk.value);\n\n\t\t\tif(val===hk.value) return;\n\n\t\t\tlocalStorage[key] = JSON.stringify(val);\n\n\t\t\thk.value = val;\n\t\t\tcore.component.forceUpdate();\n\n\t\t}.bind(undefined, Lilact.current_component[0], hk);\n\t}\n\n\treturn [hk.value, hk.set_func];\n}\n\n/**\n * Creates a mutable ref object with a stable identity across renders.\n * The `.current` property holds the latest value.\n *\n * @param {any} initialValue - Initial ref value.\n * @returns {Object} Ref object with `.current`.\n */\nexport function useRef(val = null)\n{\n\tconst hk = Lilact.useHook();\n\n\tif( Lilact.isEmpty(hk) ) {\n\t\thk.current = val;\n\t}\n\n\treturn hk;\n}\n\n/**\n * Runs an effect synchronously after all DOM mutations but before the browser paints.\n *\n * @param {Function} effect - Effect callback.\n * @param {Array<any>} [deps] - Dependency list.\n * @returns {void}\n */\nexport function useLayoutEffect(setup, deps=[{}])\n{\n\tif(typeof(deps)!=='object' || deps.constructor.name!=='Array') {\n\t\tthrow \"effect dependencies must be an array or omitted.\";\n\t}\n\n\tconst hk = Lilact.useHook();\n\n\tif( !Lilact.isEmpty(hk) ) {\n\t\tif(deps.every((v,i)=> v === hk.deps[i])) return;\n\t\tif(hk.cleanup) {\n\t\t\thk.cleanup();\n\t\t}\n\t}\n\n\thk.deps = deps;\n\tLilact.layout_effects.add( ()=>{ hk.cleanup = setup(); });\n\tLilact.current_component[0].component.forceUpdate();\n\n}\n\n/**\n * Runs a side effect after render commits.\n *\n * @param {Function} effect - Effect callback.\n * @param {Array<any>} [deps] - Dependency list.\n * @returns {void}\n */\nexport function useEffect(setup, deps=[{}])\n{\n\tif(typeof(deps)!=='object' || deps.constructor.name!=='Array') {\n\t\tthrow \"effect dependencies must be an array or omitted.\";\n\t}\n\n\tconst hk = Lilact.useHook();\n\n\tif( !Lilact.isEmpty(hk) ) {\n\t\tif(deps.every((v,i)=> v === hk.deps[i])) return;\n\t\tif(hk.cleanup) {\n\t\t\thk.cleanup();\n\t\t}\n\t}\n\n\thk.deps = deps;\n\tLilact.setTimeout( ()=>{ hk.cleanup = setup(); }, 0 );\n\n}\n\n/**\n * Memoizes a computed value until dependencies change.\n *\n * @param {Function} factory - Function that creates the value.\n * @param {Array<any>} deps - Dependency list.\n * @returns {any} Memoized value.\n */\nexport function useMemo(fn,deps=[])\n{\n\tconst hk = Lilact.useHook();\n\n\tif( Lilact.isEmpty(hk) ) {\n\t\thk.deps = deps;\n\t\thk.value = fn();\n\t}\n\telse {\n\t\tfor(let d in deps) {\n\t\t\tif( !Lilact.defaultIsEqual(deps[d],hk.deps[d]) ) {\n\t\t\t\thk.deps = deps;\n\t\t\t\thk.value = fn(hk.value);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn hk.value;\n}\n\n/**\n * React-compatible hook for managing an async/queued action and deriving state from it.\n *\n * @param {Function} action - The async/queued action function.\n * @param {any} initialState - Initial state for the hook.\n * @returns {any} Hook result (implementation-dependent).\n */\nexport function useActionState(fn, initial_state)\n{\n\tconst hk = Lilact.useHook();\n\tconst [is_pending, tran_start_func] = Lilact.useTransition();\n\n\tif( Lilact.isEmpty(hk) ) {\n\n\t\thk.state = initial_state;\n\n\t\thk.form_action = (sub)=>{\n\t\t\tevent.preventDefault();\n\n\t\t\ttran_start_func(\n\t\t\t\t\tasync ()=> {\n\t\t\t\t\t\tconst form_data = new FormData(sub.target, sub.submitter);\n\t\t\t\t\t\thk.state = await fn(hk.state, form_data);\n\t\t\t\t\t},\n\t\t\t\t\t[]\n\t\t\t\t);\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn [hk.state, hk.form_action, is_pending];\n}\n\n/**\n * Manages state via a reducer function and exposes dispatch to trigger state transitions.\n *\n * @param {Function} reducer - Reducer function.\n * @param {any} initialArg - Initial state value (or initializer arg).\n * @param {Function} [init] - Optional initializer function for lazy initial state.\n * @returns {any} Hook result (implementation-dependent; typically `[state, dispatch]`).\n */\nexport function useReducer(reducer, initialArg, init)\n{\n\tconst hk = Lilact.useHook();\n\n\tif( Lilact.isEmpty(hk) ) {\n\t\thk.reducer = reducer;\n\t\thk.state = init?init(initialArg):initialArg;\n\t\thk.dispatch = function(core, hk, action) {\n\t\t\tconst newst = hk.reducer(hk.state, action);\n\t\t\tif(!Lilact.defaultIsEqual(newst,hk.state)) {\n\t\t\t\thk.state = newst;\n\t\t\t\tcore.component.forceUpdate();\n\t\t\t}\n\n\t\t}.bind(undefined, Lilact.current_component[0], hk);\n\t}\n\n\treturn [hk.state, hk.dispatch];\n}\n\n\n\n// todo: very simple implementation. not lilactish! must be modified\n\n/**\n * Returns a deferred value that updates later than the provided input.\n *\n * @param {any} value - Value to defer.\n * @returns {any} Deferred value.\n */\nexport function useDeferredValue(value, initialValue)\n{\n\n\tconst { useEffect, useRef, useState } = Lilact;\n\n\tconst [deferred, setDeferred] = useState(\n\t\ttypeof initialValue !== \"undefined\" ? initialValue : value\n\t);\n\tconst lastValueRef = useRef(value);\n\tconst pendingRef = useRef(null);\n\n\tuseEffect(() => {\n\t\tif (lastValueRef.current === value) return;\n\t\tlastValueRef.current = value;\n\n\t\t// Cancel any previously scheduled update\n\t\tif (pendingRef.current != null) {\n\t\t\tpendingRef.current.cancelled = true;\n\t\t\tpendingRef.current = null;\n\t\t}\n\n\t\t// Schedule update asynchronously using a microtask (Promise.resolve)\n\t\tconst job = { cancelled: false };\n\t\tpendingRef.current = job;\n\n\t\tPromise.resolve().then(() => {\n\t\t\tif (job.cancelled) return;\n\t\t\t// Batch state update into next event loop tick so current render finishes first.\n\t\t\tsetDeferred(value);\n\t\t\tpendingRef.current = null;\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (pendingRef.current) {\n\t\t\t\tpendingRef.current.cancelled = true;\n\t\t\t\tpendingRef.current = null;\n\t\t\t}\n\t\t};\n\t}, [value]);\n\n\treturn deferred;\n}\n\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9ob29rcy5qc3giLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL2hvb2tzLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\n// note: lilact timers can be used without lilact. uncomment the directive below to\n// get the transpiled version in dist directory.\n//ʔ outputJS('./dist/timers.js');\n\n\nconst [CORE,IDX,DUE,REPEAT,CLEARED,INTERVAL,CALLBACK,ARGS]=[Symbol.for('LILACT:TIMERS:CORE'),Symbol.for('LILACT:TIMERS:IDX'),Symbol.for('LILACT:TIMERS:DUE'),Symbol.for('LILACT:TIMERS:REPEAT'),Symbol.for('LILACT:TIMERS:CLEARED'),Symbol.for('LILACT:TIMERS:INTERVAL'),Symbol.for('LILACT:TIMERS:CALLBACK'),Symbol.for('LILACT:TIMERS:ARGS')];\n\n/**\n * Timer helpers for a promise-friendly timer framework.\n *\n * These functions keep the same call signatures as the standard JavaScript timer APIs where applicable (`setTimeout`/`setInterval`/`clearTimeout`/`clearInterval`), but add extra capabilities for promise-friendly control and lifecycle management. This module can “grab” timers and later pause/resume/reset/release them, plus provide promise wrappers like `timeoutPromise` and `animationFramePromise`.\n *\n * - `setTimeout` / `setInterval`: schedule callbacks (same interface as the built-ins).\n * - `clearTimeout` / `clearInterval`: cancel scheduled timers (same interface as the built-ins).\n * - `grabTimers` / `pauseTimers` / `resumeTimers` / `resetTimers` / `releaseTimers`: manage tracked timers (implementation-dependent behavior).\n * - `timeoutPromise` / `animationFramePromise`: promise-based convenience wrappers.\n */\n\n\nlet timer_pause_time = undefined;\nlet current_timer_idx = -1;\nlet timer_list = [];\nlet timer_timeout = -1;\nlet all_timers = {};\n\n\n// original functions\nconst _setTimeout = window.setTimeout,\n_setInterval = window.setInterval,\n_clearTimeout = window.clearTimeout,\n_clearInterval = window.clearInterval;\n\n\nfunction get_bucket(target) \n{\n\tlet left = 0;\n\tlet right = timer_list.length - 1;\n\n\twhile (left <= right) {\n\t\tconst mid = Math.floor((left + right) / 2);\n\t\tconst mid_val = timer_list[mid][DUE];\n\n\t\tif (mid_val === target) {\n\t\t\treturn [mid, timer_list[mid]];\n\t\t} \n\t\telse if (mid_val < target) {\n\t\t\tleft = mid + 1;\n\t\t} \n\t\telse {\n\t\t\tright = mid - 1;\n\t\t}\n\t}\n\n\tconst bucket = [];\n\tbucket[DUE] = target;\n\n\ttimer_list.splice(left, 0, bucket); \n\treturn [left, bucket];\n}\n\nfunction add_timer(t, is_repeat=false)\n{\n\tconst [i,bucket] = get_bucket(t[DUE]);\n\n\tif(!is_repeat) {\n\t\tcurrent_timer_idx++;\n\t\tall_timers[current_timer_idx]=t;\n\t\tt[IDX] = current_timer_idx;\n\t}\n\n\tbucket.push(t);\n\n\tif(timer_list[0][0]===t) {\n\t\t_clearTimeout( timer_timeout );\n\t\ttimer_timeout = _setTimeout( run_timer, t[INTERVAL] );\n\t}\n\n\treturn current_timer_idx;\n}\n\nfunction run_timer()\n{\n\tconst now = Date.now();\n\n\tlet i = 0;\n\tlet buck = timer_list[i];\n\n\twhile( buck && buck[DUE]-now <= 0 ) {\n\t\tfor(const t of buck) {\n\n\t\t\tif(!t[CLEARED]) {\n\t\t\t\tt[CALLBACK](...t[ARGS]);\t\t\t\n\t\t\t\tif(t[REPEAT]) {\n\t\t\t\t\tt[DUE] = Date.now()+t[INTERVAL];\n\t\t\t\t\tadd_timer(t, true);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdelete all_timers[t[IDX]];\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdelete all_timers[t[IDX]];\n\t\t\t}\n\t\t}\n\t\ti++;\n\t\tbuck = timer_list[i];\n\t}\n\n\ttimer_list.splice(0,i);\n\n\tif(timer_list.length>0) {\n\t\t_clearTimeout( timer_timeout );\n\t\ttimer_timeout = _setTimeout( run_timer, timer_list[0][DUE] - now);\n\t}\n\n}\n\n//---\n\n/**\n * Resets managed timers back to their initial scheduled state.\n * @returns {void}\n */\nexport function resetTimers()\n{\n\t_clearTimeout(timer_timeout);\n\ttimer_pause_time = undefined;\n\tcurrent_timer_idx = -1;\n\ttimer_list = [];\n\ttimer_timeout = -1;\n\tall_timers = {};\n}\n\n/**\n * Pauses all grabbed timers.\n * @returns {void}\n */\nexport function pauseTimers()\n{\n\t_clearTimeout( timer_timeout );\n\ttimer_pause_time = Date.now();\n}\n\n/**\n * Resumes paused timers.\n * @returns {void}\n */\nexport function resumeTimers()\n{\n\tif(!timer_pause_time) return;\n\n\tif(timer_list.length>0) {\n\t\tconst now = Date.now();\n\n\t\ttimer_pause_time -= now;\n\n\t\tfor( const t of timer_list ) {\n\t\t\tt[DUE] -= timer_pause_time;\n\t\t}\n\n\t\ttimer_timeout = _setTimeout( run_timer, timer_list[0][DUE] - now);\n\t}\n\n\ttimer_pause_time = undefined;\n}\n\n\n/**\n * Creates a timeout timer (same interface as JS `setTimeout`).\n * @param {Function} callback - Function to run after the delay.\n * @param {number} delay - Delay in milliseconds.\n * @param {...any} [args] - Optional arguments passed to `callback`.\n * @returns {any} Timeout id.\n */\n\n\nexport function setTimeout(func, interval, ...args)\n{\n\treturn add_timer( { [CALLBACK]: func, [INTERVAL]: interval, [DUE]: Date.now()+interval, [REPEAT]: false, [ARGS]: args } );\n}\n\n/**\n * Creates an interval timer (same interface as JS `setInterval`).\n * @param {Function} callback - Function to run repeatedly.\n * @param {number} interval - Delay in milliseconds between executions.\n * @param {...any} [args] - Optional arguments passed to `callback`.\n * @returns {any} Interval id.\n */\n\nexport function setInterval(func, interval, ...args)\n{\n\treturn add_timer( { [CALLBACK]: func, [INTERVAL]: interval, [DUE]: Date.now()+interval, [REPEAT]: true, [ARGS]: args } );\n}\n\n/**\n * Clears a timeout created via this framework’s `setTimeout`.\n * @param {any} id - Timeout id returned by `setTimeout`.\n * @returns {void}\n */\nexport function clearTimeout(t)\n{\n\tif(all_timers[t]) all_timers[t][CLEARED] = true;\n}\n\n/**\n * Clears an interval created via this framework’s `setInterval`.\n * @param {any} id - Interval id returned by `setInterval`.\n * @returns {void}\n */\nexport function clearInterval(t)\n{\n\tif(all_timers[t]) all_timers[t][CLEARED] = true;\n}\n\n/**\n * Captures/associates all timers with the framework so they can be managed. Calling this will\n * shadow the global setTimeout and setInterval functions and channel them through Lilact.\n * @returns {void}\n */\nexport function grabTimers()\n{\n\tglobalThis.setTimeout = this.setTimeout;\n\tglobalThis.setInterval = this.setInterval;\n\tglobalThis.clearTimeout = this.clearTimeout;\n\tglobalThis.clearInterval = this.clearInterval;\n}\n\n/**\n * Releases timers from framework control.\n * @returns {void}\n */\nexport function releaseTimers()\n{\n\tglobalThis.setTimeout = _setTimeout;\n\tglobalThis.setInterval = _setInterval;\n\tglobalThis.clearTimeout = _clearTimeout;\n\tglobalThis.clearInterval = _clearInterval;\n}\n\n/**\n * Returns a Promise that resolves after a timeout (framework-managed) using the same delay semantics as `setTimeout`.\n * @param {number} duration - Delay in milliseconds.\n * @returns {Promise} Promise that resolves after the delay.\n */\nexport function timeoutPromise(duration=0, timer_source=this) \n{\t\n\tlet id, resolve, reject;\n\n\tconst promise = new Promise((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t\tid = timer_source.setTimeout(() => {\n\t\t\tresolve();\n\t\t}, duration);\n\t});\n\n\t// note: proceed interrupts the timer, and continues the flow if used with await.\n\tpromise.proceed = () => {\n\t\ttimer_source.clearTimeout(id);\n\t\tresolve();\n\t};\n\n\t// note: cancel rejects so it throws exception when using with await, this allows handling it differently.\n\tpromise.cancel = () => {\n\t\ttimer_source.clearTimeout(id);\n\t\treject();\n\t};\n\n\treturn promise;\n}\n\n/**\n * Schedules a callback on the next animation frame and returns a Promise that resolves on that frame.\n * @returns {Promise} Promise that resolves when the animation frame runs.\n */\nexport function animationFramePromise() {\n return new Promise((resolve) => {\n requestAnimationFrame(() => {\n resolve();\n });\n });\n}\t\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy90aW1lcnMuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy90aW1lcnMuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIn0=","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t\tnotice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t\tnotice, this list of conditions and the following disclaimer in the\n\t\tdocumentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\nconst [CORE,COMPONENT,CHILD_CLASS_ADDENDUM]=[Symbol.for('LILACT:CORE'),Symbol.for('LILACT:COMPONENT'),Symbol.for('LILACT:CHILD_CLASS_ADDENDUM')];\n\n/* States */\nconst UNMOUNTED = \"unmounted\";\nconst EXITED = \"exited\";\nconst ENTERING = \"entering\";\nconst ENTERED = \"entered\";\nconst EXITING = \"exiting\";\n\nimport {setTimeout, clearTimeout} from \"./timers.jsx\"\nimport {Children} from \"./misc.jsx\"\nimport {useEffect} from \"./hooks.jsx\"\n\n/**\n * Transition component that manages enter/exit lifecycle and calls callbacks based on state changes.\n *\n * @param props - Component props.\n * @param props.in - Boolean/flag indicating whether the component should be entered/shown.\n * @param [props.timeout=defaultTransitionTimeout] - Duration (or durations) for the transition.\n * @param [props.mountOnEnter=false] - If true, mount the child only when entering.\n * @param [props.unmountOnExit=false] - If true, unmount the child after exiting.\n * @param [props.appear=false] - If true, run the enter transition on initial mount.\n * @param props.onEnter - Called when entering begins.\n * @param props.onEntering - Called while the component is entering.\n * @param props.onEntered - Called when entering completes.\n * @param props.onExit - Called when exiting begins.\n * @param props.onExiting - Called while the component is exiting.\n * @param props.onExited - Called when exiting completes.\n * @param props.children - Render prop receiving transition state/props.\n */\nexport function Transition({\n\tin: inProp,\n\ttimeout = Lilact.defaultTransitionTimeout,\n\tmountOnEnter = false,\n\tunmountOnExit = false,\n\tappear = false,\n\tonEnter,\n\tonEntering,\n\tonEntered,\n\tonExit,\n\tonExiting,\n\tonExited,\n\tchildren,\n\n\t// this is underscored to prevent accidental setting by the user.\n\t// i added it to the Transition itself to simplify the implementation,\n\t// but the user should use CSSTransition itself.\n\t_classNames: classNames\n}) {\n\tthis[CORE].is_mounted ??= !mountOnEnter || inProp || appear;\n\tthis[CORE].is_appeared ??= inProp;\n\tthis[CORE].timer ??= null;\n\n\tif(!this.state) {\n\t\tif (!this[CORE].is_mounted) this.state = UNMOUNTED;\n\t\tif (inProp) {\n\t\t\tthis.state = appear && !this[CORE].is_appeared ? ENTERING : ENTERED;\n\t\t}\n\t\tthis.state = EXITED;\n\t}\n\n\tuseEffect(() => {\n\t\treturn () => clearTimeout(this[CORE].timer);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!this[CORE].is_appeared && appear && this.state === ENTERING && inProp) {\n\t\t\tonEnter?.();\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tonEntering?.(!this[CORE].is_appeared);\n\t\t\t\tclearTimeout(this[CORE].timer);\n\t\t\t\tthis[CORE].timer = setTimeout(() => {\n\t\t\t\t\tthis.setState(ENTERED);\n\t\t\t\t\tthis[CORE].is_appeared = true;\n\t\t\t\t\tonEntered?.(!this[CORE].is_appeared);\n\t\t\t\t}, timeout);\n\t\t\t});\n\t\t}\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (inProp) {\n\t\t\tthis[CORE].is_mounted = true;\n\t\t\t// If we are already entering/entered, no-op\n\t\t\tif (this.state === ENTERING || this.state === ENTERED) return;\n\n\t\t\tonEnter?.(!this[CORE].is_appeared);\n\t\t\tthis.setState(ENTERING, () => {\n\t\t\t\tonEntering?.(!this[CORE].is_appeared);\n\t\t\t\tclearTimeout(this[CORE].timer);\n\t\t\t\tthis[CORE].timer = setTimeout(() => {\n\t\t\t\t\tthis.setState(ENTERED);\n\t\t\t\t\tthis[CORE].is_appeared = true;\n\t\t\t\t\tonEntered?.();\n\t\t\t\t}, timeout);\n\t\t\t});\n\t\t} \n\t\telse {\n\t\t\tif (this.state === UNMOUNTED || this.state === EXITING || this.state === EXITED) return;\n\n\t\t\tonExit?.();\n\t\t\tthis.setState(EXITING, () => {\n\t\t\t\tonExiting?.();\n\t\t\t\tclearTimeout(this[CORE].timer);\n\t\t\t\tthis[CORE].timer = setTimeout(() => {\n\t\t\t\t\tthis.setState(EXITED);\n\t\t\t\t\tonExited?.();\n\t\t\t\t\tif (unmountOnExit) {\n\t\t\t\t\t\tthis[CORE].is_mounted = false;\n\t\t\t\t\t\tthis.setState(UNMOUNTED);\n\t\t\t\t\t}\n\t\t\t\t}, timeout);\n\t\t\t});\n\t\t}\n\t}, [inProp, timeout]);\n\n\tif (!this[CORE].is_mounted) return null;\n\n\tif(classNames) {\n\t\tif (this.state === ENTERING) {\n\t\t\tif(this[CORE].is_appeared)\n\t\t\t\tthis[CORE][CHILD_CLASS_ADDENDUM] = classNames.appearActive;\n\t\t\telse\n\t\t\t\tthis[CORE][CHILD_CLASS_ADDENDUM] = classNames.enterActive;\n\t\t}\n\t\telse if (this.state === ENTERED) {\n\t\t\tif(this[CORE].is_appeared)\n\t\t\t\tthis[CORE][CHILD_CLASS_ADDENDUM] = classNames.appearDone;\n\t\t\telse\n\t\t\t\tthis[CORE][CHILD_CLASS_ADDENDUM] = classNames.enterDone;\n\t\t}\n\t\telse if (this.state === EXITING) this[CORE][CHILD_CLASS_ADDENDUM] = classNames.exitActive;\n\t\telse if (this.state === EXITED) this[CORE][CHILD_CLASS_ADDENDUM] = classNames.exitDone;\n\t}\n\treturn children;\n}\n\n\n/**\n * CSSTransition component that extends Transition by applying CSS class names during enter/exit phases.\n *\n * Lilact accepts multiple children for CSSTransition. This has the benefit\n * of receiving single events on multiple animated components.\n *\n * @param props - Component props.\n * @param props.in - Boolean/flag indicating whether the component should be entered/shown.\n * @param [props.timeout=defaultTransitionTimeout] - Duration (or durations) for the transition.\n * @param [props.classNames=\"fade\"] - Base CSS class name(s) used for the transition states.\n * @param [props.mountOnEnter=false] - If true, mount the child only when entering.\n * @param [props.unmountOnExit=false] - If true, unmount the child after exiting.\n * @param [props.appear=false] - If true, run the enter transition on initial mount.\n * @param props.children - Render prop receiving transition state/props.\n * @param props.onEnter - Called when entering begins.\n * @param props.onEntering - Called while the component is entering.\n * @param props.onEntered - Called when entering completes.\n * @param props.onExit - Called when exiting begins.\n * @param props.onExiting - Called while the component is exiting.\n * @param props.onExited - Called when exiting completes.\n */\nexport function CSSTransition({\n\tin: inProp,\n\ttimeout = defaultTransitionTimeout,\n\tclassNames = \"fade\",\n\tmountOnEnter = false,\n\tunmountOnExit = false,\n\tappear = false,\n\tchildren,\n\tonEnter, onEntering, onEntered, \n\tonExit, onExiting, onExited,\n}) {\n\n\tif(typeof(classNames)==='string') {\n\t\tclassNames = {\n\t\t\tappear: `${classNames}-enter ${classNames}-appear`,\n\t\t\tappearActive: `${classNames}-enter-active ${classNames}-appear-active`,\n\t\t\tappearDone: `${classNames}-enter-done ${classNames}-appear-done`,\n\t\t\tenter: `${classNames}-enter`,\n\t\t\tenterActive: `${classNames}-enter-active`,\n\t\t\tenterDone: `${classNames}-enter-done`,\n\t\t\texit: `${classNames}-exit`,\n\t\t\texitActive: `${classNames}-exit-active`,\n\t\t\texitDone: `${classNames}-exit-done`,\n\t\t};\n\t}\t\t\n\treturn (\n\t\tLilact.createComponent( Transition, { \"in\": inProp, \"timeout\": timeout, \"mountOnEnter\": mountOnEnter, \"unmountOnExit\": unmountOnExit, \"appear\": appear, \"onEnter\": onEnter, \"onEntering\": onEntering, \"onEntered\": onEntered, \"onExit\": onExit, \"onExiting\": onExiting, \"onExited\": onExited, \"_classNames\": classNames }, children )\n\t\t);\n}\n\n/**\n * Lilact doesn't need TransitionGroup, so it is the same as a fragment.\n * In Lilact all the transitions and timeouts are automatically grouped.\n * \n * The only missing feature here is the childFactory. I may add it in\n * the future, but there are simple workarounds for that. \n */\nexport function TransitionGroup({ children }) {\n\treturn children;\n}\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy90cmFuc2l0aW9uLmpzeCIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9hcmFzaC9EZXNrdG9wL1Byb2plY3RzL0xpbGFjdC9zcmMvdHJhbnNpdGlvbi5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEifQ==","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t\tnotice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t\tnotice, this list of conditions and the following disclaimer in the\n\t\tdocumentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\n\n// Minimal shims (small and explicit)\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n\tElement.prototype.matches = Element.prototype.msMatchesSelector ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tElement.prototype.webkitMatchesSelector ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfunction(s) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar matches = (this.document || this.ownerDocument).querySelectorAll(s);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar i = matches.length;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twhile (--i >= 0 && matches.item(i) !== this) {}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn i > -1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\n}\n\nif (typeof Event !== 'undefined' && !Event.prototype.composedPath) {\n\tEvent.prototype.composedPath = function() {\n\t\tvar path = [];\n\t\tvar el = this.target;\n\t\twhile (el) {\n\t\t\tpath.push(el);\n\t\t\tel = el.parentElement;\n\t\t}\n\t\tpath.push(window);\n\t\treturn path;\n\t};\n}\n\n// Event pool for reuse\nconst _pool = [];\nconst MAX_POOL_SIZE = 10;\n\nfunction createSyntheticEvent(nativeEvent, currentTarget) {\n\t// Reuse object from pool if available\n\tconst e = _pool.length ? _pool.pop() : {};\n\n\te.nativeEvent = nativeEvent;\n\te.type = nativeEvent.type;\n\te.target = nativeEvent.target || nativeEvent.srcElement || null;\n\te.currentTarget = currentTarget || nativeEvent.currentTarget || null;\n\te.timeStamp = nativeEvent.timeStamp || Date.now();\n\te.defaultPrevented = !!(nativeEvent.defaultPrevented);\n\te.isPropagationStopped = false;\n\te.isPersistent = false;\n\n\te.isDefaultPrevented = () => e.defaultPrevented;\n\te.preventDefault = () => {\n\t\tif (nativeEvent.preventDefault) nativeEvent.preventDefault();\n\t\te.defaultPrevented = true;\n\t};\n\te.stopPropagation = () => {\n\t\tif (nativeEvent.stopPropagation) nativeEvent.stopPropagation();\n\t\te.isPropagationStopped = true;\n\t};\n\te.persist = () => { e.isPersistent = true; };\n\n\t// Convenience: normalized values for common props (touch, key, target value)\n\te.nativeEvent = nativeEvent;\n\te.key = nativeEvent.key || null;\n\te.code = nativeEvent.code || null;\n\te.which = nativeEvent.which || nativeEvent.keyCode || null;\n\n\t// For input-like events normalize value and checked\n\ttry {\n\t\tconst tgt = e.target;\n\t\te.value = tgt && ('value' in tgt) ? tgt.value : undefined;\n\t\te.checked = tgt && ('checked' in tgt) ? tgt.checked : undefined;\n\t} catch (err) {\n\t\te.value = undefined;\n\t\te.checked = undefined;\n\t}\n\n\t// composedPath helper\n\te.path = typeof nativeEvent.composedPath === 'function' ? nativeEvent.composedPath() : [e.target];\n\n\treturn e;\n}\n\nfunction releaseSyntheticEvent(e) {\n\tif (e && !e.isPersistent) {\n\t\t// Clean up references to avoid leaks\n\t\te.nativeEvent = null;\n\t\te.type = null;\n\t\te.target = null;\n\t\te.currentTarget = null;\n\t\te.timeStamp = 0;\n\t\te.defaultPrevented = false;\n\t\te.isPropagationStopped = false;\n\t\te.isPersistent = false;\n\t\te.isDefaultPrevented = null;\n\t\te.preventDefault = null;\n\t\te.stopPropagation = null;\n\t\te.persist = null;\n\t\te.key = null;\n\t\te.code = null;\n\t\te.which = null;\n\t\te.value = undefined;\n\t\te.checked = undefined;\n\t\te.path = null;\n\n\t\tif (_pool.length < MAX_POOL_SIZE) _pool.push(e);\n\t}\n}\n\n// Main wrapper factory\n// fn: function(syntheticEvent) { ... }\n// opts: { capture: bool, passive: bool, once: bool, stopPropagationOnTrueReturn: bool }\nfunction wrapListener(fn, opts = {}) {\n\tconst { stopPropagationOnTrueReturn = false } = opts;\n\n\treturn function handler(nativeEvent) {\n\n\t\tconst currentTarget = this || nativeEvent.currentTarget || null;\n\t\tconst sEvent = createSyntheticEvent(nativeEvent, currentTarget);\n\n\t\ttry {\n\t\t\tconst result = fn(sEvent);\n\n\t\t\t// If user returns true and opted in, stop propagation\n\t\t\tif (stopPropagationOnTrueReturn && result === true) {\n\t\t\t\tsEvent.stopPropagation();\n\t\t\t}\n\t\t} finally {\n\t\t\t// Release back to pool unless persisted\n\t\t\treleaseSyntheticEvent(sEvent);\n\t\t}\n\t};\n}\n\n// Convenience: add/remove wrapper-managed listener\nfunction addWrappedEventListener(target, type, fn, options = {}) {\n\tconst handler = wrapListener(fn, options);\n\n\ttarget.addEventListener(type, handler, options);\n\t// Return a remover\n\treturn () => target.removeEventListener(type, handler, options);\n}\n\n// Export (CommonJS / ES module-friendly)\nconst EventWrapper = {\n\twrapListener,\n\taddWrappedEventListener,\n\tcreateSyntheticEvent, // exported for advanced use\n\treleaseSyntheticEvent\n};\n\nexport default EventWrapper;\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9ldmVudHMuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9ldmVudHMuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIn0=","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t\tnotice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t\tnotice, this list of conditions and the following disclaimer in the\n\t\tdocumentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\n\nconst [CORE]=[Symbol.for('LILACT:CORE')];\n\nlet ReduxContext;\n\n/**\n * Provider component that supplies the store instance to the component tree.\n *\n * @param props - Component props.\n * @param props.store - Store instance to make available to descendants.\n * @param props.children - Components that can access the store via hooks.\n */\nexport function Provider({ store, children }) \n{\n\tReduxContext ??= Lilact.createContext(null);\n\treturn (\n\t\tLilact.createComponent( ReduxContext.Provider, { \"value\": store }, children )\n\t);\n}\n\n/**\n * Hook that returns the current store instance from the nearest Provider.\n *\n * @returns The store object from the Provider context.\n */\nexport function useStore() \n{\n\tconst store = Lilact.useContext(ReduxContext);\n\tif (!store) {\n\t\tthrow new Error(\"Could not find Redux store in context. <Provider> is missing.\");\n\t}\n\treturn store;\n}\n\n\n/**\n * Hook that returns the store's dispatch function from the nearest Provider.\n *\n * @returns The dispatch function used to send actions to the store.\n */\nexport function useDispatch() \n{\n\tconst store = Lilact.useStore();\n\treturn store.dispatch;\n}\n\n/**\n * Hook that returns selected data from the store using a selector.\n *\n * @param selector - Function that derives a value from the store state.\n * @param [equalityFn=(a, b) => a === b] - Determines when the selected value should update.\n * @returns The selected slice of state.\n */\nexport function useSelector(selector, equalityFn = (a, b) => a === b) \n{\n\tconst store = Lilact.useStore();\n\tconst latestSelectedRef = Lilact.useRef();\n\tconst latestSelectorRef = Lilact.useRef();\n\tconst [, forceRender] = Lilact.useState(0);\n\n\tif (!latestSelectorRef.current) {\n\t\tlatestSelectorRef.current = selector;\n\t}\n\tlatestSelectorRef.current = selector;\n\n\tlet selected = selector(store.getState()); // todo: should exception be covered?\n\n\tif (latestSelectedRef.current === undefined) {\n\t\tlatestSelectedRef.current = selected;\n\t}\n\n\tLilact.useLayoutEffect(() => {\n\t\t// keep latestSelectedRef in sync after render (in case selector used props or similar)\n\t\tlatestSelectedRef.current = selected;\n\t}, [selected]);\n\n\tLilact.useEffect(() => {\n\n\t\tlet didUnsubscribe = false;\n\n\t\tfunction checkForUpdates() {\n\t\t\tif (didUnsubscribe) return;\n\t\t\ttry {\n\t\t\t\tconst newSelected = latestSelectorRef.current(store.getState());\n\t\t\t\tconst oldSelected = latestSelectedRef.current;\n\t\t\t\tif (!equalityFn(oldSelected, newSelected)) {\n\t\t\t\t\tlatestSelectedRef.current = newSelected;\n\n\t\t\t\t\tforceRender((n) => n + 1);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\n\t\t\t\t// todo: which is better? cover the error or throw?\n\n\t\t\t\t// If selector throws during subscription notifications, re-render to surface error\n\t\t\t\t// (could instead log or ignore)\n\t\t\t\t// throw err;\n\t\t\t\tconsole.warn(err);\n\t\t\t}\n\t\t}\n\n\t\tconst unsubscribe = store.subscribe(checkForUpdates);\n\n\t\t// run check once in case state changed between render and effect\n\t\tcheckForUpdates();\n\n\t\treturn () => {\n\t\t\tdidUnsubscribe = true;\n\t\t\tunsubscribe();\n\t\t};\n\t}, [store, equalityFn]);\n\n\treturn latestSelectedRef.current;\n}\n\n\n/**\n * Higher-order component that connects a component to store state and dispatch.\n *\n * @param mapStateToProps - Maps store state to the wrapped component's props.\n * @param mapDispatchToProps - Maps dispatch (or action creators) to the wrapped component's props.\n * @returns A connected component that receives store-derived props.\n */\nexport function connect(mapStateToProps, mapDispatchToProps) \n{\n\tconst shouldSubscribe = Boolean(mapStateToProps);\n\n\treturn function wrapWithConnect(WrappedComponent) {\n\n\t\tfunction ConnectedComponent(props) {\n\t\t\tconst store = Lilact.useStore();\n\n\t\t\tlet dispatchProps = { dispatch: store.dispatch };\n\n\t\t\tif (typeof mapDispatchToProps === \"function\") {\n\t\t\t\tdispatchProps = mapDispatchToProps(store.dispatch, props);\n\t\t\t} \n\t\t\telse if (typeof mapDispatchToProps === \"object\" && mapDispatchToProps !== null) {\n\t\t\t\tdispatchProps = {};\n\t\t\t\tconst dispatch = store.dispatch;\n\t\t\t\tfor (const key in mapDispatchToProps) {\n\t\t\t\t\tconst actionCreator = mapDispatchToProps[key];\n\t\t\t\t\tdispatchProps[key] = (...args) => dispatch(actionCreator(...args));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet stateProps = {};\n\t\t\tif (mapStateToProps) {\n\t\t\t\tconst selector = (state) => mapStateToProps(state, props);\n\n\t\t\t\t// todo: is shallowEqual enough?\n\t\t\t\tstateProps = Lilact.useSelector(selector, Lilact.shallowEqual) || {};\n\t\t\t}\n\n\t\t\tconst mergedProps = { ...props, ...stateProps, ...dispatchProps };\n\n\t\t\treturn Lilact.createComponent( WrappedComponent, { ...mergedProps } );\n\t\t}\n\n\t\t// todo: memoize to avoid unnecessary re-renders if parent props are same?\n\t\t//return memo(ConnectedComponent);\n\n\t\treturn ConnectedComponent;\n\t};\n}\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9yZWR1eC5qc3giLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL3JlZHV4LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t\tnotice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t\tnotice, this list of conditions and the following disclaimer in the\n\t\tdocumentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\nconst [CORE,COMPONENT]=[Symbol.for('LILACT:CORE'),Symbol.for('LILACT:COMPONENT')];\n\nimport {createContext, useContext, useState, useCallback, useEffect} from \"./hooks.jsx\"\nimport {Children} from \"./misc.jsx\"\n\nconst RouterContext = createContext(null);\nconst RouteContext = createContext({ params: {} });\n\n// --- HashRouter (as before) ---\nconst createURL = (to) => (typeof to === \"string\" ? to : (to.pathname || \"\") + (to.search || \"\") + (to.hash || \"\"));\n\n/**\n * Hash-based router component that syncs navigation state with the URL hash (#...).\n *\n * @param props - Component props.\n * @param props.children - Route definitions and/or components to render under this router.\n * @param [props.basename=\"\"] - Optional base path prefix applied to all route paths.\n */\nexport function HashRouter({ children, basename = \"\" }) {\n\tconst readLocation = () => {\n\t\tconst raw = window.location.hash || \"#/\";\n\t\tconst full = raw.slice(1);\n\t\tconst withoutBase = full.replace(new RegExp(`^${basename}`), \"\") || \"/\";\n\t\tconst [pathAndSearch, hashPart] = withoutBase.split(\"#\");\n\t\tconst [path, search = \"\"] = pathAndSearch.split(\"?\");\n\t\treturn {\n\t\t\tpathname: path || \"/\",\n\t\t\tsearch: search ? \"?\" + search : \"\",\n\t\t\thash: hashPart ? \"#\" + hashPart : \"\",\n\t\t\tstate: history.state?.__state,\n\t\t};\n\t};\n\n\tconst [location, setLocation] = useState(readLocation);\n\tuseEffect(() => {\n\t\tconst onHash = () => setLocation(readLocation());\n\t\twindow.addEventListener(\"hashchange\", onHash);\n\t\treturn () => window.removeEventListener(\"hashchange\", onHash);\n\t}, [basename]);\n\n\tconst navigate = useCallback((to, { replace = false, state } = {}) => {\n\t\tconst url = createURL(to);\n\t\tconst href = \"#\" + (basename + url);\n\t\tif (replace) history.replaceState({ __state: state }, \"\", href);\n\t\telse history.pushState({ __state: state }, \"\", href);\n\t\tsetLocation(readLocation());\n\t}, [basename]);\n\n\treturn Lilact.createComponent( RouterContext.Provider, { \"value\": { location, navigate, basename } }, children );\n}\n\n/**\n * Hook that returns the current location object (path, search, hash, and navigation state).\n *\n * @returns The current location data for the active router context.\n */\nexport function useLocation() {\n\tconst ctx = useContext(RouterContext);\n\tif (!ctx) throw new Error(\"useLocation must be used inside a Router\");\n\treturn ctx.location;\n}\n\n/**\n * Hook that returns a function used to imperatively navigate to a new location.\n *\n * @returns A navigate function for programmatic route changes (e.g., navigate(to, options)).\n */\nexport function useNavigate() {\n\tconst ctx = useContext(RouterContext);\n\tif (!ctx) throw new Error(\"useNavigate must be used inside a Router\");\n\treturn ctx.navigate;\n}\nfunction useParams() {\n\tconst ctx = useContext(RouteContext);\n\treturn ctx.params || {};\n}\n\n/**\n * Generic Link component that renders an anchor (<a>) and forwards common navigation/link attributes.\n *\n * @param props - Component props.\n * @param props.to - Target location (route or URL) the link points to.\n * @param [props.replace=false] - If true, uses history replacement semantics instead of pushing a new entry.\n * @param [props.state] - Optional state to associate with the navigation action.\n * @param [props.onClick] - Click handler invoked when the link is activated.\n * @param [props.target] - Specifies where to open the linked document (e.g., \"_blank\").\n * @param [props.download] - Sets the download behavior for the link (download attribute).\n * @param [props.className] - CSS class name(s) for styling the underlying element.\n * @param [props.style] - Inline style object applied to the underlying element.\n * @param [props.children] - Content rendered inside the link (link label, icons, etc.).\n * @param [props.rest] - Additional props forwarded to the underlying <a>.\n */\nexport function Link({ to, replace = false, state, onClick, target, download, className, style, children, ...rest }) {\n\tconst navigate = useNavigate();\n\tconst href = \"#\" + createURL(to);\n\tfunction handleClick(e) {\n\t\tif (onClick) onClick(e);\n\t\tif (\n\t\t\te.defaultPrevented ||\n\t\t\te.button !== 0 ||\n\t\t\t(target && target !== \"_self\") ||\n\t\t\te.metaKey || e.altKey || e.ctrlKey || e.shiftKey\n\t\t) return;\n\t\te.preventDefault();\n\t\tnavigate(to, { replace, state });\n\t}\n\treturn (\n\t\tLilact.createComponent( \"a\", { ...rest, \"href\": href, \"onClick\": handleClick, \"target\": target, \"download\": download, \"className\": className, \"style\": style }, children )\n\t);\n}\n\nfunction normalizePath(p) {\n\tif (!p) return \"/\";\n\treturn p.replace(/\\/+$/, \"\") || \"/\";\n}\n\n\n/**\n * React navigation link component (like a typed NavLink) that forwards props and supports common link attributes.\n *\n * @param props - Component props.\n * @param props.to - Target location (route) to navigate to.\n * @param [props.replace=false] - If true, replaces the current history entry instead of pushing a new one.\n * @param [props.state] - Optional navigation state passed along with the route transition.\n * @param [props.onClick] - Click handler invoked when the link is activated.\n * @param [props.target] - Sets the link target attribute (e.g., \"_blank\").\n * @param [props.download] - Enables download behavior for the link (sets the download attribute).\n * @param [props.className] - CSS class name(s) applied to the underlying element.\n * @param [props.style] - Inline styles applied to the underlying element.\n * @param [props.children] - Content rendered inside the link.\n * @param [props.rest] - Additional props forwarded to the underlying element.\n */\nexport function NavLink({\n\tto,\n\tend = false,\n\tactiveClassName = \"active\",\n\tclassName,\n\tactiveStyle,\n\tstyle,\n\treplace = false,\n\tstate,\n\tchildren,\n\tonClick,\n\t...rest\n}) {\n\tconst navigate = useNavigate();\n\tconst location = useLocation();\n\tconst targetPath = typeof to === \"string\" ? to.split(\"?\")[0].split(\"#\")[0] : (to.pathname || \"/\");\n\tconst currentPath = location.pathname || \"/\";\n\tconst isActive = end ? normalizePath(currentPath) === normalizePath(targetPath) : normalizePath(currentPath).startsWith(normalizePath(targetPath));\n\tconst resolvedClassName = typeof className === \"function\" ? className({ isActive }) : className;\n\tconst finalClassName = [resolvedClassName, isActive ? activeClassName : null].filter(Boolean).join(\" \") || undefined;\n\tconst resolvedStyle = typeof style === \"function\" ? style({ isActive }) : style;\n\tconst mergedStyle = isActive ? { ...(resolvedStyle || {}), ...(activeStyle || {}) } : resolvedStyle;\n\tconst href = \"#\" + createURL(to);\n\n\tfunction handleClick(e) {\n\t\tif (onClick) onClick(e);\n\t\tif (e.defaultPrevented || e.button !== 0 || e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;\n\t\te.preventDefault();\n\t\tnavigate(to, { replace, state });\n\t}\n\n\treturn (\n\t\tLilact.createComponent( \"a\", { ...rest, \"href\": href, \"onClick\": handleClick, \"className\": finalClassName, \"style\": mergedStyle, \"aria-current\": isActive ? \"page\" : undefined }, typeof children === \"function\" ? children({ isActive }) : children )\n\t);\n}\n\n// --- Simple route matching utility ---\n// supports params like /users/:id and wildcard * at end (e.g., /files/*)\nfunction compilePath(pattern) {\n\tconst paramNames = [];\n\t// escape regex and replace :param and * \n\tlet regexSource = \"^\" + pattern.replace(/\\/+$/,\"\").replace(/([.+?^=!:${}()|[\\]\\/\\\\])/g, \"\\\\$1\")\n\t\t.replace(/\\\\\\:([A-Za-z0-9_]+)/g, (_, name) => {\n\t\t\tparamNames.push(name);\n\t\t\treturn \"([^/]+)\";\n\t\t})\n\t\t.replace(/\\\\\\*$/g, \"(.+?)?\"); // trailing * -> capture rest optional\n\tregexSource += \"/?$\";\n\tconst regex = new RegExp(regexSource);\n\treturn { regex, paramNames };\n}\n\nfunction matchPath(pattern, pathname) {\n\tif (pattern == null) return { matched: true, params: {} }; // <Route index> like\n\tconst { regex, paramNames } = compilePath(pattern);\n\tconst m = regex.exec(pathname);\n\tif (!m) return { matched: false };\n\tconst params = {};\n\tparamNames.forEach((n, i) => (params[n] = decodeURIComponent(m[i + 1] || \"\")));\n\t// if wildcard captured as last group without a name, include as splat\n\tif (m.length > paramNames.length + 1) {\n\t\tparams[\"*\"] = m[paramNames.length + 1] ? decodeURIComponent(m[paramNames.length + 1]) : undefined;\n\t}\n\treturn { matched: true, params };\n}\n\n// --- Route and Routes components ---\n/**\n * Route configuration component that maps a URL path to a rendered element.\n *\n * @param props - Component props.\n * @param props.path - The path pattern this route should match (e.g., \"/users/:id\").\n * @param [props.element=null] - The React element to render when the route matches.\n * @param [props.children] - Optional nested route definitions or additional content under this route.\n */\nexport function Route({ path, element = null, children }) {\n\t// Route is used as a descriptor only inside <Routes>\n\treturn null;\n}\n/**\n * Route container component that groups multiple <Route> definitions.\n *\n * @param props - Component props.\n * @param props.children - One or more route elements to register under the router.\n */\nexport function Routes({ children }) {\n\tconst location = useLocation();\n\tconst pathname = location.pathname || \"/\";\n\t// flatten children (React elements)\n\tconst routes = Children.toArray(children);\n\n\tfor (let i = 0; i < routes.length; i++) {\n\t\tconst route = routes[i];\n\t\t// accept <Route path=\"...\" element={<.../>} />\n\t\tconst path = route.props.path === undefined ? null : route.props.path;\n\t\tconst element = route.props.element ?? null;\n\t\tconst childRoutes = route.props.children;\n\n\t\tconst { matched, params } = matchPath(path, pathname);\n\t\tif (matched) {\n\t\t\t// if element is null but has children (nested routes), attempt to render nested Routes\n\t\t\tif (element) {\n\t\t\t\treturn Lilact.createComponent( RouteContext.Provider, { \"value\": { params } }, element );\n\t\t\t} else if (childRoutes) {\n\t\t\t\t// render nested Routes within same params\n\t\t\t\treturn Lilact.createComponent( RouteContext.Provider, { \"value\": { params } }, Lilact.createComponent( Routes, { }, childRoutes ) );\n\t\t\t} else {\n\t\t\t\treturn Lilact.createComponent( RouteContext.Provider, { \"value\": { params } }, Lilact.createComponent( \"div\", { } ) );\n\t\t\t}\n\t\t}\n\t}\n\n\t// no match -> null\n\treturn null;\n}\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9yb3V0ZXIuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9yb3V0ZXIuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIn0=","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t\tnotice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t\tnotice, this list of conditions and the following disclaimer in the\n\t\tdocumentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\nimport {isThenable} from \"./misc.jsx\"\nimport {setTimeout, clearTimeout} from \"./timers.jsx\"\nimport {Component} from \"./components.jsx\"\n\n/*\ntype SpinnerProps = {\n\tsize?: number; // px\n\tclassName?: string;\n\tstyle?: React.CSSProperties;\n\tcolor?: string; // stroke/fill color\n\tstrokeWidth?: number; // px\n\t\"aria-label\"?: string;\n};\n*/\n\n/**\n * A CSS-only loading spinner component.\n * \n * @param props Component props\n * @param props.size Spinner size in pixels (spinner element width/height). Default: `48`.\n * @param props.className Optional class applied to the outer container.\n * @param props.style Optional inline styles applied to the outer container.\n * @param props.color Color used for the animated segment (defaults to `currentColor`).\n * @param props.strokeWidth Ring/border thickness in pixels. Default: `3`.\n * @param props[\"aria-label\"] Screen-reader label. Default: `\"Loading\"`.\n * @returns A centered spinner filling its parent container.\n */\n\nexport function Spinner({\n size = 48,\n className,\n style,\n color = \"currentColor\",\n strokeWidth = 3,\n \"aria-label\": ariaLabel = \"Loading\",\n}) {\n const s = Math.max(1, size)+\"px\";\n\n return (\n Lilact.createComponent( \"div\", { \"className\": className, \"style\": {\n width: \"100%\",\n height: \"100%\",\n display: \"grid\",\n placeItems: \"center\",\n ...style,\n }, \"aria-label\": ariaLabel, \"role\": \"status\" }, Lilact.createComponent( \"div\", { \"style\": {\n width: s,\n height: s,\n borderRadius: \"50%\",\n border: `${strokeWidth}px solid rgba(0,0,0,0.15)`,\n borderTopColor: color,\n animation: \"ddSpinnerSpin 0.9s linear infinite\",\n boxSizing: \"border-box\",\n } } ), Lilact.createComponent( \"style\", { }, `\n @keyframes ddSpinnerSpin { to { transform: rotate(360deg); } }\n ` ) )\n );\n}\n\n\n\n/**\n * ErrorBoundary component that catches errors in its child component tree and renders a fallback UI.\n *\n * @component\n *\n * @param {Object} props\n * @param {any} props.children - The component subtree to render and monitor for runtime errors.\n * @param {any} props.Fallback - UI to render when an error is caught. Receives two props:\n * - `error` (the exception)\n * - `reset` (function to clear the error)\n * @param {Function} props.onError - Callback invoked on error with arguments `(error, info)`.\n */\n\nexport class ErrorBoundary extends Component {\n\t\n\tstate = { hasError: false, error: null };\n\n\tstatic getDerivedStateFromError(error) {\n\t\treturn { hasError: true, error };\n\t}\n\n\tcomponentDidCatch(error, info) {\n\t\tconst { onError } = this.props;\n\t\ttry { if (onError) onError(error, info); } catch (e) { console.error(\"onError threw\", e); }\n\t}\n\n\treset = () => this.setState({ hasError: false, error: null });\n\n\trender() {\n\t\tconst { Fallback, children } = this.props;\n\t\tif (this.state.hasError) return Lilact.createComponent( Fallback, { \"error\": this.state.error, \"reset\": this.reset } );\n\t\treturn children;\n\t}\n}\n\n\n/**\n * Suspense - boundary for asynchronous loading.\n * Shows a fallback UI while descendant thrown promises are pending, and renders real content once resolved.\n *\n * @component Suspense\n *\n * @param {Object} props\n * @param {any} props.fallback - Element shown while descendants are loading.\n * @param {any} props.children - Suspended children.\n * @param {any} props.minDelay - A delay before showing the fallback to prevent flicker.\n * @param {any} props.minShowTime - A minimum time of fallback visibility to prevent flickers.\n */\n\nexport class Suspense extends Component \n{\n\n\tstatic defaultProps = { minDelay: 200, minShowTime: 300 };\n\n\tconstructor(props) {\n\n\t\tsuper(props);\n\t\tthis.state = { showingFallback: false };\n\n\t\tthis._pending = new Set();\n\n\t\tthis._delayTimer = null;\n\t\tthis._minShowTimer = null;\n\t\tthis._fallbackShownAt = 0;\n\t}\n\n\tstatic getDerivedStateFromError(error) {\n\t\tif (Lilact.isThenable(error)) {\n\t\t\t// signal to call componentDidCatch where we handle the thenable\n\t\t\treturn null;\n\t\t}\n\t\t// non-thenable errors should bubble to nearest Error Boundary\n\t\tthrow error;\n\t}\n\n\tcomponentDidCatch(error) {\n\t\tif (!Lilact.isThenable(error)) return;\n\n\t\tconst promise = error;\n\n\t\tif (this._pending.has(promise)) return;\n\n\t\t// Add to set of pending promises\n\t\tthis._pending.add(promise);\n\n\t\t// Start delay timer only when this is the first pending promise\n\t\tif (this._pending.size === 1) {\n\t\t\tconst delay = Math.max(0, this.props.minDelay);\n\t\t\t// Ensure no leftover timers\n\t\t\tif (this._delayTimer) {\n\t\t\t\tLilact.clearTimeout(this._delayTimer);\n\t\t\t\tthis._delayTimer = null;\n\t\t\t}\n\t\t\tthis._delayTimer = Lilact.setTimeout(() => {\n\t\t\t\tthis._delayTimer = null;\n\t\t\t\tthis._fallbackShownAt = Date.now();\n\t\t\t\tthis.setState({ showingFallback: true });\n\t\t\t}, delay);\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis._clearTimers();\n\t\tthis._pending.clear();\n\t}\n\n\t_clearTimers() {\n\t\tif (this._delayTimer) {\n\t\t\tLilact.clearTimeout(this._delayTimer);\n\t\t\tthis._delayTimer = null;\n\t\t}\n\t\tif (this._minShowTimer) {\n\t\t\tLilact.clearTimeout(this._minShowTimer);\n\t\t\tthis._minShowTimer = null;\n\t\t}\n\t}\n\n\t_attachPromise(promise) {\n\t\tif (this._pending.has(promise)) return;\n\t\tthis._pending.add(promise);\n\n\t\tif (this._pending.size === 1) {\n\t\t\tconst delay = Math.max(0, this.props.minDelay);\n\t\t\tif (this._delayTimer) {\n\t\t\t\tLilact.clearTimeout(this._delayTimer);\n\t\t\t\tthis._delayTimer = null;\n\t\t\t}\n\t\t\tthis._delayTimer = Lilact.setTimeout(() => {\n\t\t\t\tthis._delayTimer = null;\n\t\t\t\tthis._fallbackShownAt = Date.now();\n\t\t\t\tthis.setState({ showingFallback: true });\n\t\t\t}, delay);\n\t\t}\n\n\t\t// use a wrapper so we can remove exactly this promise identity when settled\n\t\tconst onSettled = () => {\n\t\t\tif (this._pending.has(promise)) {\n\t\t\t\tthis._pending.delete(promise);\n\t\t\t}\n\t\t\t// If none left, hide fallback respecting minShowTime\n\t\t\tif (this._pending.size === 0) {\n\t\t\t\t// cancel delay if fallback hasn't shown yet\n\t\t\t\tif (this._delayTimer) {\n\t\t\t\t\tLilact.clearTimeout(this._delayTimer);\n\t\t\t\t\tthis._delayTimer = null;\n\t\t\t\t\t// fallback never shown; just ensure state is not showing\n\t\t\t\t\tthis.setState({ showingFallback: false });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If fallback is showing, ensure minShowTime\n\t\t\t\tconst elapsed = Date.now() - (this._fallbackShownAt || 0);\n\t\t\t\tconst remaining = Math.max(0, this.props.minShowTime - elapsed);\n\n\t\t\t\tif (remaining === 0) {\n\t\t\t\t\tthis.setState({ showingFallback: false });\n\t\t\t\t} else {\n\t\t\t\t\tif (this._minShowTimer) {\n\t\t\t\t\t\tLilact.clearTimeout(this._minShowTimer);\n\t\t\t\t\t\tthis._minShowTimer = null;\n\t\t\t\t\t}\n\t\t\t\t\tthis._minShowTimer = Lilact.setTimeout(() => {\n\t\t\t\t\t\tthis._minShowTimer = null;\n\t\t\t\t\t\tthis.setState({ showingFallback: false });\n\t\t\t\t\t}, remaining);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// attach handlers\n\t\tpromise.then(onSettled, onSettled);\n\t}\n\n\tcomponentDidCatch(error, info) {\n\t\tif (!Lilact.isThenable(error)) return;\n\t\tthis._attachPromise(error);\n\t}\n\n\trender() {\n\t\tif (this.state.showingFallback) {\n\t\t\treturn Lilact.createComponent( null, { }, this.props.fallback );\n\t\t}\n\t\treturn Lilact.createComponent( null, { }, this.props.children );\n\t}\n}\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9hY2Nlc3Nvcmllcy5qc3giLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL2FjY2Vzc29yaWVzLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\n\n\nimport * as redux from \"redux\";\nimport * as emotion from \"@emotion/css\";\n\nimport PropTypes from 'prop-types';\n\nimport * as components from './components.jsx';\nimport * as hooks from './hooks.jsx';\nimport * as run from './run.jsx';\nimport * as transition from './transition.jsx';\nimport EventWrapper from './events.jsx';\nimport * as redux_wrapper from './redux.jsx';\nimport * as timers from './timers.jsx';\nimport * as misc from './misc.jsx';\n\n\nimport * as router from './router.jsx';\nimport * as accessories from './accessories.jsx';\n\nimport {transpileJSX, transpilerConfig} from \"./jsx\";\n\n//import '../node_modules/@dragdroptouch/drag-drop-touch/dist/drag-drop-touch.esm.min.js';\n\n\n/**\n * @namespace Lilact\n * \n * @property PropTypes - Handle to the PropTypes runtime type-checking library (https://github.com/facebook/prop-types).\n * @property Redux - Handle to Redux’s public API (https://github.com/reduxjs/redux).\n * @property emotion - Handle to Emotion’s CSS-in-JS package for styling (https://github.com/emotion-js/emotion).\n */\nexport const Lilact = \n{\n\n\tVERSION: \"beta.0\",\n\t\n\t// Configuration\n\n\tdefaultTransitionTimeout: 300,\n\tdefaultIsEqual: Object.is, // note: `Lilact.shallowEqual` and `Lilact.deepEqual` are also available, \n\t\t\t\t\t\t\t\t // user can set it in your initializer code, and can be changed later too.\n\t\n\t// Units \n\n\t...components,\n\t...hooks,\n\t...run,\n\t...transition,\n\t...redux_wrapper,\n\t...timers,\n\t...misc,\n\t...EventWrapper,\n\t//...db,\n\n\t...router,\n\t...accessories,\n\n\ttranspileJSX,\n\ttranspilerConfig,\n\n\t// Dependencies ()\n\n\tPropTypes,\n\tredux,\n\temotion,\n\n}\n\n\n// or, if you prefer DOMContentLoaded:\ndocument.addEventListener('DOMContentLoaded', () => {\n Lilact.runScripts();\n});\n\nfunction yourFunctionHere() {\n // ...\n}\n\n\tconsole.log(`Lilact (Version: ${Lilact.VERSION}) - Debug Mode`);\n\tconsole.log(`Copyright(C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>`);\n\nexport default Lilact;\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9saWxhY3QuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9saWxhY3QuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIn0=","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\nconst [CORE,COMPONENT]=[Symbol.for('LILACT:CORE'),Symbol.for('LILACT:COMPONENT')];\n\nimport Lilact from './lilact.jsx';\n\n/**\n * Runs a jsx script. All scripts can access Lilact namespace as a global object. \n * \n * Notice that `run` uses eval internally. There is no standard way of getting the error location when\n * running it with eval. Lilact has its own experimental workarounds for this, but generally speaking it\n * works better when an script is loaded from a file (using <script type='text/jsx' src=''.../> and is not \n * inline, because that way the generated sourcemap will be used by the browser and the exceptions will be\n * located automatically. When an inline script raises exception, the original exception does not report\n * which eval has caused the error, so Lilact should guess it from some labels, and for the sake of \n * efficiency, it is block based and not exact.\n *\n * @param jsx - The code to run.\n * @param path - The optional path to be used in reporting errors.\n * @param is_inline - To treat the code as inline. The main difference at the moment is that inline code doesn't include sourcemap.\n * \n * @returns An array representation of the children.\n */\nexport function run(jsx, path=`<string input ${++Lilact.eval_num}>`, is_inline=true)\n{\n\tif(Lilact.checkTraceErrors) Lilact.checkTraceErrors;\n\n\tconst mappings = [];\n\n\tlet processed;\n\n\ttry {\n\t\tprocessed = Lilact.transpileJSX( jsx,\n\t\t{\n\t\t\tpath,\n\t\t\tmappings,\n\t\t\tfactory: \"Lilact.createComponent\",\n\t\t\tappend_sourcemap: !is_inline,\n\t\t\twrap_all: false\n\t\t} );\n\t}\n\tcatch(e) {\n\t\te.lilact_trace = path;\n\t\tthrow e;\n\t}\n\n\t// the separation of module property is to create the required object even on error\n\n\tconst module = {};\n\n\tLilact.transpilerConfig.required[path] = { \t\n\t\tmappings,\n\t\tprocessed,\n\t\tmodule,\n\t\tis_inline,\n\t\tpath,\n\t\tcode: jsx\n\t};\n\n\t\n\tLilact.scanFunctionLabels(processed, path);\n\n\tLilact.transpilerConfig.func_labels[path] = {\n\t\tpath,\n\t\trow: 0,\n\t\tcol: 0,\n\t\tlabel: \"<EXEC>\",\n\t\trequired: Lilact.transpilerConfig.required[path]\n\t}\n\n\ttry {\n\t\tglobalThis.Lilact = Lilact;\n\n\t\tconst res = eval ( processed );\n\t\tif(module.exports) return module.exports;\n\t\treturn res;\n\t}\n\tcatch(e) {\n\t\te.lilact_trace = path;\n\t\tthrow e;\n\t}\n}\n\n// export async function importAsync(path)\n// {\n// \tconst res = await fetch(path);\n// \tconst text = await res.text();\n\n// \treturn Lilact.run(text, path, false);\n// }\n\n/**\n * Loads a jsx script from a path. All scripts can access Lilact namespace as a global object. \n * \n * Lilact require loads synchronously, as it is expected to be loaded on the next instruction.\n * It is better to load existing scripts using <script type=\"text/jsx\" src+\"...\"/> if possible.\n * \n * Notice that run uses eval internally. There is no standard way of getting the error location when\n * running it with eval. Lilact has its own experimental workarounds for this, but generally speaking it\n * works better when an script is loaded from a file (using <script type='text/jsx' src=''.../> and is not \n * inline, because that way the generated sourcemap will be used by the browser and the exceptions will be\n * located automatically. When an inline script raises exception, the original exception does not report\n * which eval has caused the error, so Lilact should guess it from some labels, and for the sake of \n * efficiency, it is block based and not exact.\n *\n * @param path - The path to the required file.\n * @param force_update - To treat the code as inline. The main difference at the moment is that inline code doesn't include sourcemap.\n * \n * @returns An array representation of the children.\n */\nexport function require(path, force_update)\n{\n\tif(Lilact.transpilerConfig.required[path]!==undefined && !force_update) return Lilact.transpilerConfig.required[path].module;\n\n\tif(path[0]==='#') {\n\n\t\tconst el = document.querySelector(path);\n\n\t\tif(el) {\n\t\t\treturn Lilact.run(el.innerText, path);\n\t\t}\n\n\t}\n\telse {\n\n\t\t// note: this makes a sync request. this is not advised,\n\t\t// but import should be sync. for an async solution use importAsync.\n\n\t\tconst request = new XMLHttpRequest();\n\t\trequest.open(\"GET\", path, false);\n\t\trequest.send(null);\n\n\t\tif (request.status === 200) {\n\t\t\treturn Lilact.run(request.responseText, path, false);\n\t\t}\n\t}\n\n\tthrow `required resource not found (${path})`;\n}\n\n\n/**\n * Debug tool to get the Lilact traced location of an error. It can also produce some block based stack trace \n * if `Lilact.transpilerConfig.enableLabelStack` is set to `true` before loading the script. This is `false`\n * by default for efficiency.\n *\n * @returns A new object that includes `path`, `row`, `col`, `msg`, `name`, and optional `stack`. \n * The exception itself is stored as `err`.\n */\nexport function traceError(err)\n{\n\tconst loc = Lilact.getErrorLocation(err);\n\n\tconst obj = {\n\t\tpath: err.fileName,\n\t\tlabel: null,\n\t\t\n\t\trow: loc[0],\n\t\tcol: loc[1],\n\n\t\tmsg: err.message,\n\t\tname: err.name,\n\n\t\tstack: null,\n\t\terr: err\n\t};\t\t\n\n\n\tif(err.lilact_trace!==undefined) {\n\n\t\t// to be able to trace, we assume that all of the scripts are running inside lilact.\n\t\t// if not, the error is returned unchanged and stack and label would remain null.\n\n\t\tlet mps;\n\t\tlet blk;\n\t\tif(typeof(err.lilact_trace)==='string') {\n\t\t\tblk = Lilact.func_labels[err.lilact_trace];\n\t\t\tmps = blk.required.mappings;\n\t\t}\n\t\telse if(typeof(err.lilact_trace)==='object') {\n\t\t\tblk = Lilact.func_labels[err.lilact_trace[0]];\n\t\t\tmps = blk.mappings;\n\t\t}\n\n\t\tobj.path = blk.path;\n\t\tobj.label = blk.label;\n\n\t\t[obj.row, obj.col] = Lilact.mapLocation(mps, obj.row,obj.col);\n\n\t\t//const rm = Lilact.func_labels[func_num].required;\n\n\t\t// Lilact.onError( err.message,\n\t\t// \t\t\t\trm.path,\n\t\t// \t\t\t\tLilact.func_labels[func_num].label,\n\t\t// \t\t\t\t...Lilact.mapLocation(...loc,mps),\n\t\t// \t\t\t\tLilact.call_stack.map(\n\t\t// \t\t\t\t\t(x)=>({ path: Lilact.func_labels[x].path,\n\t\t// \t\t\t\t\t\t\tlabel: Lilact.func_labels[x].label,\n\t\t// \t\t\t\t\t\t\trow: Lilact.func_labels[x].row\n\t\t// \t\t\t\t\t\t})\n\t\t// \t\t\t\t),\terr );\n\n\t\t\n\t}\n\n\treturn obj;\n\t\n}\n\nfunction scanScriptTagsWithType() {\n const scripts = Array.from(\n document.querySelectorAll('script[type=\"text/jsx\"]')\n );\n\n return scripts.map((el) => ({\n src: el.getAttribute(\"src\") ?? null,\n content: el.textContent ?? \"\"\n }));\n}\n\n// usage (in browser):\n// const result = scanScriptTagsWithType();\n// console.log(result);\n\n\n/**\n * Scans the whole documents and runs all the script elements with type `text/jsx`.\n * It is automatically attached to document.onload when Lilact is loaded.\n * \n * If element src is set, it will be loaded via `Lilact.require`.\n * If element has inner content, it will be executed via `Lilact.run`.\n * \n * If both are present, first the src is loaded and then the inner content is executed.\n *\n * Note that it won't detect such elements that are added after document.onload.\n * @returns {void}\n */\n\nexport function runScripts()\n{\n\tconst scripts = scanScriptTagsWithType();\n\n\tfor(const s of scripts) {\n\t\tif(s.src) Lilact.require(s.src);\n\t\tif(s.content) Lilact.run(s.content);\n\t}\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9ydW4uanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9ydW4uanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIn0=","/*\n\n\tLilact\n\tCopyright (C) 2024-2026 Arash Kazemi <contact.arash.kazemi@gmail.com>\n\tAll rights reserved.\n\n\tBSD-2-Clause\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\n\t* Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t* Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\tAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\tIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\tARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\tDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n*/\n\nconst TRANSPILER_OUTPUT = Symbol.for(\"LILACT:TRANSPILER_OUTPUT\");\n\n\nexport function defineSymbols(ns, defs) {\n\n\tif(defs===undefined) {\n\t\tdefs=ns;\n\t\tns='';\n\t}\n\telse ns+=':';\n\n\tconst out = [];\n\tconst lbls = [];\n\tif(defs instanceof Array) {\n\t\tif(ns!=='') {\n\t\t\tif(typeof(ns)!=='string') ns='';\n\t\t\tfor(let d of defs) {\n\t\t\t\tlbls.push(d);\n\t\t\t\tout.push(`Symbol.for('${ns}${d}')`);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor(const d of defs) {\n\t\t\t\tlbls.push(d);\n\t\t\t\tout.push(`Symbol()`);\n\t\t\t}\n\t\t}\n\t\treturn `const [${lbls.join(',')}]=[${out.join(',')}];`;\n\t}\n}\n\nexport const quote = (x)=>`\"${String(x).replace(/([\"\\n])/g, '\\\\$1')}\"`;\n\n\n// note: this directive is used for files that can be used separatly (i.e. timers.jsx)\n// \t\t or in case you want to check the preprocessors output. \n\nexport function outputJS(filepath) {\n\tglobalThis[TRANSPILER_OUTPUT] = filepath;\n}\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9qc3guYWRkb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9qc3guYWRkb25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIn0=","// Fork of https://github.com/Rich-Harris/vlq\n// Adapted from murzwin.com/base64vlq.html by Alexander Pavlov.\n// License: MIT\n\n/** @type {Record<string, number>} */\nlet char_to_integer = {};\n\n/** @type {Record<number, string>} */\nlet integer_to_char = {};\n\n'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t.split('')\n\t.forEach(function (char, i) {\n\t\tchar_to_integer[char] = i;\n\t\tinteger_to_char[i] = char;\n\t});\n\n/** @param {string} string */\nexport function decode(string) {\n\t/** @type {number[]} */\n\tlet result = [];\n\n\tlet shift = 0;\n\tlet value = 0;\n\n\tfor (let i = 0; i < string.length; i += 1) {\n\t\tlet integer = char_to_integer[string[i]];\n\n\t\tif (integer === undefined) {\n\t\t\tthrow new Error('Invalid character (' + string[i] + ')');\n\t\t}\n\n\t\tconst has_continuation_bit = integer & 32;\n\n\t\tinteger &= 31;\n\t\tvalue += integer << shift;\n\n\t\tif (has_continuation_bit) {\n\t\t\tshift += 5;\n\t\t} else {\n\t\t\tconst should_negate = value & 1;\n\t\t\tvalue >>>= 1;\n\n\t\t\tif (should_negate) {\n\t\t\t\tresult.push(value === 0 ? -0x80000000 : -value);\n\t\t\t} else {\n\t\t\t\tresult.push(value);\n\t\t\t}\n\n\t\t\t// reset\n\t\t\tvalue = shift = 0;\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/** @param {number | number[]} value */\nexport function encode(...value) {\n\tif (typeof value === 'number') {\n\t\treturn encode_integer(value);\n\t}\n\n\tlet result = '';\n\tfor (let i = 0; i < value.length; i += 1) {\n\t\tresult += encode_integer(value[i]);\n\t}\n\n\treturn result;\n}\n\n/** @param {number} num */\nfunction encode_integer(num) {\n\tlet result = '';\n\n\tif (num < 0) {\n\t\tnum = (-num << 1) | 1;\n\t} else {\n\t\tnum <<= 1;\n\t}\n\n\tdo {\n\t\tlet clamped = num & 31;\n\t\tnum >>>= 5;\n\n\t\tif (num > 0) {\n\t\t\tclamped |= 32;\n\t\t}\n\n\t\tresult += integer_to_char[clamped];\n\t} while (num > 0);\n\n\treturn result;\n}\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy92bHEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL3ZscS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\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\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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};","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(491);\n",""],"names":[],"sourceRoot":""}
|