tyrell-components 1.0.0-RC10
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/LICENSE +21 -0
- package/README.md +221 -0
- package/css/tyrell-brand.css +767 -0
- package/css/tyrell.css +1679 -0
- package/dist/tyrell-brand.css +767 -0
- package/dist/tyrell.css +1679 -0
- package/dist/tyrell.js +2 -0
- package/lib/base/ty-component.d.ts +133 -0
- package/lib/base/ty-component.d.ts.map +1 -0
- package/lib/base/ty-component.js +297 -0
- package/lib/base/ty-component.js.map +1 -0
- package/lib/components/button.d.ts +135 -0
- package/lib/components/button.d.ts.map +1 -0
- package/lib/components/button.js +277 -0
- package/lib/components/button.js.map +1 -0
- package/lib/components/calendar-month.d.ts +132 -0
- package/lib/components/calendar-month.d.ts.map +1 -0
- package/lib/components/calendar-month.js +440 -0
- package/lib/components/calendar-month.js.map +1 -0
- package/lib/components/calendar-navigation.d.ts +137 -0
- package/lib/components/calendar-navigation.d.ts.map +1 -0
- package/lib/components/calendar-navigation.js +366 -0
- package/lib/components/calendar-navigation.js.map +1 -0
- package/lib/components/calendar.d.ts +166 -0
- package/lib/components/calendar.d.ts.map +1 -0
- package/lib/components/calendar.js +774 -0
- package/lib/components/calendar.js.map +1 -0
- package/lib/components/checkbox.d.ts +189 -0
- package/lib/components/checkbox.d.ts.map +1 -0
- package/lib/components/checkbox.js +400 -0
- package/lib/components/checkbox.js.map +1 -0
- package/lib/components/copy.d.ts +180 -0
- package/lib/components/copy.d.ts.map +1 -0
- package/lib/components/copy.js +393 -0
- package/lib/components/copy.js.map +1 -0
- package/lib/components/date-picker.d.ts +379 -0
- package/lib/components/date-picker.d.ts.map +1 -0
- package/lib/components/date-picker.js +1586 -0
- package/lib/components/date-picker.js.map +1 -0
- package/lib/components/dropdown.d.ts +424 -0
- package/lib/components/dropdown.d.ts.map +1 -0
- package/lib/components/dropdown.js +1640 -0
- package/lib/components/dropdown.js.map +1 -0
- package/lib/components/file-upload.d.ts +121 -0
- package/lib/components/file-upload.d.ts.map +1 -0
- package/lib/components/file-upload.js +441 -0
- package/lib/components/file-upload.js.map +1 -0
- package/lib/components/icon.d.ts +118 -0
- package/lib/components/icon.d.ts.map +1 -0
- package/lib/components/icon.js +245 -0
- package/lib/components/icon.js.map +1 -0
- package/lib/components/input.d.ts +270 -0
- package/lib/components/input.d.ts.map +1 -0
- package/lib/components/input.js +721 -0
- package/lib/components/input.js.map +1 -0
- package/lib/components/modal.d.ts +78 -0
- package/lib/components/modal.d.ts.map +1 -0
- package/lib/components/modal.js +497 -0
- package/lib/components/modal.js.map +1 -0
- package/lib/components/multiselect.d.ts +397 -0
- package/lib/components/multiselect.d.ts.map +1 -0
- package/lib/components/multiselect.js +1595 -0
- package/lib/components/multiselect.js.map +1 -0
- package/lib/components/option.d.ts +66 -0
- package/lib/components/option.d.ts.map +1 -0
- package/lib/components/option.js +314 -0
- package/lib/components/option.js.map +1 -0
- package/lib/components/popup.d.ts +43 -0
- package/lib/components/popup.d.ts.map +1 -0
- package/lib/components/popup.js +380 -0
- package/lib/components/popup.js.map +1 -0
- package/lib/components/radio.d.ts +198 -0
- package/lib/components/radio.d.ts.map +1 -0
- package/lib/components/radio.js +437 -0
- package/lib/components/radio.js.map +1 -0
- package/lib/components/resize-observer.d.ts +48 -0
- package/lib/components/resize-observer.d.ts.map +1 -0
- package/lib/components/resize-observer.js +108 -0
- package/lib/components/resize-observer.js.map +1 -0
- package/lib/components/scroll-container.d.ts +51 -0
- package/lib/components/scroll-container.d.ts.map +1 -0
- package/lib/components/scroll-container.js +239 -0
- package/lib/components/scroll-container.js.map +1 -0
- package/lib/components/step.d.ts +26 -0
- package/lib/components/step.d.ts.map +1 -0
- package/lib/components/step.js +75 -0
- package/lib/components/step.js.map +1 -0
- package/lib/components/switch.d.ts +111 -0
- package/lib/components/switch.d.ts.map +1 -0
- package/lib/components/switch.js +240 -0
- package/lib/components/switch.js.map +1 -0
- package/lib/components/tab.d.ts +23 -0
- package/lib/components/tab.d.ts.map +1 -0
- package/lib/components/tab.js +76 -0
- package/lib/components/tab.js.map +1 -0
- package/lib/components/tabs.d.ts +93 -0
- package/lib/components/tabs.d.ts.map +1 -0
- package/lib/components/tabs.js +653 -0
- package/lib/components/tabs.js.map +1 -0
- package/lib/components/tag.d.ts +144 -0
- package/lib/components/tag.d.ts.map +1 -0
- package/lib/components/tag.js +316 -0
- package/lib/components/tag.js.map +1 -0
- package/lib/components/textarea.d.ts +241 -0
- package/lib/components/textarea.d.ts.map +1 -0
- package/lib/components/textarea.js +585 -0
- package/lib/components/textarea.js.map +1 -0
- package/lib/components/tooltip.d.ts +40 -0
- package/lib/components/tooltip.d.ts.map +1 -0
- package/lib/components/tooltip.js +439 -0
- package/lib/components/tooltip.js.map +1 -0
- package/lib/components/wizard.d.ts +86 -0
- package/lib/components/wizard.d.ts.map +1 -0
- package/lib/components/wizard.js +636 -0
- package/lib/components/wizard.js.map +1 -0
- package/lib/icons/fontawesome/brands.d.ts +557 -0
- package/lib/icons/fontawesome/brands.d.ts.map +1 -0
- package/lib/icons/fontawesome/brands.js +557 -0
- package/lib/icons/fontawesome/brands.js.map +1 -0
- package/lib/icons/fontawesome/regular.d.ts +281 -0
- package/lib/icons/fontawesome/regular.d.ts.map +1 -0
- package/lib/icons/fontawesome/regular.js +281 -0
- package/lib/icons/fontawesome/regular.js.map +1 -0
- package/lib/icons/fontawesome/solid.d.ts +1992 -0
- package/lib/icons/fontawesome/solid.d.ts.map +1 -0
- package/lib/icons/fontawesome/solid.js +1992 -0
- package/lib/icons/fontawesome/solid.js.map +1 -0
- package/lib/icons/heroicons/micro.d.ts +324 -0
- package/lib/icons/heroicons/micro.d.ts.map +1 -0
- package/lib/icons/heroicons/micro.js +1032 -0
- package/lib/icons/heroicons/micro.js.map +1 -0
- package/lib/icons/heroicons/mini.d.ts +332 -0
- package/lib/icons/heroicons/mini.d.ts.map +1 -0
- package/lib/icons/heroicons/mini.js +1038 -0
- package/lib/icons/heroicons/mini.js.map +1 -0
- package/lib/icons/heroicons/outline.d.ts +332 -0
- package/lib/icons/heroicons/outline.d.ts.map +1 -0
- package/lib/icons/heroicons/outline.js +993 -0
- package/lib/icons/heroicons/outline.js.map +1 -0
- package/lib/icons/heroicons/solid.d.ts +332 -0
- package/lib/icons/heroicons/solid.d.ts.map +1 -0
- package/lib/icons/heroicons/solid.js +1063 -0
- package/lib/icons/heroicons/solid.js.map +1 -0
- package/lib/icons/lucide.d.ts +1872 -0
- package/lib/icons/lucide.d.ts.map +1 -0
- package/lib/icons/lucide.js +28212 -0
- package/lib/icons/lucide.js.map +1 -0
- package/lib/icons/material/filled.d.ts +2180 -0
- package/lib/icons/material/filled.d.ts.map +1 -0
- package/lib/icons/material/filled.js +14003 -0
- package/lib/icons/material/filled.js.map +1 -0
- package/lib/icons/material/outlined.d.ts +2142 -0
- package/lib/icons/material/outlined.d.ts.map +1 -0
- package/lib/icons/material/outlined.js +14545 -0
- package/lib/icons/material/outlined.js.map +1 -0
- package/lib/icons/material/round.d.ts +2147 -0
- package/lib/icons/material/round.d.ts.map +1 -0
- package/lib/icons/material/round.js +14779 -0
- package/lib/icons/material/round.js.map +1 -0
- package/lib/icons/material/sharp.d.ts +2147 -0
- package/lib/icons/material/sharp.d.ts.map +1 -0
- package/lib/icons/material/sharp.js +14189 -0
- package/lib/icons/material/sharp.js.map +1 -0
- package/lib/icons/material/two-tone.d.ts +2185 -0
- package/lib/icons/material/two-tone.d.ts.map +1 -0
- package/lib/icons/material/two-tone.js +17152 -0
- package/lib/icons/material/two-tone.js.map +1 -0
- package/lib/index.d.ts +86 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +78 -0
- package/lib/index.js.map +1 -0
- package/lib/styles/button.d.ts +14 -0
- package/lib/styles/button.d.ts.map +1 -0
- package/lib/styles/button.js +498 -0
- package/lib/styles/button.js.map +1 -0
- package/lib/styles/calendar-month.d.ts +6 -0
- package/lib/styles/calendar-month.d.ts.map +1 -0
- package/lib/styles/calendar-month.js +275 -0
- package/lib/styles/calendar-month.js.map +1 -0
- package/lib/styles/calendar-navigation.d.ts +6 -0
- package/lib/styles/calendar-navigation.d.ts.map +1 -0
- package/lib/styles/calendar-navigation.js +143 -0
- package/lib/styles/calendar-navigation.js.map +1 -0
- package/lib/styles/calendar.d.ts +6 -0
- package/lib/styles/calendar.d.ts.map +1 -0
- package/lib/styles/calendar.js +28 -0
- package/lib/styles/calendar.js.map +1 -0
- package/lib/styles/checkbox.d.ts +9 -0
- package/lib/styles/checkbox.d.ts.map +1 -0
- package/lib/styles/checkbox.js +19 -0
- package/lib/styles/checkbox.js.map +1 -0
- package/lib/styles/copy.d.ts +7 -0
- package/lib/styles/copy.d.ts.map +1 -0
- package/lib/styles/copy.js +94 -0
- package/lib/styles/copy.js.map +1 -0
- package/lib/styles/custom-scrollbar.d.ts +6 -0
- package/lib/styles/custom-scrollbar.d.ts.map +1 -0
- package/lib/styles/custom-scrollbar.js +157 -0
- package/lib/styles/custom-scrollbar.js.map +1 -0
- package/lib/styles/date-picker.d.ts +6 -0
- package/lib/styles/date-picker.d.ts.map +1 -0
- package/lib/styles/date-picker.js +438 -0
- package/lib/styles/date-picker.js.map +1 -0
- package/lib/styles/dropdown.d.ts +12 -0
- package/lib/styles/dropdown.d.ts.map +1 -0
- package/lib/styles/dropdown.js +1081 -0
- package/lib/styles/dropdown.js.map +1 -0
- package/lib/styles/file-upload.d.ts +2 -0
- package/lib/styles/file-upload.d.ts.map +1 -0
- package/lib/styles/file-upload.js +241 -0
- package/lib/styles/file-upload.js.map +1 -0
- package/lib/styles/icon.d.ts +6 -0
- package/lib/styles/icon.d.ts.map +1 -0
- package/lib/styles/icon.js +241 -0
- package/lib/styles/icon.js.map +1 -0
- package/lib/styles/input.d.ts +7 -0
- package/lib/styles/input.d.ts.map +1 -0
- package/lib/styles/input.js +685 -0
- package/lib/styles/input.js.map +1 -0
- package/lib/styles/modal.d.ts +8 -0
- package/lib/styles/modal.d.ts.map +1 -0
- package/lib/styles/modal.js +134 -0
- package/lib/styles/modal.js.map +1 -0
- package/lib/styles/multiselect.d.ts +6 -0
- package/lib/styles/multiselect.d.ts.map +1 -0
- package/lib/styles/multiselect.js +825 -0
- package/lib/styles/multiselect.js.map +1 -0
- package/lib/styles/option.d.ts +6 -0
- package/lib/styles/option.d.ts.map +1 -0
- package/lib/styles/option.js +116 -0
- package/lib/styles/option.js.map +1 -0
- package/lib/styles/popup.d.ts +8 -0
- package/lib/styles/popup.d.ts.map +1 -0
- package/lib/styles/popup.js +95 -0
- package/lib/styles/popup.js.map +1 -0
- package/lib/styles/radio.d.ts +8 -0
- package/lib/styles/radio.d.ts.map +1 -0
- package/lib/styles/radio.js +160 -0
- package/lib/styles/radio.js.map +1 -0
- package/lib/styles/resize-observer.d.ts +6 -0
- package/lib/styles/resize-observer.d.ts.map +1 -0
- package/lib/styles/resize-observer.js +18 -0
- package/lib/styles/resize-observer.js.map +1 -0
- package/lib/styles/scroll-container.d.ts +6 -0
- package/lib/styles/scroll-container.d.ts.map +1 -0
- package/lib/styles/scroll-container.js +198 -0
- package/lib/styles/scroll-container.js.map +1 -0
- package/lib/styles/step.d.ts +5 -0
- package/lib/styles/step.d.ts.map +1 -0
- package/lib/styles/step.js +50 -0
- package/lib/styles/step.js.map +1 -0
- package/lib/styles/switch.d.ts +9 -0
- package/lib/styles/switch.d.ts.map +1 -0
- package/lib/styles/switch.js +100 -0
- package/lib/styles/switch.js.map +1 -0
- package/lib/styles/tab.d.ts +5 -0
- package/lib/styles/tab.d.ts.map +1 -0
- package/lib/styles/tab.js +51 -0
- package/lib/styles/tab.js.map +1 -0
- package/lib/styles/tabs.d.ts +13 -0
- package/lib/styles/tabs.d.ts.map +1 -0
- package/lib/styles/tabs.js +184 -0
- package/lib/styles/tabs.js.map +1 -0
- package/lib/styles/tag.d.ts +6 -0
- package/lib/styles/tag.d.ts.map +1 -0
- package/lib/styles/tag.js +409 -0
- package/lib/styles/tag.js.map +1 -0
- package/lib/styles/textarea.d.ts +6 -0
- package/lib/styles/textarea.d.ts.map +1 -0
- package/lib/styles/textarea.js +350 -0
- package/lib/styles/textarea.js.map +1 -0
- package/lib/styles/tooltip.d.ts +9 -0
- package/lib/styles/tooltip.d.ts.map +1 -0
- package/lib/styles/tooltip.js +133 -0
- package/lib/styles/tooltip.js.map +1 -0
- package/lib/styles/wizard.d.ts +25 -0
- package/lib/styles/wizard.d.ts.map +1 -0
- package/lib/styles/wizard.js +348 -0
- package/lib/styles/wizard.js.map +1 -0
- package/lib/types/common.d.ts +143 -0
- package/lib/types/common.d.ts.map +1 -0
- package/lib/types/common.js +5 -0
- package/lib/types/common.js.map +1 -0
- package/lib/utils/calendar-utils.d.ts +176 -0
- package/lib/utils/calendar-utils.d.ts.map +1 -0
- package/lib/utils/calendar-utils.js +370 -0
- package/lib/utils/calendar-utils.js.map +1 -0
- package/lib/utils/custom-scrollbar.d.ts +82 -0
- package/lib/utils/custom-scrollbar.d.ts.map +1 -0
- package/lib/utils/custom-scrollbar.js +320 -0
- package/lib/utils/custom-scrollbar.js.map +1 -0
- package/lib/utils/icon-registry.d.ts +78 -0
- package/lib/utils/icon-registry.d.ts.map +1 -0
- package/lib/utils/icon-registry.js +304 -0
- package/lib/utils/icon-registry.js.map +1 -0
- package/lib/utils/loader-registry.d.ts +35 -0
- package/lib/utils/loader-registry.d.ts.map +1 -0
- package/lib/utils/loader-registry.js +43 -0
- package/lib/utils/loader-registry.js.map +1 -0
- package/lib/utils/locale.d.ts +136 -0
- package/lib/utils/locale.d.ts.map +1 -0
- package/lib/utils/locale.js +213 -0
- package/lib/utils/locale.js.map +1 -0
- package/lib/utils/mobile.d.ts +14 -0
- package/lib/utils/mobile.d.ts.map +1 -0
- package/lib/utils/mobile.js +21 -0
- package/lib/utils/mobile.js.map +1 -0
- package/lib/utils/number-format.d.ts +83 -0
- package/lib/utils/number-format.d.ts.map +1 -0
- package/lib/utils/number-format.js +143 -0
- package/lib/utils/number-format.js.map +1 -0
- package/lib/utils/parse-boolean.d.ts +39 -0
- package/lib/utils/parse-boolean.d.ts.map +1 -0
- package/lib/utils/parse-boolean.js +58 -0
- package/lib/utils/parse-boolean.js.map +1 -0
- package/lib/utils/positioning.d.ts +143 -0
- package/lib/utils/positioning.d.ts.map +1 -0
- package/lib/utils/positioning.js +308 -0
- package/lib/utils/positioning.js.map +1 -0
- package/lib/utils/property-capture.d.ts +132 -0
- package/lib/utils/property-capture.d.ts.map +1 -0
- package/lib/utils/property-capture.js +152 -0
- package/lib/utils/property-capture.js.map +1 -0
- package/lib/utils/property-manager.d.ts +90 -0
- package/lib/utils/property-manager.d.ts.map +1 -0
- package/lib/utils/property-manager.js +197 -0
- package/lib/utils/property-manager.js.map +1 -0
- package/lib/utils/resize-observer.d.ts +42 -0
- package/lib/utils/resize-observer.d.ts.map +1 -0
- package/lib/utils/resize-observer.js +71 -0
- package/lib/utils/resize-observer.js.map +1 -0
- package/lib/utils/scroll-lock.d.ts +79 -0
- package/lib/utils/scroll-lock.d.ts.map +1 -0
- package/lib/utils/scroll-lock.js +197 -0
- package/lib/utils/scroll-lock.js.map +1 -0
- package/lib/utils/styles.d.ts +27 -0
- package/lib/utils/styles.d.ts.map +1 -0
- package/lib/utils/styles.js +53 -0
- package/lib/utils/styles.js.map +1 -0
- package/lib/version.d.ts +8 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +11 -0
- package/lib/version.js.map +1 -0
- package/package.json +163 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property Capture Utility
|
|
3
|
+
*
|
|
4
|
+
* Solves the problem of frameworks (React, Reagent, etc.) setting properties
|
|
5
|
+
* on custom elements BEFORE connectedCallback runs.
|
|
6
|
+
*
|
|
7
|
+
* PROBLEM:
|
|
8
|
+
* 1. Framework creates element: document.createElement('ty-dropdown')
|
|
9
|
+
* 2. Framework sets properties: element.value = "foo"
|
|
10
|
+
* 3. Constructor runs and defines getters/setters
|
|
11
|
+
* 4. BUT properties were already set, creating instance properties
|
|
12
|
+
* 5. Instance properties shadow the class getters/setters
|
|
13
|
+
* 6. connectedCallback runs - too late!
|
|
14
|
+
*
|
|
15
|
+
* SOLUTION:
|
|
16
|
+
* In connectedCallback, capture any pre-set properties and apply them properly.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* connectedCallback(): void {
|
|
21
|
+
* const preSetProps = capturePreSetProperties(this, [
|
|
22
|
+
* 'value', 'clearable', 'disabled'
|
|
23
|
+
* ])
|
|
24
|
+
*
|
|
25
|
+
* if (preSetProps.value !== undefined) {
|
|
26
|
+
* this._value = preSetProps.value
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* Capture properties that were set before connectedCallback
|
|
33
|
+
*
|
|
34
|
+
* @param element - The custom element instance
|
|
35
|
+
* @param propertyNames - Array of property names to check
|
|
36
|
+
* @param options - Capture options
|
|
37
|
+
* @returns Record of captured properties with metadata
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const captured = capturePreSetProperties(this, ['value', 'disabled'])
|
|
42
|
+
* // {
|
|
43
|
+
* // value: { name: 'value', value: 'foo', hadProperty: true },
|
|
44
|
+
* // disabled: { name: 'disabled', value: undefined, hadProperty: false }
|
|
45
|
+
* // }
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export function capturePreSetProperties(element, propertyNames, options = { cleanup: true }) {
|
|
49
|
+
const captured = {};
|
|
50
|
+
for (const name of propertyNames) {
|
|
51
|
+
const descriptor = Object.getOwnPropertyDescriptor(element, name);
|
|
52
|
+
captured[name] = {
|
|
53
|
+
name,
|
|
54
|
+
value: descriptor?.value,
|
|
55
|
+
hadProperty: descriptor !== undefined && descriptor.value !== undefined
|
|
56
|
+
};
|
|
57
|
+
// Clean up instance property so class getter/setter works
|
|
58
|
+
if (options.cleanup && captured[name].hadProperty) {
|
|
59
|
+
delete element[name];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return captured;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Simpler API - just get the values that were pre-set
|
|
66
|
+
*
|
|
67
|
+
* @param element - The custom element instance
|
|
68
|
+
* @param propertyNames - Array of property names to check
|
|
69
|
+
* @param options - Capture options
|
|
70
|
+
* @returns Record of property names to values (only includes properties that were set)
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const values = getCapturedValues(this, ['value', 'disabled'])
|
|
75
|
+
* if (values.value !== undefined) {
|
|
76
|
+
* this._value = values.value
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export function getCapturedValues(element, propertyNames, options) {
|
|
81
|
+
const captured = capturePreSetProperties(element, propertyNames, options);
|
|
82
|
+
const values = {};
|
|
83
|
+
for (const [name, data] of Object.entries(captured)) {
|
|
84
|
+
if (data.hadProperty) {
|
|
85
|
+
values[name] = data.value;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return values;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Automatically apply pre-set properties to private fields
|
|
92
|
+
*
|
|
93
|
+
* @param element - The custom element instance
|
|
94
|
+
* @param propertyNames - Array of property names to check
|
|
95
|
+
* @param propertyMap - Optional mapping of public names to private field names
|
|
96
|
+
* Default: adds underscore prefix (e.g., 'value' -> '_value')
|
|
97
|
+
* @param options - Capture options
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* // Simple usage (uses _propertyName convention)
|
|
102
|
+
* applyPreSetProperties(this, ['value', 'disabled'])
|
|
103
|
+
* // Sets this._value and this._disabled
|
|
104
|
+
*
|
|
105
|
+
* // Custom mapping
|
|
106
|
+
* applyPreSetProperties(this, ['value'], { value: 'internalValue' })
|
|
107
|
+
* // Sets this.internalValue
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export function applyPreSetProperties(element, propertyNames, propertyMap, options) {
|
|
111
|
+
const captured = capturePreSetProperties(element, propertyNames, options);
|
|
112
|
+
for (const [name, data] of Object.entries(captured)) {
|
|
113
|
+
if (data.hadProperty) {
|
|
114
|
+
// Determine the private field name
|
|
115
|
+
const privateName = propertyMap?.[name] || `_${name}`;
|
|
116
|
+
element[privateName] = data.value;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Helper for components with standard _propertyName pattern
|
|
122
|
+
*
|
|
123
|
+
* @param element - The custom element instance
|
|
124
|
+
* @param propertyNames - Array of property names to check
|
|
125
|
+
* @param transformer - Optional function to transform values before setting
|
|
126
|
+
* @param options - Capture options
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* connectedCallback(): void {
|
|
131
|
+
* // Basic usage
|
|
132
|
+
* captureAndApplyProperties(this, ['value', 'disabled', 'required'])
|
|
133
|
+
*
|
|
134
|
+
* // With transformation
|
|
135
|
+
* captureAndApplyProperties(this, ['value'], (name, value) => {
|
|
136
|
+
* if (name === 'value') return this.parseValue(value)
|
|
137
|
+
* return value
|
|
138
|
+
* })
|
|
139
|
+
* }
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export function captureAndApplyProperties(element, propertyNames, transformer, options) {
|
|
143
|
+
const captured = capturePreSetProperties(element, propertyNames, options);
|
|
144
|
+
for (const [name, data] of Object.entries(captured)) {
|
|
145
|
+
if (data.hadProperty) {
|
|
146
|
+
const privateName = `_${name}`;
|
|
147
|
+
const value = transformer ? transformer(name, data.value) : data.value;
|
|
148
|
+
element[privateName] = value;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=property-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property-capture.js","sourceRoot":"","sources":["../../src/utils/property-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAsBH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAoB,EACpB,aAAuB,EACvB,UAAkC,EAAE,OAAO,EAAE,IAAI,EAAE;IAEnD,MAAM,QAAQ,GAAqC,EAAE,CAAA;IAErD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAEjE,QAAQ,CAAC,IAAI,CAAC,GAAG;YACf,IAAI;YACJ,KAAK,EAAE,UAAU,EAAE,KAAK;YACxB,WAAW,EAAE,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS;SACxE,CAAA;QAED,0DAA0D;QAC1D,IAAI,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAClD,OAAQ,OAAe,CAAC,IAAI,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAoB,EACpB,aAAuB,EACvB,OAAgC;IAEhC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IACzE,MAAM,MAAM,GAAwB,EAAE,CAAA;IAEtC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAOD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAY,EACZ,aAAuB,EACvB,WAAyB,EACzB,OAAgC;IAEhC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IAEzE,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,mCAAmC;YACnC,MAAM,WAAW,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAA;YACrD,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;QACnC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAY,EACZ,aAAuB,EACvB,WAA+C,EAC/C,OAAgC;IAEhC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IAEzE,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;YAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA;YACtE,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,CAAA;QAC9B,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property Manager - Unified property lifecycle for web components
|
|
3
|
+
*
|
|
4
|
+
* Handles property/attribute synchronization, validation, coercion, and change tracking.
|
|
5
|
+
* All property updates flow through a single code path for consistency.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Configuration for a single property
|
|
9
|
+
*/
|
|
10
|
+
export interface PropertyConfig {
|
|
11
|
+
type: 'string' | 'boolean' | 'number' | 'object' | 'array';
|
|
12
|
+
visual?: boolean;
|
|
13
|
+
formValue?: boolean;
|
|
14
|
+
emitChange?: boolean;
|
|
15
|
+
default?: any;
|
|
16
|
+
validate?: (value: any) => boolean;
|
|
17
|
+
coerce?: (value: any) => any;
|
|
18
|
+
aliases?: Record<string, any>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Represents a property change
|
|
22
|
+
*/
|
|
23
|
+
export interface PropertyChange {
|
|
24
|
+
name: string;
|
|
25
|
+
oldValue: any;
|
|
26
|
+
newValue: any;
|
|
27
|
+
source: 'attribute' | 'property' | 'internal';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Manages component properties with unified lifecycle
|
|
31
|
+
*/
|
|
32
|
+
export declare class PropertyManager<T = any> {
|
|
33
|
+
private _props;
|
|
34
|
+
private _config;
|
|
35
|
+
constructor(config: Record<string, PropertyConfig>);
|
|
36
|
+
/**
|
|
37
|
+
* Initialize properties with default values
|
|
38
|
+
*/
|
|
39
|
+
private _initializeDefaults;
|
|
40
|
+
/**
|
|
41
|
+
* Check if a property name exists in the configuration
|
|
42
|
+
*/
|
|
43
|
+
hasConfig(name: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Update a property value
|
|
46
|
+
* Returns PropertyChange if value changed, null otherwise
|
|
47
|
+
*/
|
|
48
|
+
updateProperty(name: string, value: any, source?: 'attribute' | 'property' | 'internal'): PropertyChange | null;
|
|
49
|
+
/**
|
|
50
|
+
* Coerce value to the correct type
|
|
51
|
+
*/
|
|
52
|
+
private _coerceValue;
|
|
53
|
+
/**
|
|
54
|
+
* Validate a property value
|
|
55
|
+
*/
|
|
56
|
+
private _validateValue;
|
|
57
|
+
/**
|
|
58
|
+
* Check if two values are equal
|
|
59
|
+
*/
|
|
60
|
+
private _valuesEqual;
|
|
61
|
+
/**
|
|
62
|
+
* Get a property value
|
|
63
|
+
*/
|
|
64
|
+
get(name: string): any;
|
|
65
|
+
/**
|
|
66
|
+
* Get all properties as an object
|
|
67
|
+
*/
|
|
68
|
+
getAll(): Record<string, any>;
|
|
69
|
+
/**
|
|
70
|
+
* Get property configuration
|
|
71
|
+
*/
|
|
72
|
+
getConfig(name: string): PropertyConfig | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Check if a property is visual (requires render)
|
|
75
|
+
*/
|
|
76
|
+
isVisual(name: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Check if a property affects form value
|
|
79
|
+
*/
|
|
80
|
+
isFormValue(name: string): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Check if a property should emit change events
|
|
83
|
+
*/
|
|
84
|
+
shouldEmitChange(name: string): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Handle property aliases (e.g., not-clearable → clearable: false)
|
|
87
|
+
*/
|
|
88
|
+
handleAlias(aliasName: string, value: any): PropertyChange | null;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=property-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property-manager.d.ts","sourceRoot":"","sources":["../../src/utils/property-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAE7B,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;IAG1D,MAAM,CAAC,EAAE,OAAO,CAAA;IAGhB,SAAS,CAAC,EAAE,OAAO,CAAA;IAGnB,UAAU,CAAC,EAAE,OAAO,CAAA;IAGpB,OAAO,CAAC,EAAE,GAAG,CAAA;IAGb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAA;IAGlC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;IAG5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,GAAG,CAAA;IACb,QAAQ,EAAE,GAAG,CAAA;IACb,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAAA;CAC9C;AAED;;GAEG;AACH,qBAAa,eAAe,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAAgC;gBAEnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAKlD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC;;;OAGG;IACH,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,EACV,MAAM,GAAE,WAAW,GAAG,UAAU,GAAG,UAAuB,GACzD,cAAc,GAAG,IAAI;IAsCxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAoDpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAoBpB;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAItB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAI7B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAInD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,cAAc,GAAG,IAAI;CAUlE"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Property Manager - Unified property lifecycle for web components
|
|
3
|
+
*
|
|
4
|
+
* Handles property/attribute synchronization, validation, coercion, and change tracking.
|
|
5
|
+
* All property updates flow through a single code path for consistency.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Manages component properties with unified lifecycle
|
|
9
|
+
*/
|
|
10
|
+
export class PropertyManager {
|
|
11
|
+
constructor(config) {
|
|
12
|
+
this._props = new Map();
|
|
13
|
+
this._config = config;
|
|
14
|
+
this._initializeDefaults();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Initialize properties with default values
|
|
18
|
+
*/
|
|
19
|
+
_initializeDefaults() {
|
|
20
|
+
for (const [name, config] of Object.entries(this._config)) {
|
|
21
|
+
if (config.default !== undefined) {
|
|
22
|
+
this._props.set(name, config.default);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if a property name exists in the configuration
|
|
28
|
+
*/
|
|
29
|
+
hasConfig(name) {
|
|
30
|
+
return name in this._config;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Update a property value
|
|
34
|
+
* Returns PropertyChange if value changed, null otherwise
|
|
35
|
+
*/
|
|
36
|
+
updateProperty(name, value, source = 'property') {
|
|
37
|
+
const config = this._config[name];
|
|
38
|
+
if (!config) {
|
|
39
|
+
console.warn(`[PropertyManager] Unknown property: ${name}`);
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
// Get old value
|
|
43
|
+
const oldValue = this._props.get(name);
|
|
44
|
+
// Coerce value to correct type
|
|
45
|
+
const coercedValue = this._coerceValue(name, value, config);
|
|
46
|
+
// Validate value
|
|
47
|
+
if (!this._validateValue(name, coercedValue, config)) {
|
|
48
|
+
console.warn(`[PropertyManager] Invalid value for ${name}:`, coercedValue);
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
// Check if value actually changed
|
|
52
|
+
if (this._valuesEqual(oldValue, coercedValue)) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
// Update internal map
|
|
56
|
+
this._props.set(name, coercedValue);
|
|
57
|
+
// Create change object
|
|
58
|
+
const change = {
|
|
59
|
+
name,
|
|
60
|
+
oldValue,
|
|
61
|
+
newValue: coercedValue,
|
|
62
|
+
source
|
|
63
|
+
};
|
|
64
|
+
return change;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Coerce value to the correct type
|
|
68
|
+
*/
|
|
69
|
+
_coerceValue(name, value, config) {
|
|
70
|
+
// Custom coercion
|
|
71
|
+
if (config.coerce) {
|
|
72
|
+
return config.coerce(value);
|
|
73
|
+
}
|
|
74
|
+
// Null/undefined handling
|
|
75
|
+
if (value === null || value === undefined) {
|
|
76
|
+
return config.default ?? null;
|
|
77
|
+
}
|
|
78
|
+
// Type coercion
|
|
79
|
+
switch (config.type) {
|
|
80
|
+
case 'boolean':
|
|
81
|
+
// HTML Standard: attribute present (even empty) = true, absent = false
|
|
82
|
+
// String handling:
|
|
83
|
+
if (typeof value === 'string') {
|
|
84
|
+
// Empty string = true (HTML boolean attribute: <input checked>)
|
|
85
|
+
if (value === '')
|
|
86
|
+
return true;
|
|
87
|
+
// Explicit false values
|
|
88
|
+
const normalized = value.toLowerCase().trim();
|
|
89
|
+
if (normalized === 'false' || normalized === '0')
|
|
90
|
+
return false;
|
|
91
|
+
// Everything else is truthy
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
// Non-string: standard truthy/falsy
|
|
95
|
+
return Boolean(value);
|
|
96
|
+
case 'number':
|
|
97
|
+
const num = Number(value);
|
|
98
|
+
return isNaN(num) ? (config.default ?? 0) : num;
|
|
99
|
+
case 'string':
|
|
100
|
+
return String(value);
|
|
101
|
+
case 'object':
|
|
102
|
+
case 'array':
|
|
103
|
+
if (typeof value === 'string') {
|
|
104
|
+
try {
|
|
105
|
+
return JSON.parse(value);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
console.warn(`[PropertyManager] Failed to parse ${name}:`, value);
|
|
109
|
+
return config.default ?? (config.type === 'array' ? [] : {});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return value;
|
|
113
|
+
default:
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Validate a property value
|
|
119
|
+
*/
|
|
120
|
+
_validateValue(name, value, config) {
|
|
121
|
+
if (config.validate) {
|
|
122
|
+
return config.validate(value);
|
|
123
|
+
}
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check if two values are equal
|
|
128
|
+
*/
|
|
129
|
+
_valuesEqual(a, b) {
|
|
130
|
+
// Simple equality for primitives
|
|
131
|
+
if (typeof a !== 'object' || typeof b !== 'object') {
|
|
132
|
+
return a === b;
|
|
133
|
+
}
|
|
134
|
+
// Null checks
|
|
135
|
+
if (a === null || b === null) {
|
|
136
|
+
return a === b;
|
|
137
|
+
}
|
|
138
|
+
// Deep equality for objects/arrays (simple implementation)
|
|
139
|
+
// For production, consider using a proper deep equality library
|
|
140
|
+
try {
|
|
141
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get a property value
|
|
149
|
+
*/
|
|
150
|
+
get(name) {
|
|
151
|
+
return this._props.get(name);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get all properties as an object
|
|
155
|
+
*/
|
|
156
|
+
getAll() {
|
|
157
|
+
return Object.fromEntries(this._props);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get property configuration
|
|
161
|
+
*/
|
|
162
|
+
getConfig(name) {
|
|
163
|
+
return this._config[name];
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Check if a property is visual (requires render)
|
|
167
|
+
*/
|
|
168
|
+
isVisual(name) {
|
|
169
|
+
return this._config[name]?.visual ?? false;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Check if a property affects form value
|
|
173
|
+
*/
|
|
174
|
+
isFormValue(name) {
|
|
175
|
+
return this._config[name]?.formValue ?? false;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Check if a property should emit change events
|
|
179
|
+
*/
|
|
180
|
+
shouldEmitChange(name) {
|
|
181
|
+
return this._config[name]?.emitChange ?? false;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Handle property aliases (e.g., not-clearable → clearable: false)
|
|
185
|
+
*/
|
|
186
|
+
handleAlias(aliasName, value) {
|
|
187
|
+
// Find property with this alias
|
|
188
|
+
for (const [propName, config] of Object.entries(this._config)) {
|
|
189
|
+
if (config.aliases && aliasName in config.aliases) {
|
|
190
|
+
const aliasedValue = config.aliases[aliasName];
|
|
191
|
+
return this.updateProperty(propName, aliasedValue, 'attribute');
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=property-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property-manager.js","sourceRoot":"","sources":["../../src/utils/property-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resize Observer Registry & Callbacks
|
|
3
|
+
*
|
|
4
|
+
* Provides global registry for element sizes and optional callback subscriptions.
|
|
5
|
+
*/
|
|
6
|
+
export interface ElementSize {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
}
|
|
10
|
+
export type ResizeCallback = (size: ElementSize) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Get current size for element by ID (sync query)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const size = getSize('parent-container')
|
|
16
|
+
* if (size) console.log(`Width: ${size.width}px`)
|
|
17
|
+
*/
|
|
18
|
+
export declare function getSize(id: string): ElementSize | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Subscribe to size changes for element by ID
|
|
21
|
+
* Returns unsubscribe function
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const unsubscribe = onResize('parent', ({ width, height }) => {
|
|
25
|
+
* console.log(`Resized to ${width}x${height}`)
|
|
26
|
+
* })
|
|
27
|
+
* // Later: unsubscribe()
|
|
28
|
+
*/
|
|
29
|
+
export declare function onResize(id: string, callback: ResizeCallback): () => void;
|
|
30
|
+
/**
|
|
31
|
+
* Get all registered sizes (for debugging/window API)
|
|
32
|
+
*/
|
|
33
|
+
export declare function getAllSizes(): Record<string, ElementSize>;
|
|
34
|
+
/**
|
|
35
|
+
* Internal: Update size in registry and notify callbacks
|
|
36
|
+
*/
|
|
37
|
+
export declare function updateSize(id: string, width: number, height: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* Internal: Remove size from registry and cleanup callbacks
|
|
40
|
+
*/
|
|
41
|
+
export declare function removeSize(id: string): void;
|
|
42
|
+
//# sourceMappingURL=resize-observer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-observer.d.ts","sourceRoot":"","sources":["../../src/utils/resize-observer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;AAMxD;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAiBzE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAEzD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAS1E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG3C"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resize Observer Registry & Callbacks
|
|
3
|
+
*
|
|
4
|
+
* Provides global registry for element sizes and optional callback subscriptions.
|
|
5
|
+
*/
|
|
6
|
+
// Global registry (Map-based storage)
|
|
7
|
+
const sizes = new Map();
|
|
8
|
+
const callbacks = new Map();
|
|
9
|
+
/**
|
|
10
|
+
* Get current size for element by ID (sync query)
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const size = getSize('parent-container')
|
|
14
|
+
* if (size) console.log(`Width: ${size.width}px`)
|
|
15
|
+
*/
|
|
16
|
+
export function getSize(id) {
|
|
17
|
+
return sizes.get(id);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Subscribe to size changes for element by ID
|
|
21
|
+
* Returns unsubscribe function
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const unsubscribe = onResize('parent', ({ width, height }) => {
|
|
25
|
+
* console.log(`Resized to ${width}x${height}`)
|
|
26
|
+
* })
|
|
27
|
+
* // Later: unsubscribe()
|
|
28
|
+
*/
|
|
29
|
+
export function onResize(id, callback) {
|
|
30
|
+
if (!callbacks.has(id)) {
|
|
31
|
+
callbacks.set(id, new Set());
|
|
32
|
+
}
|
|
33
|
+
callbacks.get(id).add(callback);
|
|
34
|
+
// Call immediately with current size if available
|
|
35
|
+
const current = sizes.get(id);
|
|
36
|
+
if (current)
|
|
37
|
+
callback(current);
|
|
38
|
+
// Return unsubscribe function
|
|
39
|
+
return () => {
|
|
40
|
+
callbacks.get(id)?.delete(callback);
|
|
41
|
+
if (callbacks.get(id)?.size === 0) {
|
|
42
|
+
callbacks.delete(id);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get all registered sizes (for debugging/window API)
|
|
48
|
+
*/
|
|
49
|
+
export function getAllSizes() {
|
|
50
|
+
return Object.fromEntries(sizes);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Internal: Update size in registry and notify callbacks
|
|
54
|
+
*/
|
|
55
|
+
export function updateSize(id, width, height) {
|
|
56
|
+
sizes.set(id, { width, height });
|
|
57
|
+
// Notify all subscribers
|
|
58
|
+
const cbs = callbacks.get(id);
|
|
59
|
+
if (cbs) {
|
|
60
|
+
const size = { width, height };
|
|
61
|
+
cbs.forEach(cb => cb(size));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Internal: Remove size from registry and cleanup callbacks
|
|
66
|
+
*/
|
|
67
|
+
export function removeSize(id) {
|
|
68
|
+
sizes.delete(id);
|
|
69
|
+
callbacks.delete(id);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=resize-observer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-observer.js","sourceRoot":"","sources":["../../src/utils/resize-observer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,sCAAsC;AACtC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAA;AAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAA;AAExD;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACtB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAU,EAAE,QAAwB;IAC3D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACvB,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IAC9B,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAEhC,kDAAkD;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC7B,IAAI,OAAO;QAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IAE9B,8BAA8B;IAC9B,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;QACnC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU,EAAE,KAAa,EAAE,MAAc;IAClE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAEhC,yBAAyB;IACzB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC7B,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;QAC9B,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAChB,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AACtB,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS-based scroll prevention using position: fixed.
|
|
3
|
+
*
|
|
4
|
+
* Prevents body/page scrolling by temporarily fixing the body position
|
|
5
|
+
* while preserving scroll position. Much more reliable than event prevention.
|
|
6
|
+
*
|
|
7
|
+
* Key benefits:
|
|
8
|
+
* - No event manipulation complexity
|
|
9
|
+
* - No interference with component keyboard navigation
|
|
10
|
+
* - Preserves scroll position perfectly
|
|
11
|
+
* - Standard industry technique
|
|
12
|
+
* - Multiple component support with proper cleanup
|
|
13
|
+
*/
|
|
14
|
+
declare global {
|
|
15
|
+
interface Window {
|
|
16
|
+
tyScrollDebug?: boolean;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Lock scrolling for a specific component.
|
|
21
|
+
*
|
|
22
|
+
* Multiple components can lock scrolling simultaneously.
|
|
23
|
+
* Scroll remains locked until ALL components unlock.
|
|
24
|
+
*
|
|
25
|
+
* @param componentId - Unique identifier for the component
|
|
26
|
+
*/
|
|
27
|
+
export declare function lockScroll(componentId: string): void;
|
|
28
|
+
/**
|
|
29
|
+
* Unlock scrolling for a specific component.
|
|
30
|
+
*
|
|
31
|
+
* Scroll remains locked if other components still have locks active.
|
|
32
|
+
*
|
|
33
|
+
* @param componentId - Unique identifier for the component
|
|
34
|
+
*/
|
|
35
|
+
export declare function unlockScroll(componentId: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* Emergency unlock - removes all scroll locks immediately.
|
|
38
|
+
*
|
|
39
|
+
* Use this for cleanup or error recovery scenarios.
|
|
40
|
+
*/
|
|
41
|
+
export declare function forceUnlockAll(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Enable scroll lock debugging - useful for testing and development
|
|
44
|
+
*/
|
|
45
|
+
export declare function enableDebug(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Disable scroll lock debugging
|
|
48
|
+
*/
|
|
49
|
+
export declare function disableDebug(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Get the set of currently active component locks.
|
|
52
|
+
*
|
|
53
|
+
* @returns Set of component IDs that currently have scroll locked
|
|
54
|
+
*/
|
|
55
|
+
export declare function getActiveLocks(): Set<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Check if scrolling is currently locked.
|
|
58
|
+
*
|
|
59
|
+
* @returns true if any component has scroll locked
|
|
60
|
+
*/
|
|
61
|
+
export declare function isLocked(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Check if scrolling is locked by a specific component.
|
|
64
|
+
*
|
|
65
|
+
* @param componentId - Component identifier to check
|
|
66
|
+
* @returns true if this specific component has scroll locked
|
|
67
|
+
*/
|
|
68
|
+
export declare function isLockedBy(componentId: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Get the complete lock state for debugging.
|
|
71
|
+
*
|
|
72
|
+
* @returns Current state including scroll position and active locks
|
|
73
|
+
*/
|
|
74
|
+
export declare function getLockState(): Readonly<{
|
|
75
|
+
locked: boolean;
|
|
76
|
+
scrollY: number;
|
|
77
|
+
activeLocks: string[];
|
|
78
|
+
}>;
|
|
79
|
+
//# sourceMappingURL=scroll-lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-lock.d.ts","sourceRoot":"","sources":["../../src/utils/scroll-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAuBH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB;CACF;AA4FD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAUpD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAWtD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAMD;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAGnC;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,GAAG,CAAC,MAAM,CAAC,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,QAAQ,CAAC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC,CAMD"}
|