@tachui/core 0.7.1-alpha → 0.8.0-alpha

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 (265) hide show
  1. package/README.md +2 -2
  2. package/dist/bundles/common.d.ts +1 -1
  3. package/dist/bundles/common.d.ts.map +1 -1
  4. package/dist/bundles/minimal.d.ts +2 -16
  5. package/dist/bundles/minimal.d.ts.map +1 -1
  6. package/dist/bundles/production-minimal.d.ts +2 -16
  7. package/dist/bundles/production-minimal.d.ts.map +1 -1
  8. package/dist/common.js +403 -827
  9. package/dist/compiler/advanced-parser.d.ts.map +1 -1
  10. package/dist/compiler/index.js +14 -8
  11. package/dist/component-XAzF1xqs.js +487 -0
  12. package/dist/component-base-x2XmHFjy.js +255 -0
  13. package/dist/components/index.d.ts +4 -38
  14. package/dist/components/index.d.ts.map +1 -1
  15. package/dist/components/index.js +7 -4167
  16. package/dist/components/wrapper.d.ts +5 -152
  17. package/dist/components/wrapper.d.ts.map +1 -1
  18. package/dist/concatenated-component-ByPl3_FF.js +2933 -0
  19. package/dist/constants/index.d.ts +1 -1
  20. package/dist/constants/layout.d.ts +47 -4
  21. package/dist/constants/layout.d.ts.map +1 -1
  22. package/dist/constants/layout.js +84 -0
  23. package/dist/css-classes/index.js +176 -0
  24. package/dist/{dom-bridge-Cx-s6Ihx.js → dom-bridge-CAa1N2zX.js} +28 -28
  25. package/dist/{effect-CytAc9em.js → effect-B9Knft0b.js} +3 -3
  26. package/dist/essential.js +395 -825
  27. package/dist/index-DCPJFUm9.js +1407 -0
  28. package/dist/index-DIvMCJQO.js +268 -0
  29. package/dist/index-vdsiw6gQ.js +777 -0
  30. package/dist/index.d.ts +9 -9
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +395 -825
  33. package/dist/minimal-prod.js +101 -155
  34. package/dist/minimal.js +104 -170
  35. package/dist/modifiers/background.d.ts +41 -11
  36. package/dist/modifiers/background.d.ts.map +1 -1
  37. package/dist/modifiers/base.d.ts +6 -33
  38. package/dist/modifiers/base.d.ts.map +1 -1
  39. package/dist/modifiers/base.js +487 -0
  40. package/dist/modifiers/builder.d.ts +103 -195
  41. package/dist/modifiers/builder.d.ts.map +1 -1
  42. package/dist/modifiers/builder.js +9 -0
  43. package/dist/modifiers/core.d.ts +9 -401
  44. package/dist/modifiers/core.d.ts.map +1 -1
  45. package/dist/modifiers/{utils.d.ts → factories.d.ts} +18 -5
  46. package/dist/modifiers/factories.d.ts.map +1 -0
  47. package/dist/modifiers/index.d.ts +8 -52
  48. package/dist/modifiers/index.d.ts.map +1 -1
  49. package/dist/modifiers/index.js +38 -0
  50. package/dist/modifiers/presets.d.ts +368 -0
  51. package/dist/modifiers/presets.d.ts.map +1 -0
  52. package/dist/modifiers/registry.js +10 -0
  53. package/dist/modifiers/types.d.ts +39 -211
  54. package/dist/modifiers/types.d.ts.map +1 -1
  55. package/dist/modifiers/types.js +4 -0
  56. package/dist/performance-optimizer-stub-CtfXUwl4.js +38 -0
  57. package/dist/plugins/index.d.ts +5 -6
  58. package/dist/plugins/index.d.ts.map +1 -1
  59. package/dist/plugins/index.js +147 -297
  60. package/dist/plugins/simplified-index.d.ts +5 -6
  61. package/dist/plugins/simplified-index.d.ts.map +1 -1
  62. package/dist/production-minimal-BY_gMc-l.js +2532 -0
  63. package/dist/reactive/index.js +96 -95
  64. package/dist/reactive/types.js +4 -0
  65. package/dist/runtime/dom-bridge.js +5 -5
  66. package/dist/runtime/element-override.d.ts.map +1 -1
  67. package/dist/runtime/index.d.ts +0 -7
  68. package/dist/runtime/index.d.ts.map +1 -1
  69. package/dist/runtime/renderer.d.ts.map +1 -1
  70. package/dist/runtime/renderer.js +7 -8
  71. package/dist/runtime/semantic-role-manager.d.ts.map +1 -1
  72. package/dist/runtime/types.js +1 -0
  73. package/dist/{scheduler-7SvC3a21.js → scheduler-BKeqwrYE.js} +130 -130
  74. package/dist/validation/build-time-stub.d.ts +33 -0
  75. package/dist/validation/build-time-stub.d.ts.map +1 -0
  76. package/dist/validation/debug-tools-stub.d.ts +67 -0
  77. package/dist/validation/debug-tools-stub.d.ts.map +1 -0
  78. package/dist/validation/index.d.ts +23 -78
  79. package/dist/validation/index.d.ts.map +1 -1
  80. package/dist/validation/index.js +609 -6470
  81. package/dist/validation/lifecycle-validation.d.ts.map +1 -1
  82. package/dist/validation/performance-optimizer-stub.d.ts +50 -0
  83. package/dist/validation/performance-optimizer-stub.d.ts.map +1 -0
  84. package/dist/validation/plugin-registration.d.ts +5 -1
  85. package/dist/validation/plugin-registration.d.ts.map +1 -1
  86. package/dist/validation/production-bypass-core.d.ts +69 -0
  87. package/dist/validation/production-bypass-core.d.ts.map +1 -0
  88. package/package.json +41 -5
  89. package/dist/ScrollView-h-6wYMAm.js +0 -515
  90. package/dist/Spacer-BbteDQ9I.js +0 -5337
  91. package/dist/binding-CmdpowkI.js +0 -2276
  92. package/dist/components/BasicInput.d.ts +0 -116
  93. package/dist/components/BasicInput.d.ts.map +0 -1
  94. package/dist/components/Button.d.ts +0 -252
  95. package/dist/components/Button.d.ts.map +0 -1
  96. package/dist/components/Divider.d.ts +0 -141
  97. package/dist/components/Divider.d.ts.map +0 -1
  98. package/dist/components/EnhancedLink.d.ts +0 -365
  99. package/dist/components/EnhancedLink.d.ts.map +0 -1
  100. package/dist/components/Form.d.ts +0 -141
  101. package/dist/components/Form.d.ts.map +0 -1
  102. package/dist/components/Grid.d.ts +0 -698
  103. package/dist/components/Grid.d.ts.map +0 -1
  104. package/dist/components/GridResponsive.d.ts +0 -214
  105. package/dist/components/GridResponsive.d.ts.map +0 -1
  106. package/dist/components/Image.d.ts +0 -162
  107. package/dist/components/Image.d.ts.map +0 -1
  108. package/dist/components/List.d.ts +0 -287
  109. package/dist/components/List.d.ts.map +0 -1
  110. package/dist/components/Menu.d.ts +0 -159
  111. package/dist/components/Menu.d.ts.map +0 -1
  112. package/dist/components/Picker.d.ts +0 -153
  113. package/dist/components/Picker.d.ts.map +0 -1
  114. package/dist/components/ScrollView.d.ts +0 -222
  115. package/dist/components/ScrollView.d.ts.map +0 -1
  116. package/dist/components/Section.d.ts +0 -153
  117. package/dist/components/Section.d.ts.map +0 -1
  118. package/dist/components/Show.d.ts +0 -64
  119. package/dist/components/Show.d.ts.map +0 -1
  120. package/dist/components/Spacer.d.ts +0 -35
  121. package/dist/components/Spacer.d.ts.map +0 -1
  122. package/dist/components/Text.d.ts +0 -242
  123. package/dist/components/Text.d.ts.map +0 -1
  124. package/dist/components/Toggle.d.ts +0 -207
  125. package/dist/components/Toggle.d.ts.map +0 -1
  126. package/dist/concatenated-component-DPcl2TEO.js +0 -6779
  127. package/dist/context--zQFIImS.js +0 -283
  128. package/dist/debug/index.d.ts +0 -61
  129. package/dist/debug/index.d.ts.map +0 -1
  130. package/dist/debug.js +0 -178
  131. package/dist/developer-experience/enhanced-errors.d.ts +0 -128
  132. package/dist/developer-experience/enhanced-errors.d.ts.map +0 -1
  133. package/dist/developer-experience/enhanced-types.d.ts +0 -281
  134. package/dist/developer-experience/enhanced-types.d.ts.map +0 -1
  135. package/dist/developer-experience/index.d.ts +0 -44
  136. package/dist/developer-experience/index.d.ts.map +0 -1
  137. package/dist/index-Nfi2SBQh.js +0 -3268
  138. package/dist/modifiers/attributes.d.ts +0 -203
  139. package/dist/modifiers/attributes.d.ts.map +0 -1
  140. package/dist/modifiers/backdrop.d.ts +0 -59
  141. package/dist/modifiers/backdrop.d.ts.map +0 -1
  142. package/dist/modifiers/border.d.ts +0 -217
  143. package/dist/modifiers/border.d.ts.map +0 -1
  144. package/dist/modifiers/effects.d.ts +0 -159
  145. package/dist/modifiers/effects.d.ts.map +0 -1
  146. package/dist/modifiers/elements.d.ts +0 -240
  147. package/dist/modifiers/elements.d.ts.map +0 -1
  148. package/dist/modifiers/filters.d.ts +0 -275
  149. package/dist/modifiers/filters.d.ts.map +0 -1
  150. package/dist/modifiers/flexbox.d.ts +0 -82
  151. package/dist/modifiers/flexbox.d.ts.map +0 -1
  152. package/dist/modifiers/font.d.ts +0 -71
  153. package/dist/modifiers/font.d.ts.map +0 -1
  154. package/dist/modifiers/grid.d.ts +0 -92
  155. package/dist/modifiers/grid.d.ts.map +0 -1
  156. package/dist/modifiers/margin.d.ts +0 -128
  157. package/dist/modifiers/margin.d.ts.map +0 -1
  158. package/dist/modifiers/padding.d.ts +0 -204
  159. package/dist/modifiers/padding.d.ts.map +0 -1
  160. package/dist/modifiers/responsive/advanced-utilities.d.ts +0 -118
  161. package/dist/modifiers/responsive/advanced-utilities.d.ts.map +0 -1
  162. package/dist/modifiers/responsive/breakpoints.d.ts +0 -81
  163. package/dist/modifiers/responsive/breakpoints.d.ts.map +0 -1
  164. package/dist/modifiers/responsive/css-generator.d.ts +0 -100
  165. package/dist/modifiers/responsive/css-generator.d.ts.map +0 -1
  166. package/dist/modifiers/responsive/dev-tools.d.ts +0 -107
  167. package/dist/modifiers/responsive/dev-tools.d.ts.map +0 -1
  168. package/dist/modifiers/responsive/index.d.ts +0 -29
  169. package/dist/modifiers/responsive/index.d.ts.map +0 -1
  170. package/dist/modifiers/responsive/layout-patterns.d.ts +0 -230
  171. package/dist/modifiers/responsive/layout-patterns.d.ts.map +0 -1
  172. package/dist/modifiers/responsive/performance.d.ts +0 -130
  173. package/dist/modifiers/responsive/performance.d.ts.map +0 -1
  174. package/dist/modifiers/responsive/responsive-builder.d.ts +0 -133
  175. package/dist/modifiers/responsive/responsive-builder.d.ts.map +0 -1
  176. package/dist/modifiers/responsive/responsive-modifier.d.ts +0 -123
  177. package/dist/modifiers/responsive/responsive-modifier.d.ts.map +0 -1
  178. package/dist/modifiers/responsive/types.d.ts +0 -183
  179. package/dist/modifiers/responsive/types.d.ts.map +0 -1
  180. package/dist/modifiers/responsive/utilities.d.ts +0 -149
  181. package/dist/modifiers/responsive/utilities.d.ts.map +0 -1
  182. package/dist/modifiers/scroll.d.ts +0 -143
  183. package/dist/modifiers/scroll.d.ts.map +0 -1
  184. package/dist/modifiers/shadows.d.ts +0 -114
  185. package/dist/modifiers/shadows.d.ts.map +0 -1
  186. package/dist/modifiers/size.d.ts +0 -113
  187. package/dist/modifiers/size.d.ts.map +0 -1
  188. package/dist/modifiers/text.d.ts +0 -147
  189. package/dist/modifiers/text.d.ts.map +0 -1
  190. package/dist/modifiers/transformations.d.ts +0 -329
  191. package/dist/modifiers/transformations.d.ts.map +0 -1
  192. package/dist/modifiers/transitions.d.ts +0 -98
  193. package/dist/modifiers/transitions.d.ts.map +0 -1
  194. package/dist/modifiers/typography.d.ts +0 -192
  195. package/dist/modifiers/typography.d.ts.map +0 -1
  196. package/dist/modifiers/utility.d.ts +0 -69
  197. package/dist/modifiers/utility.d.ts.map +0 -1
  198. package/dist/modifiers/utils.d.ts.map +0 -1
  199. package/dist/plugins/simplified-error-handler.d.ts +0 -83
  200. package/dist/plugins/simplified-error-handler.d.ts.map +0 -1
  201. package/dist/runtime/dev-tools.d.ts +0 -240
  202. package/dist/runtime/dev-tools.d.ts.map +0 -1
  203. package/dist/runtime/development-warnings.d.ts +0 -42
  204. package/dist/runtime/development-warnings.d.ts.map +0 -1
  205. package/dist/runtime/error-boundary.d.ts +0 -302
  206. package/dist/runtime/error-boundary.d.ts.map +0 -1
  207. package/dist/runtime/error-recovery.d.ts +0 -267
  208. package/dist/runtime/error-recovery.d.ts.map +0 -1
  209. package/dist/runtime/error-reporting.d.ts +0 -287
  210. package/dist/runtime/error-reporting.d.ts.map +0 -1
  211. package/dist/runtime/error-utils.d.ts +0 -204
  212. package/dist/runtime/error-utils.d.ts.map +0 -1
  213. package/dist/runtime/performance.d.ts +0 -217
  214. package/dist/runtime/performance.d.ts.map +0 -1
  215. package/dist/sui-compat.d.ts +0 -110
  216. package/dist/sui-compat.d.ts.map +0 -1
  217. package/dist/validation/advanced-debugging.d.ts +0 -319
  218. package/dist/validation/advanced-debugging.d.ts.map +0 -1
  219. package/dist/validation/build-time/detection.d.ts +0 -32
  220. package/dist/validation/build-time/detection.d.ts.map +0 -1
  221. package/dist/validation/build-time/index.d.ts +0 -84
  222. package/dist/validation/build-time/index.d.ts.map +0 -1
  223. package/dist/validation/build-time/plugins.d.ts +0 -75
  224. package/dist/validation/build-time/plugins.d.ts.map +0 -1
  225. package/dist/validation/build-time/rules.d.ts +0 -73
  226. package/dist/validation/build-time/rules.d.ts.map +0 -1
  227. package/dist/validation/build-time/transformer.d.ts +0 -23
  228. package/dist/validation/build-time/transformer.d.ts.map +0 -1
  229. package/dist/validation/build-time/types.d.ts +0 -212
  230. package/dist/validation/build-time/types.d.ts.map +0 -1
  231. package/dist/validation/comprehensive.d.ts +0 -160
  232. package/dist/validation/comprehensive.d.ts.map +0 -1
  233. package/dist/validation/debug-tools.d.ts +0 -251
  234. package/dist/validation/debug-tools.d.ts.map +0 -1
  235. package/dist/validation/developer-experience.d.ts +0 -243
  236. package/dist/validation/developer-experience.d.ts.map +0 -1
  237. package/dist/validation/documentation-integration.d.ts +0 -269
  238. package/dist/validation/documentation-integration.d.ts.map +0 -1
  239. package/dist/validation/enhanced-runtime.d.ts +0 -279
  240. package/dist/validation/enhanced-runtime.d.ts.map +0 -1
  241. package/dist/validation/error-reporting.d.ts +0 -186
  242. package/dist/validation/error-reporting.d.ts.map +0 -1
  243. package/dist/validation/ide-integration.d.ts +0 -328
  244. package/dist/validation/ide-integration.d.ts.map +0 -1
  245. package/dist/validation/performance-optimizer.d.ts +0 -218
  246. package/dist/validation/performance-optimizer.d.ts.map +0 -1
  247. package/dist/validation/production-bypass.d.ts +0 -175
  248. package/dist/validation/production-bypass.d.ts.map +0 -1
  249. package/dist/validation/simple.d.ts +0 -111
  250. package/dist/validation/simple.d.ts.map +0 -1
  251. package/dist/viewport/adapters/web-adapter.d.ts +0 -227
  252. package/dist/viewport/adapters/web-adapter.d.ts.map +0 -1
  253. package/dist/viewport/components.d.ts +0 -131
  254. package/dist/viewport/components.d.ts.map +0 -1
  255. package/dist/viewport/environment.d.ts +0 -75
  256. package/dist/viewport/environment.d.ts.map +0 -1
  257. package/dist/viewport/index.d.ts +0 -138
  258. package/dist/viewport/index.d.ts.map +0 -1
  259. package/dist/viewport/index.js +0 -2085
  260. package/dist/viewport/platform-detection.d.ts +0 -59
  261. package/dist/viewport/platform-detection.d.ts.map +0 -1
  262. package/dist/viewport/types.d.ts +0 -301
  263. package/dist/viewport/types.d.ts.map +0 -1
  264. package/dist/viewport/viewport-manager.d.ts +0 -118
  265. package/dist/viewport/viewport-manager.d.ts.map +0 -1
