eleva 1.0.1 → 1.1.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 (97) hide show
  1. package/README.md +21 -10
  2. package/dist/{eleva-plugins.cjs.js → eleva-plugins.cjs} +1002 -292
  3. package/dist/eleva-plugins.cjs.map +1 -0
  4. package/dist/eleva-plugins.d.cts +1352 -0
  5. package/dist/eleva-plugins.d.cts.map +1 -0
  6. package/dist/eleva-plugins.d.ts +1352 -0
  7. package/dist/eleva-plugins.d.ts.map +1 -0
  8. package/dist/{eleva-plugins.esm.js → eleva-plugins.js} +1002 -292
  9. package/dist/eleva-plugins.js.map +1 -0
  10. package/dist/eleva-plugins.umd.js +1001 -291
  11. package/dist/eleva-plugins.umd.js.map +1 -1
  12. package/dist/eleva-plugins.umd.min.js +1 -1
  13. package/dist/eleva-plugins.umd.min.js.map +1 -1
  14. package/dist/{eleva.cjs.js → eleva.cjs} +421 -191
  15. package/dist/eleva.cjs.map +1 -0
  16. package/dist/eleva.d.cts +1329 -0
  17. package/dist/eleva.d.cts.map +1 -0
  18. package/dist/eleva.d.ts +473 -226
  19. package/dist/eleva.d.ts.map +1 -0
  20. package/dist/{eleva.esm.js → eleva.js} +422 -192
  21. package/dist/eleva.js.map +1 -0
  22. package/dist/eleva.umd.js +420 -190
  23. package/dist/eleva.umd.js.map +1 -1
  24. package/dist/eleva.umd.min.js +1 -1
  25. package/dist/eleva.umd.min.js.map +1 -1
  26. package/dist/plugins/attr.cjs +279 -0
  27. package/dist/plugins/attr.cjs.map +1 -0
  28. package/dist/plugins/attr.d.cts +101 -0
  29. package/dist/plugins/attr.d.cts.map +1 -0
  30. package/dist/plugins/attr.d.ts +101 -0
  31. package/dist/plugins/attr.d.ts.map +1 -0
  32. package/dist/plugins/attr.js +276 -0
  33. package/dist/plugins/attr.js.map +1 -0
  34. package/dist/plugins/attr.umd.js +111 -22
  35. package/dist/plugins/attr.umd.js.map +1 -1
  36. package/dist/plugins/attr.umd.min.js +1 -1
  37. package/dist/plugins/attr.umd.min.js.map +1 -1
  38. package/dist/plugins/router.cjs +1873 -0
  39. package/dist/plugins/router.cjs.map +1 -0
  40. package/dist/plugins/router.d.cts +1296 -0
  41. package/dist/plugins/router.d.cts.map +1 -0
  42. package/dist/plugins/router.d.ts +1296 -0
  43. package/dist/plugins/router.d.ts.map +1 -0
  44. package/dist/plugins/router.js +1870 -0
  45. package/dist/plugins/router.js.map +1 -0
  46. package/dist/plugins/router.umd.js +482 -186
  47. package/dist/plugins/router.umd.js.map +1 -1
  48. package/dist/plugins/router.umd.min.js +1 -1
  49. package/dist/plugins/router.umd.min.js.map +1 -1
  50. package/dist/plugins/store.cjs +920 -0
  51. package/dist/plugins/store.cjs.map +1 -0
  52. package/dist/plugins/store.d.cts +266 -0
  53. package/dist/plugins/store.d.cts.map +1 -0
  54. package/dist/plugins/store.d.ts +266 -0
  55. package/dist/plugins/store.d.ts.map +1 -0
  56. package/dist/plugins/store.js +917 -0
  57. package/dist/plugins/store.js.map +1 -0
  58. package/dist/plugins/store.umd.js +410 -85
  59. package/dist/plugins/store.umd.js.map +1 -1
  60. package/dist/plugins/store.umd.min.js +1 -1
  61. package/dist/plugins/store.umd.min.js.map +1 -1
  62. package/package.json +112 -68
  63. package/src/core/Eleva.js +195 -115
  64. package/src/index.cjs +10 -0
  65. package/src/index.js +11 -0
  66. package/src/modules/Emitter.js +68 -20
  67. package/src/modules/Renderer.js +82 -20
  68. package/src/modules/Signal.js +43 -15
  69. package/src/modules/TemplateEngine.js +50 -9
  70. package/src/plugins/Attr.js +121 -19
  71. package/src/plugins/Router.js +526 -181
  72. package/src/plugins/Store.js +448 -69
  73. package/src/plugins/index.js +1 -0
  74. package/types/core/Eleva.d.ts +263 -169
  75. package/types/core/Eleva.d.ts.map +1 -1
  76. package/types/index.d.cts +3 -0
  77. package/types/index.d.cts.map +1 -0
  78. package/types/index.d.ts +5 -0
  79. package/types/index.d.ts.map +1 -1
  80. package/types/modules/Emitter.d.ts +73 -30
  81. package/types/modules/Emitter.d.ts.map +1 -1
  82. package/types/modules/Renderer.d.ts +48 -18
  83. package/types/modules/Renderer.d.ts.map +1 -1
  84. package/types/modules/Signal.d.ts +44 -16
  85. package/types/modules/Signal.d.ts.map +1 -1
  86. package/types/modules/TemplateEngine.d.ts +46 -11
  87. package/types/modules/TemplateEngine.d.ts.map +1 -1
  88. package/types/plugins/Attr.d.ts +83 -16
  89. package/types/plugins/Attr.d.ts.map +1 -1
  90. package/types/plugins/Router.d.ts +498 -207
  91. package/types/plugins/Router.d.ts.map +1 -1
  92. package/types/plugins/Store.d.ts +211 -37
  93. package/types/plugins/Store.d.ts.map +1 -1
  94. package/dist/eleva-plugins.cjs.js.map +0 -1
  95. package/dist/eleva-plugins.esm.js.map +0 -1
  96. package/dist/eleva.cjs.js.map +0 -1
  97. package/dist/eleva.esm.js.map +0 -1
