lilact 0.9.0 → 0.10.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.
Files changed (74) hide show
  1. package/bin/bundle.cjs +1 -1
  2. package/dist/lilact.development.js +345 -194
  3. package/dist/lilact.development.js.map +1 -1
  4. package/dist/lilact.development.min.js +1 -1
  5. package/dist/lilact.development.min.js.map +1 -1
  6. package/dist/lilact.production.min.js +1 -1
  7. package/dist/lilact.production.min.js.map +1 -1
  8. package/docs/assets/hierarchy.js +1 -1
  9. package/docs/assets/navigation.js +1 -1
  10. package/docs/assets/search.js +1 -1
  11. package/docs/classes/accessories.ErrorBoundary.html +7 -7
  12. package/docs/classes/accessories.Suspense.html +4 -5
  13. package/docs/classes/components.Component.html +2 -2
  14. package/docs/classes/components.HTMLComponent.html +1 -1
  15. package/docs/classes/components.RootComponent.html +1 -1
  16. package/docs/functions/errors.globalErrorHandler.html +3 -2
  17. package/docs/functions/errors.traceError.html +4 -3
  18. package/docs/functions/hooks.createContext.html +3 -2
  19. package/docs/functions/hooks.useActionState.html +3 -2
  20. package/docs/functions/hooks.useContext.html +3 -2
  21. package/docs/functions/hooks.useImperativeHandle.html +1 -1
  22. package/docs/functions/hooks.useState.html +3 -2
  23. package/docs/functions/misc.classNames.html +2 -1
  24. package/docs/functions/misc.deepEqual.html +4 -2
  25. package/docs/functions/misc.findDOMNode.html +3 -2
  26. package/docs/functions/misc.forwardRef.html +4 -0
  27. package/docs/functions/misc.getComponentByPointer.html +1 -1
  28. package/docs/functions/misc.isAsync.html +4 -3
  29. package/docs/functions/misc.isClass.html +4 -3
  30. package/docs/functions/misc.isEmpty.html +4 -3
  31. package/docs/functions/misc.isError.html +4 -3
  32. package/docs/functions/misc.isThenable.html +4 -3
  33. package/docs/functions/misc.isValidElement.html +3 -2
  34. package/docs/functions/misc.shallowEqual.html +4 -2
  35. package/docs/functions/misc.toBool.html +4 -3
  36. package/docs/functions/router.NavLink.html +4 -2
  37. package/docs/functions/router.Route.html +1 -1
  38. package/docs/functions/router.Routes.html +1 -1
  39. package/docs/functions/run.lazy.html +1 -1
  40. package/docs/functions/run.require.html +2 -2
  41. package/docs/functions/timers.clearInterval.html +3 -2
  42. package/docs/functions/timers.clearTimeout.html +3 -2
  43. package/docs/functions/timers.setInterval.html +3 -2
  44. package/docs/functions/timers.setTimeout.html +4 -2
  45. package/docs/functions/timers.timeoutPromise.html +2 -2
  46. package/docs/hierarchy.html +1 -1
  47. package/docs/modules/hooks.html +1 -1
  48. package/docs/modules/misc.html +1 -1
  49. package/docs/modules.html +1 -1
  50. package/docs/static/demos/reducer.jsx +29 -23
  51. package/docs/static/lilact.development.js +345 -194
  52. package/docs/static/lilact.development.min.js +1 -1
  53. package/docs/static/lilact.production.min.js +1 -1
  54. package/package.json +1 -1
  55. package/root/demos/reducer.jsx +29 -23
  56. package/root/lilact.development.js +345 -194
  57. package/root/lilact.development.min.js +1 -1
  58. package/root/lilact.production.min.js +1 -1
  59. package/src/accessories.jsx +0 -4
  60. package/src/components.jsx +1 -1
  61. package/src/errors.jsx +36 -32
  62. package/src/events.jsx +194 -66
  63. package/src/hooks.jsx +14 -29
  64. package/src/jsx.js +8 -5
  65. package/src/lilact.jsx +21 -2
  66. package/src/misc.jsx +45 -31
  67. package/src/pane.jsx +2 -2
  68. package/src/router.jsx +3 -1
  69. package/src/run.jsx +5 -5
  70. package/src/timers.jsx +12 -12
  71. package/typedoc.json +1 -1
  72. package/docs/functions/hooks.forwardRef.html +0 -4
  73. package/docs/functions/jsx.transpileJSX.html +0 -6
  74. package/docs/modules/jsx.html +0 -1
@@ -114,8 +114,8 @@ __webpack_require__.r(__webpack_exports__);
114
114
  // usage outside Lilact. Also make sure to check the default configuration.
115
115
 
116
116
  // There are some situations that are solved with tricks, as some aspects of
117
- // javascripts import a complete parser and I didn't want to get into that!
118
- // Works almosr perfectly so far (all observed bugs except 1 are fixed), works
117
+ // javascript require a complete parser and I didn't want to get into that!
118
+ // Works almost perfectly so far (all observed bugs are fixed), works
119
119
  // even on nasty things like the compressed version of tensorflow.js! Feel free
120
120
  // to report any bugs, and please include a testable example. Thanks! :)
121
121
 
@@ -1040,18 +1040,21 @@ function generateSourceMap(json, path, jsx_eols, out_eols, mappings=[])
1040
1040
  * @returns The transpiled javascript code.
1041
1041
  */
1042
1042
 
1043
+ /** @ignore */
1043
1044
  function transpileJSX( jsx, {
1044
1045
  factory = "createComponent",
1045
1046
  fragment = "Fragment",
1046
1047
  path = "anonymous",
1047
1048
  appendSourcemap = true,
1049
+ injectTraceLabels = false,
1050
+ discardComments = false,
1051
+
1052
+ // lilact internal
1048
1053
  blocks_info = {
1049
1054
  labels: {},
1050
1055
  counter: 0
1051
1056
  },
1052
- mappings = [],
1053
- injectTraceLabels = false,
1054
- discardComments = false
1057
+ mappings = []
1055
1058
  } = {} )