@@ -1,3268 +0,0 @@
1
- import { a0 as S, i as m, X as $, T as I, dg as h, db as E, dd as R, da as ye, dp as ne, ds as G, _ as z, A as se, dN as be, dO as Ce } from "./concatenated-component-DPcl2TEO.js";
2
- import { a as j, b, e as ve, i as T, n as ie } from "./scheduler-7SvC3a21.js";
3
- import { aC as y, aF as q, aE as H, b0 as A } from "./Spacer-BbteDQ9I.js";
4
- import { c as v } from "./effect-CytAc9em.js";
5
- import { n as we, R as Se, L as xe } from "./binding-CmdpowkI.js";
6
- import { i as D, j as Ee, p as _e, f as Oe } from "./dom-bridge-Cx-s6Ihx.js";
7
- import "./context--zQFIImS.js";
8
- import "./components/index.js";
9
- import "./ScrollView-h-6wYMAm.js";
10
- import "./plugins/index.js";
11
- import "./debug.js";
12
- import "./validation/index.js";
13
- function Y() {
14
- return new S({
15
- frame: {
16
- maxWidth: m
17
- }
18
- });
19
- }
20
- function ae() {
21
- return new S({
22
- frame: {
23
- maxHeight: m
24
- }
25
- });
26
- }
27
- function oe() {
28
- return new S({
29
- frame: {
30
- maxWidth: m,
31
- maxHeight: m
32
- }
33
- });
34
- }
35
- function ce() {
36
- return new S({
37
- frame: {
38
- width: m,
39
- height: m
40
- }
41
- });
42
- }
43
- function ke(n) {
44
- return new S({
45
- frame: {
46
- width: n,
47
- maxHeight: m
48
- }
49
- });
50
- }
51
- function Re(n) {
52
- return new S({
53
- frame: {
54
- height: n,
55
- maxWidth: m
56
- }
57
- });
58
- }
59
- function Te(n, e) {
60
- return new S({
61
- frame: {
62
- width: m,
63
- height: m,
64
- maxWidth: n,
65
- maxHeight: e
66
- }
67
- });
68
- }
69
- function Me(n, e, t, r) {
70
- return new S({
71
- frame: {
72
- width: m,
73
- height: m,
74
- minWidth: n,
75
- maxWidth: e,
76
- minHeight: t,
77
- maxHeight: r
78
- }
79
- });
80
- }
81
- function je() {
82
- return new S({
83
- frame: {
84
- maxWidth: m,
85
- maxHeight: m
86
- }
87
- });
88
- }
89
- function le() {
90
- return new S({
91
- frame: {
92
- width: "100vw",
93
- height: "100vh"
94
- }
95
- });
96
- }
97
- function Pe() {
98
- return new S({
99
- frame: {
100
- width: m,
101
- height: m
102
- }
103
- });
104
- }
105
- function Ae() {
106
- return new S({
107
- frame: {
108
- width: m
109
- }
110
- });
111
- }
112
- const Gt = Symbol.for("tachui.concat");
113
- function Ht(n) {
114
- return n && typeof n == "object" && typeof n.isConcatenatable == "function" && n.isConcatenatable();
115
- }
116
- function qt(n) {
117
- return n && typeof n == "object" && n.constructor.name === "ConcatenatedComponent";
118
- }
119
- const Kt = Symbol.for("tachui.concat");
120
- class Xt {
121
- /**
122
- * Concatenate this component with another concatenatable component
123
- */
124
- concat(e) {
125
- const t = this.toSegment(), r = e.toSegment();
126
- return e instanceof $ ? new $(
127
- [t, ...e.segments],
128
- this.mergeMetadata(e.metadata, e.segments.length + 1)
129
- ) : new $(
130
- [t, r],
131
- this.createMetadata(2)
132
- );
133
- }
134
- /**
135
- * Check if this component supports concatenation
136
- */
137
- isConcatenatable() {
138
- return !0;
139
- }
140
- /**
141
- * Create metadata for a new concatenated component
142
- */
143
- createMetadata(e) {
144
- return {
145
- totalSegments: e,
146
- accessibilityRole: this.determineAccessibilityRole(),
147
- semanticStructure: this.determineSemanticStructure()
148
- };
149
- }
150
- /**
151
- * Merge metadata when concatenating with existing concatenated component
152
- */
153
- mergeMetadata(e, t) {
154
- return {
155
- totalSegments: t,
156
- accessibilityRole: this.mergeAccessibilityRoles(e.accessibilityRole),
157
- semanticStructure: this.mergeSemanticStructures(e.semanticStructure)
158
- };
159
- }
160
- /**
161
- * Determine the accessibility role for this component
162
- */
163
- determineAccessibilityRole() {
164
- const e = this.constructor.name;
165
- return e === "EnhancedText" ? "text" : e === "EnhancedImage" || e === "EnhancedButton" || e === "EnhancedLink" ? "group" : "composite";
166
- }
167
- /**
168
- * Determine the semantic structure for this component
169
- */
170
- determineSemanticStructure() {
171
- const e = this.constructor.name;
172
- return e === "EnhancedText" || e === "EnhancedImage" ? "inline" : "mixed";
173
- }
174
- /**
175
- * Merge accessibility roles when combining components
176
- */
177
- mergeAccessibilityRoles(e) {
178
- const t = this.determineAccessibilityRole();
179
- return t === "text" && e === "text" ? "text" : t === "composite" || e === "composite" ? "composite" : "group";
180
- }
181
- /**
182
- * Merge semantic structures when combining components
183
- */
184
- mergeSemanticStructures(e) {
185
- const t = this.determineSemanticStructure();
186
- return t === "inline" && e === "inline" ? "inline" : t === "block" && e === "block" ? "block" : "mixed";
187
- }
188
- }
189
- function Yt(n) {
190
- const e = n;
191
- return e.concat = function(t) {
192
- const r = {
193
- id: this.id,
194
- component: this,
195
- modifiers: this.modifiers || [],
196
- render: () => {
197
- const i = this.render();
198
- return Array.isArray(i) ? i[0] : i;
199
- }
200
- }, s = t.toSegment();
201
- return t instanceof $ ? new $(
202
- [r, ...t.segments],
203
- {
204
- totalSegments: t.segments.length + 1,
205
- accessibilityRole: "group",
206
- semanticStructure: "mixed"
207
- }
208
- ) : new $(
209
- [r, s],
210
- {
211
- totalSegments: 2,
212
- accessibilityRole: "group",
213
- semanticStructure: "mixed"
214
- }
215
- );
216
- }, e.toSegment = function() {
217
- return {
218
- id: this.id,
219
- component: this,
220
- modifiers: this.modifiers || [],
221
- render: () => {
222
- const t = this.render();
223
- return Array.isArray(t) ? t[0] : t;
224
- }
225
- };
226
- }, e.isConcatenatable = function() {
227
- return !0;
228
- }, e;
229
- }
230
- const _ = /* @__PURE__ */ new Map(), $e = 300 * 1e3, Z = 100;
231
- class Jt {
232
- /**
233
- * Optimize an array of segments by merging compatible adjacent text segments
234
- * Enhanced with caching and performance monitoring
235
- */
236
- static optimize(e) {
237
- const t = performance.now();
238
- if (e.length < 2) return e;
239
- const r = this.generateCacheKey(e), s = this.getCachedOptimization(r);
240
- if (s)
241
- return s.optimizedSegments;
242
- const i = this.performOptimization(e), a = performance.now() - t, o = {
243
- ...this.getOptimizationStats(e, i),
244
- processingTimeMs: a
245
- };
246
- return this.cacheOptimization(r, i, o), process.env.NODE_ENV === "development" && a > 5 && console.log(`TachUI Concatenation: Optimization took ${a.toFixed(2)}ms for ${e.length} segments`), i;
247
- }
248
- /**
249
- * Core optimization algorithm separated for clarity
250
- */
251
- static performOptimization(e) {
252
- const t = [];
253
- for (const r of e) {
254
- const s = t[t.length - 1];
255
- s && this.canMergeTextSegments(s, r) ? t[t.length - 1] = this.mergeTextSegments(s, r) : t.push(r);
256
- }
257
- return t;
258
- }
259
- /**
260
- * Generate a cache key from segments
261
- */
262
- static generateCacheKey(e) {
263
- return e.map((r) => {
264
- const s = r.component, i = this.extractTextContent(s), a = this.hashModifiers(r.modifiers);
265
- return `${s.constructor.name}:${i}:${a}`;
266
- }).join("|");
267
- }
268
- /**
269
- * Hash modifiers for cache key generation
270
- */
271
- static hashModifiers(e) {
272
- if (e.length === 0) return "none";
273
- try {
274
- const t = e.map((s) => ({
275
- type: s.type,
276
- props: s.properties
277
- })), r = JSON.stringify(t);
278
- return typeof btoa == "function" ? btoa(r).substring(0, 8) : this.simpleHash(r).toString(16).substring(0, 8);
279
- } catch {
280
- return "hash-error";
281
- }
282
- }
283
- /**
284
- * Simple hash function fallback for environments without btoa
285
- */
286
- static simpleHash(e) {
287
- let t = 0;
288
- for (let r = 0; r < e.length; r++) {
289
- const s = e.charCodeAt(r);
290
- t = (t << 5) - t + s, t = t & t;
291
- }
292
- return Math.abs(t);
293
- }
294
- /**
295
- * Get cached optimization result
296
- */
297
- static getCachedOptimization(e) {
298
- const t = _.get(e);
299
- return t ? Date.now() - t.timestamp > $e ? (_.delete(e), null) : t : null;
300
- }
301
- /**
302
- * Cache optimization result
303
- */
304
- static cacheOptimization(e, t, r) {
305
- if (_.size >= Z) {
306
- const s = _.keys().next().value;
307
- s && _.delete(s);
308
- }
309
- _.set(e, {
310
- optimizedSegments: t,
311
- stats: r,
312
- timestamp: Date.now()
313
- });
314
- }
315
- /**
316
- * Clear optimization cache (useful for testing)
317
- */
318
- static clearCache() {
319
- _.clear();
320
- }
321
- /**
322
- * Get cache statistics
323
- */
324
- static getCacheStats() {
325
- return {
326
- size: _.size,
327
- maxSize: Z,
328
- hitRate: 0
329
- // Would need to track hits/misses to calculate this
330
- };
331
- }
332
- /**
333
- * Check if two segments can be merged
334
- */
335
- static canMergeTextSegments(e, t) {
336
- return e.component.constructor.name !== "EnhancedText" || t.component.constructor.name !== "EnhancedText" ? !1 : this.modifiersCompatible(e.modifiers, t.modifiers);
337
- }
338
- /**
339
- * Check if two modifier arrays are compatible for merging
340
- */
341
- static modifiersCompatible(e, t) {
342
- if (e.length !== t.length) return !1;
343
- for (let r = 0; r < e.length; r++)
344
- if (!this.modifierEqual(e[r], t[r]))
345
- return !1;
346
- return !0;
347
- }
348
- /**
349
- * Check if two modifiers are equal (simplified comparison)
350
- */
351
- static modifierEqual(e, t) {
352
- if (e.type !== t.type) return !1;
353
- try {
354
- return JSON.stringify(e.properties) === JSON.stringify(t.properties);
355
- } catch {
356
- return !1;
357
- }
358
- }
359
- /**
360
- * Merge two text segments into a single segment
361
- */
362
- static mergeTextSegments(e, t) {
363
- const r = e.component, s = t.component, i = this.extractTextContent(r), a = this.extractTextContent(s), o = i + a;
364
- return {
365
- id: `merged-${e.id}-${t.id}`,
366
- component: this.createMergedTextComponent(o, r.props, e.modifiers),
367
- modifiers: e.modifiers,
368
- // Use modifiers from first segment (they're identical)
369
- render: () => this.createMergedTextComponent(o, r.props, e.modifiers).render()[0]
370
- };
371
- }
372
- /**
373
- * Extract text content from a text component
374
- */
375
- static extractTextContent(e) {
376
- const t = e.props?.content;
377
- return typeof t == "string" ? t : typeof t == "function" ? t() : t && typeof t == "object" && "peek" in t && t.peek() || "";
378
- }
379
- /**
380
- * Create a new merged text component
381
- */
382
- static createMergedTextComponent(e, t, r) {
383
- const s = {
384
- ...t,
385
- content: e
386
- };
387
- return {
388
- type: "Text",
389
- id: `merged-text-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
390
- props: s,
391
- mounted: !1,
392
- cleanup: [],
393
- modifiers: r,
394
- render() {
395
- const i = globalThis.__tachui_runtime;
396
- if (i && i.h && i.text) {
397
- const a = i.text(e);
398
- return [i.h("span", {}, [a])];
399
- }
400
- return [];
401
- }
402
- };
403
- }
404
- /**
405
- * Analyze segments and determine if optimization would be beneficial
406
- */
407
- static shouldOptimize(e) {
408
- if (e.length < 2) return !1;
409
- let t = 0;
410
- for (let r = 0; r < e.length - 1; r++) {
411
- const s = e[r], i = e[r + 1];
412
- s.component.constructor.name === "EnhancedText" && i.component.constructor.name === "EnhancedText" && t++;
413
- }
414
- return t > 0;
415
- }
416
- /**
417
- * Get optimization statistics (enhanced for Phase 4.1)
418
- */
419
- static getOptimizationStats(e, t) {
420
- const r = e.length - t.length, s = e.length > 0 ? Math.round(r / e.length * 100) : 0;
421
- return {
422
- originalCount: e.length,
423
- optimizedCount: t.length,
424
- reductionPercent: s,
425
- textSegmentsMerged: r
426
- };
427
- }
428
- /**
429
- * Advanced optimization analysis for performance monitoring
430
- */
431
- static analyzeOptimizationOpportunities(e) {
432
- let t = 0, r = 0, s = 0, i = 0;
433
- for (let o = 0; o < e.length; o++) {
434
- const c = e[o];
435
- switch (c.component.constructor.name) {
436
- case "EnhancedText":
437
- if (t++, o < e.length - 1) {
438
- const u = e[o + 1];
439
- this.canMergeTextSegments(c, u) && i++;
440
- }
441
- break;
442
- case "EnhancedImage":
443
- r++;
444
- break;
445
- case "EnhancedButton":
446
- case "EnhancedLinkComponent":
447
- s++;
448
- break;
449
- }
450
- }
451
- const a = e.length > 0 ? Math.round(i / e.length * 100) : 0;
452
- return {
453
- totalSegments: e.length,
454
- textSegments: t,
455
- imageSegments: r,
456
- interactiveSegments: s,
457
- optimizableTextPairs: i,
458
- estimatedReductionPercent: a
459
- };
460
- }
461
- }
462
- const Zt = {
463
- fillMaxWidth: Y,
464
- fillMaxHeight: ae,
465
- fillMaxSize: oe,
466
- expand: ce,
467
- flexible: je,
468
- fullScreen: le,
469
- remainingSpace: Pe,
470
- equalShare: Ae
471
- }, Qt = {
472
- /**
473
- * Full-width button pattern
474
- * Common in forms and action sheets
475
- */
476
- fullWidthButton: Y,
477
- /**
478
- * Sidebar layout pattern
479
- * Fixed width with full height
480
- */
481
- sidebar: (n = 250) => ke(n),
482
- /**
483
- * Header/footer pattern
484
- * Fixed height with full width
485
- */
486
- header: (n = 60) => Re(n),
487
- /**
488
- * Content area pattern
489
- * Fills remaining space with constraints
490
- */
491
- content: (n) => Te(n),
492
- /**
493
- * Card layout pattern
494
- * Responsive with sensible constraints
495
- */
496
- card: Me(320, 800, 200),
497
- /**
498
- * Modal overlay pattern
499
- * Full screen coverage
500
- */
501
- overlay: le
502
- }, Ve = {
503
- /**
504
- * Pattern: .frame(maxWidth: .infinity)
505
- * TachUI: fillMaxWidth()
506
- */
507
- "frame(maxWidth: .infinity)": Y,
508
- /**
509
- * Pattern: .frame(maxHeight: .infinity)
510
- * TachUI: fillMaxHeight()
511
- */
512
- "frame(maxHeight: .infinity)": ae,
513
- /**
514
- * Pattern: .frame(maxWidth: .infinity, maxHeight: .infinity)
515
- * TachUI: fillMaxSize()
516
- */
517
- "frame(maxWidth: .infinity, maxHeight: .infinity)": oe,
518
- /**
519
- * Pattern: .frame(width: .infinity, height: .infinity)
520
- * TachUI: expand()
521
- */
522
- "frame(width: .infinity, height: .infinity)": ce
523
- };
524
- function er(n) {
525
- if (process.env.NODE_ENV === "development") {
526
- const e = Ve[n];
527
- e ? console.info(`SUI Pattern: ${n} → TachUI: ${e.name}()`) : console.warn(`No TachUI equivalent found for: ${n}`);
528
- }
529
- }
530
- var ze = Object.defineProperty, De = (n, e, t) => e in n ? ze(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, C = (n, e, t) => De(n, typeof e != "symbol" ? e + "" : e, t);
531
- class ue {
532
- constructor(e = {}) {
533
- C(this, "state", "closed"), C(this, "failureCount", 0), C(this, "lastFailureTime", 0), C(this, "successCount", 0), C(this, "requestCount", 0), C(this, "lastRequestTime", 0), C(this, "config"), C(this, "stateSignal"), C(this, "setState"), this.config = {
534
- failureThreshold: 5,
535
- resetTimeout: 6e4,
536
- // 1 minute
537
- monitoringPeriod: 3e5,
538
- // 5 minutes
539
- minimumThroughput: 10,
540
- ...e
541
- };
542
- const [t, r] = j("closed");
543
- this.stateSignal = t, this.setState = r;
544
- }
545
- /**
546
- * Execute function with circuit breaker protection
547
- */
548
- async execute(e) {
549
- if (this.updateRequestCount(), this.state === "open")
550
- if (this.shouldAttemptReset())
551
- this.state = "half-open", this.setState("half-open");
552
- else
553
- throw new Error("Circuit breaker is open");
554
- try {
555
- const t = await e();
556
- return this.onSuccess(), t;
557
- } catch (t) {
558
- throw this.onFailure(), t;
559
- }
560
- }
561
- /**
562
- * Handle successful execution
563
- */
564
- onSuccess() {
565
- this.successCount++, this.state === "half-open" && this.reset();
566
- }
567
- /**
568
- * Handle failed execution
569
- */
570
- onFailure() {
571
- this.failureCount++, this.lastFailureTime = Date.now(), this.shouldTrip() && this.trip();
572
- }
573
- /**
574
- * Check if circuit breaker should trip to open state
575
- */
576
- shouldTrip() {
577
- return this.failureCount >= this.config.failureThreshold && this.requestCount >= this.config.minimumThroughput;
578
- }
579
- /**
580
- * Trip circuit breaker to open state
581
- */
582
- trip() {
583
- this.state = "open", this.setState("open"), y.reportError(
584
- y.createTachUIError(new Error("Circuit breaker tripped"), {
585
- category: "component_error",
586
- severity: "medium",
587
- context: {
588
- failureCount: this.failureCount,
589
- requestCount: this.requestCount
590
- }
591
- })
592
- );
593
- }
594
- /**
595
- * Check if should attempt reset from open state
596
- */
597
- shouldAttemptReset() {
598
- return Date.now() - this.lastFailureTime >= this.config.resetTimeout;
599
- }
600
- /**
601
- * Reset circuit breaker to closed state
602
- */
603
- reset() {
604
- this.state = "closed", this.failureCount = 0, this.successCount = 0, this.setState("closed");
605
- }
606
- /**
607
- * Update request count for monitoring period
608
- */
609
- updateRequestCount() {
610
- const e = Date.now();
611
- e - this.lastRequestTime > this.config.monitoringPeriod && (this.requestCount = 0), this.requestCount++, this.lastRequestTime = e;
612
- }
613
- /**
614
- * Get current state
615
- */
616
- getState() {
617
- return this.state;
618
- }
619
- /**
620
- * Get state signal
621
- */
622
- getStateSignal() {
623
- return this.stateSignal;
624
- }
625
- /**
626
- * Get metrics
627
- */
628
- getMetrics() {
629
- return {
630
- state: this.state,
631
- failureCount: this.failureCount,
632
- successCount: this.successCount,
633
- requestCount: this.requestCount,
634
- failureRate: this.requestCount > 0 ? this.failureCount / this.requestCount : 0
635
- };
636
- }
637
- }
638
- class pe {
639
- constructor(e = {}) {
640
- C(this, "config"), this.config = {
641
- maxAttempts: 3,
642
- baseDelay: 1e3,
643
- maxDelay: 3e4,
644
- backoffMultiplier: 2,
645
- jitter: !0,
646
- retryableErrors: [],
647
- // Empty means retry all errors by default (except non-retryable)
648
- nonRetryableErrors: ["ValidationError", "AuthenticationError"],
649
- ...e
650
- };
651
- }
652
- /**
653
- * Execute function with retry policy
654
- */
655
- async execute(e) {
656
- let t;
657
- for (let r = 1; r <= this.config.maxAttempts; r++)
658
- try {
659
- return await e();
660
- } catch (s) {
661
- if (t = s, !this.shouldRetry(s, r))
662
- throw s;
663
- if (r < this.config.maxAttempts) {
664
- const i = this.calculateDelay(r);
665
- await this.sleep(i), y.reportError(
666
- y.createTachUIError(s, {
667
- category: "network_error",
668
- severity: "low",
669
- context: {
670
- attempt: r,
671
- nextDelay: i,
672
- retryPolicy: !0
673
- }
674
- })
675
- );
676
- }
677
- }
678
- throw t;
679
- }
680
- /**
681
- * Check if error should be retried
682
- */
683
- shouldRetry(e, t) {
684
- if (t >= this.config.maxAttempts)
685
- return !1;
686
- const r = e.constructor.name;
687
- return this.config.nonRetryableErrors.includes(r) ? !1 : this.config.retryableErrors.length > 0 ? this.config.retryableErrors.includes(r) : !["ValidationError", "AuthenticationError", "AuthorizationError"].includes(r);
688
- }
689
- /**
690
- * Calculate delay for next retry
691
- */
692
- calculateDelay(e) {
693
- const t = this.config.baseDelay * this.config.backoffMultiplier ** (e - 1);
694
- let r = Math.min(t, this.config.maxDelay);
695
- return this.config.jitter && (r = r * (0.5 + Math.random() * 0.5)), Math.floor(r);
696
- }
697
- /**
698
- * Sleep for specified duration
699
- */
700
- sleep(e) {
701
- return new Promise((t) => setTimeout(t, e));
702
- }
703
- /**
704
- * Get configuration
705
- */
706
- getConfig() {
707
- return { ...this.config };
708
- }
709
- }
710
- class de {
711
- constructor() {
712
- C(this, "cache", /* @__PURE__ */ new Map());
713
- }
714
- /**
715
- * Execute with fallback
716
- */
717
- async executeWithFallback(e, t) {
718
- try {
719
- return t.timeout ? await this.withTimeout(e(), t.timeout) : await e();
720
- } catch (r) {
721
- return this.getFallbackValue(t, r);
722
- }
723
- }
724
- /**
725
- * Get fallback value
726
- */
727
- async getFallbackValue(e, t) {
728
- if (e.cache && e.cacheKey) {
729
- const s = this.getCachedValue(e.cacheKey, e.cacheTimeout || 3e5);
730
- if (s !== null)
731
- return s;
732
- }
733
- let r;
734
- if (e.factory)
735
- r = await e.factory();
736
- else if (e.value !== void 0)
737
- r = e.value;
738
- else
739
- throw t;
740
- return e.cache && e.cacheKey && this.setCachedValue(e.cacheKey, r), r;
741
- }
742
- /**
743
- * Execute with timeout
744
- */
745
- withTimeout(e, t) {
746
- return new Promise((r, s) => {
747
- const i = setTimeout(() => {
748
- s(new Error(`Operation timed out after ${t}ms`));
749
- }, t);
750
- e.then(r).catch(s).finally(() => clearTimeout(i));
751
- });
752
- }
753
- /**
754
- * Get cached value
755
- */
756
- getCachedValue(e, t) {
757
- const r = this.cache.get(e);
758
- return r ? Date.now() - r.timestamp > t ? (this.cache.delete(e), null) : r.value : null;
759
- }
760
- /**
761
- * Set cached value
762
- */
763
- setCachedValue(e, t) {
764
- this.cache.set(e, { value: t, timestamp: Date.now() });
765
- }
766
- /**
767
- * Clear cache
768
- */
769
- clearCache() {
770
- this.cache.clear();
771
- }
772
- }
773
- class Be {
774
- constructor(e, t) {
775
- C(this, "circuitBreaker"), C(this, "retryPolicy"), C(this, "fallbackManager", new de()), e && (this.circuitBreaker = new ue(e)), t && (this.retryPolicy = new pe(t));
776
- }
777
- /**
778
- * Execute with all recovery mechanisms
779
- */
780
- async execute(e, t) {
781
- const r = this.wrapWithRecovery(e);
782
- return t ? this.fallbackManager.executeWithFallback(r, t) : r();
783
- }
784
- /**
785
- * Wrap function with recovery mechanisms
786
- */
787
- wrapWithRecovery(e) {
788
- let t = e;
789
- if (this.retryPolicy) {
790
- const r = t;
791
- t = () => this.retryPolicy.execute(r);
792
- }
793
- if (this.circuitBreaker) {
794
- const r = t;
795
- t = () => this.circuitBreaker.execute(r);
796
- }
797
- return t;
798
- }
799
- /**
800
- * Get circuit breaker metrics
801
- */
802
- getCircuitBreakerMetrics() {
803
- return this.circuitBreaker?.getMetrics();
804
- }
805
- /**
806
- * Get retry policy configuration
807
- */
808
- getRetryPolicyConfig() {
809
- return this.retryPolicy?.getConfig();
810
- }
811
- }
812
- const tr = {
813
- /**
814
- * Create a robust function wrapper with all recovery mechanisms
815
- */
816
- createRobustFunction(n, e = {}) {
817
- const t = new Be(e.circuitBreaker, e.retryPolicy);
818
- return (async (...r) => {
819
- try {
820
- return await t.execute(() => n(...r), e.fallback);
821
- } catch (s) {
822
- if (e.onError) {
823
- const i = y.createTachUIError(s, {
824
- category: "network_error"
825
- });
826
- e.onError(i);
827
- }
828
- throw s;
829
- }
830
- });
831
- },
832
- /**
833
- * Create simple retry wrapper
834
- */
835
- withRetry(n, e = 3, t = 1e3) {
836
- const r = new pe({
837
- maxAttempts: e,
838
- baseDelay: t
839
- });
840
- return ((...s) => r.execute(() => n(...s)));
841
- },
842
- /**
843
- * Create circuit breaker wrapper
844
- */
845
- withCircuitBreaker(n, e) {
846
- const t = new ue(e);
847
- return ((...r) => t.execute(() => n(...r)));
848
- },
849
- /**
850
- * Create fallback wrapper
851
- */
852
- withFallback(n, e) {
853
- const t = new de();
854
- return ((...r) => t.executeWithFallback(() => n(...r), {
855
- factory: typeof e == "function" ? e : void 0,
856
- value: typeof e != "function" ? e : void 0
857
- }));
858
- }
859
- }, rr = {
860
- /**
861
- * Configuration for network requests
862
- */
863
- network: {
864
- circuitBreaker: {
865
- failureThreshold: 5,
866
- resetTimeout: 6e4,
867
- monitoringPeriod: 3e5
868
- },
869
- retryPolicy: {
870
- maxAttempts: 3,
871
- baseDelay: 1e3,
872
- backoffMultiplier: 2,
873
- jitter: !0,
874
- retryableErrors: ["NetworkError", "TimeoutError", "ServiceUnavailable"]
875
- }
876
- },
877
- /**
878
- * Configuration for component rendering
879
- */
880
- component: {
881
- retryPolicy: {
882
- maxAttempts: 2,
883
- baseDelay: 100,
884
- backoffMultiplier: 1.5,
885
- jitter: !1,
886
- retryableErrors: ["RenderError", "ComponentError"]
887
- }
888
- },
889
- /**
890
- * Configuration for reactive operations
891
- */
892
- reactive: {
893
- retryPolicy: {
894
- maxAttempts: 1,
895
- baseDelay: 0,
896
- retryableErrors: []
897
- }
898
- }
899
- };
900
- var Ie = Object.defineProperty, Ne = (n, e, t) => e in n ? Ie(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, We = (n, e, t) => Ne(n, e + "", t);
901
- class Ue {
902
- constructor() {
903
- We(this, "windowSize", 100);
904
- }
905
- // Number of recent errors to analyze
906
- /**
907
- * Analyze error patterns
908
- */
909
- analyzePatterns(e) {
910
- const t = e.slice(-this.windowSize), r = this.detectErrorPatterns(t), s = this.detectCascadingErrors(t), i = this.detectErrorCorrelations(t);
911
- return { patterns: r, cascadingErrors: s, correlations: i };
912
- }
913
- /**
914
- * Detect error patterns
915
- */
916
- detectErrorPatterns(e) {
917
- const t = /* @__PURE__ */ new Map();
918
- for (const r of e) {
919
- const s = `${r.category}:${r.componentName || "unknown"}`;
920
- t.set(s, (t.get(s) || 0) + 1);
921
- const i = this.extractMessagePattern(r.message);
922
- t.set(i, (t.get(i) || 0) + 1);
923
- }
924
- return Array.from(t.entries()).map(([r, s]) => ({
925
- pattern: r,
926
- count: s,
927
- severity: s > 10 ? "high" : s > 5 ? "medium" : "low"
928
- })).sort((r, s) => s.count - r.count);
929
- }
930
- /**
931
- * Extract pattern from error message
932
- */
933
- extractMessagePattern(e) {
934
- return e.replace(/\d+/g, "N").replace(/['"]/g, "").replace(/\s+/g, " ").toLowerCase();
935
- }
936
- /**
937
- * Detect cascading errors (errors that happen close together)
938
- */
939
- detectCascadingErrors(e) {
940
- const t = [];
941
- for (let s = 0; s < e.length; s++) {
942
- const i = [e[s]];
943
- for (let a = s + 1; a < e.length && e[a].timestamp - e[s].timestamp <= 1e3; a++)
944
- i.push(e[a]);
945
- i.length > 1 && (t.push(i), s += i.length - 1);
946
- }
947
- return t;
948
- }
949
- /**
950
- * Detect error correlations
951
- */
952
- detectErrorCorrelations(e) {
953
- const t = [], r = new Set(e.map((s) => s.message));
954
- for (const s of r)
955
- for (const i of r) {
956
- if (s >= i) continue;
957
- const a = this.calculateCorrelation(e, s, i);
958
- a > 0.5 && t.push({ error1: s, error2: i, correlation: a });
959
- }
960
- return t.sort((s, i) => i.correlation - s.correlation);
961
- }
962
- /**
963
- * Calculate correlation between two error types
964
- */
965
- calculateCorrelation(e, t, r) {
966
- const i = /* @__PURE__ */ new Map();
967
- for (const l of e) {
968
- const u = Math.floor(l.timestamp / 5e3), p = i.get(u) || { type1: !1, type2: !1 };
969
- l.message === t && (p.type1 = !0), l.message === r && (p.type2 = !0), i.set(u, p);
970
- }
971
- const a = Array.from(i.values()), o = a.filter((l) => l.type1 && l.type2).length, c = a.filter((l) => l.type1 || l.type2).length;
972
- return c > 0 ? o / c : 0;
973
- }
974
- }
975
- class Fe {
976
- /**
977
- * Analyze stack trace
978
- */
979
- analyzeStackTrace(e) {
980
- if (!e.stack)
981
- return {
982
- frames: [],
983
- affectedComponents: [],
984
- suggestedFixes: []
985
- };
986
- const t = this.parseStackTrace(e.stack), r = this.identifyRootCause(t, e), s = this.extractAffectedComponents(t), i = this.generateSuggestedFixes(e, t);
987
- return {
988
- frames: t,
989
- rootCause: r,
990
- affectedComponents: s,
991
- suggestedFixes: i
992
- };
993
- }
994
- /**
995
- * Parse stack trace into frames
996
- */
997
- parseStackTrace(e) {
998
- const t = e.split(`
999
- `).slice(1), r = [];
1000
- for (const s of t) {
1001
- const i = s.match(/at\s+(.+?)\s+\((.+?):(\d+):(\d+)\)/) || s.match(/at\s+(.+?):(\d+):(\d+)/);
1002
- i && (i.length === 5 ? r.push({
1003
- function: i[1] || "anonymous",
1004
- file: i[2],
1005
- line: parseInt(i[3]),
1006
- column: parseInt(i[4])
1007
- }) : i.length === 4 && r.push({
1008
- function: "anonymous",
1009
- file: i[1],
1010
- line: parseInt(i[2]),
1011
- column: parseInt(i[3])
1012
- }));
1013
- }
1014
- return r;
1015
- }
1016
- /**
1017
- * Identify root cause from stack trace
1018
- */
1019
- identifyRootCause(e, t) {
1020
- const r = e.filter(
1021
- (s) => s.file.includes("tachui") || s.function.includes("Component") || s.function.includes("render")
1022
- );
1023
- if (r.length > 0) {
1024
- const s = r[0];
1025
- return `Error in ${s.function} at ${s.file}:${s.line}`;
1026
- }
1027
- if (e.length > 0)
1028
- return `Error in ${e[0].function}`;
1029
- }
1030
- /**
1031
- * Extract affected components from stack trace
1032
- */
1033
- extractAffectedComponents(e) {
1034
- const t = /* @__PURE__ */ new Set();
1035
- for (const r of e) {
1036
- const s = r.function.match(/(\w+Component)|(\w+\.render)/);
1037
- s && t.add(s[1] || s[2].replace(".render", ""));
1038
- }
1039
- return Array.from(t);
1040
- }
1041
- /**
1042
- * Generate suggested fixes
1043
- */
1044
- generateSuggestedFixes(e, t) {
1045
- const r = [];
1046
- switch (e.category) {
1047
- case "component_error":
1048
- r.push("Check component props and state"), r.push("Verify component lifecycle methods"), t.some((s) => s.function.includes("render")) && r.push("Review render method for potential null/undefined values");
1049
- break;
1050
- case "reactive_error":
1051
- r.push("Check signal dependencies and computed values"), r.push("Verify effect cleanup functions");
1052
- break;
1053
- case "render_error":
1054
- r.push("Check DOM element references"), r.push("Verify element properties and attributes");
1055
- break;
1056
- case "validation_error":
1057
- r.push("Review input validation logic"), r.push("Check data types and required fields");
1058
- break;
1059
- case "network_error":
1060
- r.push("Check network connectivity"), r.push("Verify API endpoints and request format"), r.push("Implement proper error handling for network requests");
1061
- break;
1062
- }
1063
- return (e.message.includes("null") || e.message.includes("undefined")) && r.push("Add null/undefined checks before accessing properties"), e.message.includes("TypeError") && r.push("Verify variable types and method availability"), r;
1064
- }
1065
- }
1066
- class Le {
1067
- /**
1068
- * Analyze performance impact of errors
1069
- */
1070
- analyzePerformanceImpact(e) {
1071
- const t = e.length, r = [...new Set(e.map((o) => o.componentId).filter(Boolean))], s = this.calculateAverageRenderTime(r), i = this.calculateMemoryUsage(r), a = this.calculatePerformanceDegradation(e);
1072
- return {
1073
- errorCount: t,
1074
- averageRenderTime: s,
1075
- memoryUsage: i,
1076
- affectedComponents: r,
1077
- performanceDegradation: a
1078
- };
1079
- }
1080
- /**
1081
- * Calculate average render time for affected components
1082
- */
1083
- calculateAverageRenderTime(e) {
1084
- return e.length * 2.5;
1085
- }
1086
- /**
1087
- * Calculate memory usage impact
1088
- */
1089
- calculateMemoryUsage(e) {
1090
- return e.length * 1024 * 10;
1091
- }
1092
- /**
1093
- * Calculate performance degradation percentage
1094
- */
1095
- calculatePerformanceDegradation(e) {
1096
- const t = { low: 1, medium: 3, high: 5, critical: 10 }, r = e.reduce((s, i) => s + t[i.severity], 0);
1097
- return Math.min(r * 2, 100);
1098
- }
1099
- }
1100
- const nr = {
1101
- /**
1102
- * Generate comprehensive error report
1103
- */
1104
- generateErrorReport() {
1105
- const n = y.getErrors(), e = H.getAggregations(), t = y.getStatistics(), s = new Ue().analyzePatterns(n), i = Object.entries(t.errorsByCategory).map(([o, c]) => ({
1106
- category: o,
1107
- trend: "stable",
1108
- // Would calculate from historical data
1109
- change: 0
1110
- })), a = this.generateRecommendations(n, e, s);
1111
- return {
1112
- totalErrors: t.totalErrors,
1113
- errorsByCategory: t.errorsByCategory,
1114
- errorsBySeverity: t.errorsBySeverity,
1115
- topErrors: e.slice(0, 10),
1116
- recentErrors: n.slice(-10),
1117
- errorTrends: i,
1118
- recommendations: a
1119
- };
1120
- },
1121
- /**
1122
- * Generate recommendations based on error analysis
1123
- */
1124
- generateRecommendations(n, e, t) {
1125
- const r = [];
1126
- return n.length > 50 && (r.push("Consider implementing error boundaries to contain errors"), r.push("Review error handling strategies across components")), n.filter((a) => a.category === "component_error").length > 10 && (r.push("Review component lifecycle methods and state management"), r.push("Add prop validation to prevent runtime errors")), n.filter((a) => a.category === "network_error").length > 5 && (r.push("Implement retry logic for network requests"), r.push("Add proper error handling for API calls")), t.cascadingErrors.length > 0 && r.push("Investigate cascading errors that may indicate systemic issues"), r;
1127
- },
1128
- /**
1129
- * Debug specific error
1130
- */
1131
- debugError(n) {
1132
- const e = y.getErrors().find((c) => c.id === n);
1133
- if (!e) return null;
1134
- const t = new Fe(), r = new Le(), s = t.analyzeStackTrace(e), i = this.findRelatedErrors(e), a = r.analyzePerformanceImpact([
1135
- e,
1136
- ...i
1137
- ]), o = this.generateErrorSuggestions(e, s, i);
1138
- return {
1139
- error: e,
1140
- stackTrace: s,
1141
- relatedErrors: i,
1142
- performanceImpact: a,
1143
- suggestions: o
1144
- };
1145
- },
1146
- /**
1147
- * Find related errors
1148
- */
1149
- findRelatedErrors(n) {
1150
- const e = y.getErrors(), t = 5e3;
1151
- return e.filter(
1152
- (r) => r.id !== n.id && Math.abs(r.timestamp - n.timestamp) <= t && (r.componentId === n.componentId || r.category === n.category)
1153
- );
1154
- },
1155
- /**
1156
- * Generate error-specific suggestions
1157
- */
1158
- generateErrorSuggestions(n, e, t) {
1159
- const r = [...e.suggestedFixes];
1160
- return t.length > 0 && r.push("Multiple related errors detected - check for common root cause"), n.retryCount > 0 && r.push("Error has been retried - consider implementing circuit breaker"), r;
1161
- },
1162
- /**
1163
- * Log error analysis to console
1164
- */
1165
- logErrorAnalysis() {
1166
- const n = this.generateErrorReport();
1167
- console.group("🚨 TachUI Error Analysis"), console.log(`Total Errors: ${n.totalErrors}`), console.log("Errors by Category:", n.errorsByCategory), console.log("Errors by Severity:", n.errorsBySeverity), n.topErrors.length > 0 && (console.group("Top Errors"), n.topErrors.forEach((e) => {
1168
- console.log(`${e.message} (${e.count} times)`);
1169
- }), console.groupEnd()), n.recommendations.length > 0 && (console.group("Recommendations"), n.recommendations.forEach((e) => console.log(`• ${e}`)), console.groupEnd()), console.groupEnd();
1170
- },
1171
- /**
1172
- * Export error data for external analysis
1173
- */
1174
- exportErrorData() {
1175
- return {
1176
- errors: y.getErrors(),
1177
- logs: q.getEntries(),
1178
- aggregations: H.getAggregations(),
1179
- analysis: this.generateErrorReport(),
1180
- timestamp: Date.now()
1181
- };
1182
- },
1183
- /**
1184
- * Simulate error for testing
1185
- */
1186
- simulateError(n = "component_error", e = "medium", t = "Test error") {
1187
- const r = y.createTachUIError(new Error(t), {
1188
- category: n,
1189
- severity: e,
1190
- componentId: "test-component"
1191
- });
1192
- y.reportError(r);
1193
- },
1194
- /**
1195
- * Clear all error data
1196
- */
1197
- clearAllErrorData() {
1198
- y.clear(), q.clear(), H.clear(), console.log("All error data cleared");
1199
- }
1200
- }, sr = {
1201
- /**
1202
- * Enable enhanced error debugging
1203
- */
1204
- enableEnhancedDebugging() {
1205
- y.configure({
1206
- development: !0,
1207
- captureConsoleErrors: !0,
1208
- captureUnhandledPromises: !0,
1209
- enableStackTrace: !0
1210
- }), q.addDestination({
1211
- name: "enhanced-console",
1212
- async send(n) {
1213
- n.forEach((e) => {
1214
- "level" in e && ["error", "fatal"].includes(e.level) && console.error(`🚨 [${e.level.toUpperCase()}]`, e.message, e.context);
1215
- });
1216
- },
1217
- isEnabled: () => !0
1218
- }), console.log("🛠️ Enhanced error debugging enabled");
1219
- },
1220
- /**
1221
- * Setup error monitoring dashboard
1222
- */
1223
- setupErrorDashboard() {
1224
- const n = j(0), e = j([]), [t, r] = n, [s, i] = e;
1225
- y.addHandler((a) => {
1226
- const o = y.getErrors();
1227
- r(o.length), i(o.slice(-5));
1228
- }), b(() => {
1229
- const a = t(), o = s();
1230
- a > 0 && (console.group(`📊 Error Dashboard (${a} total errors)`), o.forEach((c) => {
1231
- console.log(`${c.category}: ${c.message}`);
1232
- }), console.groupEnd());
1233
- });
1234
- }
1235
- };
1236
- class ir {
1237
- // Placeholder implementation
1238
- }
1239
- function ar() {
1240
- }
1241
- function or() {
1242
- }
1243
- function cr() {
1244
- }
1245
- function lr() {
1246
- }
1247
- function ur(n) {
1248
- return typeof n == "string" ? Ge(n) : new I({
1249
- family: n.family,
1250
- size: n.size,
1251
- weight: n.weight,
1252
- style: n.style
1253
- });
1254
- }
1255
- function Ge(n) {
1256
- const e = {
1257
- ".largeTitle": { size: 34, weight: 400 },
1258
- ".title": { size: 28, weight: 400 },
1259
- ".title2": { size: 22, weight: 400 },
1260
- ".title3": { size: 20, weight: 400 },
1261
- ".headline": { size: 17, weight: 600 },
1262
- ".subheadline": { size: 15, weight: 400 },
1263
- ".body": { size: 17, weight: 400 },
1264
- ".callout": { size: 16, weight: 400 },
1265
- ".footnote": { size: 13, weight: 400 },
1266
- ".caption": { size: 12, weight: 400 },
1267
- ".caption2": { size: 11, weight: 400 }
1268
- }, t = e[n];
1269
- return t ? new I(t) : (console.warn(`Unknown font preset: ${n}. Using default body font.`), new I(e[".body"]));
1270
- }
1271
- function pr(n) {
1272
- let e;
1273
- switch (n.design) {
1274
- case "serif":
1275
- e = "ui-serif, Georgia, serif";
1276
- break;
1277
- case "rounded":
1278
- e = "ui-rounded, system-ui, -apple-system, sans-serif";
1279
- break;
1280
- case "monospaced":
1281
- e = "ui-monospace, SFMono-Regular, Consolas, monospace";
1282
- break;
1283
- default:
1284
- e = "system-ui, -apple-system, BlinkMacSystemFont, sans-serif";
1285
- }
1286
- return new I({
1287
- family: e,
1288
- size: n.size,
1289
- weight: n.weight
1290
- });
1291
- }
1292
- function dr(n, e) {
1293
- return new I({
1294
- family: n,
1295
- size: e?.size,
1296
- weight: e?.weight,
1297
- style: e?.style
1298
- });
1299
- }
1300
- class fr {
1301
- /**
1302
- * Create a responsive grid with automatic column sizing
1303
- */
1304
- static autoFit(e) {
1305
- const t = {};
1306
- if (typeof e.minColumnWidth == "object") {
1307
- t.gridTemplateColumns = {};
1308
- for (const [r, s] of Object.entries(e.minColumnWidth)) {
1309
- const i = typeof s == "number" ? `${s}px` : s, a = e.maxColumns && typeof e.maxColumns == "object" ? e.maxColumns[r] || "auto" : e.maxColumns || "auto";
1310
- t.gridTemplateColumns[r] = a === "auto" ? `repeat(auto-fit, minmax(${i}, 1fr))` : `repeat(${a}, minmax(${i}, 1fr))`;
1311
- }
1312
- } else {
1313
- const r = typeof e.minColumnWidth == "number" ? `${e.minColumnWidth}px` : e.minColumnWidth, s = e.maxColumns || "auto";
1314
- t.gridTemplateColumns = s === "auto" ? `repeat(auto-fit, minmax(${r}, 1fr))` : `repeat(${s}, minmax(${r}, 1fr))`;
1315
- }
1316
- return e.gap && (t.gap = e.gap), t.display = "grid", h(t);
1317
- }
1318
- /**
1319
- * Create a responsive grid with explicit column counts
1320
- */
1321
- static columns(e, t) {
1322
- const r = {
1323
- display: "grid",
1324
- gridTemplateColumns: typeof e == "object" ? Object.fromEntries(
1325
- Object.entries(e).map(([s, i]) => [s, `repeat(${i}, 1fr)`])
1326
- ) : `repeat(${e}, 1fr)`
1327
- };
1328
- return t?.gap && (r.gap = t.gap), t?.rowGap && (r.rowGap = t.rowGap), t?.autoRows && (r.gridAutoRows = t.autoRows), h(r);
1329
- }
1330
- /**
1331
- * Create responsive masonry-style grid
1332
- */
1333
- static masonry(e) {
1334
- const t = {
1335
- display: "grid",
1336
- gridTemplateColumns: typeof e.columns == "object" ? Object.fromEntries(
1337
- Object.entries(e.columns).map(([r, s]) => [r, `repeat(${s}, 1fr)`])
1338
- ) : `repeat(${e.columns}, 1fr)`,
1339
- gridAutoRows: "max-content"
1340
- };
1341
- return e.gap && (t.gap = e.gap), h(t);
1342
- }
1343
- }
1344
- class hr {
1345
- /**
1346
- * Create a responsive flex container that stacks on mobile, flows horizontally on desktop
1347
- */
1348
- static stackToRow(e) {
1349
- const r = {
1350
- display: "flex",
1351
- flexDirection: {
1352
- base: "column",
1353
- [e?.stackBreakpoint || "md"]: "row"
1354
- }
1355
- };
1356
- return e?.gap && (r.gap = e.gap), e?.align && (r.alignItems = e.align), e?.justify && (r.justifyContent = e.justify), h(r);
1357
- }
1358
- /**
1359
- * Create a responsive flex container with wrapping behavior
1360
- */
1361
- static wrap(e) {
1362
- const t = {
1363
- display: "flex",
1364
- flexWrap: "wrap",
1365
- ...e
1366
- };
1367
- return h(t);
1368
- }
1369
- /**
1370
- * Create centered flex layout
1371
- */
1372
- static center(e = "row") {
1373
- return h({
1374
- display: "flex",
1375
- flexDirection: e,
1376
- justifyContent: "center",
1377
- alignItems: "center"
1378
- });
1379
- }
1380
- /**
1381
- * Create space-between flex layout
1382
- */
1383
- static spaceBetween(e = "row") {
1384
- return h({
1385
- display: "flex",
1386
- flexDirection: e,
1387
- justifyContent: "space-between",
1388
- alignItems: "center"
1389
- });
1390
- }
1391
- }
1392
- class mr {
1393
- /**
1394
- * Create a responsive container with max-width constraints
1395
- */
1396
- static container(e) {
1397
- const t = {
1398
- width: "100%",
1399
- marginLeft: "auto",
1400
- marginRight: "auto"
1401
- };
1402
- return e?.maxWidth ? t.maxWidth = e.maxWidth : t.maxWidth = {
1403
- sm: "640px",
1404
- md: "768px",
1405
- lg: "1024px",
1406
- xl: "1280px",
1407
- "2xl": "1536px"
1408
- }, e?.padding && (t.paddingLeft = e.padding, t.paddingRight = e.padding), e?.margin && (t.marginTop = e.margin, t.marginBottom = e.margin), h(t);
1409
- }
1410
- /**
1411
- * Create a full-width container that breaks out of constraints
1412
- */
1413
- static fullWidth() {
1414
- return h({
1415
- width: "100vw",
1416
- marginLeft: "calc(-50vw + 50%)",
1417
- marginRight: "calc(-50vw + 50%)"
1418
- });
1419
- }
1420
- /**
1421
- * Create a section container with responsive padding
1422
- */
1423
- static section(e) {
1424
- const t = {};
1425
- return e?.paddingY && (t.paddingTop = e.paddingY, t.paddingBottom = e.paddingY), e?.paddingX && (t.paddingLeft = e.paddingX, t.paddingRight = e.paddingX), e?.maxWidth && (t.maxWidth = e.maxWidth, t.marginLeft = "auto", t.marginRight = "auto"), h(t);
1426
- }
1427
- }
1428
- class gr {
1429
- /**
1430
- * Show element only on specific breakpoints
1431
- */
1432
- static showOn(e) {
1433
- const t = {
1434
- display: {}
1435
- // Start with empty object
1436
- };
1437
- for (const r of e)
1438
- t.display[r] = "block";
1439
- return h(t);
1440
- }
1441
- /**
1442
- * Hide element only on specific breakpoints
1443
- */
1444
- static hideOn(e) {
1445
- const t = {
1446
- display: {}
1447
- // Start with empty object
1448
- };
1449
- for (const r of e)
1450
- t.display[r] = "none";
1451
- return h(t);
1452
- }
1453
- /**
1454
- * Show on mobile, hide on desktop
1455
- */
1456
- static mobileOnly() {
1457
- return h({
1458
- display: {
1459
- base: "block",
1460
- md: "none"
1461
- }
1462
- });
1463
- }
1464
- /**
1465
- * Hide on mobile, show on desktop
1466
- */
1467
- static desktopOnly() {
1468
- return h({
1469
- display: {
1470
- base: "none",
1471
- md: "block"
1472
- }
1473
- });
1474
- }
1475
- /**
1476
- * Show only on tablet breakpoint
1477
- */
1478
- static tabletOnly() {
1479
- return h({
1480
- display: {
1481
- base: "none",
1482
- md: "block",
1483
- lg: "none"
1484
- }
1485
- });
1486
- }
1487
- }
1488
- class yr {
1489
- /**
1490
- * Create responsive padding
1491
- */
1492
- static padding(e) {
1493
- const t = {};
1494
- return e.all && (t.padding = e.all), e.horizontal && (t.paddingLeft = e.horizontal, t.paddingRight = e.horizontal), e.vertical && (t.paddingTop = e.vertical, t.paddingBottom = e.vertical), e.top && (t.paddingTop = e.top), e.right && (t.paddingRight = e.right), e.bottom && (t.paddingBottom = e.bottom), e.left && (t.paddingLeft = e.left), h(t);
1495
- }
1496
- /**
1497
- * Create responsive margin
1498
- */
1499
- static margin(e) {
1500
- const t = {};
1501
- return e.all && (t.margin = e.all), e.horizontal && (t.marginLeft = e.horizontal, t.marginRight = e.horizontal), e.vertical && (t.marginTop = e.vertical, t.marginBottom = e.vertical), e.top && (t.marginTop = e.top), e.right && (t.marginRight = e.right), e.bottom && (t.marginBottom = e.bottom), e.left && (t.marginLeft = e.left), h(t);
1502
- }
1503
- /**
1504
- * Create responsive gap (for flexbox and grid)
1505
- */
1506
- static gap(e) {
1507
- const t = {};
1508
- return e.all && (t.gap = e.all), e.column && (t.columnGap = e.column), e.row && (t.rowGap = e.row), h(t);
1509
- }
1510
- }
1511
- class br {
1512
- /**
1513
- * Create responsive font scale
1514
- */
1515
- static scale(e) {
1516
- const t = {
1517
- fontSize: e.base
1518
- };
1519
- if (e.scale && typeof e.scale == "object") {
1520
- t.fontSize = {};
1521
- for (const [r, s] of Object.entries(e.scale)) {
1522
- const i = typeof e.base == "number" ? e.base : parseFloat(e.base);
1523
- t.fontSize[r] = `${i * s}px`;
1524
- }
1525
- }
1526
- return e.lineHeight && (t.lineHeight = e.lineHeight), h(t);
1527
- }
1528
- /**
1529
- * Create fluid typography that scales smoothly
1530
- */
1531
- static fluid(e) {
1532
- const t = e.minBreakpoint || "320px", r = e.maxBreakpoint || "1200px", s = typeof e.minSize == "number" ? `${e.minSize}px` : e.minSize, i = typeof e.maxSize == "number" ? `${e.maxSize}px` : e.maxSize;
1533
- return h({
1534
- fontSize: `clamp(${s}, calc(${s} + (${i} - ${s}) * ((100vw - ${t}) / (${r} - ${t}))), ${i})`
1535
- });
1536
- }
1537
- }
1538
- class k {
1539
- /**
1540
- * Create a responsive value resolver with custom logic
1541
- */
1542
- static createResponsiveResolver(e, t = []) {
1543
- const r = E();
1544
- return b(() => {
1545
- t.forEach((a) => a());
1546
- const s = r(), i = R();
1547
- return e(s, i);
1548
- });
1549
- }
1550
- /**
1551
- * Create responsive value that interpolates between breakpoints
1552
- */
1553
- static createInterpolatedValue(e, t = {}) {
1554
- const { smoothing: r = "linear", clamp: s = !0 } = t;
1555
- return b(() => {
1556
- const a = R().width, o = ye(), c = [];
1557
- for (const [f, g] of Object.entries(e))
1558
- if (g !== void 0) {
1559
- const W = f === "base" ? 0 : parseInt(o[f] || "0");
1560
- c.push({ width: W, value: g });
1561
- }
1562
- if (c.sort((f, g) => f.width - g.width), c.length === 0) return 0;
1563
- if (c.length === 1) return c[0].value;
1564
- let l = c[0], u = c[c.length - 1];
1565
- for (let f = 0; f < c.length - 1; f++)
1566
- if (a >= c[f].width && a <= c[f + 1].width) {
1567
- l = c[f], u = c[f + 1];
1568
- break;
1569
- }
1570
- if (s) {
1571
- if (a <= l.width) return l.value;
1572
- if (a >= u.width) return u.value;
1573
- }
1574
- const p = (a - l.width) / (u.width - l.width);
1575
- let d = p;
1576
- switch (r) {
1577
- case "ease":
1578
- d = 0.5 - 0.5 * Math.cos(p * Math.PI);
1579
- break;
1580
- case "ease-in":
1581
- d = p * p;
1582
- break;
1583
- case "ease-out":
1584
- d = 1 - (1 - p) * (1 - p);
1585
- break;
1586
- case "linear":
1587
- default:
1588
- d = p;
1589
- break;
1590
- }
1591
- return l.value + (u.value - l.value) * d;
1592
- });
1593
- }
1594
- /**
1595
- * Create conditional responsive behavior
1596
- */
1597
- static createConditionalResponsive(e, t, r) {
1598
- const s = E();
1599
- return b(() => {
1600
- const i = R(), o = e(i) ? t : r;
1601
- return this.resolveResponsiveValue(o, s());
1602
- });
1603
- }
1604
- /**
1605
- * Resolve responsive value at specific breakpoint
1606
- */
1607
- static resolveResponsiveValue(e, t) {
1608
- if (!ne(e))
1609
- return e;
1610
- const r = e, s = ["base", "sm", "md", "lg", "xl", "2xl"], i = s.indexOf(t);
1611
- for (let a = i; a >= 0; a--) {
1612
- const o = s[a];
1613
- if (r[o] !== void 0)
1614
- return r[o];
1615
- }
1616
- for (const a of s)
1617
- if (r[a] !== void 0)
1618
- return r[a];
1619
- throw new Error("No responsive value found");
1620
- }
1621
- }
1622
- class He {
1623
- /**
1624
- * Hook for responsive arrays (e.g., responsive grid columns data)
1625
- */
1626
- static useResponsiveArray(e) {
1627
- const t = E();
1628
- return b(() => {
1629
- const r = t();
1630
- return k.resolveResponsiveValue(e, r) || [];
1631
- });
1632
- }
1633
- /**
1634
- * Hook for responsive object selection
1635
- */
1636
- static useResponsiveObject(e) {
1637
- const t = E();
1638
- return b(() => {
1639
- const r = t();
1640
- try {
1641
- return k.resolveResponsiveValue(e, r);
1642
- } catch {
1643
- return null;
1644
- }
1645
- });
1646
- }
1647
- /**
1648
- * Hook for responsive function selection and execution
1649
- */
1650
- static useResponsiveFunction(e) {
1651
- const t = E();
1652
- return b(() => {
1653
- const r = t();
1654
- try {
1655
- return k.resolveResponsiveValue(e, r);
1656
- } catch {
1657
- return null;
1658
- }
1659
- });
1660
- }
1661
- /**
1662
- * Hook for responsive state management
1663
- */
1664
- static useResponsiveState(e) {
1665
- const [t, r] = j(e), s = E();
1666
- return [b(() => {
1667
- const o = t(), c = s();
1668
- try {
1669
- return k.resolveResponsiveValue(o, c);
1670
- } catch {
1671
- return;
1672
- }
1673
- }), (o) => {
1674
- ne(o) ? r(o) : r({ [s()]: o });
1675
- }];
1676
- }
1677
- /**
1678
- * Hook for responsive computations with memoization
1679
- */
1680
- static useResponsiveComputation(e, t = []) {
1681
- return ve(() => {
1682
- t.forEach((s) => s());
1683
- const r = R();
1684
- return e(r);
1685
- });
1686
- }
1687
- /**
1688
- * Hook for responsive side effects
1689
- */
1690
- static useResponsiveEffect(e, t = []) {
1691
- let r, s;
1692
- v(() => {
1693
- t.forEach((o) => o());
1694
- const i = R();
1695
- r && (r(), r = void 0);
1696
- const a = e(i, s);
1697
- typeof a == "function" && (r = a), s = i;
1698
- });
1699
- }
1700
- }
1701
- class qe {
1702
- /**
1703
- * Execute callback only on specific breakpoints
1704
- */
1705
- static onBreakpoints(e, t) {
1706
- let r;
1707
- return v(() => {
1708
- const s = R();
1709
- if (e.includes(s.current)) {
1710
- r && (r(), r = void 0);
1711
- const i = t(s);
1712
- typeof i == "function" && (r = i);
1713
- }
1714
- }), () => {
1715
- r && r();
1716
- };
1717
- }
1718
- /**
1719
- * Execute callback when breakpoint changes
1720
- */
1721
- static onBreakpointChange(e) {
1722
- let t;
1723
- return v(() => {
1724
- const r = R(), s = r.current;
1725
- t && t !== s && e(s, t, r), t = s;
1726
- }), () => {
1727
- };
1728
- }
1729
- /**
1730
- * Execute callback when entering/leaving specific breakpoint ranges
1731
- */
1732
- static onBreakpointRange(e, t, r) {
1733
- let s = !1, i, a;
1734
- return v(() => {
1735
- const o = R(), c = G(o.current), l = G(e), u = G(t), p = c >= l && c <= u;
1736
- if (p && !s) {
1737
- if (r.onEnter) {
1738
- const d = r.onEnter(o);
1739
- typeof d == "function" && (a = d);
1740
- }
1741
- s = !0;
1742
- } else !p && s && (a && (a(), a = void 0), i && (i(), i = void 0), r.onLeave && r.onLeave(o), s = !1);
1743
- if (p && r.onWithin) {
1744
- i && (i(), i = void 0);
1745
- const d = r.onWithin(o);
1746
- typeof d == "function" && (i = d);
1747
- }
1748
- }), () => {
1749
- a && a(), i && i();
1750
- };
1751
- }
1752
- }
1753
- class Ke {
1754
- /**
1755
- * Create responsive pagination
1756
- */
1757
- static createResponsivePagination(e, t) {
1758
- const [r, s] = j(1), i = E(), a = b(() => {
1759
- const g = i();
1760
- return k.resolveResponsiveValue(t, g);
1761
- }), o = b(() => Math.ceil(e.length / a())), c = b(() => {
1762
- const g = a(), J = (r() - 1) * g, ge = J + g;
1763
- return e.slice(J, ge);
1764
- }), l = b(() => r() < o()), u = b(() => r() > 1), p = (g) => {
1765
- const W = o();
1766
- s(Math.max(1, Math.min(g, W)));
1767
- }, d = () => {
1768
- l() && s(r() + 1);
1769
- }, f = () => {
1770
- u() && s(r() - 1);
1771
- };
1772
- return v(() => {
1773
- a(), s(1);
1774
- }), {
1775
- currentPage: r,
1776
- totalPages: o,
1777
- currentItems: c,
1778
- setPage: p,
1779
- nextPage: d,
1780
- prevPage: f,
1781
- hasNext: l,
1782
- hasPrev: u
1783
- };
1784
- }
1785
- /**
1786
- * Create responsive filtering
1787
- */
1788
- static createResponsiveFilter(e, t) {
1789
- const r = E();
1790
- return b(() => {
1791
- const s = r(), i = k.resolveResponsiveValue(t, s);
1792
- return i ? e.filter(i) : e;
1793
- });
1794
- }
1795
- /**
1796
- * Create responsive sorting
1797
- */
1798
- static createResponsiveSort(e, t) {
1799
- const r = E();
1800
- return b(() => {
1801
- const s = r(), i = k.resolveResponsiveValue(t, s);
1802
- return i ? [...e].sort(i) : e;
1803
- });
1804
- }
1805
- }
1806
- const Cr = {
1807
- Breakpoints: k,
1808
- Hooks: He,
1809
- Targeting: qe,
1810
- Data: Ke
1811
- };
1812
- var Xe = Object.defineProperty, Ye = (n, e, t) => e in n ? Xe(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, x = (n, e, t) => Ye(n, typeof e != "symbol" ? e + "" : e, t);
1813
- class Je extends z {
1814
- constructor(e, t) {
1815
- super({ span: e, start: t }), x(this, "type", "grid-column-span"), x(this, "priority", 200);
1816
- }
1817
- apply(e, t) {
1818
- const r = t.element || e.element;
1819
- if (!r)
1820
- return;
1821
- const { span: s, start: i } = this.properties;
1822
- i !== void 0 ? r.style.gridColumn = `${i} / span ${s}` : r.style.gridColumn = `span ${s}`;
1823
- }
1824
- }
1825
- class Ze extends z {
1826
- constructor(e, t) {
1827
- super({ span: e, start: t }), x(this, "type", "grid-row-span"), x(this, "priority", 200);
1828
- }
1829
- apply(e, t) {
1830
- const r = t.element || e.element;
1831
- if (!r)
1832
- return;
1833
- const { span: s, start: i } = this.properties;
1834
- i !== void 0 ? r.style.gridRow = `${i} / span ${s}` : r.style.gridRow = `span ${s}`;
1835
- }
1836
- }
1837
- class Qe extends z {
1838
- constructor(e) {
1839
- super({ area: e }), x(this, "type", "grid-area"), x(this, "priority", 200);
1840
- }
1841
- apply(e, t) {
1842
- const r = t.element || e.element;
1843
- r && (r.style.gridArea = this.properties.area);
1844
- }
1845
- }
1846
- class et extends z {
1847
- constructor(e, t) {
1848
- const r = {};
1849
- (t === "horizontal" || t === "both" || t === void 0) && (r.justifySelf = e), (t === "vertical" || t === "both" || t === void 0) && (r.alignSelf = e), super(r), x(this, "type", "grid-cell-alignment"), x(this, "priority", 200);
1850
- }
1851
- apply(e, t) {
1852
- const r = t.element || e.element;
1853
- if (!r)
1854
- return;
1855
- const { justifySelf: s, alignSelf: i } = this.properties;
1856
- s && (r.style.justifySelf = s), i && (r.style.alignSelf = i);
1857
- }
1858
- }
1859
- class tt extends z {
1860
- constructor() {
1861
- super(...arguments), x(this, "type", "grid-item-config"), x(this, "priority", 200);
1862
- }
1863
- apply(e, t) {
1864
- const r = t.element || e.element;
1865
- if (!r)
1866
- return;
1867
- const { columnSpan: s, rowSpan: i, columnStart: a, rowStart: o, area: c, alignment: l } = this.properties, u = r.style;
1868
- s !== void 0 ? a !== void 0 ? u.gridColumn = `${a} / span ${s}` : u.gridColumn = `span ${s}` : a !== void 0 && (u.gridColumnStart = a.toString()), i !== void 0 ? o !== void 0 ? u.gridRow = `${o} / span ${i}` : u.gridRow = `span ${i}` : o !== void 0 && (u.gridRowStart = o.toString()), c && (u.gridArea = c), l && (u.justifySelf = l, u.alignSelf = l);
1869
- }
1870
- }
1871
- function rt(n, e) {
1872
- return new Je(n, e);
1873
- }
1874
- function nt(n, e) {
1875
- return new Ze(n, e);
1876
- }
1877
- function vr(n) {
1878
- return new Qe(n);
1879
- }
1880
- function st(n, e) {
1881
- return new et(n, e);
1882
- }
1883
- function wr(n) {
1884
- return new tt(n);
1885
- }
1886
- const Sr = rt, xr = nt, Er = st;
1887
- var it = Object.defineProperty, at = (n, e, t) => e in n ? it(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, Q = (n, e, t) => at(n, typeof e != "symbol" ? e + "" : e, t);
1888
- const K = {
1889
- /**
1890
- * Check if a value is a reactive signal
1891
- */
1892
- isReactive(n) {
1893
- return T(n);
1894
- },
1895
- /**
1896
- * Resolve a potentially reactive value
1897
- */
1898
- resolveValue(n) {
1899
- return T(n) ? n() : n;
1900
- },
1901
- /**
1902
- * Create a reactive effect for a value
1903
- */
1904
- createReactiveEffect(n, e) {
1905
- if (T(n)) {
1906
- const t = v(() => {
1907
- const r = n();
1908
- e(r);
1909
- });
1910
- return () => t.dispose();
1911
- }
1912
- return null;
1913
- },
1914
- /**
1915
- * Merge modifier properties
1916
- */
1917
- mergeProperties(n, e) {
1918
- const t = { ...n };
1919
- for (const [r, s] of Object.entries(e))
1920
- s !== void 0 && (t[r] = s);
1921
- return t;
1922
- },
1923
- /**
1924
- * Convert a CSS property name to camelCase
1925
- */
1926
- toCamelCase(n) {
1927
- return n.replace(/-([a-z])/g, (e, t) => t.toUpperCase());
1928
- },
1929
- /**
1930
- * Convert a camelCase property to CSS kebab-case
1931
- */
1932
- toKebabCase(n) {
1933
- return n.replace(/([A-Z])/g, "-$1").toLowerCase();
1934
- },
1935
- /**
1936
- * Normalize a CSS value
1937
- */
1938
- normalizeCSSValue(n) {
1939
- return typeof n == "number" ? `${n}px` : typeof n == "string" ? n : String(n);
1940
- }
1941
- };
1942
- function P(n, e, t) {
1943
- class r extends z {
1944
- constructor() {
1945
- super(...arguments), Q(this, "type", n), Q(this, "priority", e);
1946
- }
1947
- apply(i, a) {
1948
- return t(i, a, this.properties);
1949
- }
1950
- }
1951
- return (s) => new r(s);
1952
- }
1953
- function _r(n, e = "combined", t = 999) {
1954
- return P(e, t, (r, s, i) => {
1955
- let a = r;
1956
- for (const o of n) {
1957
- const c = o.apply(a, s);
1958
- c && typeof c == "object" && "type" in c && (a = c);
1959
- }
1960
- return a;
1961
- })({});
1962
- }
1963
- function Or(n, e) {
1964
- return P(
1965
- `conditional-${e.type}`,
1966
- e.priority,
1967
- (t, r, s) => {
1968
- if (K.resolveValue(n))
1969
- return e.apply(t, r);
1970
- if (T(n)) {
1971
- const a = v(() => {
1972
- const o = n();
1973
- r.element && o && e.apply(t, r);
1974
- });
1975
- if (!t.dispose)
1976
- t.dispose = () => a.dispose();
1977
- else {
1978
- const o = t.dispose;
1979
- t.dispose = () => {
1980
- a.dispose(), o();
1981
- };
1982
- }
1983
- }
1984
- return t;
1985
- }
1986
- )({});
1987
- }
1988
- function kr(n, e) {
1989
- return P("state", 500, (t, r, s) => {
1990
- let i = t;
1991
- const a = (c) => {
1992
- const l = e[c] || [];
1993
- for (const u of l) {
1994
- const p = u.apply(i, r);
1995
- p && typeof p == "object" && "type" in p && (i = p);
1996
- }
1997
- };
1998
- a(n());
1999
- const o = v(() => {
2000
- const c = n();
2001
- a(c);
2002
- });
2003
- if (!t.dispose)
2004
- t.dispose = () => o.dispose();
2005
- else {
2006
- const c = t.dispose;
2007
- t.dispose = () => {
2008
- o.dispose(), c();
2009
- };
2010
- }
2011
- return i;
2012
- })({});
2013
- }
2014
- function Rr(n, e = []) {
2015
- return P("responsive", 100, (t, r, s) => {
2016
- let i = t;
2017
- const a = () => {
2018
- const l = window.innerWidth;
2019
- let u = e;
2020
- for (const [p, d] of Object.entries(n)) {
2021
- const f = parseInt(p);
2022
- l >= f && (u = d);
2023
- }
2024
- for (const p of u) {
2025
- const d = p.apply(i, r);
2026
- d && typeof d == "object" && "type" in d && (i = d);
2027
- }
2028
- };
2029
- a();
2030
- const o = () => a();
2031
- window.addEventListener("resize", o);
2032
- const c = () => window.removeEventListener("resize", o);
2033
- if (!t.dispose)
2034
- t.dispose = c;
2035
- else {
2036
- const l = t.dispose;
2037
- t.dispose = () => {
2038
- c(), l();
2039
- };
2040
- }
2041
- return i;
2042
- })({});
2043
- }
2044
- function Tr(n) {
2045
- return P("class", 50, (e, t, r) => {
2046
- if (!t.element) return e;
2047
- const s = (i) => {
2048
- const a = Array.isArray(i) ? i : i.split(" ").filter(Boolean);
2049
- t.element instanceof HTMLElement && t.element.classList.add(...a);
2050
- };
2051
- if (T(n)) {
2052
- let i = [];
2053
- const a = v(() => {
2054
- const o = n(), c = Array.isArray(o) ? o : o.split(" ").filter(Boolean);
2055
- t.element instanceof HTMLElement && (t.element.classList.remove(...i), t.element.classList.add(...c), i = c);
2056
- });
2057
- if (!e.dispose)
2058
- e.dispose = () => a.dispose();
2059
- else {
2060
- const o = e.dispose;
2061
- e.dispose = () => {
2062
- a.dispose(), o();
2063
- };
2064
- }
2065
- } else
2066
- s(n);
2067
- return e;
2068
- })({});
2069
- }
2070
- function Mr(n) {
2071
- return P("style", 200, (e, t, r) => {
2072
- if (!t.element) return e;
2073
- const s = (i) => {
2074
- if (t.element instanceof HTMLElement)
2075
- for (const [a, o] of Object.entries(i)) {
2076
- const c = K.toKebabCase(a), l = K.normalizeCSSValue(o);
2077
- t.element.style.setProperty(c, l);
2078
- }
2079
- };
2080
- if (T(n)) {
2081
- const i = v(() => {
2082
- const a = n();
2083
- s(a);
2084
- });
2085
- if (!e.dispose)
2086
- e.dispose = () => i.dispose();
2087
- else {
2088
- const a = e.dispose;
2089
- e.dispose = () => {
2090
- i.dispose(), a();
2091
- };
2092
- }
2093
- } else
2094
- s(n);
2095
- return e;
2096
- })({});
2097
- }
2098
- function jr(n) {
2099
- return P("event", 300, (e, t, r) => {
2100
- if (!t.element) return e;
2101
- const s = [];
2102
- for (const [a, o] of Object.entries(n))
2103
- t.element.addEventListener(a, o), s.push(() => {
2104
- t.element?.removeEventListener(a, o);
2105
- });
2106
- const i = () => s.forEach((a) => a());
2107
- if (!e.dispose)
2108
- e.dispose = i;
2109
- else {
2110
- const a = e.dispose;
2111
- e.dispose = () => {
2112
- i(), a();
2113
- };
2114
- }
2115
- return e;
2116
- })({});
2117
- }
2118
- function Pr() {
2119
- return {
2120
- combineClasses(...n) {
2121
- const e = [];
2122
- return n.forEach((t) => {
2123
- if (t) {
2124
- const r = A.processClasses(t);
2125
- e.push(...r);
2126
- }
2127
- }), A.deduplicateClasses(e).join(" ");
2128
- },
2129
- conditionalClasses(n) {
2130
- return Object.entries(n).filter(([e, t]) => t).map(([e, t]) => e);
2131
- },
2132
- mergeClassProps(...n) {
2133
- const e = [];
2134
- return n.forEach((t) => {
2135
- if (t?.css) {
2136
- const r = A.processClasses(t.css);
2137
- e.push(...r);
2138
- }
2139
- }), e.length === 0 ? {} : {
2140
- css: A.deduplicateClasses(e)
2141
- };
2142
- },
2143
- extractClasses(n) {
2144
- return A.processClasses(n);
2145
- },
2146
- validateClassNames(n) {
2147
- const e = [], t = [];
2148
- return n.forEach((r) => {
2149
- A.sanitizeClassName(r) === r.toLowerCase() ? e.push(r) : t.push(r);
2150
- }), { valid: e, invalid: t };
2151
- }
2152
- };
2153
- }
2154
- class ot {
2155
- /**
2156
- * Apply CSS classes to a DOM element
2157
- */
2158
- applyCSSClasses(e, t) {
2159
- if (!t) return;
2160
- const s = (Array.isArray(t) ? t : [t]).filter(Boolean);
2161
- s.length > 0 && (e.className = s.join(" "));
2162
- }
2163
- /**
2164
- * Apply reactive CSS classes to a DOM element
2165
- */
2166
- applyReactiveCSSClasses(e, t) {
2167
- const r = require("../reactive").createEffect;
2168
- return r(() => {
2169
- const i = t();
2170
- e.className = i;
2171
- });
2172
- }
2173
- /**
2174
- * Update CSS classes on an existing element
2175
- */
2176
- updateCSSClasses(e, t) {
2177
- this.applyCSSClasses(e, t);
2178
- }
2179
- /**
2180
- * Remove CSS classes from an element
2181
- */
2182
- removeCSSClasses(e, t) {
2183
- if (!t) return;
2184
- const r = Array.isArray(t) ? t : [t], i = e.className.split(" ").filter((a) => !r.includes(a));
2185
- e.className = i.join(" ");
2186
- }
2187
- /**
2188
- * Merge CSS classes with existing classes on an element
2189
- */
2190
- mergeCSSClasses(e, t) {
2191
- if (!t) return;
2192
- const r = Array.isArray(t) ? t : [t], i = [...e.className ? e.className.split(" ") : [], ...r.filter(Boolean)], a = [...new Set(i)];
2193
- e.className = a.join(" ");
2194
- }
2195
- }
2196
- const Ar = new ot();
2197
- function $r(n, e = {}, t = [], r) {
2198
- const i = {
2199
- ...{
2200
- type: "element",
2201
- tag: n,
2202
- props: e,
2203
- children: t
2204
- }
2205
- };
2206
- return r && (Array.isArray(r) ? i.cssClasses = r : i.reactiveClasses = r), i;
2207
- }
2208
- function Vr(n) {
2209
- return {
2210
- static: n.cssClasses || [],
2211
- reactive: n.reactiveClasses
2212
- };
2213
- }
2214
- const ee = {
2215
- /**
2216
- * Apply CSS classes to an element during creation
2217
- */
2218
- applyCSSClasses(n, e) {
2219
- if (e.cssClasses && e.cssClasses.length > 0) {
2220
- const t = e.cssClasses.join(" ");
2221
- n.className = t;
2222
- }
2223
- if (e.reactiveClasses && T(e.reactiveClasses)) {
2224
- const t = e.reactiveClasses();
2225
- n.className = t, v(() => {
2226
- const r = e.reactiveClasses();
2227
- n.className = r;
2228
- });
2229
- }
2230
- },
2231
- /**
2232
- * Process className prop and CSS classes together
2233
- */
2234
- processElementClasses(n, e) {
2235
- let t = [];
2236
- if (e.props?.className) {
2237
- const r = typeof e.props.className == "string" ? e.props.className.split(" ").filter(Boolean) : [];
2238
- t.push(...r);
2239
- }
2240
- if (e.cssClasses && t.push(...e.cssClasses), t.length > 0) {
2241
- const r = [...new Set(t)];
2242
- n.className = r.join(" ");
2243
- }
2244
- e.reactiveClasses && T(e.reactiveClasses) && v(() => {
2245
- const r = e.reactiveClasses();
2246
- if (t.length > 0) {
2247
- const s = t.join(" ");
2248
- n.className = `${s} ${r}`.trim();
2249
- } else
2250
- n.className = r;
2251
- });
2252
- }
2253
- };
2254
- function zr(n) {
2255
- const e = n.createElement.bind(n), t = (r) => {
2256
- const s = e(r), i = r;
2257
- return (i.cssClasses || i.reactiveClasses) && ee.processElementClasses(s, i), s;
2258
- };
2259
- return n.createElement = t, Object.assign(n, ee);
2260
- }
2261
- function Dr(n, e = {}, t = [], r) {
2262
- const s = {
2263
- type: "element",
2264
- tag: n,
2265
- props: e,
2266
- children: t
2267
- };
2268
- return r && (Array.isArray(r) ? s.cssClasses = r : s.reactiveClasses = r), s;
2269
- }
2270
- function Br(n) {
2271
- const e = n;
2272
- return !!(e.cssClasses || e.reactiveClasses);
2273
- }
2274
- class ct extends se {
2275
- constructor(e, t) {
2276
- super(e), this.definitions = t;
2277
- }
2278
- resolve() {
2279
- const e = this.getCurrentTheme(), t = this.definitions[e] || this.definitions.light;
2280
- return be(t);
2281
- }
2282
- getCurrentTheme() {
2283
- return typeof window < "u" && window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
2284
- }
2285
- }
2286
- function Ir(n) {
2287
- return new ct("gradient-asset", n);
2288
- }
2289
- var lt = Object.defineProperty, ut = (n, e, t) => e in n ? lt(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, U = (n, e, t) => ut(n, typeof e != "symbol" ? e + "" : e, t);
2290
- class F extends se {
2291
- constructor(e, t, r) {
2292
- super(e), this.reactiveDefinition = t, U(this, "currentGradient"), U(this, "subscriptions", []), U(this, "updateCallback"), this.updateCallback = r, this.currentGradient = this.resolveStaticGradient(), this.setupSignalSubscriptions();
2293
- }
2294
- /**
2295
- * Resolve current gradient to CSS
2296
- */
2297
- resolve() {
2298
- return this.gradientToCSS(this.currentGradient);
2299
- }
2300
- /**
2301
- * Get current static gradient (resolved from signals)
2302
- */
2303
- getCurrentGradient() {
2304
- return this.currentGradient;
2305
- }
2306
- /**
2307
- * Update the reactive definition and re-subscribe to signals
2308
- */
2309
- updateDefinition(e) {
2310
- this.cleanup(), this.reactiveDefinition = e, this.currentGradient = this.resolveStaticGradient(), this.setupSignalSubscriptions(), this.notifyUpdate();
2311
- }
2312
- /**
2313
- * Clean up signal subscriptions
2314
- */
2315
- cleanup() {
2316
- this.subscriptions.forEach((e) => e()), this.subscriptions = [];
2317
- }
2318
- resolveStaticGradient() {
2319
- const { type: e, options: t } = this.reactiveDefinition;
2320
- switch (e) {
2321
- case "linear":
2322
- return xe(this.resolveLinearOptions(t));
2323
- case "radial":
2324
- return Se(this.resolveRadialOptions(t));
2325
- case "angular":
2326
- case "conic":
2327
- return we(this.resolveAngularOptions(t));
2328
- default:
2329
- throw new Error(`Unsupported reactive gradient type: ${e}`);
2330
- }
2331
- }
2332
- resolveLinearOptions(e) {
2333
- return {
2334
- colors: e.colors.map((t) => this.resolveValue(t)),
2335
- stops: e.stops?.map((t) => this.resolveValue(t)),
2336
- startPoint: this.resolveValue(e.startPoint),
2337
- endPoint: this.resolveValue(e.endPoint),
2338
- angle: e.angle ? this.resolveValue(e.angle) : void 0
2339
- };
2340
- }
2341
- resolveRadialOptions(e) {
2342
- return {
2343
- colors: e.colors.map((t) => this.resolveValue(t)),
2344
- stops: e.stops?.map((t) => this.resolveValue(t)),
2345
- center: this.resolveValue(e.center),
2346
- startRadius: this.resolveValue(e.startRadius),
2347
- endRadius: this.resolveValue(e.endRadius),
2348
- shape: e.shape ? this.resolveValue(e.shape) : void 0
2349
- };
2350
- }
2351
- resolveAngularOptions(e) {
2352
- return {
2353
- colors: e.colors.map((t) => this.resolveValue(t)),
2354
- stops: e.stops?.map((t) => this.resolveValue(t)),
2355
- center: this.resolveValue(e.center),
2356
- startAngle: this.resolveValue(e.startAngle),
2357
- endAngle: this.resolveValue(e.endAngle)
2358
- };
2359
- }
2360
- resolveValue(e) {
2361
- return this.isSignal(e) ? e.value : e;
2362
- }
2363
- isSignal(e) {
2364
- return e !== null && typeof e == "object" && "value" in e && "subscribe" in e;
2365
- }
2366
- setupSignalSubscriptions() {
2367
- this.subscribeToSignalsInOptions(this.reactiveDefinition.options);
2368
- }
2369
- subscribeToSignalsInOptions(e) {
2370
- for (const [t, r] of Object.entries(e))
2371
- if (Array.isArray(r))
2372
- r.forEach((s) => {
2373
- if (this.isSignal(s)) {
2374
- const i = s.subscribe(() => this.handleSignalChange());
2375
- this.subscriptions.push(i);
2376
- }
2377
- });
2378
- else if (this.isSignal(r)) {
2379
- const s = r.subscribe(() => this.handleSignalChange());
2380
- this.subscriptions.push(s);
2381
- }
2382
- }
2383
- handleSignalChange() {
2384
- this.currentGradient = this.resolveStaticGradient(), this.notifyUpdate();
2385
- }
2386
- notifyUpdate() {
2387
- this.updateCallback && this.updateCallback();
2388
- }
2389
- gradientToCSS(e) {
2390
- const { gradientToCSS: t } = require("./css-generator");
2391
- return t(e);
2392
- }
2393
- }
2394
- class w extends Ce {
2395
- constructor(e, t, r) {
2396
- const s = w.resolveStateOptions(t);
2397
- super(e, s), this.reactiveStateGradients = t, this.updateCallback = r, U(this, "reactiveSubscriptions", []), this.setupStateSignalSubscriptions();
2398
- }
2399
- /**
2400
- * Update reactive state configuration
2401
- */
2402
- updateReactiveState(e) {
2403
- this.cleanupStateSubscriptions(), this.reactiveStateGradients = e;
2404
- const t = w.resolveStateOptions(e);
2405
- this.updateStateGradients(t), this.setupStateSignalSubscriptions(), this.notifyStateUpdate();
2406
- }
2407
- /**
2408
- * Clean up signal subscriptions
2409
- */
2410
- cleanupStateSubscriptions() {
2411
- this.reactiveSubscriptions.forEach((e) => e()), this.reactiveSubscriptions = [];
2412
- }
2413
- static resolveStateOptions(e) {
2414
- const t = {
2415
- default: w.resolveValue(e.default),
2416
- animation: e.animation
2417
- };
2418
- return e.hover && (t.hover = w.resolveValue(e.hover)), e.active && (t.active = w.resolveValue(e.active)), e.focus && (t.focus = w.resolveValue(e.focus)), e.disabled && (t.disabled = w.resolveValue(e.disabled)), t;
2419
- }
2420
- static resolveValue(e) {
2421
- return e !== null && typeof e == "object" && "value" in e && "subscribe" in e ? e.value : e;
2422
- }
2423
- static isSignal(e) {
2424
- return e !== null && typeof e == "object" && "value" in e && "subscribe" in e;
2425
- }
2426
- setupStateSignalSubscriptions() {
2427
- Object.entries(this.reactiveStateGradients).forEach(([e, t]) => {
2428
- if (e !== "animation" && w.isSignal(t)) {
2429
- const r = t.subscribe(() => this.handleStateSignalChange());
2430
- this.reactiveSubscriptions.push(r);
2431
- }
2432
- });
2433
- }
2434
- handleStateSignalChange() {
2435
- const e = w.resolveStateOptions(this.reactiveStateGradients);
2436
- this.updateStateGradients(e), this.notifyStateUpdate();
2437
- }
2438
- notifyStateUpdate() {
2439
- this.updateCallback && this.updateCallback();
2440
- }
2441
- }
2442
- const L = {
2443
- /**
2444
- * Create a reactive linear gradient
2445
- */
2446
- linear: (n, e) => new F(
2447
- "reactive-linear",
2448
- { type: "linear", options: n, __reactive: !0 },
2449
- e
2450
- ),
2451
- /**
2452
- * Create a reactive radial gradient
2453
- */
2454
- radial: (n, e) => new F(
2455
- "reactive-radial",
2456
- { type: "radial", options: n, __reactive: !0 },
2457
- e
2458
- ),
2459
- /**
2460
- * Create a reactive angular gradient
2461
- */
2462
- angular: (n, e) => new F(
2463
- "reactive-angular",
2464
- { type: "angular", options: n, __reactive: !0 },
2465
- e
2466
- ),
2467
- /**
2468
- * Create a reactive state gradient
2469
- */
2470
- state: (n, e, t) => new w(n, e, t)
2471
- }, Nr = {
2472
- /**
2473
- * Create an animated gradient that cycles through colors
2474
- */
2475
- createAnimatedGradient: (n, e = 3e3) => {
2476
- const t = {
2477
- value: n[0],
2478
- subscribe: (r) => () => {
2479
- }
2480
- };
2481
- return L.linear({
2482
- colors: [t, n[1]],
2483
- startPoint: "top",
2484
- endPoint: "bottom"
2485
- });
2486
- },
2487
- /**
2488
- * Create a progress gradient that fills based on a signal
2489
- */
2490
- createProgressGradient: (n, e = "#007AFF") => L.linear({
2491
- colors: [e, "transparent"],
2492
- stops: [n, n],
2493
- // Both stops use the same signal
2494
- startPoint: "leading",
2495
- endPoint: "trailing"
2496
- }),
2497
- /**
2498
- * Create a data-driven gradient that reflects numeric values
2499
- */
2500
- createDataGradient: (n, e, t, r = ["#ff0000", "#ffff00", "#00ff00"]) => L.linear({
2501
- colors: r,
2502
- startPoint: "top",
2503
- endPoint: "bottom"
2504
- })
2505
- }, Wr = {
2506
- /**
2507
- * Check if a background value is reactive
2508
- */
2509
- isReactiveBackground: (n) => n instanceof F || n instanceof w,
2510
- /**
2511
- * Create a reactive background from a signal
2512
- */
2513
- fromSignal: (n) => L.state("signal-background", {
2514
- default: n
2515
- })
2516
- };
2517
- function X(n, e = {}) {
2518
- const { fallback: t, errorFallback: r, timeout: s = 1e4, preload: i = "never" } = e;
2519
- let a = !1, o = null, c = !1, l = null, u = null;
2520
- const p = async () => {
2521
- a || c || o || u || (a = !0, c = !0, l = null, u = (async () => {
2522
- try {
2523
- const d = await Promise.race([
2524
- n(),
2525
- new Promise(
2526
- (f, g) => setTimeout(() => g(new Error("Component load timeout")), s)
2527
- )
2528
- ]);
2529
- o = "default" in d ? d.default : d;
2530
- } catch (d) {
2531
- const f = d;
2532
- (typeof process > "u" || process.env.NODE_ENV !== "test") && console.error("Failed to load lazy component:", f), l = f;
2533
- } finally {
2534
- c = !1, u = null;
2535
- }
2536
- })(), await u);
2537
- };
2538
- return i === "idle" && typeof requestIdleCallback < "u" ? requestIdleCallback(() => {
2539
- p().catch(() => {
2540
- });
2541
- }) : i === "idle" ? setTimeout(() => {
2542
- p().catch(() => {
2543
- });
2544
- }, 100) : i === "immediate" && p().catch(() => {
2545
- }), (d) => {
2546
- if (!a && !c && !o && p().catch(() => {
2547
- }), l)
2548
- return r ? r(l) : te(l);
2549
- if (c || !o)
2550
- return t || dt();
2551
- try {
2552
- return typeof o == "function" ? o(d) : o;
2553
- } catch (f) {
2554
- const g = f;
2555
- return (typeof process > "u" || process.env.NODE_ENV !== "test") && console.error("Error rendering lazy component:", g), te(g);
2556
- }
2557
- };
2558
- }
2559
- function Ur(n) {
2560
- return {
2561
- type: "component",
2562
- render: () => ({
2563
- type: "element",
2564
- tag: "div",
2565
- props: { class: "tachui-suspense" },
2566
- children: n.children.map(() => ({
2567
- type: "element",
2568
- tag: "div",
2569
- children: []
2570
- }))
2571
- }),
2572
- props: n,
2573
- id: `suspense-${Math.random().toString(36).substr(2, 9)}`
2574
- };
2575
- }
2576
- function pt(n) {
2577
- return n().then((e) => e && typeof e == "object" && "default" in e ? e.default : e);
2578
- }
2579
- function Fr(n, e = {}) {
2580
- const t = {};
2581
- for (const [r, s] of Object.entries(n))
2582
- t[r] = X(s, e);
2583
- return t;
2584
- }
2585
- function Lr(n) {
2586
- const e = Object.entries(n).map(
2587
- async ([t, r]) => [t, await pt(r)]
2588
- );
2589
- return Promise.all(e).then((t) => {
2590
- const r = {};
2591
- for (const [s, i] of t)
2592
- r[s] = i;
2593
- return r;
2594
- });
2595
- }
2596
- function dt() {
2597
- return {
2598
- type: "element",
2599
- tag: "div",
2600
- props: {
2601
- class: "tachui-lazy-loading",
2602
- style: "padding: 16px; color: #666; text-align: center;"
2603
- },
2604
- children: [
2605
- {
2606
- type: "text",
2607
- text: "Loading component..."
2608
- }
2609
- ]
2610
- };
2611
- }
2612
- function te(n) {
2613
- return {
2614
- type: "element",
2615
- tag: "div",
2616
- props: {
2617
- class: "tachui-lazy-error",
2618
- style: "padding: 16px; color: #d32f2f; border: 1px solid #d32f2f; border-radius: 4px; background: #ffeaea;"
2619
- },
2620
- children: [
2621
- {
2622
- type: "text",
2623
- text: `Failed to load component: ${n.message}`
2624
- }
2625
- ]
2626
- };
2627
- }
2628
- function Gr(n, e = {}) {
2629
- const { rootMargin: t = "50px", threshold: r = 0.1, ...s } = e;
2630
- return s.preload === "visible" && typeof IntersectionObserver < "u" ? (i) => {
2631
- const a = X(n, { ...s, preload: "never" });
2632
- return setTimeout(() => {
2633
- a(i);
2634
- }, 100), a(i);
2635
- } : X(n, s);
2636
- }
2637
- var ft = Object.defineProperty, ht = (n, e, t) => e in n ? ft(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, M = (n, e, t) => ht(n, typeof e != "symbol" ? e + "" : e, t);
2638
- class mt {
2639
- constructor(e) {
2640
- M(this, "_signal"), M(this, "_setter"), M(this, "_subscribers", /* @__PURE__ */ new Set());
2641
- const [t, r] = j(e);
2642
- this._signal = t, this._setter = r;
2643
- }
2644
- get value() {
2645
- return this._signal();
2646
- }
2647
- set value(e) {
2648
- this._setter(e), this.notifySubscribers();
2649
- }
2650
- /**
2651
- * Update a property of the environment object
2652
- */
2653
- updateProperty(e, t) {
2654
- const s = { ...this._signal(), [e]: t };
2655
- this._setter(s), this.notifySubscribers();
2656
- }
2657
- /**
2658
- * Subscribe to changes
2659
- */
2660
- subscribe(e) {
2661
- return this._subscribers.add(e), () => this._subscribers.delete(e);
2662
- }
2663
- notifySubscribers() {
2664
- for (const e of this._subscribers)
2665
- try {
2666
- e();
2667
- } catch (t) {
2668
- console.error("Error in environment object subscriber:", t);
2669
- }
2670
- }
2671
- /**
2672
- * Create a reactive effect that runs when this object changes
2673
- */
2674
- onChange(e) {
2675
- const t = v(() => {
2676
- e(this._signal());
2677
- });
2678
- return () => t.dispose();
2679
- }
2680
- }
2681
- class fe {
2682
- constructor(e, t) {
2683
- M(this, "key"), M(this, "componentContext"), M(this, "_cachedValue"), M(this, "_subscriptionCleanup"), this.key = e, this.componentContext = t, t.onCleanup(() => {
2684
- this._subscriptionCleanup && this._subscriptionCleanup();
2685
- });
2686
- }
2687
- get wrappedValue() {
2688
- if (this._cachedValue === void 0 && (this._cachedValue = Oe(this.key), this._cachedValue && typeof this._cachedValue == "object" && "subscribe" in this._cachedValue)) {
2689
- const e = this._cachedValue;
2690
- typeof e.subscribe == "function" && (this._subscriptionCleanup = e.subscribe(() => {
2691
- this.componentContext.setState(`_env_${this.key.name}_trigger`, Date.now());
2692
- }));
2693
- }
2694
- return this._cachedValue;
2695
- }
2696
- get projectedValue() {
2697
- return this;
2698
- }
2699
- }
2700
- function gt(n) {
2701
- const e = Ee();
2702
- return new fe(n, e);
2703
- }
2704
- function yt(n, e) {
2705
- _e(n, e);
2706
- }
2707
- function Hr(n, e) {
2708
- return new mt(e);
2709
- }
2710
- function qr(n) {
2711
- return n && typeof n == "object" && "wrappedValue" in n && "key" in n && "componentContext" in n && n instanceof fe;
2712
- }
2713
- const Kr = {
2714
- /**
2715
- * Application theme
2716
- */
2717
- Theme: D("Theme", {
2718
- mode: "light",
2719
- primaryColor: "#007AFF",
2720
- secondaryColor: "#5856D6"
2721
- }),
2722
- /**
2723
- * Localization service
2724
- */
2725
- Localization: D("Localization"),
2726
- /**
2727
- * Navigation service
2728
- */
2729
- Navigation: D("Navigation"),
2730
- /**
2731
- * Application configuration
2732
- */
2733
- Config: D("Config"),
2734
- /**
2735
- * User authentication
2736
- */
2737
- Auth: D("Auth")
2738
- };
2739
- var bt = Object.defineProperty, Ct = (n, e, t) => e in n ? bt(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, V = (n, e, t) => Ct(n, typeof e != "symbol" ? e + "" : e, t);
2740
- class he {
2741
- constructor() {
2742
- V(this, "_objectWillChange"), V(this, "_notifyCount", 0);
2743
- const [e, t] = j(void 0);
2744
- this._objectWillChange = {
2745
- getValue: e,
2746
- peek: e
2747
- }, this._notifySetter = t;
2748
- }
2749
- get objectWillChange() {
2750
- return this._objectWillChange;
2751
- }
2752
- /**
2753
- * Notify observers that the object has changed
2754
- * Call this method whenever properties of the object change
2755
- */
2756
- notifyChange() {
2757
- this._notifyCount++;
2758
- const e = this._notifySetter;
2759
- e && e(void 0);
2760
- }
2761
- /**
2762
- * Get the current notification count (for debugging)
2763
- */
2764
- get notificationCount() {
2765
- return this._notifyCount;
2766
- }
2767
- }
2768
- class vt {
2769
- constructor(e, t, r, s = {}) {
2770
- V(this, "_object"), V(this, "_metadata"), V(this, "_effectCleanup"), this._object = e, this._metadata = {
2771
- type: "ObservedObject",
2772
- propertyName: r,
2773
- componentId: t.id,
2774
- options: s
2775
- }, this.setupObservation();
2776
- const i = ie();
2777
- i && i.cleanups.push(() => {
2778
- this.cleanup();
2779
- });
2780
- }
2781
- get wrappedValue() {
2782
- return this._object;
2783
- }
2784
- get projectedValue() {
2785
- return this;
2786
- }
2787
- /**
2788
- * Get property wrapper metadata
2789
- */
2790
- get metadata() {
2791
- return this._metadata;
2792
- }
2793
- /**
2794
- * Set up reactive observation of the object
2795
- */
2796
- setupObservation() {
2797
- const e = v(() => {
2798
- this._object.objectWillChange();
2799
- });
2800
- this._effectCleanup = () => e.dispose();
2801
- }
2802
- /**
2803
- * Cleanup observation
2804
- */
2805
- cleanup() {
2806
- this._effectCleanup && (this._effectCleanup(), this._effectCleanup = void 0);
2807
- }
2808
- /**
2809
- * Replace the observed object (advanced usage)
2810
- */
2811
- updateObject(e) {
2812
- this.cleanup(), this._object = e, this.setupObservation();
2813
- }
2814
- }
2815
- const wt = (n, e = {}) => {
2816
- const t = xt(), r = Et() || "observedObject";
2817
- return new vt(n, t, r, e);
2818
- };
2819
- function St(n, e = {}) {
2820
- const t = new he();
2821
- return new Proxy(n, {
2822
- set(s, i, a) {
2823
- const o = s[i], c = Reflect.set(s, i, a);
2824
- return c && o !== a && e.autoNotify !== !1 && t.notifyChange(), c;
2825
- },
2826
- get(s, i) {
2827
- return i === "objectWillChange" ? t.objectWillChange : i === "notifyChange" ? () => t.notifyChange() : i === "notificationCount" ? t.notificationCount : Reflect.get(s, i);
2828
- }
2829
- });
2830
- }
2831
- function Xr(n = {}) {
2832
- return (e) => class extends e {
2833
- constructor(...t) {
2834
- super(...t), V(this, "_observableBase", new he()), n.autoNotify !== !1 && this.setupAutoNotification();
2835
- }
2836
- get objectWillChange() {
2837
- return this._observableBase.objectWillChange;
2838
- }
2839
- get notificationCount() {
2840
- return this._observableBase.notificationCount;
2841
- }
2842
- notifyChange() {
2843
- this._observableBase.notifyChange();
2844
- }
2845
- setupAutoNotification() {
2846
- const t = Object.getOwnPropertyNames(this);
2847
- for (const r of t) {
2848
- if (r.startsWith("_") || typeof this[r] == "function")
2849
- continue;
2850
- let s = this[r];
2851
- Object.defineProperty(this, r, {
2852
- get: () => s,
2853
- set: (i) => {
2854
- s !== i && (s = i, this.notifyChange());
2855
- },
2856
- enumerable: !0,
2857
- configurable: !0
2858
- });
2859
- }
2860
- }
2861
- };
2862
- }
2863
- function xt() {
2864
- const n = ie();
2865
- if (!n?.context.has(re))
2866
- throw new Error("@ObservedObject can only be used within a component context");
2867
- return n.context.get(re);
2868
- }
2869
- function Et() {
2870
- try {
2871
- const n = new Error().stack;
2872
- if (n)
2873
- return n.match(/at (\w+)\./)?.[1] || null;
2874
- } catch {
2875
- }
2876
- return null;
2877
- }
2878
- const re = Symbol("TachUI.ComponentContext");
2879
- function _t(n) {
2880
- return n && typeof n == "object" && "objectWillChange" in n && "notifyChange" in n;
2881
- }
2882
- function Yr(n) {
2883
- return n && typeof n == "object" && "wrappedValue" in n && "projectedValue" in n && _t(n.wrappedValue);
2884
- }
2885
- function Jr(n, e = {}) {
2886
- return St({ ...n }, e);
2887
- }
2888
- const Zr = wt;
2889
- var Ot = Object.defineProperty, kt = (n, e, t) => e in n ? Ot(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, O = (n, e, t) => kt(n, typeof e != "symbol" ? e + "" : e, t);
2890
- class Rt {
2891
- constructor(e) {
2892
- this.componentContext = e, O(this, "states", /* @__PURE__ */ new Map()), O(this, "bindings", /* @__PURE__ */ new Map()), O(this, "observedObjects", /* @__PURE__ */ new Map()), O(this, "environmentObjects", /* @__PURE__ */ new Map()), O(this, "registry"), this.registry = new Tt();
2893
- }
2894
- /**
2895
- * Register a @State property wrapper
2896
- */
2897
- registerState(e, t = {}) {
2898
- const r = e.metadata;
2899
- if (r) {
2900
- const s = `${r.componentId}_${r.propertyName}`;
2901
- this.states.set(s, e), this.registry.register(r), process.env.NODE_ENV === "development" && this.setupStateDebugging(e, r);
2902
- }
2903
- }
2904
- /**
2905
- * Register a @Binding property wrapper
2906
- */
2907
- registerBinding(e, t = {}) {
2908
- const r = `${this.componentContext.id}_${t.name || "binding"}_${Date.now()}`;
2909
- this.bindings.set(r, e);
2910
- const s = {
2911
- type: "Binding",
2912
- propertyName: t.name || "binding",
2913
- componentId: this.componentContext.id,
2914
- options: t
2915
- };
2916
- this.registry.register(s);
2917
- }
2918
- /**
2919
- * Register an @ObservedObject property wrapper
2920
- */
2921
- registerObservedObject(e, t = {}) {
2922
- const r = e.metadata;
2923
- if (r) {
2924
- const s = `${r.componentId}_${r.propertyName}`;
2925
- this.observedObjects.set(s, e), this.registry.register(r), process.env.NODE_ENV === "development" && this.setupObservedObjectDebugging(e, r);
2926
- }
2927
- }
2928
- /**
2929
- * Register an @EnvironmentObject property wrapper
2930
- */
2931
- registerEnvironmentObject(e, t) {
2932
- const r = e.metadata;
2933
- if (r) {
2934
- const s = `${r.componentId}_${r.propertyName}`;
2935
- this.environmentObjects.set(s, e), this.registry.register(r);
2936
- }
2937
- }
2938
- /**
2939
- * Clean up all property wrappers for this component
2940
- */
2941
- cleanup() {
2942
- this.states.clear(), this.bindings.clear(), this.observedObjects.clear(), this.environmentObjects.clear(), this.registry.cleanup(this.componentContext.id);
2943
- }
2944
- /**
2945
- * Get all registered states (for debugging)
2946
- */
2947
- getStates() {
2948
- return new Map(this.states);
2949
- }
2950
- /**
2951
- * Get all registered bindings (for debugging)
2952
- */
2953
- getBindings() {
2954
- return new Map(this.bindings);
2955
- }
2956
- /**
2957
- * Get all registered observed objects (for debugging)
2958
- */
2959
- getObservedObjects() {
2960
- return new Map(this.observedObjects);
2961
- }
2962
- /**
2963
- * Get all registered environment objects (for debugging)
2964
- */
2965
- getEnvironmentObjects() {
2966
- return new Map(this.environmentObjects);
2967
- }
2968
- /**
2969
- * Get property wrapper registry
2970
- */
2971
- getRegistry() {
2972
- return this.registry;
2973
- }
2974
- /**
2975
- * Set up debugging for @State property wrappers
2976
- */
2977
- setupStateDebugging(e, t) {
2978
- if (typeof window < "u") {
2979
- const r = window.__TACHUI_DEBUG__ || {};
2980
- r.states || (r.states = {}), r.states[`${t.componentId}_${t.propertyName}`] = {
2981
- state: e,
2982
- metadata: t,
2983
- getValue: () => e.wrappedValue,
2984
- setValue: (s) => {
2985
- e.projectedValue.set(s);
2986
- },
2987
- getBinding: () => e.projectedValue
2988
- }, window.__TACHUI_DEBUG__ = r;
2989
- }
2990
- }
2991
- /**
2992
- * Set up debugging for @ObservedObject property wrappers
2993
- */
2994
- setupObservedObjectDebugging(e, t) {
2995
- if (typeof window < "u") {
2996
- const r = window.__TACHUI_DEBUG__ || {};
2997
- r.observedObjects || (r.observedObjects = {}), r.observedObjects[`${t.componentId}_${t.propertyName}`] = {
2998
- observedObject: e,
2999
- metadata: t,
3000
- getObject: () => e.wrappedValue,
3001
- getNotificationCount: () => e.wrappedValue.notificationCount || 0,
3002
- triggerChange: () => e.wrappedValue.notifyChange()
3003
- }, window.__TACHUI_DEBUG__ = r;
3004
- }
3005
- }
3006
- }
3007
- class Tt {
3008
- constructor() {
3009
- O(this, "metadata", /* @__PURE__ */ new Map());
3010
- }
3011
- /**
3012
- * Register property wrapper metadata
3013
- */
3014
- register(e) {
3015
- const t = e.componentId, r = this.metadata.get(t) || [];
3016
- r.push(e), this.metadata.set(t, r);
3017
- }
3018
- /**
3019
- * Unregister a specific property wrapper
3020
- */
3021
- unregister(e, t) {
3022
- const s = (this.metadata.get(e) || []).filter((i) => i.propertyName !== t);
3023
- s.length > 0 ? this.metadata.set(e, s) : this.metadata.delete(e);
3024
- }
3025
- /**
3026
- * Clean up all metadata for a component
3027
- */
3028
- cleanup(e) {
3029
- this.metadata.delete(e);
3030
- }
3031
- /**
3032
- * Get all metadata for a component
3033
- */
3034
- getMetadata(e) {
3035
- return this.metadata.get(e) || [];
3036
- }
3037
- /**
3038
- * Get all registered metadata (for debugging)
3039
- */
3040
- getAllMetadata() {
3041
- return new Map(this.metadata);
3042
- }
3043
- }
3044
- function Qr(n) {
3045
- return new Rt(n);
3046
- }
3047
- const me = class B {
3048
- constructor() {
3049
- O(this, "managers", /* @__PURE__ */ new Map());
3050
- }
3051
- static getInstance() {
3052
- return B.instance || (B.instance = new B()), B.instance;
3053
- }
3054
- register(e, t) {
3055
- this.managers.set(e, t);
3056
- }
3057
- unregister(e) {
3058
- this.managers.delete(e);
3059
- }
3060
- getManager(e) {
3061
- return this.managers.get(e);
3062
- }
3063
- getAllManagers() {
3064
- return new Map(this.managers);
3065
- }
3066
- /**
3067
- * Get debugging information for all components
3068
- */
3069
- getDebugInfo() {
3070
- const e = {};
3071
- for (const [t, r] of this.managers)
3072
- e[t] = {
3073
- states: r.getStates().size,
3074
- bindings: r.getBindings().size,
3075
- observedObjects: r.getObservedObjects().size,
3076
- environmentObjects: r.getEnvironmentObjects().size,
3077
- metadata: r.getRegistry().getMetadata(t)
3078
- };
3079
- return e;
3080
- }
3081
- };
3082
- O(me, "instance");
3083
- let N = me;
3084
- function en(n, e) {
3085
- N.getInstance().register(n, e);
3086
- }
3087
- function tn(n) {
3088
- N.getInstance().unregister(n);
3089
- }
3090
- function Mt(n) {
3091
- return N.getInstance().getManager(n);
3092
- }
3093
- function jt() {
3094
- return N.getInstance().getAllManagers();
3095
- }
3096
- function Pt() {
3097
- return N.getInstance().getDebugInfo();
3098
- }
3099
- function rn() {
3100
- if (typeof window < "u" && process.env.NODE_ENV === "development") {
3101
- const n = window.__TACHUI_DEBUG__ || {};
3102
- n.stateManagers = {
3103
- getAll: jt,
3104
- getDebugInfo: Pt,
3105
- getManager: Mt
3106
- }, window.__TACHUI_DEBUG__ = n, console.log(
3107
- "TachUI State Management debugging enabled. Use window.__TACHUI_DEBUG__.stateManagers"
3108
- );
3109
- }
3110
- }
3111
- const nn = yt;
3112
- function sn(n) {
3113
- return console.warn("useEnvironmentObject is deprecated, use EnvironmentObject instead"), gt(n);
3114
- }
3115
- const an = {
3116
- /**
3117
- * Check if a value is any kind of property wrapper
3118
- */
3119
- isPropertyWrapper(n) {
3120
- return n && typeof n == "object" && "wrappedValue" in n && "projectedValue" in n;
3121
- },
3122
- /**
3123
- * Extract the wrapped value from any property wrapper
3124
- */
3125
- unwrap(n) {
3126
- return this.isPropertyWrapper(n) ? n.wrappedValue : n;
3127
- },
3128
- /**
3129
- * Create a debug snapshot of all property wrappers in a component
3130
- */
3131
- createDebugSnapshot(n) {
3132
- if (typeof window < "u") {
3133
- const e = window.__TACHUI_DEBUG__;
3134
- if (e)
3135
- return {
3136
- states: e.states ? Object.keys(e.states).filter((t) => t.startsWith(n)).reduce((t, r) => (t[r] = e.states[r].getValue(), t), {}) : {},
3137
- observedObjects: e.observedObjects ? Object.keys(e.observedObjects).filter((t) => t.startsWith(n)).reduce((t, r) => (t[r] = {
3138
- notificationCount: e.observedObjects[r].getNotificationCount(),
3139
- object: e.observedObjects[r].getObject()
3140
- }, t), {}) : {}
3141
- };
3142
- }
3143
- return null;
3144
- }
3145
- }, on = "0.1.0";
3146
- export {
3147
- kr as $,
3148
- dr as A,
3149
- Ze as B,
3150
- Gt as C,
3151
- Qe as D,
3152
- et as E,
3153
- Zt as F,
3154
- Je as G,
3155
- tt as H,
3156
- rt as I,
3157
- nt as J,
3158
- vr as K,
3159
- Qt as L,
3160
- st as M,
3161
- wr as N,
3162
- Sr as O,
3163
- xr as P,
3164
- Er as Q,
3165
- Tr as R,
3166
- Ve as S,
3167
- Jt as T,
3168
- _r as U,
3169
- on as V,
3170
- Or as W,
3171
- P as X,
3172
- jr as Y,
3173
- K as Z,
3174
- Rr as _,
3175
- qt as a,
3176
- rn as a$,
3177
- Mr as a0,
3178
- fr as a1,
3179
- hr as a2,
3180
- mr as a3,
3181
- gr as a4,
3182
- yr as a5,
3183
- br as a6,
3184
- k as a7,
3185
- He as a8,
3186
- qe as a9,
3187
- ot as aA,
3188
- Ar as aB,
3189
- $r as aC,
3190
- Vr as aD,
3191
- ee as aE,
3192
- zr as aF,
3193
- Dr as aG,
3194
- Br as aH,
3195
- nn as aI,
3196
- sn as aJ,
3197
- an as aK,
3198
- Kr as aL,
3199
- Hr as aM,
3200
- gt as aN,
3201
- qr as aO,
3202
- yt as aP,
3203
- Jr as aQ,
3204
- _t as aR,
3205
- Yr as aS,
3206
- St as aT,
3207
- he as aU,
3208
- Zr as aV,
3209
- Xr as aW,
3210
- Qr as aX,
3211
- jt as aY,
3212
- Mt as aZ,
3213
- Pt as a_,
3214
- Ke as aa,
3215
- Cr as ab,
3216
- ct as ac,
3217
- Ir as ad,
3218
- F as ae,
3219
- w as af,
3220
- L as ag,
3221
- Nr as ah,
3222
- Wr as ai,
3223
- ue as aj,
3224
- de as ak,
3225
- Be as al,
3226
- pe as am,
3227
- rr as an,
3228
- tr as ao,
3229
- sr as ap,
3230
- Ue as aq,
3231
- nr as ar,
3232
- Le as as,
3233
- Fe as at,
3234
- ir as au,
3235
- ar as av,
3236
- or as aw,
3237
- cr as ax,
3238
- lr as ay,
3239
- Pr as az,
3240
- Xt as b,
3241
- en as b0,
3242
- Rt as b1,
3243
- tn as b2,
3244
- Kt as c,
3245
- ae as d,
3246
- oe as e,
3247
- Y as f,
3248
- ce as g,
3249
- ke as h,
3250
- Ht as i,
3251
- Re as j,
3252
- Te as k,
3253
- je as l,
3254
- Yt as m,
3255
- le as n,
3256
- Pe as o,
3257
- Ae as p,
3258
- er as q,
3259
- Me as r,
3260
- Fr as s,
3261
- Gr as t,
3262
- X as u,
3263
- pt as v,
3264
- Lr as w,
3265
- Ur as x,
3266
- ur as y,
3267
- pr as z
3268
- };