@@ -3,27 +3,94 @@ export namespace AttrPlugin {
3
3
  let version: string;
4
4
  let description: string;
5
5
  /**
6
- * Installs the plugin into the Eleva instance
6
+ * Installs the plugin into the Eleva instance.
7
7
  *
8
- * @param {Object} eleva - The Eleva instance
9
- * @param {Object} options - Plugin configuration options
10
- * @param {boolean} [options.enableAria=true] - Enable ARIA attribute handling
11
- * @param {boolean} [options.enableData=true] - Enable data attribute handling
12
- * @param {boolean} [options.enableBoolean=true] - Enable boolean attribute handling
13
- * @param {boolean} [options.enableDynamic=true] - Enable dynamic property detection
8
+ * @public
9
+ * Method wrapping behavior:
10
+ * - Stores original `_patchNode` in `renderer._originalPatchNode`
11
+ * - Overrides `renderer._patchNode` to use enhanced attribute handling
12
+ * - Adds `renderer.updateAttributes` and `eleva.updateElementAttributes` helpers
13
+ * - Call `uninstall()` to restore original behavior
14
+ *
15
+ * @param {Eleva} eleva - The Eleva instance to enhance.
16
+ * @param {AttrPluginOptions} options - Plugin configuration options.
17
+ * @param {boolean} [options.enableAria=true] - Enable ARIA attribute handling.
18
+ * Maps aria-* attributes to DOM properties (e.g., aria-expanded → ariaExpanded).
19
+ * @param {boolean} [options.enableData=true] - Enable data attribute handling.
20
+ * Syncs data-* attributes with element.dataset for consistent access.
21
+ * @param {boolean} [options.enableBoolean=true] - Enable boolean attribute handling.
22
+ * Treats empty strings and attribute names as true, "false" string as false.
23
+ * @param {boolean} [options.enableDynamic=true] - Enable dynamic property detection.
24
+ * Searches element prototype chain for property matches (useful for custom elements).
25
+ * @returns {void}
26
+ * @example
27
+ * // Basic installation with defaults
28
+ * app.use(AttrPlugin);
29
+ *
30
+ * @example
31
+ * // Custom configuration
32
+ * app.use(AttrPlugin, {
33
+ * enableAria: true,
34
+ * enableData: true,
35
+ * enableBoolean: true,
36
+ * enableDynamic: false // Disable for performance
37
+ * });
38
+ *
39
+ * @example
40
+ * // Using ARIA attributes in templates
41
+ * template: (ctx) => `
42
+ * <div role="dialog" aria-modal="true" aria-labelledby="title">
43
+ * <h2 id="title">Modal Title</h2>
44
+ * <button aria-expanded="${ctx.isOpen.value}">Toggle</button>
45
+ * </div>
46
+ * `
47
+ * @see uninstall - Remove the plugin and restore original behavior.
14
48
  */
15
- function install(eleva: Object, options?: {
16
- enableAria?: boolean | undefined;
17
- enableData?: boolean | undefined;
18
- enableBoolean?: boolean | undefined;
19
- enableDynamic?: boolean | undefined;
20
- }): void;
49
+ function install(eleva: Eleva, options?: AttrPluginOptions): void;
21
50
  /**
22
- * Uninstalls the plugin from the Eleva instance
51
+ * Uninstalls the plugin from the Eleva instance.
23
52
  *
24
- * @param {Object} eleva - The Eleva instance
53
+ * @public
54
+ * @param {Eleva} eleva - The Eleva instance.
55
+ * @returns {void}
56
+ * @description
57
+ * Restores the original renderer patching behavior and removes
58
+ * `eleva.updateElementAttributes`.
59
+ * @example
60
+ * // Uninstall the plugin
61
+ * AttrPlugin.uninstall(app);
62
+ * @see install - Install the plugin.
25
63
  */
26
- function uninstall(eleva: Object): void;
64
+ function uninstall(eleva: Eleva): void;
27
65
  }
