@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.
- package/README.md +2 -2
- package/dist/bundles/common.d.ts +1 -1
- package/dist/bundles/common.d.ts.map +1 -1
- package/dist/bundles/minimal.d.ts +2 -16
- package/dist/bundles/minimal.d.ts.map +1 -1
- package/dist/bundles/production-minimal.d.ts +2 -16
- package/dist/bundles/production-minimal.d.ts.map +1 -1
- package/dist/common.js +403 -827
- package/dist/compiler/advanced-parser.d.ts.map +1 -1
- package/dist/compiler/index.js +14 -8
- package/dist/component-XAzF1xqs.js +487 -0
- package/dist/component-base-x2XmHFjy.js +255 -0
- package/dist/components/index.d.ts +4 -38
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +7 -4167
- package/dist/components/wrapper.d.ts +5 -152
- package/dist/components/wrapper.d.ts.map +1 -1
- package/dist/concatenated-component-ByPl3_FF.js +2933 -0
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/layout.d.ts +47 -4
- package/dist/constants/layout.d.ts.map +1 -1
- package/dist/constants/layout.js +84 -0
- package/dist/css-classes/index.js +176 -0
- package/dist/{dom-bridge-Cx-s6Ihx.js → dom-bridge-CAa1N2zX.js} +28 -28
- package/dist/{effect-CytAc9em.js → effect-B9Knft0b.js} +3 -3
- package/dist/essential.js +395 -825
- package/dist/index-DCPJFUm9.js +1407 -0
- package/dist/index-DIvMCJQO.js +268 -0
- package/dist/index-vdsiw6gQ.js +777 -0
- package/dist/index.d.ts +9 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +395 -825
- package/dist/minimal-prod.js +101 -155
- package/dist/minimal.js +104 -170
- package/dist/modifiers/background.d.ts +41 -11
- package/dist/modifiers/background.d.ts.map +1 -1
- package/dist/modifiers/base.d.ts +6 -33
- package/dist/modifiers/base.d.ts.map +1 -1
- package/dist/modifiers/base.js +487 -0
- package/dist/modifiers/builder.d.ts +103 -195
- package/dist/modifiers/builder.d.ts.map +1 -1
- package/dist/modifiers/builder.js +9 -0
- package/dist/modifiers/core.d.ts +9 -401
- package/dist/modifiers/core.d.ts.map +1 -1
- package/dist/modifiers/{utils.d.ts → factories.d.ts} +18 -5
- package/dist/modifiers/factories.d.ts.map +1 -0
- package/dist/modifiers/index.d.ts +8 -52
- package/dist/modifiers/index.d.ts.map +1 -1
- package/dist/modifiers/index.js +38 -0
- package/dist/modifiers/presets.d.ts +368 -0
- package/dist/modifiers/presets.d.ts.map +1 -0
- package/dist/modifiers/registry.js +10 -0
- package/dist/modifiers/types.d.ts +39 -211
- package/dist/modifiers/types.d.ts.map +1 -1
- package/dist/modifiers/types.js +4 -0
- package/dist/performance-optimizer-stub-CtfXUwl4.js +38 -0
- package/dist/plugins/index.d.ts +5 -6
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +147 -297
- package/dist/plugins/simplified-index.d.ts +5 -6
- package/dist/plugins/simplified-index.d.ts.map +1 -1
- package/dist/production-minimal-BY_gMc-l.js +2532 -0
- package/dist/reactive/index.js +96 -95
- package/dist/reactive/types.js +4 -0
- package/dist/runtime/dom-bridge.js +5 -5
- package/dist/runtime/element-override.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +0 -7
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/renderer.d.ts.map +1 -1
- package/dist/runtime/renderer.js +7 -8
- package/dist/runtime/semantic-role-manager.d.ts.map +1 -1
- package/dist/runtime/types.js +1 -0
- package/dist/{scheduler-7SvC3a21.js → scheduler-BKeqwrYE.js} +130 -130
- package/dist/validation/build-time-stub.d.ts +33 -0
- package/dist/validation/build-time-stub.d.ts.map +1 -0
- package/dist/validation/debug-tools-stub.d.ts +67 -0
- package/dist/validation/debug-tools-stub.d.ts.map +1 -0
- package/dist/validation/index.d.ts +23 -78
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +609 -6470
- package/dist/validation/lifecycle-validation.d.ts.map +1 -1
- package/dist/validation/performance-optimizer-stub.d.ts +50 -0
- package/dist/validation/performance-optimizer-stub.d.ts.map +1 -0
- package/dist/validation/plugin-registration.d.ts +5 -1
- package/dist/validation/plugin-registration.d.ts.map +1 -1
- package/dist/validation/production-bypass-core.d.ts +69 -0
- package/dist/validation/production-bypass-core.d.ts.map +1 -0
- package/package.json +41 -5
- package/dist/ScrollView-h-6wYMAm.js +0 -515
- package/dist/Spacer-BbteDQ9I.js +0 -5337
- package/dist/binding-CmdpowkI.js +0 -2276
- package/dist/components/BasicInput.d.ts +0 -116
- package/dist/components/BasicInput.d.ts.map +0 -1
- package/dist/components/Button.d.ts +0 -252
- package/dist/components/Button.d.ts.map +0 -1
- package/dist/components/Divider.d.ts +0 -141
- package/dist/components/Divider.d.ts.map +0 -1
- package/dist/components/EnhancedLink.d.ts +0 -365
- package/dist/components/EnhancedLink.d.ts.map +0 -1
- package/dist/components/Form.d.ts +0 -141
- package/dist/components/Form.d.ts.map +0 -1
- package/dist/components/Grid.d.ts +0 -698
- package/dist/components/Grid.d.ts.map +0 -1
- package/dist/components/GridResponsive.d.ts +0 -214
- package/dist/components/GridResponsive.d.ts.map +0 -1
- package/dist/components/Image.d.ts +0 -162
- package/dist/components/Image.d.ts.map +0 -1
- package/dist/components/List.d.ts +0 -287
- package/dist/components/List.d.ts.map +0 -1
- package/dist/components/Menu.d.ts +0 -159
- package/dist/components/Menu.d.ts.map +0 -1
- package/dist/components/Picker.d.ts +0 -153
- package/dist/components/Picker.d.ts.map +0 -1
- package/dist/components/ScrollView.d.ts +0 -222
- package/dist/components/ScrollView.d.ts.map +0 -1
- package/dist/components/Section.d.ts +0 -153
- package/dist/components/Section.d.ts.map +0 -1
- package/dist/components/Show.d.ts +0 -64
- package/dist/components/Show.d.ts.map +0 -1
- package/dist/components/Spacer.d.ts +0 -35
- package/dist/components/Spacer.d.ts.map +0 -1
- package/dist/components/Text.d.ts +0 -242
- package/dist/components/Text.d.ts.map +0 -1
- package/dist/components/Toggle.d.ts +0 -207
- package/dist/components/Toggle.d.ts.map +0 -1
- package/dist/concatenated-component-DPcl2TEO.js +0 -6779
- package/dist/context--zQFIImS.js +0 -283
- package/dist/debug/index.d.ts +0 -61
- package/dist/debug/index.d.ts.map +0 -1
- package/dist/debug.js +0 -178
- package/dist/developer-experience/enhanced-errors.d.ts +0 -128
- package/dist/developer-experience/enhanced-errors.d.ts.map +0 -1
- package/dist/developer-experience/enhanced-types.d.ts +0 -281
- package/dist/developer-experience/enhanced-types.d.ts.map +0 -1
- package/dist/developer-experience/index.d.ts +0 -44
- package/dist/developer-experience/index.d.ts.map +0 -1
- package/dist/index-Nfi2SBQh.js +0 -3268
- package/dist/modifiers/attributes.d.ts +0 -203
- package/dist/modifiers/attributes.d.ts.map +0 -1
- package/dist/modifiers/backdrop.d.ts +0 -59
- package/dist/modifiers/backdrop.d.ts.map +0 -1
- package/dist/modifiers/border.d.ts +0 -217
- package/dist/modifiers/border.d.ts.map +0 -1
- package/dist/modifiers/effects.d.ts +0 -159
- package/dist/modifiers/effects.d.ts.map +0 -1
- package/dist/modifiers/elements.d.ts +0 -240
- package/dist/modifiers/elements.d.ts.map +0 -1
- package/dist/modifiers/filters.d.ts +0 -275
- package/dist/modifiers/filters.d.ts.map +0 -1
- package/dist/modifiers/flexbox.d.ts +0 -82
- package/dist/modifiers/flexbox.d.ts.map +0 -1
- package/dist/modifiers/font.d.ts +0 -71
- package/dist/modifiers/font.d.ts.map +0 -1
- package/dist/modifiers/grid.d.ts +0 -92
- package/dist/modifiers/grid.d.ts.map +0 -1
- package/dist/modifiers/margin.d.ts +0 -128
- package/dist/modifiers/margin.d.ts.map +0 -1
- package/dist/modifiers/padding.d.ts +0 -204
- package/dist/modifiers/padding.d.ts.map +0 -1
- package/dist/modifiers/responsive/advanced-utilities.d.ts +0 -118
- package/dist/modifiers/responsive/advanced-utilities.d.ts.map +0 -1
- package/dist/modifiers/responsive/breakpoints.d.ts +0 -81
- package/dist/modifiers/responsive/breakpoints.d.ts.map +0 -1
- package/dist/modifiers/responsive/css-generator.d.ts +0 -100
- package/dist/modifiers/responsive/css-generator.d.ts.map +0 -1
- package/dist/modifiers/responsive/dev-tools.d.ts +0 -107
- package/dist/modifiers/responsive/dev-tools.d.ts.map +0 -1
- package/dist/modifiers/responsive/index.d.ts +0 -29
- package/dist/modifiers/responsive/index.d.ts.map +0 -1
- package/dist/modifiers/responsive/layout-patterns.d.ts +0 -230
- package/dist/modifiers/responsive/layout-patterns.d.ts.map +0 -1
- package/dist/modifiers/responsive/performance.d.ts +0 -130
- package/dist/modifiers/responsive/performance.d.ts.map +0 -1
- package/dist/modifiers/responsive/responsive-builder.d.ts +0 -133
- package/dist/modifiers/responsive/responsive-builder.d.ts.map +0 -1
- package/dist/modifiers/responsive/responsive-modifier.d.ts +0 -123
- package/dist/modifiers/responsive/responsive-modifier.d.ts.map +0 -1
- package/dist/modifiers/responsive/types.d.ts +0 -183
- package/dist/modifiers/responsive/types.d.ts.map +0 -1
- package/dist/modifiers/responsive/utilities.d.ts +0 -149
- package/dist/modifiers/responsive/utilities.d.ts.map +0 -1
- package/dist/modifiers/scroll.d.ts +0 -143
- package/dist/modifiers/scroll.d.ts.map +0 -1
- package/dist/modifiers/shadows.d.ts +0 -114
- package/dist/modifiers/shadows.d.ts.map +0 -1
- package/dist/modifiers/size.d.ts +0 -113
- package/dist/modifiers/size.d.ts.map +0 -1
- package/dist/modifiers/text.d.ts +0 -147
- package/dist/modifiers/text.d.ts.map +0 -1
- package/dist/modifiers/transformations.d.ts +0 -329
- package/dist/modifiers/transformations.d.ts.map +0 -1
- package/dist/modifiers/transitions.d.ts +0 -98
- package/dist/modifiers/transitions.d.ts.map +0 -1
- package/dist/modifiers/typography.d.ts +0 -192
- package/dist/modifiers/typography.d.ts.map +0 -1
- package/dist/modifiers/utility.d.ts +0 -69
- package/dist/modifiers/utility.d.ts.map +0 -1
- package/dist/modifiers/utils.d.ts.map +0 -1
- package/dist/plugins/simplified-error-handler.d.ts +0 -83
- package/dist/plugins/simplified-error-handler.d.ts.map +0 -1
- package/dist/runtime/dev-tools.d.ts +0 -240
- package/dist/runtime/dev-tools.d.ts.map +0 -1
- package/dist/runtime/development-warnings.d.ts +0 -42
- package/dist/runtime/development-warnings.d.ts.map +0 -1
- package/dist/runtime/error-boundary.d.ts +0 -302
- package/dist/runtime/error-boundary.d.ts.map +0 -1
- package/dist/runtime/error-recovery.d.ts +0 -267
- package/dist/runtime/error-recovery.d.ts.map +0 -1
- package/dist/runtime/error-reporting.d.ts +0 -287
- package/dist/runtime/error-reporting.d.ts.map +0 -1
- package/dist/runtime/error-utils.d.ts +0 -204
- package/dist/runtime/error-utils.d.ts.map +0 -1
- package/dist/runtime/performance.d.ts +0 -217
- package/dist/runtime/performance.d.ts.map +0 -1
- package/dist/sui-compat.d.ts +0 -110
- package/dist/sui-compat.d.ts.map +0 -1
- package/dist/validation/advanced-debugging.d.ts +0 -319
- package/dist/validation/advanced-debugging.d.ts.map +0 -1
- package/dist/validation/build-time/detection.d.ts +0 -32
- package/dist/validation/build-time/detection.d.ts.map +0 -1
- package/dist/validation/build-time/index.d.ts +0 -84
- package/dist/validation/build-time/index.d.ts.map +0 -1
- package/dist/validation/build-time/plugins.d.ts +0 -75
- package/dist/validation/build-time/plugins.d.ts.map +0 -1
- package/dist/validation/build-time/rules.d.ts +0 -73
- package/dist/validation/build-time/rules.d.ts.map +0 -1
- package/dist/validation/build-time/transformer.d.ts +0 -23
- package/dist/validation/build-time/transformer.d.ts.map +0 -1
- package/dist/validation/build-time/types.d.ts +0 -212
- package/dist/validation/build-time/types.d.ts.map +0 -1
- package/dist/validation/comprehensive.d.ts +0 -160
- package/dist/validation/comprehensive.d.ts.map +0 -1
- package/dist/validation/debug-tools.d.ts +0 -251
- package/dist/validation/debug-tools.d.ts.map +0 -1
- package/dist/validation/developer-experience.d.ts +0 -243
- package/dist/validation/developer-experience.d.ts.map +0 -1
- package/dist/validation/documentation-integration.d.ts +0 -269
- package/dist/validation/documentation-integration.d.ts.map +0 -1
- package/dist/validation/enhanced-runtime.d.ts +0 -279
- package/dist/validation/enhanced-runtime.d.ts.map +0 -1
- package/dist/validation/error-reporting.d.ts +0 -186
- package/dist/validation/error-reporting.d.ts.map +0 -1
- package/dist/validation/ide-integration.d.ts +0 -328
- package/dist/validation/ide-integration.d.ts.map +0 -1
- package/dist/validation/performance-optimizer.d.ts +0 -218
- package/dist/validation/performance-optimizer.d.ts.map +0 -1
- package/dist/validation/production-bypass.d.ts +0 -175
- package/dist/validation/production-bypass.d.ts.map +0 -1
- package/dist/validation/simple.d.ts +0 -111
- package/dist/validation/simple.d.ts.map +0 -1
- package/dist/viewport/adapters/web-adapter.d.ts +0 -227
- package/dist/viewport/adapters/web-adapter.d.ts.map +0 -1
- package/dist/viewport/components.d.ts +0 -131
- package/dist/viewport/components.d.ts.map +0 -1
- package/dist/viewport/environment.d.ts +0 -75
- package/dist/viewport/environment.d.ts.map +0 -1
- package/dist/viewport/index.d.ts +0 -138
- package/dist/viewport/index.d.ts.map +0 -1
- package/dist/viewport/index.js +0 -2085
- package/dist/viewport/platform-detection.d.ts +0 -59
- package/dist/viewport/platform-detection.d.ts.map +0 -1
- package/dist/viewport/types.d.ts +0 -301
- package/dist/viewport/types.d.ts.map +0 -1
- package/dist/viewport/viewport-manager.d.ts +0 -118
- package/dist/viewport/viewport-manager.d.ts.map +0 -1
package/dist/index-Nfi2SBQh.js
DELETED
|
@@ -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
|
-
};
|