stimeo-ui 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +106 -1
- package/README.md +19 -10
- package/dist/cable/index.d.ts +9 -8
- 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 +289 -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 +64 -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 +199 -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.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 +30 -13
- package/dist/controllers/input_mask_controller.js +411 -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 +17 -15
- package/dist/controllers/multi_select_controller.js +251 -94
- 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 +19 -8
- package/dist/controllers/pointer_drag_controller.js +249 -23
- package/dist/controllers/pointer_drag_controller.js.map +1 -1
- package/dist/controllers/popover_controller.d.ts +3 -3
- package/dist/controllers/popover_controller.js +82 -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 +2 -0
- package/dist/index.js +2451 -1312
- package/dist/index.js.map +1 -1
- package/dist/inspector/cli.d.ts +15 -11
- package/dist/inspector/cli.js +16 -3
- package/dist/inspector/cli.js.map +1 -1
- package/dist/inspector/cli_bin.js +53 -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 +7 -7
- package/dist/positioning/index.js +6 -0
- package/dist/positioning/index.js.map +1 -1
- package/package.json +10 -9
|
@@ -36,6 +36,104 @@ function isReservedArrowChord(event, allow = []) {
|
|
|
36
36
|
return event.altKey && !allow.includes("alt") || event.ctrlKey && !allow.includes("ctrl") || event.metaKey && !allow.includes("meta") || event.shiftKey && !allow.includes("shift");
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
function setAttributeIfChanged(element, name, value, beforeWrite) {
|
|
40
|
+
if (element.getAttribute(name) === value) return false;
|
|
41
|
+
beforeWrite?.();
|
|
42
|
+
if (value === null) element.removeAttribute(name);
|
|
43
|
+
else element.setAttribute(name, value);
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
var AuthoredMutationWatcher = class {
|
|
48
|
+
#onAuthored;
|
|
49
|
+
#claims = null;
|
|
50
|
+
#observer = null;
|
|
51
|
+
constructor(onAuthored) {
|
|
52
|
+
this.#onAuthored = onAuthored;
|
|
53
|
+
}
|
|
54
|
+
observe(root, options) {
|
|
55
|
+
this.disconnect();
|
|
56
|
+
const observer = new MutationObserver((records) => {
|
|
57
|
+
if (this.#observer !== observer) return;
|
|
58
|
+
const authored = this.#filter(records);
|
|
59
|
+
if (authored.length > 0) this.#onAuthored(authored);
|
|
60
|
+
});
|
|
61
|
+
this.#observer = observer;
|
|
62
|
+
this.#claims = { attributes: /* @__PURE__ */ new Map(), children: /* @__PURE__ */ new Map() };
|
|
63
|
+
observer.observe(root, {
|
|
64
|
+
attributes: true,
|
|
65
|
+
attributeFilter: [...options.attributes],
|
|
66
|
+
subtree: options.subtree ?? false,
|
|
67
|
+
childList: options.childList ?? false
|
|
68
|
+
});
|
|
69
|
+
if (options.ancestorAttributes) {
|
|
70
|
+
let ancestor = root.parentElement;
|
|
71
|
+
while (ancestor) {
|
|
72
|
+
observer.observe(ancestor, {
|
|
73
|
+
attributes: true,
|
|
74
|
+
attributeFilter: [...options.ancestorAttributes]
|
|
75
|
+
});
|
|
76
|
+
ancestor = ancestor.parentElement;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
claim(target, name, value) {
|
|
81
|
+
const claims = this.#claims?.attributes;
|
|
82
|
+
let attributes = claims?.get(target);
|
|
83
|
+
if (!attributes) {
|
|
84
|
+
attributes = /* @__PURE__ */ new Map();
|
|
85
|
+
claims?.set(target, attributes);
|
|
86
|
+
}
|
|
87
|
+
const pending = attributes.get(name);
|
|
88
|
+
attributes.set(name, { value, count: (pending?.count ?? 0) + 1 });
|
|
89
|
+
}
|
|
90
|
+
claimCurrent(target, name) {
|
|
91
|
+
this.claim(target, name, target.getAttribute(name));
|
|
92
|
+
}
|
|
93
|
+
claimChildList(target, added, removed) {
|
|
94
|
+
const claims = this.#claims?.children;
|
|
95
|
+
const pending = claims?.get(target) ?? { added: /* @__PURE__ */ new Map(), removed: /* @__PURE__ */ new Map() };
|
|
96
|
+
for (const node of added) pending.added.set(node, (pending.added.get(node) ?? 0) + 1);
|
|
97
|
+
for (const node of removed) pending.removed.set(node, (pending.removed.get(node) ?? 0) + 1);
|
|
98
|
+
claims?.set(target, pending);
|
|
99
|
+
}
|
|
100
|
+
take() {
|
|
101
|
+
return this.#filter(this.#observer?.takeRecords() ?? []);
|
|
102
|
+
}
|
|
103
|
+
disconnect() {
|
|
104
|
+
this.#observer?.disconnect();
|
|
105
|
+
this.#observer = null;
|
|
106
|
+
this.#claims = null;
|
|
107
|
+
}
|
|
108
|
+
#filter(records) {
|
|
109
|
+
const authored = records.filter((record) => !this.#consume(record));
|
|
110
|
+
this.#claims?.attributes.clear();
|
|
111
|
+
this.#claims?.children.clear();
|
|
112
|
+
return authored;
|
|
113
|
+
}
|
|
114
|
+
#consume(record) {
|
|
115
|
+
if (record.type === "attributes") {
|
|
116
|
+
const target = record.target;
|
|
117
|
+
const pending2 = this.#claims?.attributes.get(target)?.get(record.attributeName);
|
|
118
|
+
if (!pending2 || pending2.count === 0 || target.getAttribute(record.attributeName) !== pending2.value) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
pending2.count -= 1;
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
const pending = this.#claims?.children.get(record.target);
|
|
125
|
+
if (!pending) return false;
|
|
126
|
+
const added = [...record.addedNodes];
|
|
127
|
+
const removed = [...record.removedNodes];
|
|
128
|
+
if (added.some((node) => !pending.added.get(node)) || removed.some((node) => !pending.removed.get(node))) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
for (const node of added) pending.added.set(node, (pending.added.get(node) ?? 0) - 1);
|
|
132
|
+
for (const node of removed) pending.removed.set(node, (pending.removed.get(node) ?? 0) - 1);
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
|
|
39
137
|
function writeFields(container, values, { name, form = "" }) {
|
|
40
138
|
const current = [...container.children];
|
|
41
139
|
const submits = current.length === values.length && current.every(
|
|
@@ -101,6 +199,9 @@ var MicrotaskCoalescer = class {
|
|
|
101
199
|
this.#queued = false;
|
|
102
200
|
this.#generation += 1;
|
|
103
201
|
}
|
|
202
|
+
get pending() {
|
|
203
|
+
return this.#queued;
|
|
204
|
+
}
|
|
104
205
|
schedule() {
|
|
105
206
|
if (!this.#active || this.#queued) return;
|
|
106
207
|
this.#queued = true;
|
|
@@ -131,6 +232,9 @@ var MorphRenderWatcher = class {
|
|
|
131
232
|
schedule() {
|
|
132
233
|
this.#pass.schedule();
|
|
133
234
|
}
|
|
235
|
+
get pending() {
|
|
236
|
+
return this.#pass.pending;
|
|
237
|
+
}
|
|
134
238
|
disconnect() {
|
|
135
239
|
this.#listeners.dispose();
|
|
136
240
|
this.#pass.cancel();
|
|
@@ -155,9 +259,6 @@ function targetSelector(identifier, name) {
|
|
|
155
259
|
|
|
156
260
|
var SORT_CYCLE = ["none", "ascending", "descending"];
|
|
157
261
|
var OBSERVED_ATTRIBUTES = ["aria-selected", "data-value"];
|
|
158
|
-
function setAttributeIfChanged(element, name, value) {
|
|
159
|
-
if (element.getAttribute(name) !== value) element.setAttribute(name, value);
|
|
160
|
-
}
|
|
161
262
|
function sameSelection(a, b) {
|
|
162
263
|
if (a.size !== b.size) return false;
|
|
163
264
|
for (const [row, value] of a) {
|
|
@@ -172,6 +273,7 @@ function nextSortDirection(current) {
|
|
|
172
273
|
}
|
|
173
274
|
var DataGridController = class extends Controller {
|
|
174
275
|
#moves = new MoveCounter();
|
|
276
|
+
#connectionGeneration = 0;
|
|
175
277
|
#stopHolder = null;
|
|
176
278
|
static targets = ["columnHeader", "row", "cell", "fields"];
|
|
177
279
|
static values = {
|
|
@@ -182,7 +284,9 @@ var DataGridController = class extends Controller {
|
|
|
182
284
|
static actions = ["onKeydown", "sort", "toggleSelect"];
|
|
183
285
|
static events = ["selectionchange", "sort", "reconcile"];
|
|
184
286
|
#reconcile = new MorphRenderWatcher(() => this.#reconcileRows());
|
|
185
|
-
#observer =
|
|
287
|
+
#observer = new AuthoredMutationWatcher((records) => {
|
|
288
|
+
if (this.#concernsRows(records)) this.#reconcile.schedule();
|
|
289
|
+
});
|
|
186
290
|
#settled = /* @__PURE__ */ new Map();
|
|
187
291
|
connect() {
|
|
188
292
|
this.#restoreBaseline();
|
|
@@ -191,9 +295,9 @@ var DataGridController = class extends Controller {
|
|
|
191
295
|
this.#observeRows();
|
|
192
296
|
}
|
|
193
297
|
disconnect() {
|
|
298
|
+
this.#connectionGeneration += 1;
|
|
194
299
|
this.#reconcile.disconnect();
|
|
195
|
-
this.#observer
|
|
196
|
-
this.#observer = null;
|
|
300
|
+
this.#observer.disconnect();
|
|
197
301
|
}
|
|
198
302
|
#restoreBaseline() {
|
|
199
303
|
const cells = this.#navigableCells();
|
|
@@ -204,7 +308,7 @@ var DataGridController = class extends Controller {
|
|
|
204
308
|
this.#syncSelectable();
|
|
205
309
|
const pageWrote = this.#takePageRecords();
|
|
206
310
|
this.#normalizeSelection();
|
|
207
|
-
this.#
|
|
311
|
+
this.#flushMutations(pageWrote);
|
|
208
312
|
this.#mirrorFields(false);
|
|
209
313
|
}
|
|
210
314
|
#reconcileRows() {
|
|
@@ -253,16 +357,16 @@ var DataGridController = class extends Controller {
|
|
|
253
357
|
#normalizeSelection() {
|
|
254
358
|
const rows = this.rowTargets;
|
|
255
359
|
if (this.selectionValue === "none") {
|
|
256
|
-
for (const row of rows) row
|
|
360
|
+
for (const row of rows) this.#writeSelection(row, null);
|
|
257
361
|
return;
|
|
258
362
|
}
|
|
259
363
|
const single = this.selectionValue === "single";
|
|
260
364
|
const first = rows.find((row) => row.getAttribute("aria-selected") === "true");
|
|
261
365
|
for (const row of rows) {
|
|
262
366
|
if (single) {
|
|
263
|
-
|
|
367
|
+
this.#writeSelection(row, row === first ? "true" : "false");
|
|
264
368
|
} else if (row.getAttribute("aria-selected") !== "true") {
|
|
265
|
-
|
|
369
|
+
this.#writeSelection(row, "false");
|
|
266
370
|
}
|
|
267
371
|
}
|
|
268
372
|
}
|
|
@@ -303,6 +407,9 @@ var DataGridController = class extends Controller {
|
|
|
303
407
|
if (event.defaultPrevented) return;
|
|
304
408
|
if (isReservedArrowChord(event)) return;
|
|
305
409
|
if (event.isComposing) return;
|
|
410
|
+
if ((event.key === "Home" || event.key === "End") && (event.altKey || event.metaKey || event.shiftKey)) {
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
306
413
|
const cell = event.currentTarget;
|
|
307
414
|
if (this.#claimedByDescendant(event, cell)) return;
|
|
308
415
|
const matrix = this.#matrix();
|
|
@@ -369,15 +476,16 @@ var DataGridController = class extends Controller {
|
|
|
369
476
|
this.dispatch("sort", { detail: { column: header, direction, reason: "user" } });
|
|
370
477
|
}
|
|
371
478
|
#toggleRow(row, reason = "user") {
|
|
479
|
+
const generation = this.#connectionGeneration;
|
|
372
480
|
const selected = row.getAttribute("aria-selected") === "true";
|
|
373
481
|
const pageWrote = this.#takePageRecords();
|
|
374
482
|
if (this.selectionValue === "single") {
|
|
375
483
|
for (const other of this.rowTargets) {
|
|
376
|
-
if (other !== row)
|
|
484
|
+
if (other !== row) this.#writeSelection(other, "false");
|
|
377
485
|
}
|
|
378
486
|
}
|
|
379
|
-
row
|
|
380
|
-
this.#
|
|
487
|
+
this.#writeSelection(row, selected ? "false" : "true");
|
|
488
|
+
this.#flushMutations(pageWrote);
|
|
381
489
|
const selection = this.#selection();
|
|
382
490
|
const changed = !sameSelection(selection, this.#settled);
|
|
383
491
|
this.#settled = selection;
|
|
@@ -387,7 +495,7 @@ var DataGridController = class extends Controller {
|
|
|
387
495
|
}
|
|
388
496
|
const token = this.#moves.record();
|
|
389
497
|
this.#mirrorFields(true);
|
|
390
|
-
if (!this.#moves.isLatest(token)) return;
|
|
498
|
+
if (generation !== this.#connectionGeneration || !this.#moves.isLatest(token)) return;
|
|
391
499
|
this.dispatch("selectionchange", { detail: { rows: [...selection.keys()], reason } });
|
|
392
500
|
}
|
|
393
501
|
#selection() {
|
|
@@ -396,27 +504,22 @@ var DataGridController = class extends Controller {
|
|
|
396
504
|
);
|
|
397
505
|
}
|
|
398
506
|
#observeRows() {
|
|
399
|
-
|
|
400
|
-
if (this.#concernsRows(records)) this.#reconcile.schedule();
|
|
401
|
-
});
|
|
402
|
-
observer.observe(this.element, {
|
|
507
|
+
this.#observer.observe(this.element, {
|
|
403
508
|
subtree: true,
|
|
404
|
-
attributes:
|
|
405
|
-
attributeFilter: OBSERVED_ATTRIBUTES
|
|
509
|
+
attributes: OBSERVED_ATTRIBUTES
|
|
406
510
|
});
|
|
407
|
-
this.#observer = observer;
|
|
408
511
|
}
|
|
409
512
|
#takePageRecords() {
|
|
410
|
-
const records = this.#observer
|
|
513
|
+
const records = this.#observer.take();
|
|
411
514
|
return records.length > 0 && this.#concernsRows(records);
|
|
412
515
|
}
|
|
413
516
|
#concernsRows(records) {
|
|
414
517
|
const rows = new Set(this.rowTargets);
|
|
415
518
|
return records.some((record) => rows.has(record.target));
|
|
416
519
|
}
|
|
417
|
-
#
|
|
418
|
-
this.#observer
|
|
419
|
-
if (pageWrote) this.#reconcile.schedule();
|
|
520
|
+
#flushMutations(pageWrote) {
|
|
521
|
+
const authored = this.#concernsRows(this.#observer.take());
|
|
522
|
+
if (pageWrote || authored) this.#reconcile.schedule();
|
|
420
523
|
}
|
|
421
524
|
#mirrorFields(notify) {
|
|
422
525
|
if (!this.hasFieldsTarget) return;
|
|
@@ -430,9 +533,7 @@ var DataGridController = class extends Controller {
|
|
|
430
533
|
this.#stopHolder = cell;
|
|
431
534
|
for (const candidate of cells ?? this.#navigableCells()) {
|
|
432
535
|
const wanted = candidate === cell ? "0" : "-1";
|
|
433
|
-
|
|
434
|
-
candidate.setAttribute("tabindex", wanted);
|
|
435
|
-
}
|
|
536
|
+
setAttributeIfChanged(candidate, "tabindex", wanted);
|
|
436
537
|
}
|
|
437
538
|
if (focus) cell.focus();
|
|
438
539
|
}
|
|
@@ -460,6 +561,11 @@ var DataGridController = class extends Controller {
|
|
|
460
561
|
if (!cells || cells.length === 0) return void 0;
|
|
461
562
|
return cells[Math.min(col, cells.length - 1)];
|
|
462
563
|
}
|
|
564
|
+
#writeSelection(target, value) {
|
|
565
|
+
setAttributeIfChanged(target, "aria-selected", value, () => {
|
|
566
|
+
this.#observer.claim(target, "aria-selected", value);
|
|
567
|
+
});
|
|
568
|
+
}
|
|
463
569
|
};
|
|
464
570
|
|
|
465
571
|
export { DataGridController };
|