stimeo-ui 0.16.0 → 0.17.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 +31 -0
- package/README.md +8 -1
- package/dist/cable/index.d.ts +79 -23
- package/dist/cable/index.js +363 -436
- package/dist/cable/index.js.map +1 -1
- package/dist/controllers/accordion_controller.d.ts +4 -2
- package/dist/controllers/accordion_controller.js +166 -55
- package/dist/controllers/accordion_controller.js.map +1 -1
- package/dist/controllers/alert_dialog_controller.d.ts +12 -2
- package/dist/controllers/alert_dialog_controller.js +862 -221
- package/dist/controllers/alert_dialog_controller.js.map +1 -1
- package/dist/controllers/announcer_controller.d.ts +35 -5
- package/dist/controllers/announcer_controller.js +135 -198
- package/dist/controllers/announcer_controller.js.map +1 -1
- package/dist/controllers/aspect_ratio_controller.js +0 -10
- package/dist/controllers/aspect_ratio_controller.js.map +1 -1
- package/dist/controllers/auto_submit_controller.d.ts +30 -6
- package/dist/controllers/auto_submit_controller.js +271 -127
- package/dist/controllers/auto_submit_controller.js.map +1 -1
- package/dist/controllers/avatar_controller.js +171 -105
- package/dist/controllers/avatar_controller.js.map +1 -1
- package/dist/controllers/breadcrumb_controller.js +0 -130
- package/dist/controllers/breadcrumb_controller.js.map +1 -1
- package/dist/controllers/bulk_select_controller.d.ts +18 -0
- package/dist/controllers/bulk_select_controller.js +262 -52
- package/dist/controllers/bulk_select_controller.js.map +1 -1
- package/dist/controllers/calendar_controller.d.ts +24 -5
- package/dist/controllers/calendar_controller.js +175 -209
- package/dist/controllers/calendar_controller.js.map +1 -1
- package/dist/controllers/carousel_controller.d.ts +34 -7
- package/dist/controllers/carousel_controller.js +461 -399
- package/dist/controllers/carousel_controller.js.map +1 -1
- package/dist/controllers/character_counter_controller.d.ts +17 -1
- package/dist/controllers/character_counter_controller.js +246 -156
- package/dist/controllers/character_counter_controller.js.map +1 -1
- package/dist/controllers/checkbox_controller.d.ts +7 -2
- package/dist/controllers/checkbox_controller.js +32 -74
- package/dist/controllers/checkbox_controller.js.map +1 -1
- package/dist/controllers/clipboard_controller.d.ts +16 -5
- package/dist/controllers/clipboard_controller.js +168 -147
- package/dist/controllers/clipboard_controller.js.map +1 -1
- package/dist/controllers/collapsible_controller.d.ts +16 -4
- package/dist/controllers/collapsible_controller.js +301 -120
- package/dist/controllers/collapsible_controller.js.map +1 -1
- package/dist/controllers/color_picker_controller.d.ts +18 -6
- package/dist/controllers/color_picker_controller.js +149 -139
- package/dist/controllers/color_picker_controller.js.map +1 -1
- package/dist/controllers/combobox_controller.d.ts +23 -5
- package/dist/controllers/combobox_controller.js +360 -133
- package/dist/controllers/combobox_controller.js.map +1 -1
- package/dist/controllers/command_palette_controller.d.ts +45 -14
- package/dist/controllers/command_palette_controller.js +970 -358
- package/dist/controllers/command_palette_controller.js.map +1 -1
- package/dist/controllers/conditional_fields_controller.d.ts +15 -2
- package/dist/controllers/conditional_fields_controller.js +166 -124
- package/dist/controllers/conditional_fields_controller.js.map +1 -1
- package/dist/controllers/confirm_controller.d.ts +49 -12
- package/dist/controllers/confirm_controller.js +939 -248
- package/dist/controllers/confirm_controller.js.map +1 -1
- package/dist/controllers/context_menu_controller.d.ts +31 -4
- package/dist/controllers/context_menu_controller.js +256 -128
- package/dist/controllers/context_menu_controller.js.map +1 -1
- package/dist/controllers/count_up_controller.d.ts +13 -1
- package/dist/controllers/count_up_controller.js +73 -21
- package/dist/controllers/count_up_controller.js.map +1 -1
- package/dist/controllers/countdown_controller.d.ts +45 -1
- package/dist/controllers/countdown_controller.js +183 -148
- package/dist/controllers/countdown_controller.js.map +1 -1
- package/dist/controllers/currency_input_controller.d.ts +21 -2
- package/dist/controllers/currency_input_controller.js +134 -158
- package/dist/controllers/currency_input_controller.js.map +1 -1
- package/dist/controllers/data_grid_controller.d.ts +15 -4
- package/dist/controllers/data_grid_controller.js +114 -186
- package/dist/controllers/data_grid_controller.js.map +1 -1
- package/dist/controllers/date_range_picker_controller.d.ts +30 -5
- package/dist/controllers/date_range_picker_controller.js +288 -206
- package/dist/controllers/date_range_picker_controller.js.map +1 -1
- package/dist/controllers/dialog_controller.d.ts +13 -1
- package/dist/controllers/dialog_controller.js +858 -223
- package/dist/controllers/dialog_controller.js.map +1 -1
- package/dist/controllers/direct_upload_controller.d.ts +24 -7
- package/dist/controllers/direct_upload_controller.js +73 -153
- package/dist/controllers/direct_upload_controller.js.map +1 -1
- package/dist/controllers/dirty_form_controller.js +14 -48
- package/dist/controllers/dirty_form_controller.js.map +1 -1
- package/dist/controllers/dismissible_controller.d.ts +19 -0
- package/dist/controllers/dismissible_controller.js +175 -21
- package/dist/controllers/dismissible_controller.js.map +1 -1
- package/dist/controllers/drawer_controller.d.ts +39 -11
- package/dist/controllers/drawer_controller.js +933 -341
- package/dist/controllers/drawer_controller.js.map +1 -1
- package/dist/controllers/dropdown_controller.d.ts +31 -1
- package/dist/controllers/dropdown_controller.js +312 -82
- package/dist/controllers/dropdown_controller.js.map +1 -1
- package/dist/controllers/editable_controller.d.ts +12 -1
- package/dist/controllers/editable_controller.js +158 -68
- package/dist/controllers/editable_controller.js.map +1 -1
- package/dist/controllers/empty_state_controller.js +67 -53
- package/dist/controllers/empty_state_controller.js.map +1 -1
- package/dist/controllers/file_dropzone_controller.d.ts +60 -18
- package/dist/controllers/file_dropzone_controller.js +311 -207
- package/dist/controllers/file_dropzone_controller.js.map +1 -1
- package/dist/controllers/filter_controller.js +67 -39
- package/dist/controllers/filter_controller.js.map +1 -1
- package/dist/controllers/flash_controller.d.ts +31 -8
- package/dist/controllers/flash_controller.js +172 -314
- package/dist/controllers/flash_controller.js.map +1 -1
- package/dist/controllers/focus_controller.d.ts +12 -3
- package/dist/controllers/focus_controller.js +654 -240
- package/dist/controllers/focus_controller.js.map +1 -1
- package/dist/controllers/form_field_controller.js +147 -132
- package/dist/controllers/form_field_controller.js.map +1 -1
- package/dist/controllers/form_validation_controller.js +13 -86
- package/dist/controllers/form_validation_controller.js.map +1 -1
- package/dist/controllers/frame_loading_controller.d.ts +41 -9
- package/dist/controllers/frame_loading_controller.js +264 -213
- package/dist/controllers/frame_loading_controller.js.map +1 -1
- package/dist/controllers/highlight_controller.d.ts +22 -2
- package/dist/controllers/highlight_controller.js +107 -75
- package/dist/controllers/highlight_controller.js.map +1 -1
- package/dist/controllers/hover_card_controller.d.ts +56 -3
- package/dist/controllers/hover_card_controller.js +309 -118
- package/dist/controllers/hover_card_controller.js.map +1 -1
- package/dist/controllers/idle_controller.d.ts +42 -1
- package/dist/controllers/idle_controller.js +267 -101
- package/dist/controllers/idle_controller.js.map +1 -1
- package/dist/controllers/input_mask_controller.js +71 -72
- package/dist/controllers/input_mask_controller.js.map +1 -1
- package/dist/controllers/intersection_controller.d.ts +32 -13
- package/dist/controllers/intersection_controller.js +147 -106
- package/dist/controllers/intersection_controller.js.map +1 -1
- package/dist/controllers/lazy_frame_controller.d.ts +16 -0
- package/dist/controllers/lazy_frame_controller.js +9 -65
- package/dist/controllers/lazy_frame_controller.js.map +1 -1
- package/dist/controllers/listbox_controller.d.ts +34 -2
- package/dist/controllers/listbox_controller.js +306 -204
- package/dist/controllers/listbox_controller.js.map +1 -1
- package/dist/controllers/local_time_controller.d.ts +1 -1
- package/dist/controllers/local_time_controller.js +54 -64
- package/dist/controllers/local_time_controller.js.map +1 -1
- package/dist/controllers/masonry_controller.d.ts +11 -3
- package/dist/controllers/masonry_controller.js +70 -93
- package/dist/controllers/masonry_controller.js.map +1 -1
- package/dist/controllers/menu_controller.d.ts +32 -7
- package/dist/controllers/menu_controller.js +214 -156
- package/dist/controllers/menu_controller.js.map +1 -1
- package/dist/controllers/menubar_controller.d.ts +4 -4
- package/dist/controllers/menubar_controller.js +170 -329
- package/dist/controllers/menubar_controller.js.map +1 -1
- package/dist/controllers/meter_controller.d.ts +20 -0
- package/dist/controllers/meter_controller.js +151 -67
- package/dist/controllers/meter_controller.js.map +1 -1
- package/dist/controllers/multi_select_controller.d.ts +32 -4
- package/dist/controllers/multi_select_controller.js +593 -358
- package/dist/controllers/multi_select_controller.js.map +1 -1
- package/dist/controllers/navigation_menu_controller.d.ts +8 -1
- package/dist/controllers/navigation_menu_controller.js +124 -232
- package/dist/controllers/navigation_menu_controller.js.map +1 -1
- package/dist/controllers/nested_form_controller.d.ts +10 -0
- package/dist/controllers/nested_form_controller.js +352 -182
- package/dist/controllers/nested_form_controller.js.map +1 -1
- package/dist/controllers/network_status_controller.d.ts +23 -0
- package/dist/controllers/network_status_controller.js +242 -54
- package/dist/controllers/network_status_controller.js.map +1 -1
- package/dist/controllers/number_input_controller.d.ts +26 -2
- package/dist/controllers/number_input_controller.js +320 -263
- package/dist/controllers/number_input_controller.js.map +1 -1
- package/dist/controllers/optimistic_controller.js +16 -76
- package/dist/controllers/optimistic_controller.js.map +1 -1
- package/dist/controllers/otp_controller.d.ts +20 -4
- package/dist/controllers/otp_controller.js +198 -193
- package/dist/controllers/otp_controller.js.map +1 -1
- package/dist/controllers/overflow_indicator_controller.d.ts +5 -0
- package/dist/controllers/overflow_indicator_controller.js +116 -113
- package/dist/controllers/overflow_indicator_controller.js.map +1 -1
- package/dist/controllers/overflow_menu_controller.d.ts +48 -11
- package/dist/controllers/overflow_menu_controller.js +343 -283
- package/dist/controllers/overflow_menu_controller.js.map +1 -1
- package/dist/controllers/pagination_controller.d.ts +35 -6
- package/dist/controllers/pagination_controller.js +295 -119
- package/dist/controllers/pagination_controller.js.map +1 -1
- package/dist/controllers/password_reveal_controller.d.ts +45 -8
- package/dist/controllers/password_reveal_controller.js +389 -121
- package/dist/controllers/password_reveal_controller.js.map +1 -1
- package/dist/controllers/password_strength_controller.d.ts +14 -5
- package/dist/controllers/password_strength_controller.js +99 -153
- package/dist/controllers/password_strength_controller.js.map +1 -1
- package/dist/controllers/persist_controller.d.ts +11 -4
- package/dist/controllers/persist_controller.js +237 -103
- package/dist/controllers/persist_controller.js.map +1 -1
- package/dist/controllers/pointer_drag_controller.d.ts +19 -7
- package/dist/controllers/pointer_drag_controller.js +185 -165
- package/dist/controllers/pointer_drag_controller.js.map +1 -1
- package/dist/controllers/popover_controller.d.ts +38 -2
- package/dist/controllers/popover_controller.js +236 -97
- package/dist/controllers/popover_controller.js.map +1 -1
- package/dist/controllers/portal_controller.d.ts +44 -4
- package/dist/controllers/portal_controller.js +209 -76
- package/dist/controllers/portal_controller.js.map +1 -1
- package/dist/controllers/preview_guard_controller.d.ts +10 -4
- package/dist/controllers/preview_guard_controller.js +232 -116
- package/dist/controllers/preview_guard_controller.js.map +1 -1
- package/dist/controllers/progress_controller.d.ts +11 -0
- package/dist/controllers/progress_controller.js +125 -56
- package/dist/controllers/progress_controller.js.map +1 -1
- package/dist/controllers/radio_group_controller.d.ts +14 -5
- package/dist/controllers/radio_group_controller.js +117 -137
- package/dist/controllers/radio_group_controller.js.map +1 -1
- package/dist/controllers/range_slider_controller.d.ts +43 -3
- package/dist/controllers/range_slider_controller.js +192 -105
- package/dist/controllers/range_slider_controller.js.map +1 -1
- package/dist/controllers/rating_controller.d.ts +20 -4
- package/dist/controllers/rating_controller.js +418 -207
- package/dist/controllers/rating_controller.js.map +1 -1
- package/dist/controllers/read_more_controller.d.ts +2 -0
- package/dist/controllers/read_more_controller.js +134 -63
- package/dist/controllers/read_more_controller.js.map +1 -1
- package/dist/controllers/reading_progress_controller.d.ts +1 -1
- package/dist/controllers/reading_progress_controller.js +147 -135
- package/dist/controllers/reading_progress_controller.js.map +1 -1
- package/dist/controllers/relative_time_controller.d.ts +18 -4
- package/dist/controllers/relative_time_controller.js +145 -110
- package/dist/controllers/relative_time_controller.js.map +1 -1
- package/dist/controllers/reset_on_restore_controller.d.ts +85 -0
- package/dist/controllers/{reset_before_cache_controller.js → reset_on_restore_controller.js} +97 -38
- package/dist/controllers/reset_on_restore_controller.js.map +1 -0
- package/dist/controllers/resizable_controller.d.ts +28 -2
- package/dist/controllers/resizable_controller.js +255 -139
- package/dist/controllers/resizable_controller.js.map +1 -1
- package/dist/controllers/roving_controller.js +39 -84
- package/dist/controllers/roving_controller.js.map +1 -1
- package/dist/controllers/scroll_area_controller.d.ts +7 -3
- package/dist/controllers/scroll_area_controller.js +428 -225
- package/dist/controllers/scroll_area_controller.js.map +1 -1
- package/dist/controllers/scroll_restore_controller.js +0 -53
- package/dist/controllers/scroll_restore_controller.js.map +1 -1
- package/dist/controllers/scroll_visibility_controller.d.ts +28 -12
- package/dist/controllers/scroll_visibility_controller.js +395 -145
- package/dist/controllers/scroll_visibility_controller.js.map +1 -1
- package/dist/controllers/scrollspy_controller.d.ts +6 -1
- package/dist/controllers/scrollspy_controller.js +181 -242
- package/dist/controllers/scrollspy_controller.js.map +1 -1
- package/dist/controllers/separator_controller.d.ts +19 -4
- package/dist/controllers/separator_controller.js +267 -140
- package/dist/controllers/separator_controller.js.map +1 -1
- package/dist/controllers/sidebar_controller.d.ts +64 -7
- package/dist/controllers/sidebar_controller.js +1023 -386
- package/dist/controllers/sidebar_controller.js.map +1 -1
- package/dist/controllers/skeleton_controller.d.ts +23 -0
- package/dist/controllers/skeleton_controller.js +248 -97
- package/dist/controllers/skeleton_controller.js.map +1 -1
- package/dist/controllers/slider_controller.d.ts +27 -1
- package/dist/controllers/slider_controller.js +159 -79
- package/dist/controllers/slider_controller.js.map +1 -1
- package/dist/controllers/smart_sticky_header_controller.d.ts +21 -3
- package/dist/controllers/smart_sticky_header_controller.js +162 -63
- package/dist/controllers/smart_sticky_header_controller.js.map +1 -1
- package/dist/controllers/sortable_controller.js +0 -112
- package/dist/controllers/sortable_controller.js.map +1 -1
- package/dist/controllers/spinner_controller.d.ts +39 -4
- package/dist/controllers/spinner_controller.js +277 -169
- package/dist/controllers/spinner_controller.js.map +1 -1
- package/dist/controllers/step_indicator_controller.d.ts +5 -0
- package/dist/controllers/step_indicator_controller.js +99 -46
- package/dist/controllers/step_indicator_controller.js.map +1 -1
- package/dist/controllers/stepper_controller.d.ts +12 -3
- package/dist/controllers/stepper_controller.js +114 -73
- package/dist/controllers/stepper_controller.js.map +1 -1
- package/dist/controllers/stick_to_bottom_controller.d.ts +6 -0
- package/dist/controllers/stick_to_bottom_controller.js +262 -138
- package/dist/controllers/stick_to_bottom_controller.js.map +1 -1
- package/dist/controllers/sticky_observer_controller.d.ts +11 -0
- package/dist/controllers/sticky_observer_controller.js +214 -49
- package/dist/controllers/sticky_observer_controller.js.map +1 -1
- package/dist/controllers/submit_once_controller.d.ts +23 -8
- package/dist/controllers/submit_once_controller.js +294 -205
- package/dist/controllers/submit_once_controller.js.map +1 -1
- package/dist/controllers/switch_controller.d.ts +12 -1
- package/dist/controllers/switch_controller.js +33 -60
- package/dist/controllers/switch_controller.js.map +1 -1
- package/dist/controllers/tabs_controller.d.ts +2 -2
- package/dist/controllers/tabs_controller.js +35 -29
- package/dist/controllers/tabs_controller.js.map +1 -1
- package/dist/controllers/tags_input_controller.d.ts +12 -0
- package/dist/controllers/tags_input_controller.js +136 -145
- package/dist/controllers/tags_input_controller.js.map +1 -1
- package/dist/controllers/textarea_autosize_controller.d.ts +10 -0
- package/dist/controllers/textarea_autosize_controller.js +71 -58
- package/dist/controllers/textarea_autosize_controller.js.map +1 -1
- package/dist/controllers/theme_controller.d.ts +21 -9
- package/dist/controllers/theme_controller.js +130 -112
- package/dist/controllers/theme_controller.js.map +1 -1
- package/dist/controllers/time_picker_controller.d.ts +18 -1
- package/dist/controllers/time_picker_controller.js +146 -80
- package/dist/controllers/time_picker_controller.js.map +1 -1
- package/dist/controllers/toast_controller.d.ts +36 -11
- package/dist/controllers/toast_controller.js +186 -297
- package/dist/controllers/toast_controller.js.map +1 -1
- package/dist/controllers/toggle_group_controller.d.ts +12 -3
- package/dist/controllers/toggle_group_controller.js +95 -136
- package/dist/controllers/toggle_group_controller.js.map +1 -1
- package/dist/controllers/toolbar_controller.js +68 -98
- package/dist/controllers/toolbar_controller.js.map +1 -1
- package/dist/controllers/tooltip_controller.d.ts +45 -3
- package/dist/controllers/tooltip_controller.js +158 -124
- package/dist/controllers/tooltip_controller.js.map +1 -1
- package/dist/controllers/transition_controller.d.ts +22 -4
- package/dist/controllers/transition_controller.js +123 -119
- package/dist/controllers/transition_controller.js.map +1 -1
- package/dist/controllers/tree_view_controller.d.ts +21 -11
- package/dist/controllers/tree_view_controller.js +150 -345
- package/dist/controllers/tree_view_controller.js.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.js +6370 -9346
- package/dist/index.js.map +1 -1
- package/dist/inspector/cli.d.ts +23 -3
- package/dist/inspector/cli.js +92 -37
- package/dist/inspector/cli.js.map +1 -1
- package/dist/inspector/cli_bin.js +92 -56
- package/dist/inspector/cli_bin.js.map +1 -1
- package/dist/inspector/examples.json +8 -8
- package/dist/inspector/manifest.json +787 -100
- package/dist/positioning/index.d.ts +8 -0
- package/dist/positioning/index.js +148 -47
- package/dist/positioning/index.js.map +1 -1
- package/package.json +6 -6
- package/dist/controllers/reset_before_cache_controller.d.ts +0 -76
- package/dist/controllers/reset_before_cache_controller.js.map +0 -1
|
@@ -5,9 +5,6 @@ import { relative, join, dirname, extname } from 'path';
|
|
|
5
5
|
import { fileURLToPath } from 'url';
|
|
6
6
|
import { createInterface } from 'readline';
|
|
7
7
|
|
|
8
|
-
// src/inspector/cli_bin.ts
|
|
9
|
-
|
|
10
|
-
// src/inspector/announcer_rules.ts
|
|
11
8
|
var ANNOUNCER_IDENTIFIER = "stimeo--announcer";
|
|
12
9
|
var ANNOUNCING_CONTROLLERS = [
|
|
13
10
|
"stimeo--auto-submit",
|
|
@@ -71,7 +68,30 @@ function announcerSeatingDiagnostic(sources) {
|
|
|
71
68
|
};
|
|
72
69
|
}
|
|
73
70
|
|
|
74
|
-
|
|
71
|
+
function matchesNumberBounds(value, bounds) {
|
|
72
|
+
if (!Number.isFinite(value)) {
|
|
73
|
+
const direction = value === Infinity ? "positive" : value === -Infinity ? "negative" : null;
|
|
74
|
+
if (direction === null) return false;
|
|
75
|
+
if (bounds.allowInfinity !== "both" && bounds.allowInfinity !== direction) return false;
|
|
76
|
+
}
|
|
77
|
+
if (bounds.min !== void 0 && value < bounds.min) return false;
|
|
78
|
+
if (bounds.max !== void 0 && value > bounds.max) return false;
|
|
79
|
+
if (bounds.exclusiveMin !== void 0 && value <= bounds.exclusiveMin) return false;
|
|
80
|
+
if (bounds.integer && !Number.isInteger(value)) return false;
|
|
81
|
+
if (bounds.allowedValues !== void 0 && !bounds.allowedValues.includes(value)) return false;
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
function decodeNumberValue(raw) {
|
|
85
|
+
return Number(raw.replace(/_/g, ""));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function toFiniteNumber(raw) {
|
|
89
|
+
if (typeof raw !== "number" && typeof raw !== "string") return null;
|
|
90
|
+
if (typeof raw === "string" && raw.trim().length === 0) return null;
|
|
91
|
+
const value = Number(raw);
|
|
92
|
+
return Number.isFinite(value) ? value : null;
|
|
93
|
+
}
|
|
94
|
+
|
|
75
95
|
function parseDeclared(raw, parse, fallback) {
|
|
76
96
|
try {
|
|
77
97
|
return parse(raw);
|
|
@@ -95,7 +115,6 @@ function parseJsonObject(raw) {
|
|
|
95
115
|
return parsed;
|
|
96
116
|
}
|
|
97
117
|
|
|
98
|
-
// src/inspector/html_parser.ts
|
|
99
118
|
var ERB_ELEMENT_TAG = "#erb";
|
|
100
119
|
var VOID_ELEMENTS = /* @__PURE__ */ new Set([
|
|
101
120
|
"area",
|
|
@@ -344,7 +363,6 @@ function walk(root, visit) {
|
|
|
344
363
|
}
|
|
345
364
|
}
|
|
346
365
|
|
|
347
|
-
// src/inspector/ruby_scan.ts
|
|
348
366
|
var SPACE = /* @__PURE__ */ new Set([" ", " ", "\n", "\r", "\f"]);
|
|
349
367
|
var IDENT_START = /[A-Za-z_]/;
|
|
350
368
|
var IDENT_CHAR = /[A-Za-z0-9_]/;
|
|
@@ -583,7 +601,6 @@ function heredocEnd(code, bodyStart, identifier) {
|
|
|
583
601
|
return code.length;
|
|
584
602
|
}
|
|
585
603
|
|
|
586
|
-
// src/inspector/ruby_hash.ts
|
|
587
604
|
function readDataOption(source, base) {
|
|
588
605
|
const code = maskHeredocs(source);
|
|
589
606
|
const attrs = [];
|
|
@@ -788,7 +805,6 @@ function skipValue(code, start) {
|
|
|
788
805
|
return code.length;
|
|
789
806
|
}
|
|
790
807
|
|
|
791
|
-
// src/inspector/erb.ts
|
|
792
808
|
var ERB_TAG = /<%[\s\S]*?%>/g;
|
|
793
809
|
function neutralizeErb(source) {
|
|
794
810
|
return source.replace(ERB_TAG, (match) => match.replace(/[^\n]/g, " "));
|
|
@@ -812,7 +828,6 @@ function erbElements(source) {
|
|
|
812
828
|
tag: ERB_ELEMENT_TAG,
|
|
813
829
|
attrs: option.attrs.map((attr) => toParsedAttr(attr, index)),
|
|
814
830
|
start: tag.start,
|
|
815
|
-
// The token a reader can act on is the delimiter that opens the call.
|
|
816
831
|
sourceLength: tag.codeStart - tag.start,
|
|
817
832
|
end,
|
|
818
833
|
container: end > tag.end,
|
|
@@ -851,7 +866,6 @@ function readErbTags(source) {
|
|
|
851
866
|
}
|
|
852
867
|
let close = raw.length - 2;
|
|
853
868
|
if (raw[close - 1] === "-") close--;
|
|
854
|
-
if (close < open) close = open;
|
|
855
869
|
tags.push({
|
|
856
870
|
start,
|
|
857
871
|
end: start + raw.length,
|
|
@@ -977,7 +991,6 @@ function identifierEnd(code, start) {
|
|
|
977
991
|
return end;
|
|
978
992
|
}
|
|
979
993
|
|
|
980
|
-
// src/inspector/extract.ts
|
|
981
994
|
var NAMESPACE_PREFIX = "stimeo--";
|
|
982
995
|
function dasherize(value) {
|
|
983
996
|
return value.replace(/([A-Z])/g, (_match, char) => `-${char.toLowerCase()}`);
|
|
@@ -1072,7 +1085,6 @@ function isStimeoDataAttr(attrName) {
|
|
|
1072
1085
|
return attrName.startsWith(`data-${NAMESPACE_PREFIX}`);
|
|
1073
1086
|
}
|
|
1074
1087
|
|
|
1075
|
-
// src/inspector/types.ts
|
|
1076
1088
|
var DIAGNOSTIC_CODES = [
|
|
1077
1089
|
"unknown-controller",
|
|
1078
1090
|
"unknown-target",
|
|
@@ -1106,7 +1118,6 @@ var DIAGNOSTIC_CODES = [
|
|
|
1106
1118
|
"unknown-ignore-code"
|
|
1107
1119
|
];
|
|
1108
1120
|
|
|
1109
|
-
// src/inspector/check.ts
|
|
1110
1121
|
function isDescendantOf(node, ancestor) {
|
|
1111
1122
|
for (let current = node.parent; current; current = current.parent) {
|
|
1112
1123
|
if (current === ancestor) return true;
|
|
@@ -1559,7 +1570,19 @@ function checkSource(source, manifest) {
|
|
|
1559
1570
|
if (isDynamicValue(written)) continue;
|
|
1560
1571
|
const value = written.value;
|
|
1561
1572
|
if (value.length === 0) {
|
|
1562
|
-
if (!
|
|
1573
|
+
if (!readable) continue;
|
|
1574
|
+
if (rule.numeric && !rule.required) {
|
|
1575
|
+
report(
|
|
1576
|
+
element,
|
|
1577
|
+
"invalid-action-param",
|
|
1578
|
+
"error",
|
|
1579
|
+
`"${value}" is not a finite "${rule.param}" this action reads.`,
|
|
1580
|
+
written,
|
|
1581
|
+
rule.suggestion
|
|
1582
|
+
);
|
|
1583
|
+
continue;
|
|
1584
|
+
}
|
|
1585
|
+
if (!rule.required) continue;
|
|
1563
1586
|
report(
|
|
1564
1587
|
element,
|
|
1565
1588
|
"missing-action-param",
|
|
@@ -1570,16 +1593,19 @@ function checkSource(source, manifest) {
|
|
|
1570
1593
|
);
|
|
1571
1594
|
continue;
|
|
1572
1595
|
}
|
|
1573
|
-
if (rule.
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1596
|
+
if (rule.numeric || rule.integer) {
|
|
1597
|
+
const numeric = toFiniteNumber(decodeActionParamLiteral(value));
|
|
1598
|
+
if (numeric === null || rule.integer && !Number.isInteger(numeric)) {
|
|
1599
|
+
report(
|
|
1600
|
+
element,
|
|
1601
|
+
"invalid-action-param",
|
|
1602
|
+
"error",
|
|
1603
|
+
`"${value}" is not an "${rule.param}" this action reads. It accepts ${rule.integer ? "a whole number" : "a finite number"}.`,
|
|
1604
|
+
written,
|
|
1605
|
+
rule.suggestion
|
|
1606
|
+
);
|
|
1607
|
+
continue;
|
|
1608
|
+
}
|
|
1583
1609
|
}
|
|
1584
1610
|
if (!rule.allowedValues || rule.allowedValues.includes(value)) continue;
|
|
1585
1611
|
const best = nearestName(value, rule.allowedValues);
|
|
@@ -1871,8 +1897,9 @@ function checkSource(source, manifest) {
|
|
|
1871
1897
|
for (const element of elements) {
|
|
1872
1898
|
if (!hasReadableMarkup(element)) continue;
|
|
1873
1899
|
if (hostIsAllowed(element, rule) !== false) continue;
|
|
1874
|
-
const
|
|
1875
|
-
const
|
|
1900
|
+
const byType = element.tag === "button" && rule.mode !== "non-interactive";
|
|
1901
|
+
const type = byType ? element.attrs.find((attr) => attr.name === "type") : void 0;
|
|
1902
|
+
const detail = byType ? `the unsupported ${type ? `type="${type.value}"` : 'implicit type="submit"'}` : `an unsupported interactive <${element.tag}>`;
|
|
1876
1903
|
report(
|
|
1877
1904
|
element,
|
|
1878
1905
|
"invalid-host",
|
|
@@ -1997,8 +2024,6 @@ function checkSource(source, manifest) {
|
|
|
1997
2024
|
`The ${where} of "${identifier}" must also declare "${rule.controller}" in data-controller.`,
|
|
1998
2025
|
declared ?? el,
|
|
1999
2026
|
rule.suggestion,
|
|
2000
|
-
// Appending to an existing list is unambiguous; creating the
|
|
2001
|
-
// attribute from nothing is an insertion the anchor cannot express.
|
|
2002
2027
|
declared ? valueFix(
|
|
2003
2028
|
declared,
|
|
2004
2029
|
`${declared.value.trim()} ${rule.controller}`.trim(),
|
|
@@ -2133,14 +2158,20 @@ function declaredConstraint(controller, valueToken) {
|
|
|
2133
2158
|
function valueSatisfiesConstraint(raw, constraint) {
|
|
2134
2159
|
if (constraint.type === "string") return stringValueSatisfies(raw, constraint);
|
|
2135
2160
|
const value = decodeNumericValue(raw);
|
|
2136
|
-
if (
|
|
2137
|
-
|
|
2161
|
+
if (constraint.finite === true && !matchesNumberBounds(value, { ...constraint}))
|
|
2162
|
+
return false;
|
|
2163
|
+
if (constraint.finite !== true) {
|
|
2164
|
+
const bounds = {
|
|
2165
|
+
...constraint,
|
|
2166
|
+
allowInfinity: constraint.allowInfinity ?? "both"
|
|
2167
|
+
};
|
|
2168
|
+
if (!matchesNumberBounds(value, bounds)) return false;
|
|
2169
|
+
}
|
|
2138
2170
|
if (constraint.greaterThan !== void 0 && !(value > constraint.greaterThan)) return false;
|
|
2139
|
-
if (constraint.integer && !Number.isInteger(value)) return false;
|
|
2140
2171
|
return true;
|
|
2141
2172
|
}
|
|
2142
2173
|
function decodeNumericValue(raw) {
|
|
2143
|
-
return
|
|
2174
|
+
return decodeNumberValue(raw);
|
|
2144
2175
|
}
|
|
2145
2176
|
function stringValueSatisfies(raw, constraint) {
|
|
2146
2177
|
if (!("syntax" in constraint)) return constraint.allowedValues.includes(raw);
|
|
@@ -2154,10 +2185,15 @@ function stringValueSatisfies(raw, constraint) {
|
|
|
2154
2185
|
}
|
|
2155
2186
|
function describeValueConstraint(constraint) {
|
|
2156
2187
|
if (constraint.type === "string") return describeStringConstraint(constraint);
|
|
2157
|
-
const parts = [constraint.finite ? "a finite number" : "a number"];
|
|
2188
|
+
const parts = [constraint.finite || constraint.allowInfinity ? "a finite number" : "a number"];
|
|
2158
2189
|
if (constraint.greaterThan !== void 0) {
|
|
2159
2190
|
parts.push(`greater than ${constraint.greaterThan}`);
|
|
2160
2191
|
}
|
|
2192
|
+
if (constraint.exclusiveMin !== void 0) parts.push(`greater than ${constraint.exclusiveMin}`);
|
|
2193
|
+
if (constraint.min !== void 0) parts.push(`at least ${constraint.min}`);
|
|
2194
|
+
if (constraint.max !== void 0) parts.push(`at most ${constraint.max}`);
|
|
2195
|
+
if (constraint.allowedValues) parts.push(`among ${constraint.allowedValues.join(", ")}`);
|
|
2196
|
+
if (constraint.allowInfinity) parts.push(`or ${constraint.allowInfinity} infinity`);
|
|
2161
2197
|
if (constraint.integer) parts.push("with no fractional part");
|
|
2162
2198
|
return parts.join(" ");
|
|
2163
2199
|
}
|
|
@@ -2353,7 +2389,7 @@ function list(names) {
|
|
|
2353
2389
|
return names.length > 0 ? names.map((n) => `"${n}"`).join(", ") : "(none)";
|
|
2354
2390
|
}
|
|
2355
2391
|
function describeAttrs(attrs) {
|
|
2356
|
-
return attrs.
|
|
2392
|
+
return attrs.join(" or ");
|
|
2357
2393
|
}
|
|
2358
2394
|
function nearestName(name, candidates) {
|
|
2359
2395
|
if (name.length === 0) return void 0;
|
|
@@ -2395,8 +2431,14 @@ function levenshtein(a, b) {
|
|
|
2395
2431
|
}
|
|
2396
2432
|
return prev[cols];
|
|
2397
2433
|
}
|
|
2434
|
+
function decodeActionParamLiteral(raw) {
|
|
2435
|
+
try {
|
|
2436
|
+
return JSON.parse(raw);
|
|
2437
|
+
} catch {
|
|
2438
|
+
return raw;
|
|
2439
|
+
}
|
|
2440
|
+
}
|
|
2398
2441
|
|
|
2399
|
-
// src/inspector/examples.ts
|
|
2400
2442
|
var EXAMPLES_SCHEMA_VERSION = 1;
|
|
2401
2443
|
var CHECKABLE_FILE_EXTENSIONS = /* @__PURE__ */ new Set([".erb", ".html", ".htm"]);
|
|
2402
2444
|
function isCheckableFile(path) {
|
|
@@ -2440,6 +2482,21 @@ function isCompatibleManifest(value) {
|
|
|
2440
2482
|
for (const field of CONTROLLER_ARRAY_FIELDS) {
|
|
2441
2483
|
if (!Array.isArray(entry[field])) return false;
|
|
2442
2484
|
}
|
|
2485
|
+
const constraints = entry.valueConstraints;
|
|
2486
|
+
for (const constraint of constraints) {
|
|
2487
|
+
if (typeof constraint !== "object" || constraint === null) return false;
|
|
2488
|
+
const numeric = constraint;
|
|
2489
|
+
if (numeric.type !== "number") continue;
|
|
2490
|
+
for (const field of ["min", "max", "exclusiveMin"]) {
|
|
2491
|
+
const bound = numeric[field];
|
|
2492
|
+
if (bound !== void 0 && (typeof bound !== "number" || !Number.isFinite(bound)))
|
|
2493
|
+
return false;
|
|
2494
|
+
}
|
|
2495
|
+
if (numeric.allowedValues !== void 0 && (!Array.isArray(numeric.allowedValues) || !numeric.allowedValues.every((item) => typeof item === "number" && Number.isFinite(item))))
|
|
2496
|
+
return false;
|
|
2497
|
+
if (numeric.allowInfinity !== void 0 && !["negative", "positive", "both"].includes(String(numeric.allowInfinity)))
|
|
2498
|
+
return false;
|
|
2499
|
+
}
|
|
2443
2500
|
}
|
|
2444
2501
|
return true;
|
|
2445
2502
|
}
|
|
@@ -2451,7 +2508,6 @@ function readManifestFile(path) {
|
|
|
2451
2508
|
return parsed;
|
|
2452
2509
|
}
|
|
2453
2510
|
|
|
2454
|
-
// src/inspector/cli.ts
|
|
2455
2511
|
function bundledPath(name) {
|
|
2456
2512
|
return join(dirname(fileURLToPath(import.meta.url)), name);
|
|
2457
2513
|
}
|
|
@@ -2653,7 +2709,6 @@ ${USAGE}`);
|
|
|
2653
2709
|
return summary.errorCount > 0 ? 1 : 0;
|
|
2654
2710
|
}
|
|
2655
2711
|
|
|
2656
|
-
// src/inspector/mcp/prompts.ts
|
|
2657
2712
|
var InvalidPromptRequestError = class extends Error {
|
|
2658
2713
|
};
|
|
2659
2714
|
function asPromptArgs(args, allowed) {
|
|
@@ -2782,7 +2837,6 @@ function getPrompt(name, args) {
|
|
|
2782
2837
|
return prompt.build(record);
|
|
2783
2838
|
}
|
|
2784
2839
|
|
|
2785
|
-
// src/inspector/mcp/tools.ts
|
|
2786
2840
|
var READ_ONLY_ANNOTATIONS = { readOnlyHint: true, openWorldHint: false };
|
|
2787
2841
|
var STRING_ARRAY = { type: "array", items: { type: "string" } };
|
|
2788
2842
|
var DIAGNOSTIC_SCHEMA = {
|
|
@@ -3458,7 +3512,6 @@ function callTool(context, name, args) {
|
|
|
3458
3512
|
}
|
|
3459
3513
|
}
|
|
3460
3514
|
|
|
3461
|
-
// src/inspector/mcp/server.ts
|
|
3462
3515
|
var LATEST_PROTOCOL_VERSION = "2025-06-18";
|
|
3463
3516
|
var SUPPORTED_PROTOCOL_VERSIONS = [
|
|
3464
3517
|
LATEST_PROTOCOL_VERSION,
|
|
@@ -3492,12 +3545,6 @@ var McpSession = class {
|
|
|
3492
3545
|
constructor(context) {
|
|
3493
3546
|
this.#context = context;
|
|
3494
3547
|
}
|
|
3495
|
-
/**
|
|
3496
|
-
* Handles one newline-delimited message.
|
|
3497
|
-
*
|
|
3498
|
-
* @returns The serialized response line, or null when no response is due
|
|
3499
|
-
* (blank lines and notifications).
|
|
3500
|
-
*/
|
|
3501
3548
|
handleLine(line) {
|
|
3502
3549
|
const trimmed = line.trim();
|
|
3503
3550
|
if (trimmed === "") return null;
|
|
@@ -3560,12 +3607,6 @@ var McpSession = class {
|
|
|
3560
3607
|
title: "Stimeo UI Inspector",
|
|
3561
3608
|
version: this.#context.manifest.packageVersion
|
|
3562
3609
|
},
|
|
3563
|
-
// The server's own account of itself. Per the MCP schema this is a hint
|
|
3564
|
-
// a client MAY put in front of the model, which makes it the earliest
|
|
3565
|
-
// point this server can be routed to — clients that defer tool
|
|
3566
|
-
// definitions still tend to load it alongside the tool names. Hence the
|
|
3567
|
-
// trigger condition first, in the words a request would use, and a
|
|
3568
|
-
// length that survives truncation.
|
|
3569
3610
|
instructions: "Search for these tools whenever a task involves building, editing, or reviewing an accessible UI component in a Rails view \u2014 dialog/modal, drawer, dropdown menu, tabs, accordion, combobox, toast, and the rest of the catalog \u2014 or whenever HTML/ERB carrying stimeo--* attributes is in play. Stimeo UI is a headless Stimulus UI framework for Rails. Use stimeo_catalog to discover controllers, stimeo_controller for one controller's usage and accessibility contract, stimeo_example for verified reference markup, and stimeo_check to validate generated HTML/ERB before presenting it. The full manifest and every example are also exposed as resources (stimeo:// URIs), and the stimeo_build_ui / stimeo_fix_markup prompts bake this workflow into user-invokable templates."
|
|
3570
3611
|
});
|
|
3571
3612
|
}
|
|
@@ -3585,7 +3626,6 @@ var McpSession = class {
|
|
|
3585
3626
|
return failure(id, JSONRPC_INTERNAL_ERROR, `Internal error: ${message}`);
|
|
3586
3627
|
}
|
|
3587
3628
|
}
|
|
3588
|
-
/** Static resource listing: the manifest plus one example per controller. */
|
|
3589
3629
|
#listResources() {
|
|
3590
3630
|
const resources = [
|
|
3591
3631
|
{
|
|
@@ -3678,7 +3718,6 @@ async function runMcpServer(io) {
|
|
|
3678
3718
|
});
|
|
3679
3719
|
}
|
|
3680
3720
|
|
|
3681
|
-
// src/inspector/cli_bin.ts
|
|
3682
3721
|
var argv = process2.argv.slice(2);
|
|
3683
3722
|
process2.stdout.on("error", (error) => {
|
|
3684
3723
|
process2.exit(error.code === "EPIPE" ? 0 : 1);
|
|
@@ -3699,8 +3738,6 @@ if (argv[0] === "mcp") {
|
|
|
3699
3738
|
`);
|
|
3700
3739
|
}
|
|
3701
3740
|
}).then(
|
|
3702
|
-
// Set the exit code instead of calling process.exit so any buffered
|
|
3703
|
-
// stdout responses are flushed before the process ends.
|
|
3704
3741
|
() => {
|
|
3705
3742
|
process2.exitCode = 0;
|
|
3706
3743
|
},
|
|
@@ -3716,5 +3753,4 @@ if (argv[0] === "mcp") {
|
|
|
3716
3753
|
} else {
|
|
3717
3754
|
process2.exitCode = runCli(argv);
|
|
3718
3755
|
}
|
|
3719
|
-
//# sourceMappingURL=cli_bin.js.map
|
|
3720
3756
|
//# sourceMappingURL=cli_bin.js.map
|