1056
1059
  {
1057
1060
 
@@ -1269,7 +1272,7 @@ function transpileJSX( jsx, {
1269
1272
 
1270
1273
 
1271
1274
 
1272
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9qc3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL2pzeC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4QkM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTs7Q0FFQTtDQUNBOztDQUVBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7O0NBRUE7Ozs7Q0FJQTtpQ0FDZ0M7Ozs7O0VBSy9CO0VBQ0E7OEJBQzRCOzs7O3FDQUlPOzs7Ozs7O21CQU9sQjtDQUNsQjthQUNZO0lBQ1QsSUFBSTs7Ozs7O29CQU1ZO0NBQ25CO0VBQ0M7RUFDQTtFQUNBOztFQUVBOztFQUVBOzs7O09BSUssUUFBUTtLQUNWLGdCQUFpQjtLQUNqQixrQkFBa0I7Ozs7S0FJbEIsYUFBYzs7OztZQUlQOzs7OztPQUtMLG9CQUFvQjs7U0FFbEIsS0FBSzs7OztJQUlWO0lBQ0E7SUFDQTtRQUNJO1NBQ0MscUJBQXNCOztPQUV4QixtQ0FBbUM7OztTQUdqQyxJQUFJOzs7Ozs7OztzQkFRUztDQUNyQjtZQUNXOzs7OztJQUtSLHlDQUF5QztvQkFDekI7Ozs7Ozs7T0FPYixvQkFBb0I7OztTQUdsQixLQUFLOzs7TUFHUixzQ0FBc0M7O09BRXJDLG1DQUFtQzs7Ozs7O01BTXBDLGdCQUFnQjs7T0FFZixtQ0FBbUM7Ozs7Ozs7Ozs7WUFVOUI7Ozs7d0JBSVk7Q0FDdkI7O09BRU07R0FDSDs7RUFFRjs7Ozs7O0lBTUUsU0FBUzthQUNBOzs7Ozs7MEJBTWEsbUJBQW9CLEFBQUQ7Ozs7S0FJeEMsbUNBQW1DOzs7O09BSWpDOzs7UUFHQyxVQUFXOzs7S0FHZCxXQUFXO2NBQ0Y7Ozs7Ozt1QkFNUyxxQkFBc0IsQUFBRDs7O01BR3RDLG1DQUFtQzs7Ozs7WUFLN0I7Ozs7Q0FJWDtDQUNBOzsyQkFF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
1275
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9qc3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL2pzeC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4QkM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTs7Q0FFQTtDQUNBOztDQUVBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7O0NBRUE7Ozs7Q0FJQTtpQ0FDZ0M7Ozs7O0VBSy9CO0VBQ0E7OEJBQzRCOzs7O3FDQUlPOzs7Ozs7O21CQU9sQjtDQUNsQjthQUNZO0lBQ1QsSUFBSTs7Ozs7O29CQU1ZO0NBQ25CO0VBQ0M7RUFDQTtFQUNBOztFQUVBOztFQUVBOzs7O09BSUssUUFBUTtLQUNWLGdCQUFpQjtLQUNqQixrQkFBa0I7Ozs7S0FJbEIsYUFBYzs7OztZQUlQOzs7OztPQUtMLG9CQUFvQjs7U0FFbEIsS0FBSzs7OztJQUlWO0lBQ0E7SUFDQTtRQUNJO1NBQ0MscUJBQXNCOztPQUV4QixtQ0FBbUM7OztTQUdqQyxJQUFJOzs7Ozs7OztzQkFRUztDQUNyQjtZQUNXOzs7OztJQUtSLHlDQUF5QztvQkFDekI7Ozs7Ozs7T0FPYixvQkFBb0I7OztTQUdsQixLQUFLOzs7TUFHUixzQ0FBc0M7O09BRXJDLG1DQUFtQzs7Ozs7O01BTXBDLGdCQUFnQjs7T0FFZixtQ0FBbUM7Ozs7Ozs7Ozs7WUFVOUI7Ozs7d0JBSVk7Q0FDdkI7O09BRU07R0FDSDs7RUFFRjs7Ozs7O0lBTUUsU0FBUzthQUNBOzs7Ozs7MEJBTWEsbUJBQW9CLEFBQUQ7Ozs7S0FJeEMsbUNBQW1DOzs7O09BSWpDOzs7UUFHQyxVQUFXOzs7S0FHZCxXQUFXO2NBQ0Y7Ozs7Ozt1QkFNUyxxQkFBc0IsQUFBRDs7O01BR3RDLG1DQUFtQzs7Ozs7WUFLN0I7Ozs7Q0FJWDtDQUNBOzsyQkFF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
1273
1276
 
1274
1277
  /***/ }),
1275
1278
 
@@ -1533,6 +1536,7 @@ __webpack_require__.d(misc_namespaceObject, {
1533
1536
  eval_num: () => (eval_num),
1534
1537
  events_set: () => (events_set),
1535
1538
  findDOMNode: () => (findDOMNode),
1539
+ forwardRef: () => (forwardRef),
1536
1540
  getComponentByPointer: () => (getComponentByPointer),
1537
1541
  id_num: () => (id_num),
1538
1542
  isAsync: () => (isAsync),
@@ -1572,7 +1576,6 @@ var hooks_namespaceObject = {};
1572
1576
  __webpack_require__.r(hooks_namespaceObject);
1573
1577
  __webpack_require__.d(hooks_namespaceObject, {
1574
1578
  createContext: () => (createContext),
1575
- forwardRef: () => (forwardRef),
1576
1579
  useActionState: () => (useActionState),
1577
1580
  useCallback: () => (useCallback),
1578
1581
  useContext: () => (useContext),
@@ -4415,17 +4418,17 @@ const typeOf = (input) => {
4415
4418
  * @param value - Value to inspect.
4416
4419
  * @returns True if the value is a class component; otherwise false.
4417
4420
  */
4418
- const isValidElement = (o) => {
4419
- return o[CORE]!==undefined || o[TEXT]!==undefined;
4421
+ const isValidElement = (value) => {
4422
+ return value[CORE]!==undefined || value[TEXT]!==undefined;
4420
4423
  }
4421
4424
 
4422
4425
  /**
4423
4426
  * Utility to find the underlying DOM node for a mounted Lilact component.
4424
4427
  *
4425
- * @param element - A Lilact component instance to locate its DOM node.
4428
+ * @param component - A Lilact component instance to locate its DOM node.
4426
4429
  * @returns The corresponding DOM element (or null if unavailable).
4427
4430
  */
4428
- const findDOMNode = (comp)=>{
4431
+ const findDOMNode = (component)=>{
4429
4432
 
4430
4433
  /*
4431
4434
  When a component renders to null or false, findDOMNode returns null.
@@ -4439,8 +4442,8 @@ const findDOMNode = (comp)=>{
4439
4442
 
4440
4443
  Unlike React, in Lilact findDOMNode can also be used on function components.
4441
4444
  */
4442
- if(!comp[CORE]?.element?.parentNode) throw new Error("findDOMNode only works on mounted components.");
4443
- return comp[CORE].element;
4445
+ if(!component[CORE]?.element?.parentNode) throw new Error("findDOMNode only works on mounted components.");
4446
+ return component[CORE].element;
4444
4447
  }
4445
4448
 
4446
4449
  /**
@@ -4504,6 +4507,20 @@ const Children = {
4504
4507
  };
4505
4508
 
4506
4509
 
4510
+ /**
4511
+ * Wraps a render function so that a parent can pass a `ref` into it.
4512
+ * The forwarded `ref` is provided as the second argument to the render function: `(props, ref)`.
4513
+ *
4514
+ * @param {function(props: any, ref: any)} render
4515
+ * The component render function that receives the props and the forwarded ref.
4516
+ * @returns {}
4517
+ */
4518
+ function forwardRef(render)
4519
+ {
4520
+ return (props)=>render({...props, ref: undefined}, props.ref);
4521
+ }
4522
+
4523
+
4507
4524
  /**
4508
4525
  * Debug tool to detect the component visible at a point on screen.
4509
4526
  *
@@ -4542,7 +4559,7 @@ function getComponentByPointer()
4542
4559
  /**
4543
4560
  * Utility for applying one or more class names to an element.
4544
4561
  *
4545
- * @param classNames - One or more class name values to combine.
4562
+ * @param classes - One or more class name values to combine.
4546
4563
  */
4547
4564
  function classNames(classes) {
4548
4565
  return Object.entries(classes)
@@ -4558,8 +4575,8 @@ function classNames(classes) {
4558
4575
  * @param value - Value to check for emptiness.
4559
4576
  * @returns True if empty; otherwise false.
4560
4577
  */
4561
- function isEmpty(o) {
4562
- for(let i in o) return false;
4578
+ function isEmpty(value) {
4579
+ for(let i in value) return false;
4563
4580
  return true;
4564
4581
  }
4565
4582
 
@@ -4567,8 +4584,8 @@ function isEmpty(o) {
4567
4584
  /**
4568
4585
  * Determines whether two values are shallowly equal.
4569
4586
  *
4570
- * @param objA - First object to compare.
4571
- * @param objB - Second object to compare.
4587
+ * @param source - First object to compare.
4588
+ * @param target - Second object to compare.
4572
4589
  * @returns True if shallowly equal; otherwise false.
4573
4590
  */
4574
4591
  const shallowEqual = (source, target) => {
@@ -4594,8 +4611,8 @@ const shallowEqual = (source, target) => {
4594
4611
  /**
4595
4612
  * Determines whether two values are deeply equal.
4596
4613
  *
4597
- * @param objA - First object to compare.
4598
- * @param objB - Second object to compare.
4614
+ * @param source - First object to compare.
4615
+ * @param target - Second object to compare.
4599
4616
  * @returns True if deeply equal; otherwise false.
4600
4617
  */
4601
4618
  function deepEqual(source, target) {
@@ -4632,13 +4649,13 @@ function deepEqual(source, target) {
4632
4649
  * @param value - Value to inspect.
4633
4650
  * @returns True if the value is a js class; otherwise false.
4634
4651
  */
4635
- function isClass(func) {
4652
+ function isClass(value) {
4636
4653
  // from https://stackoverflow.com/a/66120819
4637
- if(!(func && func.constructor === Function) || func.prototype === undefined)
4654
+ if(!(value && value.constructor === Function) || value.prototype === undefined)
4638
4655
  return false;
4639
- if(Function.prototype !== Object.getPrototypeOf(func))
4656
+ if(Function.prototype !== Object.getPrototypeOf(value))
4640
4657
  return true;
4641
- return Object.getOwnPropertyNames(func.prototype).length > 1;
4658
+ return Object.getOwnPropertyNames(value.prototype).length > 1;
4642
4659
  }
4643
4660
 
4644
4661
  /**
@@ -4647,8 +4664,8 @@ function isClass(func) {
4647
4664
  * @param value - Value to inspect.
4648
4665
  * @returns True if the value is an async function; otherwise false.
4649
4666
  */
4650
- function isAsync(fn) {
4651
- return typeof fn === 'function' && fn.constructor && fn.constructor.name === 'AsyncFunction';
4667
+ function isAsync(value) {
4668
+ return typeof value === 'function' && value.constructor && value.constructor.name === 'AsyncFunction';
4652
4669
  }
4653
4670
 
4654
4671
  /**
@@ -4657,8 +4674,8 @@ function isAsync(fn) {
4657
4674
  * @param value - Value to inspect.
4658
4675
  * @returns True if thenable; otherwise false.
4659
4676
  */
4660
- function isThenable(x) {
4661
- return x && (typeof x === "object" || typeof x === "function") && typeof x.then === "function";
4677
+ function isThenable(value) {
4678
+ return value && (typeof value === "object" || typeof value === "function") && typeof value.then === "function";
4662
4679
  }
4663
4680
 
4664
4681
  /**
@@ -4667,8 +4684,8 @@ function isThenable(x) {
4667
4684
  * @param value - Value to inspect.
4668
4685
  * @returns True if thenable; otherwise false.
4669
4686
  */
4670
- function misc_isError(x) {
4671
- return x instanceof Error || Object.prototype.toString.call(x) === '[object Error]';
4687
+ function misc_isError(value) {
4688
+ return value instanceof Error || Object.prototype.toString.call(value) === '[object Error]';
4672
4689
  }
4673
4690
 
4674
4691
  /**
@@ -4677,18 +4694,18 @@ function misc_isError(x) {
4677
4694
  * @param value - Value to inspect.
4678
4695
  * @returns boolean value
4679
4696
  */
4680
- function toBool(x) {
4681
- if (typeof x === "boolean") return x;
4697
+ function toBool(value) {
4698
+ if (typeof value === "boolean") return value;
4682
4699
 
4683
- if (typeof x === "number") return x !== 0;
4700
+ if (typeof value === "number") return value !== 0;
4684
4701
 
4685
- if (typeof x === "string") {
4686
- x = x.trim().toLowerCase();
4687
- if (x === "true") return true;
4688
- if (x === "false") return false;
4702
+ if (typeof value === "string") {
4703
+ value = value.trim().toLowerCase();
4704
+ if (value === "true") return true;
4705
+ if (value === "false") return false;
4689
4706
  }
4690
4707
 
4691
- return Boolean(x);
4708
+ return Boolean(value);
4692
4709
  }
4693
4710
 
4694
4711
 
@@ -4761,7 +4778,7 @@ const boolean_html_attributes_set = new
4761
4778
  "hidden","open","loop","muted","controls","playsInline","allowFullScreen"]);
4762
4779
 
4763
4780
 
4764
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9taXNjLmpzeCIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9hcmFzaC9EZXNrdG9wL1Byb2plY3RzL0xpbGFjdC9zcmMvbWlzYy5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUNDOzs7Z0JBR2UsV0FBVztFQUN6QjtFQUNBOztrREFFZ0QsbUJBQW1CO3NCQUMvQzsrQkFDUzs7Ozs7O0NBTTlCOztDQUVBOzs7Ozs7K0JBTThCLE9BQU87Ozs7Q0FJckM7Ozs7Ozs0QkFNMkIsUUFBUTs7RUFFbEM7Ozs7Ozs7Ozs7OztJQVlFLGtEQUFrRDs7OztDQUlyRDs7Ozs7a0NBS2tDLEFBQUQsYUFBYTs7O0NBRzlDOzs7Ozs7Ozt5QkFRd0I7O0NBRXhCOzs7Ozs7TUFNSyxXQUFXOzs7UUFHVCxvQkFBb0I7TUFDdEIsMkNBQTJDO29CQUM3Qjs7O1dBR1QsZ0RBQWdEO29CQUN2Qzs7O01BR2QsTUFBTTtvQkFDUTs7OztLQUlmOzs7O0NBSUo7Ozs7OztTQU1RLFdBQVc7S0FDZixXQUFXO01BQ1Y7Ozs7Ozs7O0NBUUw7Ozs7O3NDQUtxQztDQUNyQzs7O3dCQUd1QixDQUFFLGFBQWE7Ozs7d0JBSWYsUUFBUTs7aUNBRUM7NkJBQ0o7Ozs7UUFJckIsa0NBQWtDOzs7O2VBSTNCOzs7Ozt5QkFLVTs7Ozs7O0NBTXhCOzs7OzsyQkFLMEIsVUFBVTt1QkFDZDtTQUNiLEFBQUQ7TUFDRixBQUFEO09BQ0M7Ozs7Q0FJTjs7Ozs7O3dCQU11QixLQUFLO0tBQ3hCOzs7OztDQUtKOzs7Ozs7OzZCQU80QixvQkFBb0I7S0FDNUMsTUFBTyxtQkFBbUIsV0FBVTs7OztLQUlwQyxNQUFPLHVCQUFzQjtNQUM1QixrQ0FBa0M7OztzQkFHakIsQUFBRDtZQUNWLE1BQU8sd0JBQXVCO3FCQUNyQixjQUFlLEFBQUQ7WUFDdkIsTUFBTyxzQkFBcUI7d0JBQ2hCLHFCQUFxQjs7Ozs7OztDQU81Qzs7Ozs7OzswQkFPeUIsaUJBQWlCO0tBQ3RDLE1BQU8sbUJBQW1CLFdBQVU7Ozs7S0FJcEMsTUFBTyx1QkFBc0I7TUFDNUIsa0NBQWtDOzs7O3NCQUlqQixBQUFELDJCQUE0QjtZQUN0QyxNQUFPLHdCQUF1QjtNQUNwQyxXQUFZLCtCQUErQixrQkFBaUI7Ozs7cUJBSTdDLGNBQWUsQUFBRDtZQUN0Qjs7WUFFRCxNQUFPLHNCQUFxQjt3QkFDaEIscUJBQXFCOzs7Ozs7OztDQVE1Qzs7Ozs7O3dCQU11QixPQUFPO0VBQzdCO0lBQ0UsQ0FBRTs7SUFFRiw0Q0FBNkM7O21DQUVkOzs7Q0FHbEM7Ozs7Ozt3QkFNdUIsS0FBSzs7OztDQUk1Qjs7Ozs7OzJCQU0wQixJQUFJO2NBQ2pCOzs7Q0FHYjs7Ozs7O3dCQU11QixJQUFJOzZEQUNpQzs7O0NBRzVEOzs7Ozs7dUJBTXNCLElBQUk7S0FDdEI7O0tBRUE7O0tBRUEsd0JBQXdCO2FBQ2hCLGNBQWM7TUFDckI7TUFDQTs7O2dCQUdVOzs7O0NBSWY7O0NBRUE7aUNBQ2dDOztDQUVoQzs7Q0FFQTs7Q0FFQTsrQkFDOEIsV0FBWTtDQUMxQzt5QkFDd0I7OztDQUd4QjtDQUNBOztDQUVBOztDQUVBOztDQUVBOztDQUVBOzs7Q0FHQTswQ0FDeUM7Ozs7O0NBS3pDO2tDQUNpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CakM7aURBQ2dEOzs7Ozs7Ozs7Q0FTaEQ7O0tBRUkifQ==
4781
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9taXNjLmpzeCIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9hcmFzaC9EZXNrdG9wL1Byb2plY3RzL0xpbGFjdC9zcmMvbWlzYy5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUNDOzs7Z0JBR2UsV0FBVztFQUN6QjtFQUNBOztrREFFZ0QsbUJBQW1CO3NCQUMvQzsrQkFDUzs7Ozs7O0NBTTlCOztDQUVBOzs7Ozs7K0JBTThCLFdBQVc7Ozs7Q0FJekM7Ozs7Ozs0QkFNMkIsYUFBYTs7RUFFdkM7Ozs7Ozs7Ozs7OztJQVlFLHVEQUF1RDs7OztDQUkxRDs7Ozs7a0NBS2tDLEFBQUQsYUFBYTs7O0NBRzlDOzs7Ozs7Ozt5QkFRd0I7O0NBRXhCOzs7Ozs7TUFNSyxXQUFXOzs7UUFHVCxvQkFBb0I7TUFDdEIsMkNBQTJDO29CQUM3Qjs7O1dBR1QsZ0RBQWdEO29CQUN2Qzs7O01BR2QsTUFBTTtvQkFDUTs7OztLQUlmOzs7O0NBSUo7Ozs7OztTQU1RLFdBQVc7S0FDZixXQUFXO01BQ1Y7Ozs7Ozs7O0NBUUw7Ozs7Ozs7OzJCQVEwQjtDQUMxQjtTQUNRLGVBQWdCLEFBQUQ7Ozs7Q0FJdkI7Ozs7O3NDQUtxQztDQUNyQzs7O3dCQUd1QixDQUFFLGFBQWE7Ozs7d0JBSWYsUUFBUTs7aUNBRUM7NkJBQ0o7Ozs7UUFJckIsa0NBQWtDOzs7O2VBSTNCOzs7Ozt5QkFLVTs7Ozs7O0NBTXhCOzs7OzsyQkFLMEIsVUFBVTt1QkFDZDtTQUNiLEFBQUQ7TUFDRixBQUFEO09BQ0M7Ozs7Q0FJTjs7Ozs7O3dCQU11QixTQUFTO0tBQzVCOzs7OztDQUtKOzs7Ozs7OzZCQU80QixvQkFBb0I7S0FDNUMsTUFBTyxtQkFBbUIsV0FBVTs7OztLQUlwQyxNQUFPLHVCQUFzQjtNQUM1QixrQ0FBa0M7OztzQkFHakIsQUFBRDtZQUNWLE1BQU8sd0JBQXVCO3FCQUNyQixjQUFlLEFBQUQ7WUFDdkIsTUFBTyxzQkFBcUI7d0JBQ2hCLHFCQUFxQjs7Ozs7OztDQU81Qzs7Ozs7OzswQkFPeUIsaUJBQWlCO0tBQ3RDLE1BQU8sbUJBQW1CLFdBQVU7Ozs7S0FJcEMsTUFBTyx1QkFBc0I7TUFDNUIsa0NBQWtDOzs7O3NCQUlqQixBQUFELDJCQUE0QjtZQUN0QyxNQUFPLHdCQUF1QjtNQUNwQyxXQUFZLCtCQUErQixrQkFBaUI7Ozs7cUJBSTdDLGNBQWUsQUFBRDtZQUN0Qjs7WUFFRCxNQUFPLHNCQUFxQjt3QkFDaEIscUJBQXFCOzs7Ozs7OztDQVE1Qzs7Ozs7O3dCQU11QixRQUFRO0VBQzlCO0lBQ0UsQ0FBRTs7SUFFRiw0Q0FBNkM7O21DQUVkOzs7Q0FHbEM7Ozs7Ozt3QkFNdUIsUUFBUTs7OztDQUkvQjs7Ozs7OzJCQU0wQixRQUFRO2tCQUNqQjs7O0NBR2pCOzs7Ozs7d0JBTXVCLFFBQVE7aUVBQ2lDOzs7Q0FHaEU7Ozs7Ozt1QkFNc0IsUUFBUTtLQUMxQjs7S0FFQTs7S0FFQSw0QkFBNEI7cUJBQ1osY0FBYztNQUM3QjtNQUNBOzs7Z0JBR1U7Ozs7Q0FJZjs7Q0FFQTtpQ0FDZ0M7O0NBRWhDOztDQUVBOztDQUVBOytCQUM4QixXQUFZO0NBQzFDO3lCQUN3Qjs7O0NBR3hCO0NBQ0E7O0NBRUE7O0NBRUE7O0NBRUE7O0NBRUE7OztDQUdBOzBDQUN5Qzs7Ozs7Q0FLekM7a0NBQ2lDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUJqQztpREFDZ0Q7Ozs7Ozs7OztDQVNoRDs7S0FFSSJ9
4765
4782
  ;// ./src/components.jsx
4766
4783
  /*
4767
4784
 
@@ -5518,7 +5535,7 @@ const generateComponentKey = (entity, props)=> {
5518
5535
  * Base class that mimics `React.Component` (stateful component with lifecycle hooks).
5519
5536
  * Extend this class to implement `render()` and (optionally) override lifecycle methods.
5520
5537
  *
5521
- * This user functions and members are supported:
5538
+ * These user functions and members are supported:
5522
5539
  *
5523
5540
  * static defaultProps
5524
5541
  *
@@ -5922,17 +5939,17 @@ function useHook()
5922
5939
  * @param {any} initialValue - Initial state value.
5923
5940
  * @returns {any} Hook result `[state, setState]`.
5924
5941
  */
5925
- function useState(val)
5942
+ function useState(initialValue)
5926
5943
  {
5927
5944
  const hk = Lilact.useHook();
5928
5945
 
5929
5946
  if( Lilact.isEmpty(hk) ) {
5930
- if(typeof(val)==='function') hk.value = val();
5931
- else hk.value = val;
5947
+ if(typeof(initialValue)==='function') hk.value = initialValue();
5948
+ else hk.value = initialValue;
5932
5949
 
5933
- hk.set_func = function(core, hk, val) {
5934
- if(typeof(val)==='function') hk.value = val(hk.value);
5935
- else hk.value = val;
5950
+ hk.set_func = function(core, hk, initialValue) {
5951
+ if(typeof(initialValue)==='function') hk.value = initialValue(hk.value);
5952
+ else hk.value = initialValue;
5936
5953
 
5937
5954
  core.component.forceUpdate();
5938
5955
  }.bind(undefined, Lilact.current_component[0], hk);
@@ -5979,14 +5996,14 @@ function useCallback(callback, deps=undefined)
5979
5996
  * @param {any} [defaultValue] - Initial context value when no Provider is present.
5980
5997
  * @returns {any} A context object
5981
5998
  */
5982
- function createContext(val)
5999
+ function createContext(defaultValue)
5983
6000
  {
5984
6001
  const prov = function({value, children}) {
5985
6002
  return children;
5986
6003
  };
5987
6004
 
5988
6005
  return {
5989
- default: val,
6006
+ default: defaultValue,
5990
6007
  Provider: prov
5991
6008
  }
5992
6009
  }
@@ -5997,20 +6014,20 @@ function createContext(val)
5997
6014
  * @param {any} context - Context object created by `createContext`.
5998
6015
  * @returns {any} Current context value.
5999
6016
  */
6000
- function useContext(ctx)
6017
+ function useContext(context)
6001
6018
  {
6002
6019
  let core = Lilact.current_component[0].parent;
6003
6020
 
6004
- while(core.entity!==ctx.Provider && core.parent) {
6021
+ while(core.entity!==context.Provider && core.parent) {
6005
6022
  core = core.parent;
6006
6023
  }
6007
6024
 
6008
6025
  if(core.parent) {
6009
6026
  let v = core.props?.value;
6010
- return v??=ctx.default;
6027
+ return v??=context.default;
6011
6028
  }
6012
6029
 
6013
- return ctx.default;
6030
+ return context.default;
6014
6031
  }
6015
6032
 
6016
6033
  /**
@@ -6217,7 +6234,7 @@ function useMemo(factory,deps=undefined)
6217
6234
  * @param {any} initialState - Initial state for the hook.
6218
6235
  * @returns {any} Hook result
6219
6236
  */
6220
- function useActionState(fn, initialState)
6237
+ function useActionState(action, initialState)
6221
6238
  {
6222
6239
  const hk = Lilact.useHook();
6223
6240
  const [is_pending, tran_start_func] = Lilact.useTransition();
@@ -6232,7 +6249,7 @@ function useActionState(fn, initialState)
6232
6249
  tran_start_func(
6233
6250
  async ()=> {
6234
6251
  const form_data = new FormData(sub.target, sub.submitter);
6235
- hk.state = await fn(hk.state, form_data);
6252
+ hk.state = await action(hk.state, form_data);
6236
6253
  },
6237
6254
  []
6238
6255
  );
@@ -6324,21 +6341,6 @@ function useDeferredValue(value, initialValue)
6324
6341
  return deferred;
6325
6342
  }
6326
6343
 
6327
-
6328
- /**
6329
- * Wraps a render function so that a parent can pass a `ref` into it.
6330
- * The forwarded `ref` is provided as the second argument to the render function: `(props, ref)`.
6331
- *
6332
- * @param {function(props: any, ref: any)} render
6333
- * The component render function that receives the props and the forwarded ref.
6334
- * @returns {}
6335
- */
6336
- function forwardRef(render)
6337
- {
6338
- return (props)=>render({...props, ref: undefined}, props.ref);
6339
- }
6340
-
6341
-
6342
6344
  /**
6343
6345
  * Customizes the value that is exposed to the parent when it uses a `ref` on a component created with `forwardRef`.
6344
6346
  * The object returned by `factory` becomes the value of `ref.current` for object refs.
@@ -6368,7 +6370,7 @@ function useImperativeHandle(ref, factory, deps=undefined)
6368
6370
 
6369
6371
 
6370
6372
 
6371
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9ob29rcy5qc3giLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL2hvb2tzLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4QkM7OztDQUdBOzs7Ozs7O3dCQU91QjtDQUN2Qjs7O0lBR0csMENBQTBDO2tCQUMzQixBQUFEOzs7Ozs7Q0FNakI7Ozs7Ozt5QkFNd0I7Q0FDeEI7MkJBQzBCOztJQUV2QixlQUFnQixRQUFPO0tBQ3RCLE1BQU8sbUNBQWtDOzs7eUJBR3JCLGdCQUFnQjtNQUNuQyxNQUFPLG1DQUFrQzs7OzhCQUdqQjtTQUNyQjs7Ozs7OztDQU9SOzs7Ozs7OzRCQU8yQjtDQUMzQjtJQUNHLHFCQUFzQixNQUFPLDBEQUF3RDtrQkFDdkU7OzsyQkFHUzs7SUFFdkIsZUFBZ0IsUUFBTzs7O09BR3BCO0tBQ0YsK0RBQWdFOzs7SUFHakUsY0FBYzthQUNMOzs7Ozs7OztDQVFaOzs7Ozs7OEJBTTZCO0NBQzdCO3VCQUN1QixBQUFELG9CQUFvQjs7OztTQUlsQzs7Ozs7O0NBTVI7Ozs7OzsyQkFNMEI7Q0FDMUI7OztPQUdNLDRDQUE0Qzs7OztJQUkvQyxjQUFjOzs7Ozs7OztDQVFqQjs7Ozs7O3NCQU1xQjtDQUNyQjsyQkFDMEI7O0lBRXZCLGVBQWdCLFFBQU87Ozs7Ozs7Q0FPMUI7Ozs7OzhCQUs2QjtDQUM3QjsyQkFDMEI7O0lBRXZCLGVBQWdCLFFBQU87Ozs7O0dBS3hCLGNBQWUsZUFBZTs7OztLQUkzQixlQUFlOzhCQUNVOzs7V0FHbkI7Ozs7S0FJTixlQUFlOzhCQUNVOzs7O1NBSXRCOzs7Ozs7Q0FNUjs7Ozs7OztnQ0FPK0I7Q0FDL0I7OzJCQUUwQjs7O01BR3JCO21CQUNhOztPQUVaLElBQUk7OztJQUdQLGtCQUFrQjtLQUNqQixNQUFPLHlEQUF3RDs7cUNBRS9COzs7SUFHakMsZUFBZ0IsUUFBTzs7eUJBRUYsZ0JBQWdCOztNQUVuQyxNQUFPLDhCQUE2Qjs7TUFFcEM7O3NDQUVnQzs7OzhCQUdSOztTQUVyQjs7Ozs7O0NBTVI7Ozs7Ozs7dUJBT3NCO0NBQ3RCOzJCQUMwQjs7SUFFdkIsZUFBZ0IsUUFBTzs7Ozs7OztDQU8xQjs7Ozs7OztnQ0FPK0I7Q0FDL0I7SUFDRyxxQkFBc0IsTUFBTywwREFBd0Q7a0JBQ3ZFOzs7MkJBR1M7O0lBRXZCLGdCQUFpQixRQUFPO0tBQ3ZCLCtEQUFnRTs7O0lBR2pFLGNBQWM7YUFDTDs7OzsyQkFJYyxDQUFFLElBQUkscUJBQXFCO21EQUNIOzs7Q0FHbEQ7Ozs7Ozs7MEJBT3lCO0NBQ3pCO0lBQ0cscUJBQXNCLE1BQU8sMERBQXdEO2tCQUN2RTs7OzJCQUdTOztJQUV2QixnQkFBaUIsUUFBTztLQUN2QiwrREFBZ0U7OztJQUdqRSxjQUFjO2FBQ0w7Ozs7bUJBSU0sQ0FBRSxJQUFJLHFCQUFxQjs7OztDQUk3Qzs7Ozs7Ozt3QkFPdUI7Q0FDdkI7SUFDRyxxQkFBc0IsTUFBTywwREFBd0Q7a0JBQ3ZFOzs7MkJBR1M7O0lBRXZCLGdCQUFpQixRQUFPO0tBQ3ZCLCtEQUFnRTs7OztvQkFJakQ7Ozs7O0NBS25COzs7Ozs7OytCQU84QjtDQUM5QjsyQkFDMEI7NERBQ2lDOztJQUV4RCxlQUFnQixRQUFPOzs7O29CQUlQLE9BQU87d0JBQ0g7O21CQUVMO1dBQ1AsS0FBSztvQ0FDb0I7eUJBQ1g7Ozs7Ozs7Ozs7OztDQVl6Qjs7Ozs7Ozs7MkJBUTBCO0NBQzFCOzJCQUMwQjs7SUFFdkIsZUFBZ0IsUUFBTzs7dUJBRUo7eUJBQ0UsbUJBQW1COzRCQUNoQjtNQUN0QixzQkFBdUIsbUJBQWtCOzsrQkFFaEI7OztTQUd0Qjs7Ozs7Ozs7Q0FRUjs7Q0FFQTs7Ozs7O2lDQU1nQztDQUNoQztRQUNPOzswQ0FFa0M7Ozs2QkFHYjsyQkFDRjs7V0FFZixBQUFELE1BQU87S0FDWjs7O0VBR0g7S0FDRyw2QkFBNkI7Ozs7O0VBS2hDO2NBQ1k7OztpQkFHRyxPQUFRLEFBQUQsTUFBTztLQUN6QjtFQUNIO2FBQ1c7Ozs7U0FJTCxNQUFNO01BQ1QscUJBQXFCOzs7Ozs7Ozs7OztDQVczQjs7Ozs7Ozs7MkJBUTBCO0NBQzFCO1NBQ1EsZUFBZ0IsQUFBRDs7OztDQUl2Qjs7Ozs7Ozs7Ozs7OztvQ0FhbUM7Q0FDbkM7SUFDRyxnRUFBaUU7Ozs7bUJBSWxELENBQUUsSUFBSTtJQUNwQixtQ0FBbUM7aUJBQ3RCOztlQUVGLHFCQUFzQiJ9
6373
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9ob29rcy5qc3giLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL2hvb2tzLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4QkM7OztDQUdBOzs7Ozs7O3dCQU91QjtDQUN2Qjs7O0lBR0csMENBQTBDO2tCQUMzQixBQUFEOzs7Ozs7Q0FNakI7Ozs7Ozt5QkFNd0I7Q0FDeEI7MkJBQzBCOztJQUV2QixlQUFnQixRQUFPO0tBQ3RCLE1BQU8scURBQW9EOzs7eUJBR3ZDLHlCQUF5QjtNQUM1QyxNQUFPLHFEQUFvRDs7OzhCQUduQztTQUNyQjs7Ozs7OztDQU9SOzs7Ozs7OzRCQU8yQjtDQUMzQjtJQUNHLHFCQUFzQixNQUFPLDBEQUF3RDtrQkFDdkU7OzsyQkFHUzs7SUFFdkIsZUFBZ0IsUUFBTzs7O09BR3BCO0tBQ0YsK0RBQWdFOzs7SUFHakUsY0FBYzthQUNMOzs7Ozs7OztDQVFaOzs7Ozs7OEJBTTZCO0NBQzdCO3VCQUN1QixBQUFELG9CQUFvQjs7OztTQUlsQzs7Ozs7O0NBTVI7Ozs7OzsyQkFNMEI7Q0FDMUI7OztPQUdNLGdEQUFnRDs7OztJQUluRCxjQUFjOzs7Ozs7OztDQVFqQjs7Ozs7O3NCQU1xQjtDQUNyQjsyQkFDMEI7O0lBRXZCLGVBQWdCLFFBQU87Ozs7Ozs7Q0FPMUI7Ozs7OzhCQUs2QjtDQUM3QjsyQkFDMEI7O0lBRXZCLGVBQWdCLFFBQU87Ozs7O0dBS3hCLGNBQWUsZUFBZTs7OztLQUkzQixlQUFlOzhCQUNVOzs7V0FHbkI7Ozs7S0FJTixlQUFlOzhCQUNVOzs7O1NBSXRCOzs7Ozs7Q0FNUjs7Ozs7OztnQ0FPK0I7Q0FDL0I7OzJCQUUwQjs7O01BR3JCO21CQUNhOztPQUVaLElBQUk7OztJQUdQLGtCQUFrQjtLQUNqQixNQUFPLHlEQUF3RDs7cUNBRS9COzs7SUFHakMsZUFBZ0IsUUFBTzs7eUJBRUYsZ0JBQWdCOztNQUVuQyxNQUFPLDhCQUE2Qjs7TUFFcEM7O3NDQUVnQzs7OzhCQUdSOztTQUVyQjs7Ozs7O0NBTVI7Ozs7Ozs7dUJBT3NCO0NBQ3RCOzJCQUMwQjs7SUFFdkIsZUFBZ0IsUUFBTzs7Ozs7OztDQU8xQjs7Ozs7OztnQ0FPK0I7Q0FDL0I7SUFDRyxxQkFBc0IsTUFBTywwREFBd0Q7a0JBQ3ZFOzs7MkJBR1M7O0lBRXZCLGdCQUFpQixRQUFPO0tBQ3ZCLCtEQUFnRTs7O0lBR2pFLGNBQWM7YUFDTDs7OzsyQkFJYyxDQUFFLElBQUkscUJBQXFCO21EQUNIOzs7Q0FHbEQ7Ozs7Ozs7MEJBT3lCO0NBQ3pCO0lBQ0cscUJBQXNCLE1BQU8sMERBQXdEO2tCQUN2RTs7OzJCQUdTOztJQUV2QixnQkFBaUIsUUFBTztLQUN2QiwrREFBZ0U7OztJQUdqRSxjQUFjO2FBQ0w7Ozs7bUJBSU0sQ0FBRSxJQUFJLHFCQUFxQjs7OztDQUk3Qzs7Ozs7Ozt3QkFPdUI7Q0FDdkI7SUFDRyxxQkFBc0IsTUFBTywwREFBd0Q7a0JBQ3ZFOzs7MkJBR1M7O0lBRXZCLGdCQUFpQixRQUFPO0tBQ3ZCLCtEQUFnRTs7OztvQkFJakQ7Ozs7O0NBS25COzs7Ozs7OytCQU84QjtDQUM5QjsyQkFDMEI7NERBQ2lDOztJQUV4RCxlQUFnQixRQUFPOzs7O29CQUlQLE9BQU87d0JBQ0g7O21CQUVMO1dBQ1AsS0FBSztvQ0FDb0I7NkJBQ1A7Ozs7Ozs7Ozs7OztDQVk3Qjs7Ozs7Ozs7MkJBUTBCO0NBQzFCOzJCQUMwQjs7SUFFdkIsZUFBZ0IsUUFBTzs7dUJBRUo7eUJBQ0UsbUJBQW1COzRCQUNoQjtNQUN0QixzQkFBdUIsbUJBQWtCOzsrQkFFaEI7OztTQUd0Qjs7Ozs7Ozs7Q0FRUjs7Q0FFQTs7Ozs7O2lDQU1nQztDQUNoQztRQUNPOzswQ0FFa0M7Ozs2QkFHYjsyQkFDRjs7V0FFZixBQUFELE1BQU87S0FDWjs7O0VBR0g7S0FDRyw2QkFBNkI7Ozs7O0VBS2hDO2NBQ1k7OztpQkFHRyxPQUFRLEFBQUQsTUFBTztLQUN6QjtFQUNIO2FBQ1c7Ozs7U0FJTCxNQUFNO01BQ1QscUJBQXFCOzs7Ozs7Ozs7O0NBVTNCOzs7Ozs7Ozs7Ozs7O29DQWFtQztDQUNuQztJQUNHLGdFQUFpRTs7OzttQkFJbEQsQ0FBRSxJQUFJO0lBQ3BCLG1DQUFtQztpQkFDdEI7O2VBRUYscUJBQXNCIn0=
6372
6374
  // EXTERNAL MODULE: ./src/run.jsx
6373
6375
  var run = __webpack_require__(861);
6374
6376
  ;// ./src/timers.jsx
@@ -6583,9 +6585,9 @@ function resumeTimers()
6583
6585
  */
6584
6586
 
6585
6587
 
6586
- function timers_setTimeout(func, interval, ...args)
6588
+ function timers_setTimeout(callback, delay, ...args)
6587
6589
  {
6588
- return add_timer( { [CALLBACK]: func, [INTERVAL]: interval, [DUE]: Date.now()+interval, [REPEAT]: false, [ARGS]: args } );
6590
+ return add_timer( { [CALLBACK]: callback, [INTERVAL]: delay, [DUE]: Date.now()+delay, [REPEAT]: false, [ARGS]: args } );
6589
6591
  }
6590
6592
 
6591
6593
  /**
@@ -6596,9 +6598,9 @@ function timers_setTimeout(func, interval, ...args)
6596
6598
  * @returns {any} Interval id.
6597
6599
  */
6598
6600
 
6599
- function timers_setInterval(func, interval, ...args)
6601
+ function timers_setInterval(callback, interval, ...args)
6600
6602
  {
6601
- return add_timer( { [CALLBACK]: func, [INTERVAL]: interval, [DUE]: Date.now()+interval, [REPEAT]: true, [ARGS]: args } );
6603
+ return add_timer( { [CALLBACK]: callback, [INTERVAL]: interval, [DUE]: Date.now()+interval, [REPEAT]: true, [ARGS]: args } );
6602
6604
  }
6603
6605
 
6604
6606
  /**
@@ -6606,9 +6608,9 @@ function timers_setInterval(func, interval, ...args)
6606
6608
  * @param {any} id - Timeout id returned by `setTimeout`.
6607
6609
  * @returns {void}
6608
6610
  */
6609
- function timers_clearTimeout(t)
6611
+ function timers_clearTimeout(id)
6610
6612
  {
6611
- if(all_timers[t]) all_timers[t][CLEARED] = true;
6613
+ if(all_timers[id]) all_timers[id][CLEARED] = true;
6612
6614
  }
6613
6615
 
6614
6616
  /**
@@ -6616,9 +6618,9 @@ function timers_clearTimeout(t)
6616
6618
  * @param {any} id - Interval id returned by `setInterval`.
6617
6619
  * @returns {void}
6618
6620
  */
6619
- function timers_clearInterval(t)
6621
+ function timers_clearInterval(id)
6620
6622
  {
6621
- if(all_timers[t]) all_timers[t][CLEARED] = true;
6623
+ if(all_timers[id]) all_timers[id][CLEARED] = true;
6622
6624
  }
6623
6625
 
6624
6626
  /**
@@ -6651,27 +6653,27 @@ function releaseTimers()
6651
6653
  * @param {number} duration - Delay in milliseconds.
6652
6654
  * @returns {Promise} Promise that resolves after the delay.
6653
6655
  */
6654
- function timeoutPromise(duration=0, timer_source=this)
6656
+ function timeoutPromise(duration=0, timerSource=this)
6655
6657
  {
6656
6658
  let id, resolve, reject;
6657
6659
 
6658
6660
  const promise = new Promise((res, rej) => {
6659
6661
  resolve = res;
6660
6662
  reject = rej;
6661
- id = timer_source.setTimeout(() => {
6663
+ id = timerSource.setTimeout(() => {
6662
6664
  resolve();
6663
6665
  }, duration);
6664
6666
  });
6665
6667
 
6666
6668
  // note: proceed interrupts the timer, and continues the flow if used with await.
6667
6669
  promise.proceed = () => {
6668
- timer_source.clearTimeout(id);
6670
+ timerSource.clearTimeout(id);
6669
6671
  resolve();
6670
6672
  };
6671
6673
 
6672
6674
  // note: cancel rejects so it throws exception when using with await, this allows handling it differently.
6673
6675
  promise.cancel = () => {
6674
- timer_source.clearTimeout(id);
6676
+ timerSource.clearTimeout(id);
6675
6677
  reject();
6676
6678
  };
6677
6679
 
@@ -6692,7 +6694,7 @@ function animationFramePromise() {
6692
6694
 
6693
6695
 
6694
6696
 
6695
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy90aW1lcnMuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy90aW1lcnMuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThCQztDQUNBO0NBQ0E7OztDQUdBOztDQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBcUJpQjs7O0NBR2pCOzs7Ozs7O29CQU9tQjtDQUNuQjs7OztRQUlPLGdCQUFnQjt5QkFDRSxBQUFEOzs7TUFHbkIscUJBQXFCOzs7V0FHaEIsbUJBQW1COzs7UUFHdEI7Ozs7Ozs7O21CQVFXOzs7O21CQUlBO0NBQ2xCOytCQUM4Qjs7SUFFM0IsYUFBYTs7Ozs7O2FBTUo7O0lBRVQsdUJBQXVCO2dCQUNYOzhCQUNjOzs7Ozs7bUJBTVg7Q0FDbEI7c0JBQ3FCOzs7OztPQUtmLCtCQUErQjtNQUNoQyxrQkFBa0I7O01BRWxCLGNBQWM7Z0JBQ0o7T0FDVCxZQUFZO3VCQUNJO2VBQ1I7O1VBRUw7Ozs7U0FJRDs7Ozs7Ozs7bUJBUVU7O0lBRWYsc0JBQXNCO2dCQUNWOzhCQUNjOzs7OztDQUs3Qjs7Q0FFQTs7Ozs2QkFJNEI7Q0FDNUI7ZUFDYzs7Ozs7ZUFLQTs7O0NBR2Q7Ozs7NkJBSTRCO0NBQzVCO2VBQ2M7NkJBQ2M7OztDQUc1Qjs7Ozs2QkFJNEI7Q0FDNUI7SUFDRzs7SUFFQSxzQkFBc0I7dUJBQ0g7Ozs7TUFJakIsMEJBQTBCOzs7OzhCQUlGOzs7Ozs7O0NBTzdCOzs7Ozs7Ozs7MkJBUzBCO0NBQzFCO2tCQUNpQixDQUFFLHlEQUF5RDs7O0NBRzVFOzs7Ozs7Ozs0QkFRMkI7Q0FDM0I7a0JBQ2lCLENBQUUseURBQXlEOzs7Q0FHNUU7Ozs7OzZCQUs0QjtDQUM1QjtJQUNHOzs7Q0FHSDs7Ozs7OEJBSzZCO0NBQzdCO0lBQ0c7OztDQUdIOzs7OzsyQkFLMEI7Q0FDMUI7Ozs7Ozs7Q0FPQTs7Ozs4QkFJNkI7Q0FDN0I7Ozs7Ozs7Q0FPQTs7Ozs7K0JBSzhCO0NBQzlCOzs7NkJBRzZCLEFBQUQsY0FBZTs7OzhCQUdaLEFBQUQsTUFBTztTQUMzQjs7OztFQUlUO29CQUNrQixNQUFNOzRCQUNFO1VBQ2xCOzs7RUFHUjttQkFDaUIsTUFBTTs0QkFDRztTQUNuQjs7Ozs7O0NBTVI7Ozs7c0NBSXFDLEdBQUc7dUJBQ2pCLEFBQUQsYUFBYzs2QkFDTixBQUFELE1BQU87a0JBQ2pCIn0=
6697
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy90aW1lcnMuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy90aW1lcnMuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThCQztDQUNBO0NBQ0E7OztDQUdBOztDQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBcUJpQjs7O0NBR2pCOzs7Ozs7O29CQU9tQjtDQUNuQjs7OztRQUlPLGdCQUFnQjt5QkFDRSxBQUFEOzs7TUFHbkIscUJBQXFCOzs7V0FHaEIsbUJBQW1COzs7UUFHdEI7Ozs7Ozs7O21CQVFXOzs7O21CQUlBO0NBQ2xCOytCQUM4Qjs7SUFFM0IsYUFBYTs7Ozs7O2FBTUo7O0lBRVQsdUJBQXVCO2dCQUNYOzhCQUNjOzs7Ozs7bUJBTVg7Q0FDbEI7c0JBQ3FCOzs7OztPQUtmLCtCQUErQjtNQUNoQyxrQkFBa0I7O01BRWxCLGNBQWM7Z0JBQ0o7T0FDVCxZQUFZO3VCQUNJO2VBQ1I7O1VBRUw7Ozs7U0FJRDs7Ozs7Ozs7bUJBUVU7O0lBRWYsc0JBQXNCO2dCQUNWOzhCQUNjOzs7OztDQUs3Qjs7Q0FFQTs7Ozs2QkFJNEI7Q0FDNUI7ZUFDYzs7Ozs7ZUFLQTs7O0NBR2Q7Ozs7NkJBSTRCO0NBQzVCO2VBQ2M7NkJBQ2M7OztDQUc1Qjs7Ozs2QkFJNEI7Q0FDNUI7SUFDRzs7SUFFQSxzQkFBc0I7dUJBQ0g7Ozs7TUFJakIsMEJBQTBCOzs7OzhCQUlGOzs7Ozs7O0NBTzdCOzs7Ozs7Ozs7MkJBUzBCO0NBQzFCO2tCQUNpQixDQUFFLDBEQUEwRDs7O0NBRzdFOzs7Ozs7Ozs0QkFRMkI7Q0FDM0I7a0JBQ2lCLENBQUUsNkRBQTZEOzs7Q0FHaEY7Ozs7OzZCQUs0QjtDQUM1QjtJQUNHOzs7Q0FHSDs7Ozs7OEJBSzZCO0NBQzdCO0lBQ0c7OztDQUdIOzs7OzsyQkFLMEI7Q0FDMUI7Ozs7Ozs7Q0FPQTs7Ozs4QkFJNkI7Q0FDN0I7Ozs7Ozs7Q0FPQTs7Ozs7K0JBSzhCO0NBQzlCOzs7NkJBRzZCLEFBQUQsY0FBZTs7OzZCQUdiLEFBQUQsTUFBTztTQUMxQjs7OztFQUlUO29CQUNrQixNQUFNOzJCQUNDO1VBQ2pCOzs7RUFHUjttQkFDaUIsTUFBTTsyQkFDRTtTQUNsQjs7Ozs7O0NBTVI7Ozs7c0NBSXFDLEdBQUc7dUJBQ2pCLEFBQUQsYUFBYzs2QkFDTixBQUFELE1BQU87a0JBQ2pCIn0=
6696
6698
  ;// ./src/transition.jsx
6697
6699
  /*
6698
6700
 
@@ -6998,79 +7000,207 @@ if (typeof Event !== 'undefined' && !Event.prototype.composedPath) {
6998
7000
  // Event pool for reuse
6999
7001
  const _pool = [];
7000
7002
  const MAX_POOL_SIZE = 10;
7003
+ const POINTER_TYPES = ["mouse", "pen", "touch"];
7001
7004
 
7002
7005
  function createSyntheticEvent(nativeEvent, currentTarget) {
7003
- // Reuse object from pool if available
7004
- const e = _pool.length ? _pool.pop() : {};
7005
-
7006
- e.nativeEvent = nativeEvent;
7007
- e.type = nativeEvent.type;
7008
- e.target = nativeEvent.target || nativeEvent.srcElement || null;
7009
- e.currentTarget = currentTarget || nativeEvent.currentTarget || null;
7010
- e.timeStamp = nativeEvent.timeStamp || Date.now();
7011
- e.defaultPrevented = !!(nativeEvent.defaultPrevented);
7012
- e.isPropagationStopped = false;
7013
- e.isPersistent = false;
7014
-
7015
- e.isDefaultPrevented = () => e.defaultPrevented;
7016
- e.preventDefault = () => {
7017
- if (nativeEvent.preventDefault) nativeEvent.preventDefault();
7018
- e.defaultPrevented = true;
7019
- };
7020
- e.stopPropagation = () => {
7021
- if (nativeEvent.stopPropagation) nativeEvent.stopPropagation();
7022
- e.isPropagationStopped = true;
7023
- };
7024
- e.persist = () => { e.isPersistent = true; };
7006
+ const e = _pool.length ? _pool.pop() : {};
7007
+
7008
+ e.nativeEvent = nativeEvent;
7009
+ e.type = nativeEvent.type;
7010
+ e.target = nativeEvent.target || nativeEvent.srcElement || null;
7011
+ e.currentTarget = currentTarget || nativeEvent.currentTarget || null;
7012
+ e.timeStamp = nativeEvent.timeStamp || Date.now();
7013
+
7014
+ // Standard flags
7015
+ e.defaultPrevented = !!nativeEvent.defaultPrevented;
7016
+ e.isPropagationStopped = false;
7017
+ e.isPersistent = false;
7018
+
7019
+ // Common DOM meta when present
7020
+ e.bubbles = !!nativeEvent.bubbles;
7021
+ e.cancelable = !!nativeEvent.cancelable;
7022
+ e.composed = !!nativeEvent.composed;
7023
+ e.detail = nativeEvent.detail;
7024
+
7025
+ e.relatedTarget =
7026
+ nativeEvent.relatedTarget ||
7027
+ (nativeEvent.fromElement ? nativeEvent.fromElement : null) ||
7028
+ (nativeEvent.toElement ? nativeEvent.toElement : null) ||
7029
+ null;
7030
+
7031
+ // Modifier keys
7032
+ e.altKey = !!nativeEvent.altKey;
7033
+ e.ctrlKey = !!nativeEvent.ctrlKey;
7034
+ e.metaKey = !!nativeEvent.metaKey;
7035
+ e.shiftKey = !!nativeEvent.shiftKey;
7036
+
7037
+ // preventDefault / stopPropagation
7038
+ e.isDefaultPrevented = () => e.defaultPrevented;
7039
+ e.preventDefault = () => {
7040
+ if (nativeEvent.preventDefault) nativeEvent.preventDefault();
7041
+ e.defaultPrevented = true;
7042
+ };
7043
+
7044
+ e.stopPropagation = () => {
7045
+ if (nativeEvent.stopPropagation) nativeEvent.stopPropagation();
7046
+ e.isPropagationStopped = true;
7047
+ };
7025
7048
 
7026
- // Convenience: normalized values for common props (touch, key, target value)
7027
- e.nativeEvent = nativeEvent;
7028
- e.key = nativeEvent.key || null;
7029
- e.code = nativeEvent.code || null;
7030
- e.which = nativeEvent.which || nativeEvent.keyCode || null;
7049
+ e.persist = () => { e.isPersistent = true; };
7050
+
7051
+ // Key/mouse/pointer related
7052
+ e.key = nativeEvent.key || null;
7053
+ e.code = nativeEvent.code || null;
7054
+ e.which = nativeEvent.which ?? nativeEvent.keyCode ?? null;
7055
+
7056
+ // Mouse / Pointer button state normalization
7057
+ // - "button" often is 0/1/2 for mouse; for pointer events it's also present.
7058
+ // - "buttons" is a bitmask of which buttons are down (often important for drag).
7059
+ e.button = nativeEvent.button ?? null;
7060
+ e.buttons = nativeEvent.buttons ?? null;
7061
+
7062
+ // Pointer identity + type (critical for multi-touch / pointer capture)
7063
+ e.pointerId = nativeEvent.pointerId ?? null;
7064
+ e.pointerType = nativeEvent.pointerType ?? null;
7065
+ e.isPrimary = nativeEvent.isPrimary ?? null;
7066
+
7067
+ // Coordinates: React/SyntheticEvent uses these directly (React provides them too)
7068
+ e.clientX = nativeEvent.clientX ?? 0;
7069
+ e.clientY = nativeEvent.clientY ?? 0;
7070
+ e.screenX = nativeEvent.screenX ?? 0;
7071
+ e.screenY = nativeEvent.screenY ?? 0;
7072
+
7073
+ // pageX/pageY might be derived; keep if present
7074
+ // (Using pageX/pageY only if you need it; most drag uses clientX/Y.)
7075
+ e.pageX = nativeEvent.pageX ?? null;
7076
+ e.pageY = nativeEvent.pageY ?? null;
7077
+
7078
+ // movementX/movementY exist on some mouse events; harmless if absent
7079
+ e.movementX = nativeEvent.movementX ?? 0;
7080
+ e.movementY = nativeEvent.movementY ?? 0;
7081
+
7082
+ // Pressure/tilt (Pointer Events)
7083
+ e.pressure = nativeEvent.pressure ?? null;
7084
+ e.tiltX = nativeEvent.tiltX ?? null;
7085
+ e.tiltY = nativeEvent.tiltY ?? null;
7086
+ e.width = nativeEvent.width ?? null;
7087
+ e.height = nativeEvent.height ?? null;
7088
+
7089
+ // If the native event has a pointer capture API, you can forward bind/capture calls.
7090
+ // (These are methods on the EventTarget, not on the event, but keeping fields is enough.)
7091
+ e.pointerEventsSupported = POINTER_TYPES.includes(e.pointerType);
7092
+
7093
+ // For input-like events normalize value and checked
7094
+ try {
7095
+ const tgt = e.target;
7096
+ e.value = tgt && ("value" in tgt) ? tgt.value : undefined;
7097
+ e.checked = tgt && ("checked" in tgt) ? tgt.checked : undefined;
7098
+
7099
+ // Some input events have selectionStart/selectionEnd etc.
7100
+ e.selectionStart = tgt && ("selectionStart" in tgt) ? tgt.selectionStart : undefined;
7101
+ e.selectionEnd = tgt && ("selectionEnd" in tgt) ? tgt.selectionEnd : undefined;
7102
+ } catch (err) {
7103
+ e.value = undefined;
7104
+ e.checked = undefined;
7105
+ e.selectionStart = undefined;
7106
+ e.selectionEnd = undefined;
7107
+ }
7031
7108
 
7032
- // For input-like events normalize value and checked
7033
- try {
7034
- const tgt = e.target;
7035
- e.value = tgt && ('value' in tgt) ? tgt.value : undefined;
7036
- e.checked = tgt && ('checked' in tgt) ? tgt.checked : undefined;
7037
- } catch (err) {
7038
- e.value = undefined;
7039
- e.checked = undefined;
7040
- }
7109
+ // Touch lists (useful for touch events; sometimes pointerType === "touch" uses pointer events instead)
7110
+ // Keep references only if they exist.
7111
+ e.touches = nativeEvent.touches || null;
7112
+ e.targetTouches = nativeEvent.targetTouches || null;
7113
+ e.changedTouches = nativeEvent.changedTouches || null;
7041
7114
 
7042
- // composedPath helper
7043
- e.path = typeof nativeEvent.composedPath === 'function' ? nativeEvent.composedPath() : [e.target];
7115
+ // composedPath helper
7116
+ e.path = typeof nativeEvent.composedPath === "function"
7117
+ ? nativeEvent.composedPath()
7118
+ : [e.target];
7044
7119
 
7045
- return e;
7120
+ // Additional keyboard extras when present
7121
+ e.repeat = nativeEvent.repeat ?? false;
7122
+ e.location = nativeEvent.location ?? 0;
7123
+
7124
+ return e;
7046
7125
  }
7047
7126
 
7048
7127
  function releaseSyntheticEvent(e) {
7049
- if (e && !e.isPersistent) {
7050
- // Clean up references to avoid leaks
7051
- e.nativeEvent = null;
7052
- e.type = null;
7053
- e.target = null;
7054
- e.currentTarget = null;
7055
- e.timeStamp = 0;
7056
- e.defaultPrevented = false;
7057
- e.isPropagationStopped = false;
7058
- e.isPersistent = false;
7059
- e.isDefaultPrevented = null;
7060
- e.preventDefault = null;
7061
- e.stopPropagation = null;
7062
- e.persist = null;
7063
- e.key = null;
7064
- e.code = null;
7065
- e.which = null;
7066
- e.value = undefined;
7067
- e.checked = undefined;
7068
- e.path = null;
7069
-
7070
- if (_pool.length < MAX_POOL_SIZE) _pool.push(e);
7071
- }
7128
+ if (e && !e.isPersistent) {
7129
+ e.nativeEvent = null;
7130
+ e.type = null;
7131
+ e.target = null;
7132
+ e.currentTarget = null;
7133
+ e.timeStamp = 0;
7134
+
7135
+ e.defaultPrevented = false;
7136
+ e.isPropagationStopped = false;
7137
+
7138
+ e.isPersistent = false;
7139
+
7140
+ e.isDefaultPrevented = null;
7141
+ e.preventDefault = null;
7142
+ e.stopPropagation = null;
7143
+ e.persist = null;
7144
+
7145
+ e.bubbles = false;
7146
+ e.cancelable = false;
7147
+ e.composed = false;
7148
+ e.detail = undefined;
7149
+ e.relatedTarget = null;
7150
+
7151
+ // modifier keys
7152
+ e.altKey = false;
7153
+ e.ctrlKey = false;
7154
+ e.metaKey = false;
7155
+ e.shiftKey = false;
7156
+
7157
+ // pointer/mouse fields
7158
+ e.key = null;
7159
+ e.code = null;
7160
+ e.which = null;
7161
+
7162
+ e.button = null;
7163
+ e.buttons = null;
7164
+ e.pointerId = null;
7165
+ e.pointerType = null;
7166
+ e.isPrimary = null;
7167
+
7168
+ e.clientX = 0;
7169
+ e.clientY = 0;
7170
+ e.screenX = 0;
7171
+ e.screenY = 0;
7172
+ e.pageX = null;
7173
+ e.pageY = null;
7174
+
7175
+ e.movementX = 0;
7176
+ e.movementY = 0;
7177
+
7178
+ e.pressure = null;
7179
+ e.tiltX = null;
7180
+ e.tiltY = null;
7181
+ e.width = null;
7182
+ e.height = null;
7183
+
7184
+ // input-like
7185
+ e.value = undefined;
7186
+ e.checked = undefined;
7187
+ e.selectionStart = undefined;
7188
+ e.selectionEnd = undefined;
7189
+
7190
+ // touch lists
7191
+ e.touches = null;
7192
+ e.targetTouches = null;
7193
+ e.changedTouches = null;
7194
+
7195
+ e.path = null;
7196
+ e.repeat = false;
7197
+ e.location = 0;
7198
+
7199
+ if (_pool.length < MAX_POOL_SIZE) _pool.push(e);
7200
+ }
7072
7201
  }
7073
7202
 
7203
+
7074
7204
  // Main wrapper factory
7075
7205
  // fn: function(syntheticEvent) { ... }
7076
7206
  // opts: { capture: bool, passive: bool, once: bool, stopPropagationOnTrueReturn: bool }
@@ -7106,7 +7236,7 @@ function addWrappedEventListener(target, type, fn, options = {}) {
7106
7236
  }
7107
7237
 
7108
7238
 
7109
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9ldmVudHMuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9ldmVudHMuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErQkM7SUFDRywrREFBK0Q7Ozt3QkFHM0MsSUFBSTsrQkFDRyxzREFBc0Q7O3VCQUU5RCx3QkFBeUIsZUFBYzs7Ozs7SUFLMUQsZ0VBQWdFO3lDQUMzQixHQUFHOzs7U0FHbkMsS0FBSzthQUNEOzs7WUFHRDs7Ozs7Q0FLWDs7OztxQ0FJb0MsNkJBQTZCO0VBQ2hFO29DQUNrQyxLQUFLOzs7Ozs7aURBTVE7eUJBQ3hCOzs7O3lCQUlBO3FCQUNKLE1BQU07TUFDckIsdURBQXVEOzs7c0JBR3ZDLE1BQU07TUFDdEIseURBQXlEOzs7Y0FHakQsTUFBTTs7RUFFbEI7Ozs7OztFQU1BO01BQ0k7O29CQUVjO3NCQUNFO1VBQ1osTUFBTTs7Ozs7RUFLZDtvRkFDa0Y7Ozs7O3NDQUs5QyxJQUFJO0tBQ3JDLHVCQUF1QjtHQUN6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFvQkcseUNBQXlDOzs7O0NBSTlDO0NBQ0E7Q0FDQTs2QkFDNEIsV0FBWSxLQUFJO1FBQ3JDOzt5QkFFaUIsY0FBYzs7O3NDQUdEOztPQUUvQjtxQkFDYzs7SUFFakI7T0FDRyxpREFBaUQ7MkJBQzdCOzthQUVkO0lBQ1Q7eUJBQ3FCOzs7OztDQUt4Qjt3Q0FDdUMsNEJBQTZCLEtBQUk7OEJBQzNDOzt5QkFFTDtFQUN2QjtTQUNPLGdDQUFnQyJ9
7239
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9ldmVudHMuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9ldmVudHMuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErQkM7SUFDRywrREFBK0Q7Ozt3QkFHM0MsSUFBSTsrQkFDRyxzREFBc0Q7O3VCQUU5RCx3QkFBeUIsZUFBYzs7Ozs7SUFLMUQsZ0VBQWdFO3lDQUMzQixHQUFHOzs7U0FHbkMsS0FBSzthQUNEOzs7WUFHRDs7Ozs7Q0FLWDs7Ozs7cUNBS29DLDZCQUE2QjtxQ0FDN0IsS0FBSzs7Ozs7O2tEQU1ROztHQUUvQzs7Ozs7R0FLQTs7Ozs7Ozs7S0FRRTtLQUNBOzs7R0FHRjs7Ozs7O0dBTUE7MEJBQ3VCO3NCQUNKLE1BQU07UUFDcEIsdURBQXVEOzs7O3VCQUl4QyxNQUFNO1FBQ3JCLHlEQUF5RDs7OztlQUlsRCxNQUFNOztHQUVsQjs7Ozs7R0FLQTtHQUNBO0dBQ0E7Ozs7R0FJQTs7Ozs7R0FLQTs7Ozs7O0dBTUE7R0FDQTs7OztHQUlBOzs7O0dBSUE7Ozs7Ozs7R0FPQTtHQUNBO29EQUNpRDs7R0FFakQ7T0FDSTs7c0JBRWU7d0JBQ0U7O0tBRW5COytCQUMwQjs2QkFDRjtXQUNsQixNQUFNOzs7Ozs7O0dBT2Q7R0FDQTs7Ozs7R0FLQTs7K0JBRTRCOzs7R0FHNUI7Ozs7Ozs7c0NBT21DLElBQUk7TUFDcEMsdUJBQXVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXVCeEI7Ozs7OztLQU1BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0EyQkE7Ozs7OztLQU1BOzs7Ozs7Ozs7UUFTRyx5Q0FBeUM7Ozs7O0NBS2hEO0NBQ0E7Q0FDQTs2QkFDNEIsV0FBWSxLQUFJO1FBQ3JDOzt5QkFFaUIsY0FBYzs7O3NDQUdEOztPQUUvQjtxQkFDYzs7SUFFakI7T0FDRyxpREFBaUQ7MkJBQzdCOzthQUVkO0lBQ1Q7eUJBQ3FCOzs7OztDQUt4Qjt3Q0FDdUMsNEJBQTZCLEtBQUk7OEJBQzNDOzt5QkFFTDtFQUN2QjtTQUNPLGdDQUFnQyJ9
7110
7240
  ;// ./src/redux.jsx
7111
7241
  /*
7112
7242
 
@@ -7374,6 +7504,7 @@ function getErrorLocation(err) // works for both error and error-event, and also
7374
7504
  // Chrome/Edge: at fn (eval:xxx:LINE:COL)
7375
7505
  // Firefox: fn@eval:xxx:LINE:COL
7376
7506
  // Safari: @eval:xxx:LINE:COL (sometimes)
7507
+ /** @ignore */
7377
7508
  function parseEvalLocationFromStack(stack, urlPrefix = "eval:/") {
7378
7509
  const raw = typeof stack === "string" ? stack : String(stack || "");
7379
7510
  const lines = raw.split(/\r?\n/);
@@ -7441,34 +7572,36 @@ function scanBlockLabels(code, path)
7441
7572
  * Debug tool to get the Lilact traced location of an error. It can also produce some block based stack trace
7442
7573
  * if `Lilact.transpilerConfig.enableLabelStack` is set to `true` before loading the script. This is `false`
7443
7574
  * by default for efficiency.
7575
+ *
7576
+ * @param error - The error object
7444
7577
  *
7445
7578
  * @returns A new object that includes `path`, `row`, `col`, `msg`, `name`, and optional `stack`.
7446
7579
  * The exception itself is stored as `err`.
7447
7580
  */
7448
- function traceError(err)
7581
+ function traceError(error)
7449
7582
  {
7450
- if(err?.is_traced) {
7451
- return err;
7583
+ if(error?.is_traced) {
7584
+ return error;
7452
7585
  }
7453
7586
 
7454
- const loc = parseEvalLocationFromStack(err.stack);
7587
+ const loc = parseEvalLocationFromStack(error.stack);
7455
7588
 
7456
7589
  const obj = {
7457
- fileName: loc.url?.slice(6) || err.fileName,
7590
+ fileName: loc.url?.slice(6) || error.fileName,
7458
7591
 
7459
7592
  lineNumber: loc.line,
7460
7593
  columnNumber: loc.col,
7461
7594
 
7462
- message: err.message,
7463
- name: err.name,
7595
+ message: error.message,
7596
+ name: error.name,
7464
7597
 
7465
- stack: err.stack,
7466
- _error: err,
7598
+ stack: error.stack,
7599
+ _error: error,
7467
7600
 
7468
7601
  is_traced: true
7469
7602
  };
7470
7603
 
7471
- if( err.name!=='JSXParseError' ) {
7604
+ if( error.name!=='JSXParseError' ) {
7472
7605
 
7473
7606
  let mps;
7474
7607
 
@@ -7481,18 +7614,18 @@ function traceError(err)
7481
7614
  obj.lineNumber = mloc.line;
7482
7615
  obj.columnNumber = mloc.col;
7483
7616
  }
7484
- else if( err.lilact_trace!==undefined) {
7617
+ else if( error.lilact_trace!==undefined) {
7485
7618
 
7486
- let loc = getErrorLocation(err);
7619
+ let loc = getErrorLocation(error);
7487
7620
 
7488
7621
  let mps;
7489
7622
  let blk;
7490
7623
 
7491
- if(typeof(err.lilact_trace)==='object') {
7492
- blk = Lilact.blocks_info.labels[err.lilact_trace[0]];
7624
+ if(typeof(error.lilact_trace)==='object') {
7625
+ blk = Lilact.blocks_info.labels[error.lilact_trace[0]];
7493
7626
  }
7494
7627
  else {
7495
- blk = Lilact.blocks_info.labels[err.lilact_trace];
7628
+ blk = Lilact.blocks_info.labels[error.lilact_trace];
7496
7629
  }
7497
7630
 
7498
7631
  if(blk) {
@@ -7510,8 +7643,8 @@ function traceError(err)
7510
7643
 
7511
7644
  }
7512
7645
  else {
7513
- const loc = getErrorLocation(err);
7514
- if(err.fileName) obj.fileName = err.fileName;
7646
+ const loc = getErrorLocation(error);
7647
+ if(error.fileName) obj.fileName = error.fileName;
7515
7648
  obj.lineNumber = loc.line;
7516
7649
  obj.columnNumber = loc.col;
7517
7650
  }
@@ -7535,14 +7668,15 @@ function traceError(err)
7535
7668
  * Lilact.globalErrorHandler(e);
7536
7669
  * });
7537
7670
  * `
7671
+ * @param error - The error object
7538
7672
  *
7539
7673
  */
7540
- function globalErrorHandler(err)
7674
+ function globalErrorHandler(error)
7541
7675
  {
7542
7676
  Lilact.pauseTimers();
7543
- if(err.error) err = err.error;
7677
+ if(error.error) error = error.error;
7544
7678
 
7545
- err = Lilact.traceError(err);
7679
+ error = Lilact.traceError(error);
7546
7680
 
7547
7681
  const cls = Lilact.emotion.css(`
7548
7682
  background: linear-gradient(135deg, #fff2f2d4, #ffffffd4);
@@ -7570,11 +7704,11 @@ function globalErrorHandler(err)
7570
7704
  //<b>⚠</b>
7571
7705
  el.innerHTML =
7572
7706
  `<h3 style=""><red>Error!</red></h3>
7573
- <b>${err.fileName?'At '+err.fileName:''}
7574
- ${Number.isFinite(err.lineNumber)?": Line "+(err.lineNumber+1):""}</b><br><br>
7575
- <b>${err.name}</b>:&nbsp;<span>${err.message}</span><br><br>
7576
- ${Lilact.required_scripts[err.fileName]?'<code><pre></pre><pre><red></red></pre><pre></pre></code>':''}
7577
- ${err._error.componentStackLog?'<br>Component Stack:<br><code><pre>'+err._error.componentStackLog+'</pre></code>':''}
7707
+ <b>${error.fileName?'At '+error.fileName:''}
7708
+ ${Number.isFinite(error.lineNumber)?": Line "+(error.lineNumber+1):""}</b><br><br>
7709
+ <b>${error.name}</b>:&nbsp;<span>${error.message}</span><br><br>
7710
+ ${Lilact.required_scripts[error.fileName]?'<code><pre></pre><pre><red></red></pre><pre></pre></code>':''}
7711
+ ${error._error.componentStackLog?'<br>Component Stack:<br><code><pre>'+error._error.componentStackLog+'</pre></code>':''}
7578
7712
  `;
7579
7713
 
7580
7714
 
@@ -7582,16 +7716,16 @@ function globalErrorHandler(err)
7582
7716
 
7583
7717
  const pres = el.querySelectorAll('pre');
7584
7718
 
7585
- if(Lilact.required_scripts[err.fileName]) {
7586
- const lines = Lilact.required_scripts[err.fileName].code.split("\n");
7719
+ if(Lilact.required_scripts[error.fileName]) {
7720
+ const lines = Lilact.required_scripts[error.fileName].code.split("\n");
7587
7721
 
7588
- if(lines?.[err.lineNumber-1])
7589
- pres[0].innerText = lines[err.lineNumber-1];
7722
+ if(lines?.[error.lineNumber-1])
7723
+ pres[0].innerText = lines[error.lineNumber-1];
7590
7724
 
7591
- if(lines?.[err.lineNumber]) el.querySelector('pre red').innerText = lines[err.lineNumber];
7725
+ if(lines?.[error.lineNumber]) el.querySelector('pre red').innerText = lines[error.lineNumber];
7592
7726
 
7593
- if(lines?.[err.lineNumber+1])
7594
- pres[2].innerText = lines[err.lineNumber+1];
7727
+ if(lines?.[error.lineNumber+1])
7728
+ pres[2].innerText = lines[error.lineNumber+1];
7595
7729
  }
7596
7730
 
7597
7731
  el.showModal();
@@ -7604,7 +7738,7 @@ const blocks_info = { counter: 0, labels: {} };
7604
7738
  let error = null; // this is only to ease debuggin,
7605
7739
 
7606
7740
 
7607
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9lcnJvcnMuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9lcnJvcnMuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0NDOzswQkFFeUIsTUFBTTtDQUMvQjtJQUNHLCtFQUErRTs7OztVQUl6RTs7O2NBR0ksMEJBQTBCO0lBQ3BDLGVBQWU7V0FDUiw4QkFBOEI7OztJQUdyQyxRQUFRO1VBQ0YsZUFBZSx5QkFBeUI7Ozs7OztDQU1qRDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO29DQUNtQyw4QkFBOEI7eURBQ1Q7MEJBQzlCLEFBQUQ7O0dBRXZCO0dBQ0E7d0JBQ3FCOztPQUVqQixtQkFBbUI7d0JBQ0Y7UUFDaEIsY0FBZTs7eUJBRUU7UUFDakI7Ozs4QkFHc0I7bURBQ3FCOztRQUUzQyxlQUFnQixnQkFBZ0IscUNBQXNDLGdCQUFjO2NBQzlFOzs7O1VBSUosNEVBQTRFLFdBQVc7OztzQkFHM0UsSUFBSTtnQkFDVixXQUFZLEFBQUQ7OztxQkFHTjtDQUNwQjs7O0tBR0ksaUJBQWlCO0tBQ2pCO0tBQ0EsZUFBZ0Isa0NBQWlDOzs7OztJQUtsRDtTQUNLLDZCQUE4QixBQUFEOzs7O0NBSXJDO2dDQUMrQjtDQUMvQjt1QkFDc0IsY0FBZ0IsQUFBRDs7RUFFcEM7WUFDVTtFQUNULE9BQU87cUNBQzRCOzs7Ozs7OztDQVFyQzs7Ozs7Ozs7MkJBUTBCO0NBQzFCO0lBQ0csaUJBQWlCOzs7O3dDQUltQjs7Y0FFMUI7MkJBQ2E7Ozs7Ozs7Ozs7Ozs7O0lBY3ZCLCtCQUErQjs7OztLQUk5QixVQUFVOzs7OzRCQUlhOzs7OztVQUtsQixnQ0FBZ0M7OzhCQUVaOzs7OztNQUt4QixNQUFPLGdDQUErQjs7O1NBR25DOzs7O01BSUgsTUFBTTs7Ozs7O3NCQU1VOzs7Ozs7OztPQVFmOytCQUN3QjtLQUMxQjs7Ozs7Ozs7OztDQVVKOzs7Ozs7Ozs7Ozs7Ozs7O21DQWdCa0M7Q0FDbEM7b0JBQ21CO0lBQ2hCOzt5QkFFcUI7O2dDQUVPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQ0FvQkc7OztFQUdqQzs7Ozs7Ozs7Ozs7MkJBV3lCOztrQ0FFTzs7SUFFOUIsd0NBQXdDO2lFQUNxQjs7S0FFNUQ7OztLQUdBLDBDQUEwQzs7S0FFMUM7Ozs7Y0FJUzs7O0NBR2I7NEJBQzJCLHNCQUFzQjs7Q0FFakQ7MEJBQ3lCIn0=
7741
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9lcnJvcnMuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9lcnJvcnMuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0NDOzswQkFFeUIsTUFBTTtDQUMvQjtJQUNHLCtFQUErRTs7OztVQUl6RTs7O2NBR0ksMEJBQTBCO0lBQ3BDLGVBQWU7V0FDUiw4QkFBOEI7OztJQUdyQyxRQUFRO1VBQ0YsZUFBZSx5QkFBeUI7Ozs7OztDQU1qRDtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7b0NBQ21DLDhCQUE4Qjt5REFDVDswQkFDOUIsQUFBRDs7R0FFdkI7R0FDQTt3QkFDcUI7O09BRWpCLG1CQUFtQjt3QkFDRjtRQUNoQixjQUFlOzt5QkFFRTtRQUNqQjs7OzhCQUdzQjttREFDcUI7O1FBRTNDLGVBQWdCLGdCQUFnQixxQ0FBc0MsZ0JBQWM7Y0FDOUU7Ozs7VUFJSiw0RUFBNEUsV0FBVzs7O3NCQUczRSxJQUFJO2dCQUNWLFdBQVksQUFBRDs7O3FCQUdOO0NBQ3BCOzs7S0FHSSxpQkFBaUI7S0FDakI7S0FDQSxlQUFnQixrQ0FBaUM7Ozs7O0lBS2xEO1NBQ0ssNkJBQThCLEFBQUQ7Ozs7Q0FJckM7Z0NBQytCO0NBQy9CO3VCQUNzQixjQUFnQixBQUFEOztFQUVwQztZQUNVO0VBQ1QsT0FBTztxQ0FDNEI7Ozs7Ozs7O0NBUXJDOzs7Ozs7Ozs7OzJCQVUwQjtDQUMxQjtJQUNHLG1CQUFtQjs7Ozt3Q0FJaUI7O2NBRTFCOzJCQUNhOzs7Ozs7Ozs7Ozs7OztJQWN2QixpQ0FBaUM7Ozs7S0FJaEMsVUFBVTs7Ozs0QkFJYTs7Ozs7VUFLbEIsa0NBQWtDOzs4QkFFZDs7Ozs7TUFLeEIsTUFBTyxrQ0FBaUM7OztTQUdyQzs7OztNQUlILE1BQU07Ozs7OztzQkFNVTs7Ozs7Ozs7T0FRZjsrQkFDd0I7S0FDMUI7Ozs7Ozs7Ozs7Q0FVSjs7Ozs7Ozs7Ozs7Ozs7Ozs7bUNBaUJrQztDQUNsQztvQkFDbUI7SUFDaEI7OzJCQUV1Qjs7Z0NBRUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DQW9CRzs7O0VBR2pDOzs7Ozs7Ozs7OzsyQkFXeUI7O2tDQUVPOztJQUU5QiwwQ0FBMEM7bUVBQ3FCOztLQUU5RDs7O0tBR0EsNENBQTRDOztLQUU1Qzs7OztjQUlTOzs7Q0FHYjs0QkFDMkIsc0JBQXNCOztDQUVqRDswQkFDeUIifQ==
7608
7742
  ;// ./src/router.jsx
7609
7743
  /*
7610
7744
 
@@ -7791,6 +7925,8 @@ function NavLink({
7791
7925
  className,
7792
7926
  activeStyle,
7793
7927
  style,
7928
+ target,
7929
+ download,
7794
7930
  replace = false,
7795
7931
  state,
7796
7932
  children,
@@ -7816,7 +7952,7 @@ function NavLink({
7816
7952
  }
7817
7953
 
7818
7954
  return (
7819
- createComponent( "a", { ...rest, "href": href, "onClick": handleClick, "className": finalClassName, "style": mergedStyle, "aria-current": isActive ? "page" : undefined }, typeof children === "function" ? children({ isActive }) : children )
7955
+ createComponent( "a", { ...rest, "href": href, "onClick": handleClick, "target": target, "download": download, "className": finalClassName, "style": mergedStyle, "aria-current": isActive ? "page" : undefined }, typeof children === "function" ? children({ isActive }) : children )
7820
7956
  );
7821
7957
  }
7822
7958
 
@@ -7902,7 +8038,7 @@ function Routes({ children }) {
7902
8038
 
7903
8039
 
7904
8040
 
7905
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9yb3V0ZXIuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9yb3V0ZXIuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThCQzs7UUFFTztRQUNBOztvQ0FFNEI7bUNBQ0EsQUFBRCxVQUFXOztDQUU3QzttQkFDa0IsUUFBUSw4QkFBK0Isc0JBQXNCLG9CQUFvQjs7Q0FFbkc7Ozs7Ozs7MkJBTzJCLEFBQUQsOEJBQThCO3VCQUNsQyxNQUFNOzt5QkFFSjttQ0FDVSxVQUFXO3NEQUNRO2tEQUNKO1VBQ3hDOzs7Ozs7OzswQ0FRZ0M7V0FDOUIsQUFBRCxNQUFPO21CQUNFLGlCQUFpQixZQUFhOzt5QkFFeEI7eUJBQ0E7O0VBRXZCO1VBQ1E7O1NBRUQsTUFBTTs2QkFDYzs2QkFDQTs7Ozs4QkFJQyxBQUFELElBQU0sNkJBQTZCLFFBQU87S0FDbEUseUJBQXlCO2FBQ2pCOzs7O3VCQUlVO3FCQUNGOztLQUVoQiw4QkFBK0IsQUFBRDt3QkFDVixBQUFEOzthQUVYLFlBQWE7OztTQUdsQiwyQ0FBaUU7OztDQUd6RTs7Ozs7NEJBSzJCLEdBQUc7d0JBQ1A7S0FDbkIsc0JBQXNCOzs7O0NBSTFCOzs7Ozs0QkFLMkIsR0FBRzt3QkFDUDtLQUNuQixzQkFBc0I7OzttQkFHUixHQUFHO3dCQUNFO3VCQUNEOzs7Q0FHdEI7Ozs7Ozs7Ozs7Ozs7OztxQkFlcUIsQUFBRCxpR0FBaUc7OEJBQ3hGOzhCQUNBO3NCQUNSLElBQUk7TUFDcEIsaUJBQWlCO01BQ2pCOzs7R0FHRjs7O21CQUdlO1dBQ1IsSUFBSzs7U0FFUDtFQUNOLCtIQUNDOzs7O3VCQUttQixJQUFJO0tBQ3RCO2tCQUNjLEFBQUQ7Ozs7Q0FJakI7Ozs7Ozs7Ozs7Ozs7Ozt3QkFld0IsQUFBRDs7Ozs7Ozs7Ozs7O0lBWXBCOzhCQUMwQjs4QkFDQTtzREFDd0IsY0FBYyxXQUFXOztzQ0FFekMsK0JBQStCLDRCQUE0Qix3QkFBd0IsYUFBYzt1RUFDL0QsQUFBRDtzRkFDZSxjQUFjOzJEQUN4QyxBQUFEO2lDQUMxQixLQUFLLGlCQUFrQixTQUFRLGVBQWdCOzhCQUNsRDs7c0JBRVIsSUFBSTtNQUNwQixpQkFBaUI7TUFDakI7bUJBQ2E7V0FDUixJQUFLOzs7U0FHUDtFQUNOLGlKQUNDLHlDQUEyQyxBQUFEOzs7O0NBSzdDO0NBQ0E7cUJBQ29CLFVBQVU7O0VBRTdCO3lDQUN3QyxBQUFELG1CQUFvQixBQUFEO1dBQ2hELEFBQUQsd0JBQXlCLGFBQWE7a0JBQzlCOzs7V0FHUCxBQUFELHNCQUFzQjs7MEJBRVA7U0FDakI7OzttQkFHVSxvQkFBb0I7S0FDbEMseUJBQXlCLHlCQUF5QixNQUFNO1FBQ3JELG1DQUFtQztzQkFDckI7S0FDakIsWUFBWTtpQkFDQTtvQkFDSSxBQUFELFVBQVcsOEJBQStCO0VBQzVEO0tBQ0csbUNBQW1DOzhEQUNzQjs7U0FFckQ7OztDQUdSO0NBQ0E7Ozs7Ozs7O3NCQVFzQixBQUFELHFDQUFxQztFQUN6RDs7O0NBR0Q7Ozs7Ozt1QkFNdUIsQUFBRCxlQUFlOzhCQUNSOztFQUU1QjtpQ0FDK0I7O01BRTNCLG9DQUFvQzs7R0FFdkM7Ozs7O1NBS00sK0JBQStCO01BQ2xDLFVBQVU7SUFDWjtPQUNHLFVBQVU7WUFDTCxxQkFBMEM7Y0FDeEMsY0FBYztLQUN2QjtZQUNPLHFCQUEwQyxFQUFRO1dBQ25EO1lBQ0MscUJBQTBDOzs7OztFQUtwRCJ9
8041
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9yb3V0ZXIuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9yb3V0ZXIuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThCQzs7UUFFTztRQUNBOztvQ0FFNEI7bUNBQ0EsQUFBRCxVQUFXOztDQUU3QzttQkFDa0IsUUFBUSw4QkFBK0Isc0JBQXNCLG9CQUFvQjs7Q0FFbkc7Ozs7Ozs7MkJBTzJCLEFBQUQsOEJBQThCO3VCQUNsQyxNQUFNOzt5QkFFSjttQ0FDVSxVQUFXO3NEQUNRO2tEQUNKO1VBQ3hDOzs7Ozs7OzswQ0FRZ0M7V0FDOUIsQUFBRCxNQUFPO21CQUNFLGlCQUFpQixZQUFhOzt5QkFFeEI7eUJBQ0E7O0VBRXZCO1VBQ1E7O1NBRUQsTUFBTTs2QkFDYzs2QkFDQTs7Ozs4QkFJQyxBQUFELElBQU0sNkJBQTZCLFFBQU87S0FDbEUseUJBQXlCO2FBQ2pCOzs7O3VCQUlVO3FCQUNGOztLQUVoQiw4QkFBK0IsQUFBRDt3QkFDVixBQUFEOzthQUVYLFlBQWE7OztTQUdsQiwyQ0FBaUU7OztDQUd6RTs7Ozs7NEJBSzJCLEdBQUc7d0JBQ1A7S0FDbkIsc0JBQXNCOzs7O0NBSTFCOzs7Ozs0QkFLMkIsR0FBRzt3QkFDUDtLQUNuQixzQkFBc0I7OzttQkFHUixHQUFHO3dCQUNFO3VCQUNEOzs7Q0FHdEI7Ozs7Ozs7Ozs7Ozs7OztxQkFlcUIsQUFBRCxpR0FBaUc7OEJBQ3hGOzhCQUNBO3NCQUNSLElBQUk7TUFDcEIsaUJBQWlCO01BQ2pCOzs7R0FHRjs7O21CQUdlO1dBQ1IsSUFBSzs7U0FFUDtFQUNOLCtIQUNDOzs7O3VCQUttQixJQUFJO0tBQ3RCO2tCQUNjLEFBQUQ7Ozs7Q0FJakI7Ozs7Ozs7Ozs7Ozs7Ozt3QkFld0IsQUFBRDs7Ozs7Ozs7Ozs7Ozs7SUFjcEI7OEJBQzBCOzhCQUNBO3NEQUN3QixjQUFjLFdBQVc7O3NDQUV6QywrQkFBK0IsNEJBQTRCLHdCQUF3QixhQUFjO3VFQUMvRCxBQUFEO3NGQUNlLGNBQWM7MkRBQ3hDLEFBQUQ7aUNBQzFCLEtBQUssaUJBQWtCLFNBQVEsZUFBZ0I7OEJBQ2xEOztzQkFFUixJQUFJO01BQ3BCLGlCQUFpQjtNQUNqQjttQkFDYTtXQUNSLElBQUs7OztTQUdQO0VBQ04seUxBQ0MseUNBQTJDLEFBQUQ7Ozs7Q0FLN0M7Q0FDQTtxQkFDb0IsVUFBVTs7RUFFN0I7eUNBQ3dDLEFBQUQsbUJBQW9CLEFBQUQ7V0FDaEQsQUFBRCx3QkFBeUIsYUFBYTtrQkFDOUI7OztXQUdQLEFBQUQsc0JBQXNCOzswQkFFUDtTQUNqQjs7O21CQUdVLG9CQUFvQjtLQUNsQyx5QkFBeUIseUJBQXlCLE1BQU07UUFDckQsbUNBQW1DO3NCQUNyQjtLQUNqQixZQUFZO2lCQUNBO29CQUNJLEFBQUQsVUFBVyw4QkFBK0I7RUFDNUQ7S0FDRyxtQ0FBbUM7OERBQ3NCOztTQUVyRDs7O0NBR1I7Q0FDQTs7Ozs7Ozs7c0JBUXNCLEFBQUQscUNBQXFDO0VBQ3pEOzs7Q0FHRDs7Ozs7O3VCQU11QixBQUFELGVBQWU7OEJBQ1I7O0VBRTVCO2lDQUMrQjs7TUFFM0Isb0NBQW9DOztHQUV2Qzs7Ozs7U0FLTSwrQkFBK0I7TUFDbEMsVUFBVTtJQUNaO09BQ0csVUFBVTtZQUNMLHFCQUEwQztjQUN4QyxjQUFjO0tBQ3ZCO1lBQ08scUJBQTBDLEVBQVE7V0FDbkQ7WUFDQyxxQkFBMEM7Ozs7O0VBS3BEIn0=
7906
8042
  ;// ./src/accessories.jsx
7907
8043
  /*
7908
8044
 
@@ -7987,8 +8123,6 @@ function Spinner({
7987
8123
  /**
7988
8124
  * ErrorBoundary component that catches errors in its child component tree and renders a fallback UI.
7989
8125
  *
7990
- * @component
7991
- *
7992
8126
  * @param {Object} props
7993
8127
  * @param {any} props.children - The component subtree to render and monitor for runtime errors.
7994
8128
  * @param {any} props.Fallback - UI to render when an error is caught. Receives two props:
@@ -8025,8 +8159,6 @@ class ErrorBoundary extends Component {
8025
8159
  * Suspense - boundary for asynchronous loading.
8026
8160
  * Shows a fallback UI while descendant thrown promises are pending, and renders real content once resolved.
8027
8161
  *
8028
- * @component Suspense
8029
- *
8030
8162
  * @param {Object} props
8031
8163
  * @param {any} props.fallback - Element shown while descendants are loading.
8032
8164
  * @param {any} props.children - Suspended children.
@@ -8186,7 +8318,7 @@ class Suspense extends Component
8186
8318
 
8187
8319
 
8188
8320
 
8189
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9hY2Nlc3Nvcmllcy5qc3giLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL2FjY2Vzc29yaWVzLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUE4QlE7UUFDQTtRQUNBOztDQUVQOzs7Ozs7Ozs7Ozs7O3dCQWF3QixBQUFEOzs7Ozs7O0lBT3BCO3FCQUNpQjs7VUFFWDtJQUNMOzs7Ozs7eUJBWUU7Ozs7Ozs7cUJBV0EsRUFBTzs7Ozs7Ozs7O0NBU2I7Ozs7Ozs7Ozs7Ozs7OENBYTZDOzs7VUFHcEM7O2lDQUV1QixRQUFRO1VBQy9COzs7bUJBR1MsY0FBYztTQUN4QjtPQUNGLEtBQUssaUJBQWlCLHVCQUF1QixJQUFJLGVBQWU7OztVQUc3RCxtQkFBb0IsQUFBRDs7UUFFckIsR0FBRztTQUNGO01BQ0gsNkJBQTZCOzs7Ozs7Q0FNbEM7Ozs7Ozs7Ozs7Ozs7O0NBY0E7Ozt3QkFHdUI7O2FBRVgsUUFBUTs7UUFFYjtDQUNQO2dCQUNlOztDQUVmOzBCQUN5Qjs7Q0FFekI7O0NBRUE7O0NBRUE7Ozs7Q0FJQTtpQ0FDZ0MsUUFBUTtNQUNuQyxpQkFBa0IsVUFBUztJQUM3Qjs7O0dBR0Q7Ozs7Q0FJRjttQkFDa0IsUUFBUTtNQUNyQixrQkFBbUI7Ozs7TUFJbkIsaUJBQWtCOztHQUVyQjtvQkFDaUI7O0dBRWpCO01BQ0csMkJBQTJCOzBCQUNQO0lBQ3RCO09BQ0csbUJBQW1CO3dCQUNGOzs7d0NBR2lCLEFBQUQsTUFBTzs7b0NBRVY7aUJBQ2xCLEFBQUQ7Ozs7O0NBS2pCO3NCQUNxQixHQUFHO29CQUNMO3NCQUNFOzs7Q0FHckI7Y0FDYSxHQUFHO01BQ1gsbUJBQW1CO3VCQUNGOzs7TUFHakIscUJBQXFCO3VCQUNKOzs7OztDQUt0QjtnQkFDZSxVQUFVO01BQ3BCLGlCQUFrQjtvQkFDSjs7TUFFZCwyQkFBMkI7MEJBQ1A7T0FDbkIsbUJBQW1CO3dCQUNGOzs7d0NBR2lCLEFBQUQsTUFBTzs7b0NBRVY7aUJBQ2xCLEFBQUQ7Ozs7R0FJZjtxQkFDa0IsTUFBTTtPQUNwQixpQkFBa0IsWUFBVzt5QkFDWDs7SUFFckI7T0FDRywyQkFBMkI7S0FDN0I7UUFDRyxtQkFBbUI7eUJBQ0Y7O01BRW5CO21CQUNjLEFBQUQ7Ozs7S0FJZDs2QkFDd0IsS0FBSzsrQkFDSDs7UUFFdkIsa0JBQWtCO21CQUNOLEFBQUQ7WUFDUDtTQUNILHFCQUFxQjswQkFDSjs7OzRDQUdtQixBQUFELE1BQU87O21CQUU5QixBQUFEOzs7Ozs7R0FNakI7ZUFDWTs7O0NBR2Q7bUJBQ2tCLGNBQWM7TUFDM0Isa0JBQW1CO3NCQUNIOzs7Q0FHckI7UUFDTyxHQUFHO01BQ0wsNkJBQTZCO1dBQ3hCLEVBQUU7O1VBRUgsRUFBRSJ9
8321
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9hY2Nlc3Nvcmllcy5qc3giLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIvVXNlcnMvYXJhc2gvRGVza3RvcC9Qcm9qZWN0cy9MaWxhY3Qvc3JjL2FjY2Vzc29yaWVzLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUE4QlE7UUFDQTtRQUNBOztDQUVQOzs7Ozs7Ozs7Ozs7O3dCQWF3QixBQUFEOzs7Ozs7O0lBT3BCO3FCQUNpQjs7VUFFWDtJQUNMOzs7Ozs7eUJBWUU7Ozs7Ozs7cUJBV0EsRUFBTzs7Ozs7Ozs7O0NBU2I7Ozs7Ozs7Ozs7OzhDQVc2Qzs7O1VBR3BDOztpQ0FFdUIsUUFBUTtVQUMvQjs7O21CQUdTLGNBQWM7U0FDeEI7T0FDRixLQUFLLGlCQUFpQix1QkFBdUIsSUFBSSxlQUFlOzs7VUFHN0QsbUJBQW9CLEFBQUQ7O1FBRXJCLEdBQUc7U0FDRjtNQUNILDZCQUE2Qjs7Ozs7O0NBTWxDOzs7Ozs7Ozs7Ozs7Q0FZQTs7O3dCQUd1Qjs7YUFFWCxRQUFROztRQUViO0NBQ1A7Z0JBQ2U7O0NBRWY7MEJBQ3lCOztDQUV6Qjs7Q0FFQTs7Q0FFQTs7OztDQUlBO2lDQUNnQyxRQUFRO01BQ25DLGlCQUFrQixVQUFTO0lBQzdCOzs7R0FHRDs7OztDQUlGO21CQUNrQixRQUFRO01BQ3JCLGtCQUFtQjs7OztNQUluQixpQkFBa0I7O0dBRXJCO29CQUNpQjs7R0FFakI7TUFDRywyQkFBMkI7MEJBQ1A7SUFDdEI7T0FDRyxtQkFBbUI7d0JBQ0Y7Ozt3Q0FHaUIsQUFBRCxNQUFPOztvQ0FFVjtpQkFDbEIsQUFBRDs7Ozs7Q0FLakI7c0JBQ3FCLEdBQUc7b0JBQ0w7c0JBQ0U7OztDQUdyQjtjQUNhLEdBQUc7TUFDWCxtQkFBbUI7dUJBQ0Y7OztNQUdqQixxQkFBcUI7dUJBQ0o7Ozs7O0NBS3RCO2dCQUNlLFVBQVU7TUFDcEIsaUJBQWtCO29CQUNKOztNQUVkLDJCQUEyQjswQkFDUDtPQUNuQixtQkFBbUI7d0JBQ0Y7Ozt3Q0FHaUIsQUFBRCxNQUFPOztvQ0FFVjtpQkFDbEIsQUFBRDs7OztHQUlmO3FCQUNrQixNQUFNO09BQ3BCLGlCQUFrQixZQUFXO3lCQUNYOztJQUVyQjtPQUNHLDJCQUEyQjtLQUM3QjtRQUNHLG1CQUFtQjt5QkFDRjs7TUFFbkI7bUJBQ2MsQUFBRDs7OztLQUlkOzZCQUN3QixLQUFLOytCQUNIOztRQUV2QixrQkFBa0I7bUJBQ04sQUFBRDtZQUNQO1NBQ0gscUJBQXFCOzBCQUNKOzs7NENBR21CLEFBQUQsTUFBTzs7bUJBRTlCLEFBQUQ7Ozs7OztHQU1qQjtlQUNZOzs7Q0FHZDttQkFDa0IsY0FBYztNQUMzQixrQkFBbUI7c0JBQ0g7OztDQUdyQjtRQUNPLEdBQUc7TUFDTCw2QkFBNkI7V0FDeEIsRUFBRTs7VUFFSCxFQUFFIn0=
8190
8322
  ;// ./src/pane.jsx
8191
8323
 
8192
8324
 
@@ -8476,6 +8608,26 @@ var jsx = __webpack_require__(207);
8476
8608
  */
8477
8609
 
8478
8610
 
8611
+ /*
8612
+ note:
8613
+
8614
+ If you are reading the code, keep in my mind that in the development of `Lilact`,
8615
+ I have used a naming convention that is a little different from the standard way:
8616
+
8617
+ I use underscored all lowercase names for internal variables.
8618
+ I use all caps for constants that are used similar to C defined macros. e.g. shared
8619
+ symbols.
8620
+
8621
+ And I use the standard convention for exposed user space variables and arguments, and
8622
+ functions.
8623
+
8624
+ So if a variable name is in the format `aaa_bbb`, it means I am counting on it to be
8625
+ used internally. And if it is `AAA_BBB`, I'm counting on it to be constant in the whole
8626
+ application lifetime.
8627
+ */
8628
+
8629
+
8630
+
8479
8631
 
8480
8632
 
8481
8633
 
@@ -8521,7 +8673,7 @@ var jsx = __webpack_require__(207);
8521
8673
  const lilact_Lilact =
8522
8674
  {
8523
8675
 
8524
- VERSION: "beta.9",
8676
+ VERSION: "beta.10",
8525
8677
 
8526
8678
  // Configuration
8527
8679
 
@@ -8555,7 +8707,6 @@ const lilact_Lilact =
8555
8707
  emotion: emotion_css_development_esm_namespaceObject,
8556
8708
 
8557
8709
  }
8558
-
8559
8710
  globalThis.Lilact = lilact_Lilact;
8560
8711
  globalThis.createComponent = lilact_Lilact.createComponent;
8561
8712
  globalThis.Fragment = lilact_Lilact.Fragment;
@@ -8575,7 +8726,7 @@ window.addEventListener('error', (e) => {
8575
8726
 
8576
8727
 
8577
8728
 
8578
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9saWxhY3QuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9saWxhY3QuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQTZDUTtRQUNBOzs7UUFHQTs7Ozs7Ozs7Ozs7OztRQWFBO1FBQ0E7OztDQUdQOzs7Ozs7OztDQVFBOzs7O0VBSUM7Ozs2QkFHMkI7aUJBQ1o7O0VBRWY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JBOzs7Ozs7Ozs7OzswQkFXd0Isb0JBQXFCLE1BQU07bUJBQ2pDOzs7d0JBSUksU0FBVSxPQUFPOzBCQUNkOzs7YUFLZDthQUNBIn0=
8729
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9saWxhY3QuanN4Iiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL1VzZXJzL2FyYXNoL0Rlc2t0b3AvUHJvamVjdHMvTGlsYWN0L3NyYy9saWxhY3QuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErQkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFrQ087UUFDQTs7O1FBR0E7Ozs7Ozs7Ozs7Ozs7UUFhQTtRQUNBOzs7Q0FHUDs7Ozs7Ozs7Q0FRQTs7OztFQUlDOzs7NkJBRzJCO2lCQUNaOztFQUVmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW9CQTs7Ozs7Ozs7OzswQkFVd0Isb0JBQXFCLE1BQU07bUJBQ2pDOzs7d0JBSUksU0FBVSxPQUFPOzBCQUNkOzs7YUFLZDthQUNBIn0=
8579
8730
 
8580
8731
  /***/ }),
8581
8732
 
@@ -9652,7 +9803,7 @@ function run(jsx, path=`InlineJSX-${++_lilact_jsx__WEBPACK_IMPORTED_MODULE_0__["
9652
9803
 
9653
9804
  processed += "\n//# sourceURL=eval:/" + path;
9654
9805
 
9655
- // todo: this seems to be only useful in safari, should be assessed latera
9806
+ // todo: this seems to be only useful in safari, should be assessed later
9656
9807
  _lilact_jsx__WEBPACK_IMPORTED_MODULE_0__["default"].scanBlockLabels(processed, path);
9657
9808
 
9658
9809
  try {
@@ -9690,13 +9841,13 @@ function run(jsx, path=`InlineJSX-${++_lilact_jsx__WEBPACK_IMPORTED_MODULE_0__["
9690
9841
  * @param path - The path to the required file. Must be either absolute path or relative to the current
9691
9842
  * document’s URL (the page/location that initiated the request).
9692
9843
  *
9693
- * @param force_update - To treat the code as inline. The main difference at the moment is that inline code doesn't include sourcemap.
9844
+ * @param forceUpdate - To treat the code as inline. The main difference at the moment is that inline code doesn't include sourcemap.
9694
9845
  *
9695
9846
  * @returns An array representation of the children.
9696
9847
  */
9697
- function require(path, force_update)
9848
+ function require(path, forceUpdate)
9698
9849
  {
9699
- if(_lilact_jsx__WEBPACK_IMPORTED_MODULE_0__["default"].required_scripts[path] && !force_update) return _lilact_jsx__WEBPACK_IMPORTED_MODULE_0__["default"].required_scripts[path].module.exports;
9850
+ if(_lilact_jsx__WEBPACK_IMPORTED_MODULE_0__["default"].required_scripts[path] && !forceUpdate) return _lilact_jsx__WEBPACK_IMPORTED_MODULE_0__["default"].required_scripts[path].module.exports;
9700
9851
 
9701
9852
  if(path[0]==='#') {
9702
9853
 
@@ -9748,7 +9899,7 @@ function require(path, force_update)
9748
9899
  * The promise must resolve to a module whose module.exports.default is a Lilact component
9749
9900
  * or otherwise it will be whatever the module.exports is set to.
9750
9901
  *
9751
- * @returns A Lilact component that should be rendered inside a {@link Suspense} boundary.
9902
+ * @returns A Lilact component that should be rendered inside a `Suspense` boundary.
9752
9903
  */
9753
9904
  function lazy(factory) {
9754
9905
  let status = "pending"; // pending | success | error