stimeo-ui 0.17.0 → 0.18.1
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/CHANGELOG.md +136 -2
- package/README.md +19 -10
- package/dist/cable/index.d.ts +11 -9
- package/dist/cable/index.js +22 -14
- package/dist/cable/index.js.map +1 -1
- package/dist/coerce-JtZVNG5h.d.ts +20 -0
- package/dist/controllers/accordion_controller.js +14 -6
- package/dist/controllers/accordion_controller.js.map +1 -1
- package/dist/controllers/alert_dialog_controller.js +145 -118
- package/dist/controllers/alert_dialog_controller.js.map +1 -1
- package/dist/controllers/announcer_controller.d.ts +5 -3
- package/dist/controllers/announcer_controller.js +113 -17
- package/dist/controllers/announcer_controller.js.map +1 -1
- package/dist/controllers/auto_submit_controller.js +185 -60
- package/dist/controllers/auto_submit_controller.js.map +1 -1
- package/dist/controllers/avatar_controller.js +55 -43
- package/dist/controllers/avatar_controller.js.map +1 -1
- package/dist/controllers/breadcrumb_controller.js.map +1 -1
- package/dist/controllers/bulk_select_controller.d.ts +3 -3
- package/dist/controllers/bulk_select_controller.js +64 -50
- package/dist/controllers/bulk_select_controller.js.map +1 -1
- package/dist/controllers/calendar_controller.d.ts +15 -12
- package/dist/controllers/calendar_controller.js +55 -53
- package/dist/controllers/calendar_controller.js.map +1 -1
- package/dist/controllers/carousel_controller.d.ts +9 -5
- package/dist/controllers/carousel_controller.js +124 -86
- package/dist/controllers/carousel_controller.js.map +1 -1
- package/dist/controllers/character_counter_controller.d.ts +27 -6
- package/dist/controllers/character_counter_controller.js +291 -95
- package/dist/controllers/character_counter_controller.js.map +1 -1
- package/dist/controllers/checkbox_controller.js +6 -0
- package/dist/controllers/checkbox_controller.js.map +1 -1
- package/dist/controllers/clipboard_controller.js +118 -27
- package/dist/controllers/clipboard_controller.js.map +1 -1
- package/dist/controllers/collapsible_controller.d.ts +1 -1
- package/dist/controllers/collapsible_controller.js +52 -49
- package/dist/controllers/collapsible_controller.js.map +1 -1
- package/dist/controllers/color_picker_controller.js +29 -7
- package/dist/controllers/color_picker_controller.js.map +1 -1
- package/dist/controllers/combobox_controller.d.ts +1 -1
- package/dist/controllers/combobox_controller.js +210 -71
- package/dist/controllers/combobox_controller.js.map +1 -1
- package/dist/controllers/command_palette_controller.d.ts +9 -9
- package/dist/controllers/command_palette_controller.js +290 -140
- package/dist/controllers/command_palette_controller.js.map +1 -1
- package/dist/controllers/conditional_fields_controller.js +145 -58
- package/dist/controllers/conditional_fields_controller.js.map +1 -1
- package/dist/controllers/confirm_controller.js +145 -118
- package/dist/controllers/confirm_controller.js.map +1 -1
- package/dist/controllers/context_menu_controller.d.ts +49 -14
- package/dist/controllers/context_menu_controller.js +138 -73
- package/dist/controllers/context_menu_controller.js.map +1 -1
- package/dist/controllers/count_up_controller.js.map +1 -1
- package/dist/controllers/countdown_controller.d.ts +2 -2
- package/dist/controllers/countdown_controller.js +109 -21
- package/dist/controllers/countdown_controller.js.map +1 -1
- package/dist/controllers/currency_input_controller.d.ts +75 -11
- package/dist/controllers/currency_input_controller.js +446 -72
- package/dist/controllers/currency_input_controller.js.map +1 -1
- package/dist/controllers/data_grid_controller.d.ts +10 -8
- package/dist/controllers/data_grid_controller.js +134 -28
- package/dist/controllers/data_grid_controller.js.map +1 -1
- package/dist/controllers/date_range_picker_controller.d.ts +12 -9
- package/dist/controllers/date_range_picker_controller.js +93 -72
- package/dist/controllers/date_range_picker_controller.js.map +1 -1
- package/dist/controllers/dialog_controller.d.ts +4 -5
- package/dist/controllers/dialog_controller.js +145 -118
- package/dist/controllers/dialog_controller.js.map +1 -1
- package/dist/controllers/direct_upload_controller.d.ts +1 -1
- package/dist/controllers/direct_upload_controller.js +24 -14
- package/dist/controllers/direct_upload_controller.js.map +1 -1
- package/dist/controllers/dirty_form_controller.d.ts +6 -1
- package/dist/controllers/dirty_form_controller.js +68 -31
- package/dist/controllers/dirty_form_controller.js.map +1 -1
- package/dist/controllers/dismissible_controller.js +66 -46
- package/dist/controllers/dismissible_controller.js.map +1 -1
- package/dist/controllers/drawer_controller.js +145 -118
- package/dist/controllers/drawer_controller.js.map +1 -1
- package/dist/controllers/dropdown_controller.js +76 -63
- package/dist/controllers/dropdown_controller.js.map +1 -1
- package/dist/controllers/editable_controller.js +200 -62
- package/dist/controllers/editable_controller.js.map +1 -1
- package/dist/controllers/empty_state_controller.js +13 -6
- package/dist/controllers/empty_state_controller.js.map +1 -1
- package/dist/controllers/file_dropzone_controller.d.ts +3 -0
- package/dist/controllers/file_dropzone_controller.js +55 -48
- package/dist/controllers/file_dropzone_controller.js.map +1 -1
- package/dist/controllers/filter_controller.js +9 -2
- package/dist/controllers/filter_controller.js.map +1 -1
- package/dist/controllers/flash_controller.d.ts +4 -4
- package/dist/controllers/flash_controller.js +66 -33
- package/dist/controllers/flash_controller.js.map +1 -1
- package/dist/controllers/focus_controller.d.ts +3 -3
- package/dist/controllers/focus_controller.js +39 -14
- package/dist/controllers/focus_controller.js.map +1 -1
- package/dist/controllers/form_field_controller.d.ts +2 -1
- package/dist/controllers/form_field_controller.js +52 -43
- package/dist/controllers/form_field_controller.js.map +1 -1
- package/dist/controllers/form_validation_controller.d.ts +3 -3
- package/dist/controllers/form_validation_controller.js +18 -11
- package/dist/controllers/form_validation_controller.js.map +1 -1
- package/dist/controllers/frame_loading_controller.d.ts +13 -12
- package/dist/controllers/frame_loading_controller.js +55 -48
- package/dist/controllers/frame_loading_controller.js.map +1 -1
- package/dist/controllers/highlight_controller.d.ts +5 -4
- package/dist/controllers/highlight_controller.js.map +1 -1
- package/dist/controllers/hover_card_controller.d.ts +4 -1
- package/dist/controllers/hover_card_controller.js +67 -61
- package/dist/controllers/hover_card_controller.js.map +1 -1
- package/dist/controllers/idle_controller.d.ts +6 -5
- package/dist/controllers/idle_controller.js +10 -6
- package/dist/controllers/idle_controller.js.map +1 -1
- package/dist/controllers/input_mask_controller.d.ts +31 -13
- package/dist/controllers/input_mask_controller.js +434 -24
- package/dist/controllers/input_mask_controller.js.map +1 -1
- package/dist/controllers/intersection_controller.js +3 -0
- package/dist/controllers/intersection_controller.js.map +1 -1
- package/dist/controllers/lazy_frame_controller.d.ts +3 -2
- package/dist/controllers/lazy_frame_controller.js +15 -3
- package/dist/controllers/lazy_frame_controller.js.map +1 -1
- package/dist/controllers/listbox_controller.d.ts +10 -7
- package/dist/controllers/listbox_controller.js +260 -79
- package/dist/controllers/listbox_controller.js.map +1 -1
- package/dist/controllers/local_time_controller.d.ts +8 -6
- package/dist/controllers/local_time_controller.js +48 -13
- package/dist/controllers/local_time_controller.js.map +1 -1
- package/dist/controllers/masonry_controller.js +11 -4
- package/dist/controllers/masonry_controller.js.map +1 -1
- package/dist/controllers/menu_controller.d.ts +24 -5
- package/dist/controllers/menu_controller.js +138 -82
- package/dist/controllers/menu_controller.js.map +1 -1
- package/dist/controllers/menubar_controller.d.ts +49 -7
- package/dist/controllers/menubar_controller.js +65 -19
- package/dist/controllers/menubar_controller.js.map +1 -1
- package/dist/controllers/meter_controller.d.ts +13 -20
- package/dist/controllers/meter_controller.js +270 -24
- package/dist/controllers/meter_controller.js.map +1 -1
- package/dist/controllers/multi_select_controller.d.ts +19 -16
- package/dist/controllers/multi_select_controller.js +272 -95
- package/dist/controllers/multi_select_controller.js.map +1 -1
- package/dist/controllers/navigation_menu_controller.d.ts +19 -5
- package/dist/controllers/navigation_menu_controller.js +67 -19
- package/dist/controllers/navigation_menu_controller.js.map +1 -1
- package/dist/controllers/nested_form_controller.js +98 -64
- package/dist/controllers/nested_form_controller.js.map +1 -1
- package/dist/controllers/network_status_controller.js +70 -52
- package/dist/controllers/network_status_controller.js.map +1 -1
- package/dist/controllers/number_input_controller.d.ts +24 -6
- package/dist/controllers/number_input_controller.js +344 -94
- package/dist/controllers/number_input_controller.js.map +1 -1
- package/dist/controllers/optimistic_controller.d.ts +8 -5
- package/dist/controllers/optimistic_controller.js +29 -11
- package/dist/controllers/optimistic_controller.js.map +1 -1
- package/dist/controllers/otp_controller.d.ts +35 -4
- package/dist/controllers/otp_controller.js +502 -104
- package/dist/controllers/otp_controller.js.map +1 -1
- package/dist/controllers/overflow_indicator_controller.js +6 -0
- package/dist/controllers/overflow_indicator_controller.js.map +1 -1
- package/dist/controllers/overflow_menu_controller.d.ts +10 -9
- package/dist/controllers/overflow_menu_controller.js +136 -21
- package/dist/controllers/overflow_menu_controller.js.map +1 -1
- package/dist/controllers/pagination_controller.d.ts +3 -2
- package/dist/controllers/pagination_controller.js +47 -14
- package/dist/controllers/pagination_controller.js.map +1 -1
- package/dist/controllers/password_reveal_controller.d.ts +5 -4
- package/dist/controllers/password_reveal_controller.js +52 -49
- package/dist/controllers/password_reveal_controller.js.map +1 -1
- package/dist/controllers/password_strength_controller.d.ts +1 -1
- package/dist/controllers/password_strength_controller.js +13 -6
- package/dist/controllers/password_strength_controller.js.map +1 -1
- package/dist/controllers/persist_controller.js +48 -128
- package/dist/controllers/persist_controller.js.map +1 -1
- package/dist/controllers/pointer_drag_controller.d.ts +20 -8
- package/dist/controllers/pointer_drag_controller.js +255 -24
- package/dist/controllers/pointer_drag_controller.js.map +1 -1
- package/dist/controllers/popover_controller.d.ts +9 -5
- package/dist/controllers/popover_controller.js +91 -65
- package/dist/controllers/popover_controller.js.map +1 -1
- package/dist/controllers/portal_controller.js +6 -0
- package/dist/controllers/portal_controller.js.map +1 -1
- package/dist/controllers/preview_guard_controller.js +14 -3
- package/dist/controllers/preview_guard_controller.js.map +1 -1
- package/dist/controllers/progress_controller.d.ts +9 -19
- package/dist/controllers/progress_controller.js +271 -27
- package/dist/controllers/progress_controller.js.map +1 -1
- package/dist/controllers/radio_group_controller.d.ts +11 -8
- package/dist/controllers/radio_group_controller.js +167 -80
- package/dist/controllers/radio_group_controller.js.map +1 -1
- package/dist/controllers/range_slider_controller.d.ts +4 -3
- package/dist/controllers/range_slider_controller.js +27 -7
- package/dist/controllers/range_slider_controller.js.map +1 -1
- package/dist/controllers/rating_controller.js +93 -57
- package/dist/controllers/rating_controller.js.map +1 -1
- package/dist/controllers/read_more_controller.js +10 -6
- package/dist/controllers/read_more_controller.js.map +1 -1
- package/dist/controllers/reading_progress_controller.js +22 -5
- package/dist/controllers/reading_progress_controller.js.map +1 -1
- package/dist/controllers/relative_time_controller.d.ts +4 -4
- package/dist/controllers/relative_time_controller.js +75 -11
- package/dist/controllers/relative_time_controller.js.map +1 -1
- package/dist/controllers/reset_on_restore_controller.d.ts +3 -3
- package/dist/controllers/reset_on_restore_controller.js +6 -0
- package/dist/controllers/reset_on_restore_controller.js.map +1 -1
- package/dist/controllers/resizable_controller.d.ts +3 -0
- package/dist/controllers/resizable_controller.js +55 -22
- package/dist/controllers/resizable_controller.js.map +1 -1
- package/dist/controllers/roving_controller.d.ts +3 -3
- package/dist/controllers/roving_controller.js +10 -4
- package/dist/controllers/roving_controller.js.map +1 -1
- package/dist/controllers/scroll_area_controller.js +129 -88
- package/dist/controllers/scroll_area_controller.js.map +1 -1
- package/dist/controllers/scroll_restore_controller.d.ts +3 -3
- package/dist/controllers/scroll_restore_controller.js +14 -2
- package/dist/controllers/scroll_restore_controller.js.map +1 -1
- package/dist/controllers/scroll_visibility_controller.js +93 -60
- package/dist/controllers/scroll_visibility_controller.js.map +1 -1
- package/dist/controllers/scrollspy_controller.js +11 -5
- package/dist/controllers/scrollspy_controller.js.map +1 -1
- package/dist/controllers/separator_controller.d.ts +1 -1
- package/dist/controllers/separator_controller.js +59 -43
- package/dist/controllers/separator_controller.js.map +1 -1
- package/dist/controllers/sidebar_controller.d.ts +1 -1
- package/dist/controllers/sidebar_controller.js +150 -122
- package/dist/controllers/sidebar_controller.js.map +1 -1
- package/dist/controllers/skeleton_controller.js +55 -48
- package/dist/controllers/skeleton_controller.js.map +1 -1
- package/dist/controllers/slider_controller.d.ts +2 -1
- package/dist/controllers/slider_controller.js +27 -6
- package/dist/controllers/slider_controller.js.map +1 -1
- package/dist/controllers/smart_sticky_header_controller.d.ts +1 -1
- package/dist/controllers/smart_sticky_header_controller.js +13 -5
- package/dist/controllers/smart_sticky_header_controller.js.map +1 -1
- package/dist/controllers/sortable_controller.d.ts +4 -4
- package/dist/controllers/sortable_controller.js +27 -14
- package/dist/controllers/sortable_controller.js.map +1 -1
- package/dist/controllers/spinner_controller.js +55 -48
- package/dist/controllers/spinner_controller.js.map +1 -1
- package/dist/controllers/step_indicator_controller.d.ts +4 -4
- package/dist/controllers/step_indicator_controller.js +6 -0
- package/dist/controllers/step_indicator_controller.js.map +1 -1
- package/dist/controllers/stepper_controller.d.ts +2 -3
- package/dist/controllers/stepper_controller.js +6 -0
- package/dist/controllers/stepper_controller.js.map +1 -1
- package/dist/controllers/stick_to_bottom_controller.d.ts +3 -1
- package/dist/controllers/stick_to_bottom_controller.js +19 -8
- package/dist/controllers/stick_to_bottom_controller.js.map +1 -1
- package/dist/controllers/sticky_observer_controller.js +49 -43
- package/dist/controllers/sticky_observer_controller.js.map +1 -1
- package/dist/controllers/submit_once_controller.d.ts +2 -1
- package/dist/controllers/submit_once_controller.js +145 -85
- package/dist/controllers/submit_once_controller.js.map +1 -1
- package/dist/controllers/switch_controller.d.ts +7 -4
- package/dist/controllers/switch_controller.js +172 -28
- package/dist/controllers/switch_controller.js.map +1 -1
- package/dist/controllers/tabs_controller.d.ts +7 -4
- package/dist/controllers/tabs_controller.js +6 -1
- package/dist/controllers/tabs_controller.js.map +1 -1
- package/dist/controllers/tags_input_controller.d.ts +4 -3
- package/dist/controllers/tags_input_controller.js +157 -28
- package/dist/controllers/tags_input_controller.js.map +1 -1
- package/dist/controllers/textarea_autosize_controller.d.ts +1 -1
- package/dist/controllers/textarea_autosize_controller.js +40 -19
- package/dist/controllers/textarea_autosize_controller.js.map +1 -1
- package/dist/controllers/theme_controller.d.ts +3 -2
- package/dist/controllers/theme_controller.js +10 -4
- package/dist/controllers/theme_controller.js.map +1 -1
- package/dist/controllers/time_picker_controller.d.ts +38 -5
- package/dist/controllers/time_picker_controller.js +192 -54
- package/dist/controllers/time_picker_controller.js.map +1 -1
- package/dist/controllers/toast_controller.d.ts +4 -5
- package/dist/controllers/toast_controller.js +58 -27
- package/dist/controllers/toast_controller.js.map +1 -1
- package/dist/controllers/toggle_group_controller.d.ts +2 -3
- package/dist/controllers/toggle_group_controller.js +158 -56
- package/dist/controllers/toggle_group_controller.js.map +1 -1
- package/dist/controllers/toolbar_controller.d.ts +8 -6
- package/dist/controllers/toolbar_controller.js +150 -21
- package/dist/controllers/toolbar_controller.js.map +1 -1
- package/dist/controllers/tooltip_controller.d.ts +4 -1
- package/dist/controllers/tooltip_controller.js.map +1 -1
- package/dist/controllers/transition_controller.js.map +1 -1
- package/dist/controllers/tree_view_controller.d.ts +1 -1
- package/dist/controllers/tree_view_controller.js +134 -25
- package/dist/controllers/tree_view_controller.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +2515 -1315
- package/dist/index.js.map +1 -1
- package/dist/inspector/cli.d.ts +25 -12
- package/dist/inspector/cli.js +21 -3
- package/dist/inspector/cli.js.map +1 -1
- package/dist/inspector/cli_bin.d.ts +1 -1
- package/dist/inspector/cli_bin.js +62 -8
- package/dist/inspector/cli_bin.js.map +1 -1
- package/dist/inspector/examples.json +13 -13
- package/dist/inspector/manifest.json +19 -5
- package/dist/positioning/index.d.ts +9 -8
- package/dist/positioning/index.js +6 -0
- package/dist/positioning/index.js.map +1 -1
- package/package.json +11 -10
|
@@ -37,17 +37,31 @@ function isReservedArrowChord(event, allow = []) {
|
|
|
37
37
|
if (!event.key.startsWith("Arrow")) return false;
|
|
38
38
|
return event.altKey && !allow.includes("alt") || event.ctrlKey && !allow.includes("ctrl") || event.metaKey && !allow.includes("meta") || event.shiftKey && !allow.includes("shift");
|
|
39
39
|
}
|
|
40
|
+
function hasModifierChord(event) {
|
|
41
|
+
return event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function setAttributeIfChanged(element, name, value, beforeWrite) {
|
|
45
|
+
if (element.getAttribute(name) === value) return false;
|
|
46
|
+
if (value === null) element.removeAttribute(name);
|
|
47
|
+
else element.setAttribute(name, value);
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
40
50
|
|
|
41
51
|
function sharedRegistry(key, create) {
|
|
42
52
|
const symbol = Symbol.for(key);
|
|
43
53
|
const scope = globalThis;
|
|
44
54
|
const existing = scope[symbol];
|
|
45
55
|
if (existing !== void 0) return existing;
|
|
46
|
-
const
|
|
47
|
-
Object.defineProperty(globalThis, symbol, { value:
|
|
48
|
-
return
|
|
56
|
+
const registry2 = create();
|
|
57
|
+
Object.defineProperty(globalThis, symbol, { value: registry2 });
|
|
58
|
+
return registry2;
|
|
49
59
|
}
|
|
50
60
|
|
|
61
|
+
var registry = sharedRegistry(
|
|
62
|
+
"stimeo-ui.attribute-lease.registry.v1",
|
|
63
|
+
() => ({ stacks: /* @__PURE__ */ new WeakMap(), names: /* @__PURE__ */ new Map() })
|
|
64
|
+
);
|
|
51
65
|
function isAttributeValue(value) {
|
|
52
66
|
return value === null || typeof value === "string";
|
|
53
67
|
}
|
|
@@ -64,24 +78,46 @@ function readLeaseRecord(element, record) {
|
|
|
64
78
|
return void 0;
|
|
65
79
|
}
|
|
66
80
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
);
|
|
81
|
+
function attributeStack(element, attribute) {
|
|
82
|
+
const byAttribute = registry.stacks.get(element) ?? /* @__PURE__ */ new Map();
|
|
83
|
+
registry.stacks.set(element, byAttribute);
|
|
84
|
+
const known = byAttribute.get(attribute);
|
|
85
|
+
if (known) return known;
|
|
86
|
+
const found = [];
|
|
87
|
+
for (const record of registry.names.get(attribute) ?? []) {
|
|
88
|
+
const read = readLeaseRecord(element, record);
|
|
89
|
+
if (read) found.push({ ...read, record });
|
|
90
|
+
}
|
|
91
|
+
const depth = ({ beneath }) => beneath.filter((name) => found.some((other) => other.record === name)).length;
|
|
92
|
+
const stack = found.sort((one, other) => depth(one) - depth(other)).map(({ record, written, original, linked }, index) => ({
|
|
93
|
+
lease: null,
|
|
94
|
+
record,
|
|
95
|
+
written,
|
|
96
|
+
original,
|
|
97
|
+
linked: linked && index > 0
|
|
98
|
+
}));
|
|
99
|
+
byAttribute.set(attribute, stack);
|
|
100
|
+
return stack;
|
|
101
|
+
}
|
|
102
|
+
function findHold(stack, lease, record) {
|
|
103
|
+
return stack.find((held) => held.lease === lease) ?? stack.find((held) => held.lease === null && held.record === record);
|
|
104
|
+
}
|
|
105
|
+
var AttributeLease = class {
|
|
72
106
|
#attribute;
|
|
73
107
|
#record;
|
|
74
108
|
#base;
|
|
109
|
+
#preserveAuthor;
|
|
75
110
|
#held = /* @__PURE__ */ new Set();
|
|
76
111
|
constructor(attribute, owner, options = {}) {
|
|
77
112
|
this.#attribute = attribute;
|
|
78
113
|
this.#record = `data-${owner}-${attribute}-lease`;
|
|
79
114
|
this.#base = options.base === true;
|
|
80
|
-
|
|
115
|
+
this.#preserveAuthor = options.preserveAuthor === true;
|
|
116
|
+
const names = registry.names;
|
|
81
117
|
names.set(attribute, (names.get(attribute) ?? /* @__PURE__ */ new Set()).add(this.#record));
|
|
82
118
|
}
|
|
83
119
|
write(element, value) {
|
|
84
|
-
const stack = this.#
|
|
120
|
+
const stack = attributeStack(element, this.#attribute);
|
|
85
121
|
const hold = this.#take(stack) ?? this.#acquire(element, stack);
|
|
86
122
|
this.#held.add(element);
|
|
87
123
|
const shows = !this.#covered(element, stack, hold);
|
|
@@ -91,8 +127,8 @@ var AttributeLease = class _AttributeLease {
|
|
|
91
127
|
}
|
|
92
128
|
return(element) {
|
|
93
129
|
const held = this.#held.delete(element);
|
|
94
|
-
const known =
|
|
95
|
-
const stack = held || known || element.hasAttribute(this.#record) ? this.#
|
|
130
|
+
const known = registry.stacks.get(element)?.has(this.#attribute);
|
|
131
|
+
const stack = held || known || element.hasAttribute(this.#record) ? attributeStack(element, this.#attribute) : [];
|
|
96
132
|
const hold = this.#take(stack);
|
|
97
133
|
if (!hold) return false;
|
|
98
134
|
const carries = element.getAttribute(this.#attribute) === hold.written;
|
|
@@ -110,31 +146,8 @@ var AttributeLease = class _AttributeLease {
|
|
|
110
146
|
returnAll() {
|
|
111
147
|
for (const element of Array.from(this.#held)) this.return(element);
|
|
112
148
|
}
|
|
113
|
-
#stack(element) {
|
|
114
|
-
const stacks = _AttributeLease.#registry.stacks;
|
|
115
|
-
const byAttribute = stacks.get(element) ?? /* @__PURE__ */ new Map();
|
|
116
|
-
stacks.set(element, byAttribute);
|
|
117
|
-
const stack = byAttribute.get(this.#attribute) ?? this.#seed(element);
|
|
118
|
-
byAttribute.set(this.#attribute, stack);
|
|
119
|
-
return stack;
|
|
120
|
-
}
|
|
121
|
-
#seed(element) {
|
|
122
|
-
const found = [];
|
|
123
|
-
for (const record of _AttributeLease.#registry.names.get(this.#attribute) ?? []) {
|
|
124
|
-
const read = readLeaseRecord(element, record);
|
|
125
|
-
if (read) found.push({ ...read, record });
|
|
126
|
-
}
|
|
127
|
-
const depth = ({ beneath }) => beneath.filter((name) => found.some((other) => other.record === name)).length;
|
|
128
|
-
return found.sort((one, other) => depth(one) - depth(other)).map(({ record, written, original, linked }, index) => ({
|
|
129
|
-
lease: null,
|
|
130
|
-
record,
|
|
131
|
-
written,
|
|
132
|
-
original,
|
|
133
|
-
linked: linked && index > 0
|
|
134
|
-
}));
|
|
135
|
-
}
|
|
136
149
|
#take(stack) {
|
|
137
|
-
const hold = stack
|
|
150
|
+
const hold = findHold(stack, this, this.#record);
|
|
138
151
|
if (hold) hold.lease = this;
|
|
139
152
|
return hold;
|
|
140
153
|
}
|
|
@@ -143,7 +156,7 @@ var AttributeLease = class _AttributeLease {
|
|
|
143
156
|
const top = stack.at(-1);
|
|
144
157
|
const bottom = stack[0];
|
|
145
158
|
const over = top?.written === current ? top : void 0;
|
|
146
|
-
const from = this.#base ? bottom : over;
|
|
159
|
+
const from = this.#base ? this.#preserveAuthor && !stack.some((held) => held.written === current) ? void 0 : bottom : over;
|
|
147
160
|
const hold = {
|
|
148
161
|
lease: this,
|
|
149
162
|
record: this.#record,
|
|
@@ -173,15 +186,11 @@ var AttributeLease = class _AttributeLease {
|
|
|
173
186
|
);
|
|
174
187
|
});
|
|
175
188
|
for (const [name, recorded] of records) {
|
|
176
|
-
|
|
177
|
-
if (recorded === null) element.removeAttribute(name);
|
|
178
|
-
else element.setAttribute(name, recorded);
|
|
189
|
+
setAttributeIfChanged(element, name, recorded);
|
|
179
190
|
}
|
|
180
191
|
}
|
|
181
192
|
#reflect(element, value) {
|
|
182
|
-
|
|
183
|
-
if (value === null) element.removeAttribute(this.#attribute);
|
|
184
|
-
else element.setAttribute(this.#attribute, value);
|
|
193
|
+
setAttributeIfChanged(element, this.#attribute, value);
|
|
185
194
|
}
|
|
186
195
|
};
|
|
187
196
|
|
|
@@ -238,6 +247,48 @@ var ListenerSet = class {
|
|
|
238
247
|
}
|
|
239
248
|
};
|
|
240
249
|
|
|
250
|
+
var HoverRecheck = class {
|
|
251
|
+
#document;
|
|
252
|
+
#release;
|
|
253
|
+
#listeners = new ListenerSet();
|
|
254
|
+
#pending = /* @__PURE__ */ new Set();
|
|
255
|
+
#tickets = /* @__PURE__ */ new WeakMap();
|
|
256
|
+
constructor(document2, release) {
|
|
257
|
+
this.#document = document2;
|
|
258
|
+
this.#release = release;
|
|
259
|
+
}
|
|
260
|
+
wait(element) {
|
|
261
|
+
this.#pending.add(element);
|
|
262
|
+
this.#tickets.set(element, /* @__PURE__ */ Symbol());
|
|
263
|
+
this.#listeners.add(this.#document, "pointermove", this.#onPointerMove, {
|
|
264
|
+
capture: true,
|
|
265
|
+
passive: true
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
cancel(element) {
|
|
269
|
+
this.#tickets.delete(element);
|
|
270
|
+
this.#pending.delete(element);
|
|
271
|
+
if (this.#pending.size === 0) this.#listeners.dispose();
|
|
272
|
+
}
|
|
273
|
+
dispose() {
|
|
274
|
+
this.#listeners.dispose();
|
|
275
|
+
this.#pending.clear();
|
|
276
|
+
this.#tickets = /* @__PURE__ */ new WeakMap();
|
|
277
|
+
}
|
|
278
|
+
#onPointerMove = () => {
|
|
279
|
+
this.#listeners.dispose();
|
|
280
|
+
const waiting = [...this.#pending].map(
|
|
281
|
+
(element) => [element, this.#tickets.get(element)]
|
|
282
|
+
);
|
|
283
|
+
this.#pending.clear();
|
|
284
|
+
for (const [element, ticket] of waiting) {
|
|
285
|
+
if (this.#tickets.get(element) !== ticket) continue;
|
|
286
|
+
if (element.matches(":hover")) continue;
|
|
287
|
+
this.#release(element);
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
};
|
|
291
|
+
|
|
241
292
|
var MicrotaskCoalescer = class {
|
|
242
293
|
#run;
|
|
243
294
|
#queued = false;
|
|
@@ -254,6 +305,9 @@ var MicrotaskCoalescer = class {
|
|
|
254
305
|
this.#queued = false;
|
|
255
306
|
this.#generation += 1;
|
|
256
307
|
}
|
|
308
|
+
get pending() {
|
|
309
|
+
return this.#queued;
|
|
310
|
+
}
|
|
257
311
|
schedule() {
|
|
258
312
|
if (!this.#active || this.#queued) return;
|
|
259
313
|
this.#queued = true;
|
|
@@ -284,6 +338,9 @@ var MorphRenderWatcher = class {
|
|
|
284
338
|
schedule() {
|
|
285
339
|
this.#pass.schedule();
|
|
286
340
|
}
|
|
341
|
+
get pending() {
|
|
342
|
+
return this.#pass.pending;
|
|
343
|
+
}
|
|
287
344
|
disconnect() {
|
|
288
345
|
this.#listeners.dispose();
|
|
289
346
|
this.#pass.cancel();
|
|
@@ -451,9 +508,8 @@ var StateRegions = class _StateRegions {
|
|
|
451
508
|
const below = hold.linked ? stack[index - 1] : void 0;
|
|
452
509
|
if (below) {
|
|
453
510
|
if (region.hidden !== below.written) region.hidden = below.written;
|
|
454
|
-
} else
|
|
455
|
-
|
|
456
|
-
else region.setAttribute("hidden", hold.authored);
|
|
511
|
+
} else {
|
|
512
|
+
setAttributeIfChanged(region, "hidden", hold.authored);
|
|
457
513
|
}
|
|
458
514
|
}
|
|
459
515
|
this.#mark(region, stack);
|
|
@@ -528,9 +584,7 @@ var StateRegions = class _StateRegions {
|
|
|
528
584
|
);
|
|
529
585
|
});
|
|
530
586
|
for (const [name, recorded] of records) {
|
|
531
|
-
|
|
532
|
-
if (recorded === null) region.removeAttribute(name);
|
|
533
|
-
else region.setAttribute(name, recorded);
|
|
587
|
+
setAttributeIfChanged(region, name, recorded);
|
|
534
588
|
}
|
|
535
589
|
}
|
|
536
590
|
#recorded(region, name) {
|
|
@@ -567,6 +621,7 @@ var CarouselController = class _CarouselController extends Controller {
|
|
|
567
621
|
"prev",
|
|
568
622
|
"next",
|
|
569
623
|
"picker",
|
|
624
|
+
"pickerList",
|
|
570
625
|
"playToggle",
|
|
571
626
|
"onLabel",
|
|
572
627
|
"offLabel"
|
|
@@ -604,7 +659,10 @@ var CarouselController = class _CarouselController extends Controller {
|
|
|
604
659
|
this.identifier
|
|
605
660
|
);
|
|
606
661
|
#gate = new DetachGate();
|
|
607
|
-
#pointer = new
|
|
662
|
+
#pointer = new HoverRecheck(this.element.ownerDocument, () => {
|
|
663
|
+
this.#pointerPaused = false;
|
|
664
|
+
this.#syncTimer();
|
|
665
|
+
});
|
|
608
666
|
#handledEvents = /* @__PURE__ */ new WeakSet();
|
|
609
667
|
#connected = false;
|
|
610
668
|
#index = 0;
|
|
@@ -621,11 +679,12 @@ var CarouselController = class _CarouselController extends Controller {
|
|
|
621
679
|
this.#hiddenPaused = document.visibilityState === "hidden";
|
|
622
680
|
this.#syncTimer();
|
|
623
681
|
};
|
|
682
|
+
#listeners = new ListenerSet();
|
|
624
683
|
connect() {
|
|
625
684
|
const moved = this.#gate.pending;
|
|
626
685
|
this.#gate.cancel();
|
|
627
686
|
this.#pointerPaused = moved && this.#pointerPaused || this.element.matches(":hover");
|
|
628
|
-
if (this.#pointerPaused) this.#
|
|
687
|
+
if (this.#pointerPaused) this.#pointer.wait(this.element);
|
|
629
688
|
this.#focusPaused = this.element.contains(document.activeElement);
|
|
630
689
|
this.#hiddenPaused = document.visibilityState === "hidden";
|
|
631
690
|
this.#motionHold = prefersReducedMotion();
|
|
@@ -635,13 +694,13 @@ var CarouselController = class _CarouselController extends Controller {
|
|
|
635
694
|
this.#syncTimer();
|
|
636
695
|
this.#connected = true;
|
|
637
696
|
this.#reconcileTargets.observe(this.element);
|
|
638
|
-
this.element
|
|
639
|
-
this.element
|
|
640
|
-
this.element
|
|
641
|
-
this.element
|
|
642
|
-
this.element
|
|
643
|
-
this.element
|
|
644
|
-
|
|
697
|
+
this.#listeners.add(this.element, "click", this.#onClick);
|
|
698
|
+
this.#listeners.add(this.element, "keydown", this.#onKeydown);
|
|
699
|
+
this.#listeners.add(this.element, "focusin", this.#onFocusin);
|
|
700
|
+
this.#listeners.add(this.element, "focusout", this.#onFocusout);
|
|
701
|
+
this.#listeners.add(this.element, "mouseenter", this.#onMouseenter);
|
|
702
|
+
this.#listeners.add(this.element, "mouseleave", this.#onMouseleave);
|
|
703
|
+
this.#listeners.add(document, "visibilitychange", this.#onVisibilityChange);
|
|
645
704
|
this.#observer = new MutationObserver(this.#onAttributeMutations);
|
|
646
705
|
this.#observer.observe(this.element, {
|
|
647
706
|
subtree: true,
|
|
@@ -652,13 +711,7 @@ var CarouselController = class _CarouselController extends Controller {
|
|
|
652
711
|
disconnect() {
|
|
653
712
|
this.#connected = false;
|
|
654
713
|
this.#pointer.dispose();
|
|
655
|
-
this.
|
|
656
|
-
this.element.removeEventListener("keydown", this.#onKeydown);
|
|
657
|
-
this.element.removeEventListener("focusin", this.#onFocusin);
|
|
658
|
-
this.element.removeEventListener("focusout", this.#onFocusout);
|
|
659
|
-
this.element.removeEventListener("mouseenter", this.#onMouseenter);
|
|
660
|
-
this.element.removeEventListener("mouseleave", this.#onMouseleave);
|
|
661
|
-
document.removeEventListener("visibilitychange", this.#onVisibilityChange);
|
|
714
|
+
this.#listeners.dispose();
|
|
662
715
|
this.#observer?.disconnect();
|
|
663
716
|
this.#observer = null;
|
|
664
717
|
this.#reconcileTargets.disconnect();
|
|
@@ -803,18 +856,6 @@ var CarouselController = class _CarouselController extends Controller {
|
|
|
803
856
|
this.#setPointerPaused(false);
|
|
804
857
|
this.#syncTimer();
|
|
805
858
|
});
|
|
806
|
-
#onPointerMove = () => {
|
|
807
|
-
this.#pointer.dispose();
|
|
808
|
-
if (this.element.matches(":hover")) return;
|
|
809
|
-
this.#pointerPaused = false;
|
|
810
|
-
this.#syncTimer();
|
|
811
|
-
};
|
|
812
|
-
#awaitPointer() {
|
|
813
|
-
this.#pointer.add(document, "pointermove", this.#onPointerMove, {
|
|
814
|
-
capture: true,
|
|
815
|
-
passive: true
|
|
816
|
-
});
|
|
817
|
-
}
|
|
818
859
|
#setPointerPaused(paused) {
|
|
819
860
|
this.#pointer.dispose();
|
|
820
861
|
this.#pointerPaused = paused;
|
|
@@ -853,17 +894,20 @@ var CarouselController = class _CarouselController extends Controller {
|
|
|
853
894
|
case "ArrowLeft":
|
|
854
895
|
case "ArrowUp": {
|
|
855
896
|
event.preventDefault();
|
|
856
|
-
const step = logicalArrowStep(
|
|
897
|
+
const step = logicalArrowStep(
|
|
898
|
+
event.key,
|
|
899
|
+
this.hasPickerListTarget ? this.pickerListTarget : this.element
|
|
900
|
+
);
|
|
857
901
|
this.#roving.setActive(rovingMove(current, length, step), { focus: true });
|
|
858
902
|
return;
|
|
859
903
|
}
|
|
860
904
|
case "Home":
|
|
861
|
-
if (
|
|
905
|
+
if (hasModifierChord(event)) return;
|
|
862
906
|
event.preventDefault();
|
|
863
907
|
this.#roving.setActive(0, { focus: true });
|
|
864
908
|
return;
|
|
865
909
|
case "End":
|
|
866
|
-
if (
|
|
910
|
+
if (hasModifierChord(event)) return;
|
|
867
911
|
event.preventDefault();
|
|
868
912
|
this.#roving.setActive(length - 1, { focus: true });
|
|
869
913
|
return;
|
|
@@ -1019,15 +1063,9 @@ var CarouselController = class _CarouselController extends Controller {
|
|
|
1019
1063
|
function isFocusEvent(event) {
|
|
1020
1064
|
return event?.type.startsWith("focus") === true;
|
|
1021
1065
|
}
|
|
1022
|
-
function hasModifier(event) {
|
|
1023
|
-
return event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
|
|
1024
|
-
}
|
|
1025
1066
|
function hits(elements, node) {
|
|
1026
1067
|
return ownerIndex(elements, node) !== -1;
|
|
1027
1068
|
}
|
|
1028
|
-
function setAttributeIfChanged(element, name, value) {
|
|
1029
|
-
if (element.getAttribute(name) !== value) element.setAttribute(name, value);
|
|
1030
|
-
}
|
|
1031
1069
|
|
|
1032
1070
|
export { CarouselController };
|
|
1033
1071
|
//# sourceMappingURL=carousel_controller.js.map
|