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
|
@@ -31,21 +31,39 @@ function logicalArrowKey(key, element) {
|
|
|
31
31
|
if (!isRtl(element)) return key;
|
|
32
32
|
return key === "ArrowRight" ? "ArrowLeft" : "ArrowRight";
|
|
33
33
|
}
|
|
34
|
+
function gridDirectionElement(grid, root) {
|
|
35
|
+
const table = grid.closest("table");
|
|
36
|
+
return table !== null && root.contains(table) ? table : grid;
|
|
37
|
+
}
|
|
34
38
|
function isReservedArrowChord(event, allow = []) {
|
|
35
39
|
if (!event.key.startsWith("Arrow")) return false;
|
|
36
40
|
return event.altKey && !allow.includes("alt") || event.ctrlKey && !allow.includes("ctrl") || event.metaKey && !allow.includes("meta") || event.shiftKey && !allow.includes("shift");
|
|
37
41
|
}
|
|
42
|
+
function hasModifierChord(event) {
|
|
43
|
+
return event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function setAttributeIfChanged(element, name, value, beforeWrite) {
|
|
47
|
+
if (element.getAttribute(name) === value) return false;
|
|
48
|
+
if (value === null) element.removeAttribute(name);
|
|
49
|
+
else element.setAttribute(name, value);
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
38
52
|
|
|
39
53
|
function sharedRegistry(key, create) {
|
|
40
54
|
const symbol = Symbol.for(key);
|
|
41
55
|
const scope = globalThis;
|
|
42
56
|
const existing = scope[symbol];
|
|
43
57
|
if (existing !== void 0) return existing;
|
|
44
|
-
const
|
|
45
|
-
Object.defineProperty(globalThis, symbol, { value:
|
|
46
|
-
return
|
|
58
|
+
const registry2 = create();
|
|
59
|
+
Object.defineProperty(globalThis, symbol, { value: registry2 });
|
|
60
|
+
return registry2;
|
|
47
61
|
}
|
|
48
62
|
|
|
63
|
+
var registry = sharedRegistry(
|
|
64
|
+
"stimeo-ui.attribute-lease.registry.v1",
|
|
65
|
+
() => ({ stacks: /* @__PURE__ */ new WeakMap(), names: /* @__PURE__ */ new Map() })
|
|
66
|
+
);
|
|
49
67
|
function isAttributeValue(value) {
|
|
50
68
|
return value === null || typeof value === "string";
|
|
51
69
|
}
|
|
@@ -62,24 +80,46 @@ function readLeaseRecord(element, record) {
|
|
|
62
80
|
return void 0;
|
|
63
81
|
}
|
|
64
82
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
);
|
|
83
|
+
function attributeStack(element, attribute) {
|
|
84
|
+
const byAttribute = registry.stacks.get(element) ?? /* @__PURE__ */ new Map();
|
|
85
|
+
registry.stacks.set(element, byAttribute);
|
|
86
|
+
const known = byAttribute.get(attribute);
|
|
87
|
+
if (known) return known;
|
|
88
|
+
const found = [];
|
|
89
|
+
for (const record of registry.names.get(attribute) ?? []) {
|
|
90
|
+
const read = readLeaseRecord(element, record);
|
|
91
|
+
if (read) found.push({ ...read, record });
|
|
92
|
+
}
|
|
93
|
+
const depth = ({ beneath }) => beneath.filter((name) => found.some((other) => other.record === name)).length;
|
|
94
|
+
const stack = found.sort((one, other) => depth(one) - depth(other)).map(({ record, written, original, linked }, index) => ({
|
|
95
|
+
lease: null,
|
|
96
|
+
record,
|
|
97
|
+
written,
|
|
98
|
+
original,
|
|
99
|
+
linked: linked && index > 0
|
|
100
|
+
}));
|
|
101
|
+
byAttribute.set(attribute, stack);
|
|
102
|
+
return stack;
|
|
103
|
+
}
|
|
104
|
+
function findHold(stack, lease, record) {
|
|
105
|
+
return stack.find((held) => held.lease === lease) ?? stack.find((held) => held.lease === null && held.record === record);
|
|
106
|
+
}
|
|
107
|
+
var AttributeLease = class {
|
|
70
108
|
#attribute;
|
|
71
109
|
#record;
|
|
72
110
|
#base;
|
|
111
|
+
#preserveAuthor;
|
|
73
112
|
#held = /* @__PURE__ */ new Set();
|
|
74
113
|
constructor(attribute, owner, options = {}) {
|
|
75
114
|
this.#attribute = attribute;
|
|
76
115
|
this.#record = `data-${owner}-${attribute}-lease`;
|
|
77
116
|
this.#base = options.base === true;
|
|
78
|
-
|
|
117
|
+
this.#preserveAuthor = options.preserveAuthor === true;
|
|
118
|
+
const names = registry.names;
|
|
79
119
|
names.set(attribute, (names.get(attribute) ?? /* @__PURE__ */ new Set()).add(this.#record));
|
|
80
120
|
}
|
|
81
121
|
write(element, value) {
|
|
82
|
-
const stack = this.#
|
|
122
|
+
const stack = attributeStack(element, this.#attribute);
|
|
83
123
|
const hold = this.#take(stack) ?? this.#acquire(element, stack);
|
|
84
124
|
this.#held.add(element);
|
|
85
125
|
const shows = !this.#covered(element, stack, hold);
|
|
@@ -89,8 +129,8 @@ var AttributeLease = class _AttributeLease {
|
|
|
89
129
|
}
|
|
90
130
|
return(element) {
|
|
91
131
|
const held = this.#held.delete(element);
|
|
92
|
-
const known =
|
|
93
|
-
const stack = held || known || element.hasAttribute(this.#record) ? this.#
|
|
132
|
+
const known = registry.stacks.get(element)?.has(this.#attribute);
|
|
133
|
+
const stack = held || known || element.hasAttribute(this.#record) ? attributeStack(element, this.#attribute) : [];
|
|
94
134
|
const hold = this.#take(stack);
|
|
95
135
|
if (!hold) return false;
|
|
96
136
|
const carries = element.getAttribute(this.#attribute) === hold.written;
|
|
@@ -108,31 +148,8 @@ var AttributeLease = class _AttributeLease {
|
|
|
108
148
|
returnAll() {
|
|
109
149
|
for (const element of Array.from(this.#held)) this.return(element);
|
|
110
150
|
}
|
|
111
|
-
#stack(element) {
|
|
112
|
-
const stacks = _AttributeLease.#registry.stacks;
|
|
113
|
-
const byAttribute = stacks.get(element) ?? /* @__PURE__ */ new Map();
|
|
114
|
-
stacks.set(element, byAttribute);
|
|
115
|
-
const stack = byAttribute.get(this.#attribute) ?? this.#seed(element);
|
|
116
|
-
byAttribute.set(this.#attribute, stack);
|
|
117
|
-
return stack;
|
|
118
|
-
}
|
|
119
|
-
#seed(element) {
|
|
120
|
-
const found = [];
|
|
121
|
-
for (const record of _AttributeLease.#registry.names.get(this.#attribute) ?? []) {
|
|
122
|
-
const read = readLeaseRecord(element, record);
|
|
123
|
-
if (read) found.push({ ...read, record });
|
|
124
|
-
}
|
|
125
|
-
const depth = ({ beneath }) => beneath.filter((name) => found.some((other) => other.record === name)).length;
|
|
126
|
-
return found.sort((one, other) => depth(one) - depth(other)).map(({ record, written, original, linked }, index) => ({
|
|
127
|
-
lease: null,
|
|
128
|
-
record,
|
|
129
|
-
written,
|
|
130
|
-
original,
|
|
131
|
-
linked: linked && index > 0
|
|
132
|
-
}));
|
|
133
|
-
}
|
|
134
151
|
#take(stack) {
|
|
135
|
-
const hold = stack
|
|
152
|
+
const hold = findHold(stack, this, this.#record);
|
|
136
153
|
if (hold) hold.lease = this;
|
|
137
154
|
return hold;
|
|
138
155
|
}
|
|
@@ -141,7 +158,7 @@ var AttributeLease = class _AttributeLease {
|
|
|
141
158
|
const top = stack.at(-1);
|
|
142
159
|
const bottom = stack[0];
|
|
143
160
|
const over = top?.written === current ? top : void 0;
|
|
144
|
-
const from = this.#base ? bottom : over;
|
|
161
|
+
const from = this.#base ? this.#preserveAuthor && !stack.some((held) => held.written === current) ? void 0 : bottom : over;
|
|
145
162
|
const hold = {
|
|
146
163
|
lease: this,
|
|
147
164
|
record: this.#record,
|
|
@@ -171,15 +188,11 @@ var AttributeLease = class _AttributeLease {
|
|
|
171
188
|
);
|
|
172
189
|
});
|
|
173
190
|
for (const [name, recorded] of records) {
|
|
174
|
-
|
|
175
|
-
if (recorded === null) element.removeAttribute(name);
|
|
176
|
-
else element.setAttribute(name, recorded);
|
|
191
|
+
setAttributeIfChanged(element, name, recorded);
|
|
177
192
|
}
|
|
178
193
|
}
|
|
179
194
|
#reflect(element, value) {
|
|
180
|
-
|
|
181
|
-
if (value === null) element.removeAttribute(this.#attribute);
|
|
182
|
-
else element.setAttribute(this.#attribute, value);
|
|
195
|
+
setAttributeIfChanged(element, this.#attribute, value);
|
|
183
196
|
}
|
|
184
197
|
};
|
|
185
198
|
|
|
@@ -243,6 +256,30 @@ function parseISOMonthString(monthStr) {
|
|
|
243
256
|
function toISOMonthString(date) {
|
|
244
257
|
return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}`;
|
|
245
258
|
}
|
|
259
|
+
function monthGridDays(year, month, weekStart) {
|
|
260
|
+
const first = new Date(year, month - 1, 1);
|
|
261
|
+
const offset = (first.getDay() - weekStart + 7) % 7;
|
|
262
|
+
const current = new Date(first);
|
|
263
|
+
current.setDate(first.getDate() - offset);
|
|
264
|
+
const days = [];
|
|
265
|
+
for (let i = 0; i < 42; i++) {
|
|
266
|
+
days.push(new Date(current));
|
|
267
|
+
current.setDate(current.getDate() + 1);
|
|
268
|
+
}
|
|
269
|
+
return days;
|
|
270
|
+
}
|
|
271
|
+
function dateInMonthClamped(date, year, month) {
|
|
272
|
+
const target = new Date(year, month - 1, 1);
|
|
273
|
+
const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate();
|
|
274
|
+
target.setDate(Math.min(date.getDate(), lastDay));
|
|
275
|
+
return target;
|
|
276
|
+
}
|
|
277
|
+
function shiftMonthClamped(date, delta) {
|
|
278
|
+
return dateInMonthClamped(date, date.getFullYear(), date.getMonth() + 1 + delta);
|
|
279
|
+
}
|
|
280
|
+
function shiftYearClamped(date, delta) {
|
|
281
|
+
return dateInMonthClamped(date, date.getFullYear() + delta, date.getMonth() + 1);
|
|
282
|
+
}
|
|
246
283
|
var MONTH_LABEL_OPTIONS = { month: "long", year: "numeric" };
|
|
247
284
|
function monthLabelFormatter(locale) {
|
|
248
285
|
return intlFormatter(Intl.DateTimeFormat, locale, MONTH_LABEL_OPTIONS, "en");
|
|
@@ -288,6 +325,9 @@ var MicrotaskCoalescer = class {
|
|
|
288
325
|
this.#queued = false;
|
|
289
326
|
this.#generation += 1;
|
|
290
327
|
}
|
|
328
|
+
get pending() {
|
|
329
|
+
return this.#queued;
|
|
330
|
+
}
|
|
291
331
|
schedule() {
|
|
292
332
|
if (!this.#active || this.#queued) return;
|
|
293
333
|
this.#queued = true;
|
|
@@ -318,6 +358,9 @@ var MorphRenderWatcher = class {
|
|
|
318
358
|
schedule() {
|
|
319
359
|
this.#pass.schedule();
|
|
320
360
|
}
|
|
361
|
+
get pending() {
|
|
362
|
+
return this.#pass.pending;
|
|
363
|
+
}
|
|
321
364
|
disconnect() {
|
|
322
365
|
this.#listeners.dispose();
|
|
323
366
|
this.#pass.cancel();
|
|
@@ -526,6 +569,9 @@ var DateRangePickerController = class extends Controller {
|
|
|
526
569
|
onKeydown(event) {
|
|
527
570
|
if (event.defaultPrevented) return;
|
|
528
571
|
if (isReservedArrowChord(event)) return;
|
|
572
|
+
if ((event.key === "Home" || event.key === "End") && hasModifierChord(event)) return;
|
|
573
|
+
if ((event.key === "PageUp" || event.key === "PageDown") && (event.ctrlKey || event.altKey || event.metaKey))
|
|
574
|
+
return;
|
|
529
575
|
const cell = this.#cellFrom(event.target);
|
|
530
576
|
if (!cell) return;
|
|
531
577
|
const dateStr = cell.getAttribute("data-date") ?? "";
|
|
@@ -546,7 +592,8 @@ var DateRangePickerController = class extends Controller {
|
|
|
546
592
|
return;
|
|
547
593
|
}
|
|
548
594
|
let next = null;
|
|
549
|
-
|
|
595
|
+
const directionElement = this.hasGridTarget ? gridDirectionElement(this.gridTarget, this.element) : this.element;
|
|
596
|
+
switch (logicalArrowKey(event.key, directionElement)) {
|
|
550
597
|
case "ArrowLeft":
|
|
551
598
|
next = addDays(date, -1);
|
|
552
599
|
break;
|
|
@@ -632,10 +679,8 @@ var DateRangePickerController = class extends Controller {
|
|
|
632
679
|
#shiftMonth(delta) {
|
|
633
680
|
const info = parseISOMonthString(this.#viewMonth);
|
|
634
681
|
if (!info) return;
|
|
635
|
-
const target =
|
|
682
|
+
const target = dateInMonthClamped(this.#focusedDate, info.year, info.month + delta);
|
|
636
683
|
this.#viewMonth = toISOMonthString(target);
|
|
637
|
-
const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate();
|
|
638
|
-
target.setDate(Math.min(this.#focusedDate.getDate(), lastDay));
|
|
639
684
|
this.#focusedDate = target;
|
|
640
685
|
this.#render();
|
|
641
686
|
}
|
|
@@ -655,7 +700,7 @@ var DateRangePickerController = class extends Controller {
|
|
|
655
700
|
this.monthLabelTarget.textContent = formatter.format(new Date(year, month - 1, 1));
|
|
656
701
|
}
|
|
657
702
|
const [rangeStart, rangeEnd] = this.#visualRange();
|
|
658
|
-
const days =
|
|
703
|
+
const days = monthGridDays(year, month, 0);
|
|
659
704
|
const focusedStr = toISODateString(this.#focusedDate);
|
|
660
705
|
const todayStr = toISODateString(/* @__PURE__ */ new Date());
|
|
661
706
|
const cells = this.cellTargets;
|
|
@@ -794,30 +839,6 @@ function addDays(date, n) {
|
|
|
794
839
|
next.setDate(next.getDate() + n);
|
|
795
840
|
return next;
|
|
796
841
|
}
|
|
797
|
-
function shiftMonthClamped(date, delta) {
|
|
798
|
-
const target = new Date(date.getFullYear(), date.getMonth() + delta, 1);
|
|
799
|
-
const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate();
|
|
800
|
-
target.setDate(Math.min(date.getDate(), lastDay));
|
|
801
|
-
return target;
|
|
802
|
-
}
|
|
803
|
-
function shiftYearClamped(date, delta) {
|
|
804
|
-
const target = new Date(date.getFullYear() + delta, date.getMonth(), 1);
|
|
805
|
-
const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate();
|
|
806
|
-
target.setDate(Math.min(date.getDate(), lastDay));
|
|
807
|
-
return target;
|
|
808
|
-
}
|
|
809
|
-
function gridDays(year, month) {
|
|
810
|
-
const first = new Date(year, month - 1, 1);
|
|
811
|
-
const start = new Date(first);
|
|
812
|
-
start.setDate(first.getDate() - first.getDay());
|
|
813
|
-
const days = [];
|
|
814
|
-
const current = new Date(start);
|
|
815
|
-
for (let i = 0; i < GRID_SIZE; i++) {
|
|
816
|
-
days.push(new Date(current));
|
|
817
|
-
current.setDate(current.getDate() + 1);
|
|
818
|
-
}
|
|
819
|
-
return days;
|
|
820
|
-
}
|
|
821
842
|
function normalizeISO(value) {
|
|
822
843
|
const date = parseISODateString(value.trim());
|
|
823
844
|
return date ? toISODateString(date) : "";
|