28
66
  export { AttrPlugin as Attr };
67
+ /**
68
+ * Type imports from the Eleva core library.
69
+ */
70
+ export type Eleva = import("eleva").Eleva;
71
+ /**
72
+ * Configuration options for the AttrPlugin.
73
+ */
74
+ export type AttrPluginOptions = {
75
+ /**
76
+ * Enable ARIA attribute handling.
77
+ */
78
+ enableAria?: boolean | undefined;
79
+ /**
80
+ * Enable data attribute handling.
81
+ */
82
+ enableData?: boolean | undefined;
83
+ /**
84
+ * Enable boolean attribute handling.
85
+ */
86
+ enableBoolean?: boolean | undefined;
87
+ /**
88
+ * Enable dynamic property detection.
89
+ */
90
+ enableDynamic?: boolean | undefined;
91
+ };
92
+ /**
93
+ * Function signature for attribute update operations.
94
+ */
95
+ export type AttributeUpdateFunction = (oldEl: HTMLElement, newEl: HTMLElement) => void;
29
96
  //# sourceMappingURL=Attr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Attr.d.ts","sourceRoot":"","sources":["../../src/plugins/Attr.js"],"names":[],"mappings":";cAyCY,MAAM;iBAMN,MAAM;qBAMN,MAAM;IAIhB;;;;;;;;;OASG;IACH,wBAPW,MAAM,YAEd;QAA0B,UAAU;QACV,UAAU;QACV,aAAa;QACb,aAAa;KACzC,QA8JA;IAED;;;;OAIG;IACH,0BAFW,MAAM,QAgBhB"}
1
+ {"version":3,"file":"Attr.d.ts","sourceRoot":"","sources":["../../src/plugins/Attr.js"],"names":[],"mappings":";cAmFY,MAAM;iBAMN,MAAM;qBAMN,MAAM;IAIhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACH,wBAlCW,KAAK,YACL,iBAAiB,GASf,IAAI,CAsMhB;IAED;;;;;;;;;;;;;OAaG;IACH,0BAVW,KAAK,GACH,IAAI,CAuBhB;;;;;;oBA1UU,OAAO,OAAO,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;sCAuBrB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI"}