snice 4.35.1 → 4.36.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/react/SniceProvider.js +1 -1
- package/adapters/react/SniceRouter.js +1 -1
- package/adapters/react/matchRoute.js +1 -1
- package/adapters/react/useRequestHandler.js +1 -1
- package/dist/cdn/accordion/snice-accordion.js +1 -1
- package/dist/cdn/accordion/snice-accordion.min.js +1 -1
- package/dist/cdn/action-bar/README.md +1 -1
- package/dist/cdn/action-bar/snice-action-bar.js +1 -1
- package/dist/cdn/action-bar/snice-action-bar.min.js +1 -1
- package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
- package/dist/cdn/activity-feed/snice-activity-feed.min.js +1 -1
- package/dist/cdn/alert/snice-alert.js +1 -1
- package/dist/cdn/alert/snice-alert.min.js +1 -1
- package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
- package/dist/cdn/app-tiles/snice-app-tiles.min.js +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.min.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
- package/dist/cdn/availability/snice-availability.js +1 -1
- package/dist/cdn/availability/snice-availability.min.js +1 -1
- package/dist/cdn/avatar/snice-avatar.js +1 -1
- package/dist/cdn/avatar/snice-avatar.min.js +1 -1
- package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
- package/dist/cdn/avatar-group/snice-avatar-group.min.js +1 -1
- package/dist/cdn/badge/snice-badge.js +1 -1
- package/dist/cdn/badge/snice-badge.min.js +1 -1
- package/dist/cdn/banner/snice-banner.js +1 -1
- package/dist/cdn/banner/snice-banner.min.js +1 -1
- package/dist/cdn/binpack/snice-binpack.js +1 -1
- package/dist/cdn/binpack/snice-binpack.min.js +1 -1
- package/dist/cdn/book/snice-book.js +1 -1
- package/dist/cdn/book/snice-book.min.js +1 -1
- package/dist/cdn/booking/snice-booking.js +1 -1
- package/dist/cdn/booking/snice-booking.min.js +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
- package/dist/cdn/button/snice-button.js +1 -1
- package/dist/cdn/button/snice-button.min.js +1 -1
- package/dist/cdn/calendar/snice-calendar.js +1 -1
- package/dist/cdn/calendar/snice-calendar.min.js +1 -1
- package/dist/cdn/camera/snice-camera.js +1 -1
- package/dist/cdn/camera/snice-camera.min.js +1 -1
- package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
- package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
- package/dist/cdn/candlestick/snice-candlestick.js +1 -1
- package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
- package/dist/cdn/card/snice-card.js +1 -1
- package/dist/cdn/card/snice-card.min.js +1 -1
- package/dist/cdn/carousel/snice-carousel.js +1 -1
- package/dist/cdn/carousel/snice-carousel.min.js +1 -1
- package/dist/cdn/cart/snice-cart.js +1 -1
- package/dist/cdn/cart/snice-cart.min.js +1 -1
- package/dist/cdn/chart/snice-chart.js +1 -1
- package/dist/cdn/chart/snice-chart.min.js +1 -1
- package/dist/cdn/chat/snice-chat.js +1 -1
- package/dist/cdn/chat/snice-chat.min.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
- package/dist/cdn/chip/snice-chip.js +1 -1
- package/dist/cdn/chip/snice-chip.min.js +1 -1
- package/dist/cdn/code-block/snice-code-block.js +1 -1
- package/dist/cdn/code-block/snice-code-block.min.js +1 -1
- package/dist/cdn/color-display/snice-color-display.js +1 -1
- package/dist/cdn/color-display/snice-color-display.min.js +1 -1
- package/dist/cdn/color-picker/snice-color-picker.js +1 -1
- package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
- package/dist/cdn/comments/snice-comments.js +1 -1
- package/dist/cdn/comments/snice-comments.min.js +1 -1
- package/dist/cdn/countdown/snice-countdown.js +1 -1
- package/dist/cdn/countdown/snice-countdown.min.js +1 -1
- package/dist/cdn/cropper/snice-cropper.js +1 -1
- package/dist/cdn/cropper/snice-cropper.min.js +1 -1
- package/dist/cdn/data-card/snice-data-card.js +1 -1
- package/dist/cdn/data-card/snice-data-card.min.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.min.js +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +1 -1
- package/dist/cdn/diff/snice-diff.js +1 -1
- package/dist/cdn/diff/snice-diff.min.js +1 -1
- package/dist/cdn/divider/snice-divider.js +1 -1
- package/dist/cdn/divider/snice-divider.min.js +1 -1
- package/dist/cdn/doc/snice-doc.js +1 -1
- package/dist/cdn/doc/snice-doc.min.js +1 -1
- package/dist/cdn/draw/snice-draw.js +1 -1
- package/dist/cdn/draw/snice-draw.min.js +1 -1
- package/dist/cdn/drawer/snice-drawer.js +1 -1
- package/dist/cdn/drawer/snice-drawer.min.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
- package/dist/cdn/estimate/snice-estimate.js +1 -1
- package/dist/cdn/estimate/snice-estimate.min.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
- package/dist/cdn/flip-card/snice-flip-card.js +1 -1
- package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
- package/dist/cdn/flow/snice-flow.js +1 -1
- package/dist/cdn/flow/snice-flow.min.js +1 -1
- package/dist/cdn/form-layout/snice-form-layout.js +1 -1
- package/dist/cdn/form-layout/snice-form-layout.min.js +1 -1
- package/dist/cdn/funnel/snice-funnel.js +1 -1
- package/dist/cdn/funnel/snice-funnel.min.js +1 -1
- package/dist/cdn/gantt/snice-gantt.js +1 -1
- package/dist/cdn/gantt/snice-gantt.min.js +1 -1
- package/dist/cdn/gauge/snice-gauge.js +1 -1
- package/dist/cdn/gauge/snice-gauge.min.js +1 -1
- package/dist/cdn/grid/snice-grid.js +1 -1
- package/dist/cdn/grid/snice-grid.min.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
- package/dist/cdn/image/snice-image.js +1 -1
- package/dist/cdn/image/snice-image.min.js +1 -1
- package/dist/cdn/input/snice-input.js +1 -1
- package/dist/cdn/input/snice-input.min.js +1 -1
- package/dist/cdn/invoice/snice-invoice.js +1 -1
- package/dist/cdn/invoice/snice-invoice.min.js +1 -1
- package/dist/cdn/kanban/snice-kanban.js +1 -1
- package/dist/cdn/kanban/snice-kanban.min.js +1 -1
- package/dist/cdn/key-value/snice-key-value.js +1 -1
- package/dist/cdn/key-value/snice-key-value.min.js +1 -1
- package/dist/cdn/kpi/snice-kpi.js +1 -1
- package/dist/cdn/kpi/snice-kpi.min.js +1 -1
- package/dist/cdn/layout/snice-layout.js +1 -1
- package/dist/cdn/layout/snice-layout.min.js +1 -1
- package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
- package/dist/cdn/leaderboard/snice-leaderboard.min.js +1 -1
- package/dist/cdn/link/snice-link.js +1 -1
- package/dist/cdn/link/snice-link.min.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
- package/dist/cdn/list/snice-list.js +1 -1
- package/dist/cdn/list/snice-list.min.js +1 -1
- package/dist/cdn/location/snice-location.js +1 -1
- package/dist/cdn/location/snice-location.min.js +1 -1
- package/dist/cdn/login/snice-login.js +1 -1
- package/dist/cdn/login/snice-login.min.js +1 -1
- package/dist/cdn/map/snice-map.js +1 -1
- package/dist/cdn/map/snice-map.min.js +1 -1
- package/dist/cdn/markdown/snice-markdown.js +1 -1
- package/dist/cdn/markdown/snice-markdown.min.js +1 -1
- package/dist/cdn/masonry/snice-masonry.js +1 -1
- package/dist/cdn/masonry/snice-masonry.min.js +1 -1
- package/dist/cdn/menu/snice-menu.js +1 -1
- package/dist/cdn/menu/snice-menu.min.js +1 -1
- package/dist/cdn/message-strip/snice-message-strip.js +1 -1
- package/dist/cdn/message-strip/snice-message-strip.min.js +1 -1
- package/dist/cdn/metric-table/snice-metric-table.js +1 -1
- package/dist/cdn/metric-table/snice-metric-table.min.js +1 -1
- package/dist/cdn/modal/snice-modal.js +1 -1
- package/dist/cdn/modal/snice-modal.min.js +1 -1
- package/dist/cdn/music-player/snice-music-player.js +1 -1
- package/dist/cdn/music-player/snice-music-player.min.js +1 -1
- package/dist/cdn/nav/snice-nav.js +1 -1
- package/dist/cdn/nav/snice-nav.min.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
- package/dist/cdn/notification-center/snice-notification-center.js +1 -1
- package/dist/cdn/notification-center/snice-notification-center.min.js +1 -1
- package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
- package/dist/cdn/order-tracker/snice-order-tracker.min.js +1 -1
- package/dist/cdn/org-chart/snice-org-chart.js +1 -1
- package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
- package/dist/cdn/pagination/snice-pagination.js +1 -1
- package/dist/cdn/pagination/snice-pagination.min.js +1 -1
- package/dist/cdn/paint/snice-paint.js +1 -1
- package/dist/cdn/paint/snice-paint.min.js +1 -1
- package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
- package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
- package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
- package/dist/cdn/permission-matrix/snice-permission-matrix.min.js +1 -1
- package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
- package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
- package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
- package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
- package/dist/cdn/product-card/snice-product-card.js +1 -1
- package/dist/cdn/product-card/snice-product-card.min.js +1 -1
- package/dist/cdn/progress/snice-progress.js +1 -1
- package/dist/cdn/progress/snice-progress.min.js +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.min.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
- package/dist/cdn/radio/snice-radio.js +1 -1
- package/dist/cdn/radio/snice-radio.min.js +1 -1
- package/dist/cdn/range-slider/snice-range-slider.js +1 -1
- package/dist/cdn/range-slider/snice-range-slider.min.js +1 -1
- package/dist/cdn/rating/snice-rating.js +1 -1
- package/dist/cdn/rating/snice-rating.min.js +1 -1
- package/dist/cdn/receipt/snice-receipt.js +1 -1
- package/dist/cdn/receipt/snice-receipt.min.js +1 -1
- package/dist/cdn/recipe/snice-recipe.js +1 -1
- package/dist/cdn/recipe/snice-recipe.min.js +1 -1
- package/dist/cdn/runtime/README.md +2 -2
- package/dist/cdn/runtime/snice-runtime.esm.js +103 -33
- package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.min.js +8 -8
- package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.js +103 -33
- package/dist/cdn/runtime/snice-runtime.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.min.js +8 -8
- package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
- package/dist/cdn/sankey/snice-sankey.js +1 -1
- package/dist/cdn/sankey/snice-sankey.min.js +1 -1
- package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
- package/dist/cdn/segmented-control/snice-segmented-control.min.js +1 -1
- package/dist/cdn/select/snice-select.js +1 -1
- package/dist/cdn/select/snice-select.min.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
- package/dist/cdn/slider/snice-slider.js +1 -1
- package/dist/cdn/slider/snice-slider.min.js +1 -1
- package/dist/cdn/sortable/snice-sortable.js +1 -1
- package/dist/cdn/sortable/snice-sortable.min.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
- package/dist/cdn/spinner/snice-spinner.js +1 -1
- package/dist/cdn/spinner/snice-spinner.min.js +1 -1
- package/dist/cdn/split-button/snice-split-button.js +1 -1
- package/dist/cdn/split-button/snice-split-button.min.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
- package/dist/cdn/spotlight/snice-spotlight.js +1 -1
- package/dist/cdn/spotlight/snice-spotlight.min.js +1 -1
- package/dist/cdn/spreadsheet/snice-spreadsheet.js +1 -1
- package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +1 -1
- package/dist/cdn/stat-group/snice-stat-group.js +1 -1
- package/dist/cdn/stat-group/snice-stat-group.min.js +1 -1
- package/dist/cdn/step-input/snice-step-input.js +1 -1
- package/dist/cdn/step-input/snice-step-input.min.js +1 -1
- package/dist/cdn/stepper/snice-stepper.js +1 -1
- package/dist/cdn/stepper/snice-stepper.min.js +1 -1
- package/dist/cdn/switch/snice-switch.js +1 -1
- package/dist/cdn/switch/snice-switch.min.js +1 -1
- package/dist/cdn/table/snice-table.js +1 -1
- package/dist/cdn/table/snice-table.min.js +1 -1
- package/dist/cdn/tabs/snice-tabs.js +1 -1
- package/dist/cdn/tabs/snice-tabs.min.js +1 -1
- package/dist/cdn/tag/snice-tag.js +1 -1
- package/dist/cdn/tag/snice-tag.min.js +1 -1
- package/dist/cdn/tag-input/snice-tag-input.js +1 -1
- package/dist/cdn/tag-input/snice-tag-input.min.js +1 -1
- package/dist/cdn/terminal/snice-terminal.js +1 -1
- package/dist/cdn/terminal/snice-terminal.min.js +1 -1
- package/dist/cdn/testimonial/snice-testimonial.js +1 -1
- package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
- package/dist/cdn/textarea/snice-textarea.js +1 -1
- package/dist/cdn/textarea/snice-textarea.min.js +1 -1
- package/dist/cdn/time-picker/snice-time-picker.js +1 -1
- package/dist/cdn/time-picker/snice-time-picker.min.js +1 -1
- package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
- package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
- package/dist/cdn/timeline/snice-timeline.js +1 -1
- package/dist/cdn/timeline/snice-timeline.min.js +1 -1
- package/dist/cdn/timer/snice-timer.js +1 -1
- package/dist/cdn/timer/snice-timer.min.js +1 -1
- package/dist/cdn/toast/snice-toast.js +1 -1
- package/dist/cdn/toast/snice-toast.min.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
- package/dist/cdn/tree/snice-tree.js +1 -1
- package/dist/cdn/tree/snice-tree.min.js +1 -1
- package/dist/cdn/treemap/snice-treemap.js +1 -1
- package/dist/cdn/treemap/snice-treemap.min.js +1 -1
- package/dist/cdn/user-card/snice-user-card.js +1 -1
- package/dist/cdn/user-card/snice-user-card.min.js +1 -1
- package/dist/cdn/video-player/snice-video-player.js +1 -1
- package/dist/cdn/video-player/snice-video-player.min.js +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
- package/dist/cdn/waterfall/snice-waterfall.js +1 -1
- package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
- package/dist/cdn/weather/snice-weather.js +1 -1
- package/dist/cdn/weather/snice-weather.min.js +1 -1
- package/dist/cdn/work-order/snice-work-order.js +1 -1
- package/dist/cdn/work-order/snice-work-order.min.js +1 -1
- package/dist/index.cjs +100 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +100 -30
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +100 -30
- package/dist/index.iife.js.map +1 -1
- package/dist/react/SniceProvider.js +1 -1
- package/dist/react/SniceRouter.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/matchRoute.js +1 -1
- package/dist/react/useRequestHandler.js +1 -1
- package/dist/symbols.cjs +3 -1
- package/dist/symbols.cjs.map +1 -1
- package/dist/symbols.d.ts +1 -0
- package/dist/symbols.esm.js +3 -2
- package/dist/symbols.esm.js.map +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/patterns.md +28 -0
- package/docs/elements.md +79 -0
- package/package.json +1 -1
package/dist/index.iife.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v4.
|
|
2
|
+
* snice v4.36.0
|
|
3
3
|
* A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
|
|
4
4
|
* (c) 2024
|
|
5
5
|
* Released under the MIT License.
|
|
@@ -77,6 +77,7 @@ var Snice = (function (exports) {
|
|
|
77
77
|
const RENDER_CALLBACKS = getSymbol('render-callbacks');
|
|
78
78
|
const STYLES_METHOD = getSymbol('styles-method');
|
|
79
79
|
const STYLES_APPLIED = getSymbol('styles-applied');
|
|
80
|
+
const PARENT_STYLES_METHODS = getSymbol('parent-styles-methods');
|
|
80
81
|
// Navigation context symbols
|
|
81
82
|
const CONTEXT_HANDLER = getSymbol('context-handler');
|
|
82
83
|
const NAVIGATION_CONTEXT_INSTANCE = getSymbol('navigation-context-instance');
|
|
@@ -487,12 +488,13 @@ var Snice = (function (exports) {
|
|
|
487
488
|
}
|
|
488
489
|
return function (target, context) {
|
|
489
490
|
const propertyKey = context.name;
|
|
490
|
-
const initKey = `__observe_init_${propertyKey}`;
|
|
491
491
|
context.addInitializer(function () {
|
|
492
492
|
const constructor = this.constructor;
|
|
493
|
-
if (constructor
|
|
493
|
+
if (!constructor.__observeMethods)
|
|
494
|
+
constructor.__observeMethods = new Set();
|
|
495
|
+
if (constructor.__observeMethods.has(target))
|
|
494
496
|
return;
|
|
495
|
-
constructor
|
|
497
|
+
constructor.__observeMethods.add(target);
|
|
496
498
|
if (!constructor[OBSERVERS]) {
|
|
497
499
|
constructor[OBSERVERS] = [];
|
|
498
500
|
}
|
|
@@ -903,12 +905,13 @@ var Snice = (function (exports) {
|
|
|
903
905
|
function respond(requestName, options) {
|
|
904
906
|
return function (target, context) {
|
|
905
907
|
const propertyKey = context.name;
|
|
906
|
-
const initKey = `__respond_init_${requestName}_${propertyKey}`;
|
|
907
908
|
context.addInitializer(function () {
|
|
908
909
|
const constructor = this.constructor;
|
|
909
|
-
if (constructor
|
|
910
|
+
if (!constructor.__respondMethods)
|
|
911
|
+
constructor.__respondMethods = new Set();
|
|
912
|
+
if (constructor.__respondMethods.has(target))
|
|
910
913
|
return;
|
|
911
|
-
constructor
|
|
914
|
+
constructor.__respondMethods.add(target);
|
|
912
915
|
if (!constructor[CHANNEL_HANDLERS]) {
|
|
913
916
|
constructor[CHANNEL_HANDLERS] = [];
|
|
914
917
|
}
|
|
@@ -2251,14 +2254,14 @@ var Snice = (function (exports) {
|
|
|
2251
2254
|
}
|
|
2252
2255
|
return function (originalMethod, context) {
|
|
2253
2256
|
const methodName = context.name;
|
|
2254
|
-
const initKey = `__on_init_${methodName}_${selector || ''}_${JSON.stringify(eventName)}`;
|
|
2255
2257
|
context.addInitializer(function () {
|
|
2256
2258
|
const constructor = this.constructor;
|
|
2257
|
-
//
|
|
2258
|
-
if (constructor
|
|
2259
|
+
// Dedup by method reference — allows child to register same-named methods
|
|
2260
|
+
if (!constructor.__onMethods)
|
|
2261
|
+
constructor.__onMethods = new Set();
|
|
2262
|
+
if (constructor.__onMethods.has(originalMethod))
|
|
2259
2263
|
return;
|
|
2260
|
-
|
|
2261
|
-
constructor[initKey] = true;
|
|
2264
|
+
constructor.__onMethods.add(originalMethod);
|
|
2262
2265
|
if (!constructor[ON_HANDLERS]) {
|
|
2263
2266
|
constructor[ON_HANDLERS] = [];
|
|
2264
2267
|
}
|
|
@@ -2752,12 +2755,13 @@ var Snice = (function (exports) {
|
|
|
2752
2755
|
function context$1(options = {}) {
|
|
2753
2756
|
return function (originalMethod, context) {
|
|
2754
2757
|
const methodName = context.name;
|
|
2755
|
-
const initKey = `__context_init_${methodName}`;
|
|
2756
2758
|
context.addInitializer(function () {
|
|
2757
2759
|
const constructor = this.constructor;
|
|
2758
|
-
if (constructor
|
|
2760
|
+
if (!constructor.__contextMethods)
|
|
2761
|
+
constructor.__contextMethods = new Set();
|
|
2762
|
+
if (constructor.__contextMethods.has(originalMethod))
|
|
2759
2763
|
return;
|
|
2760
|
-
constructor
|
|
2764
|
+
constructor.__contextMethods.add(originalMethod);
|
|
2761
2765
|
if (!constructor[CONTEXT_HANDLERS]) {
|
|
2762
2766
|
constructor[CONTEXT_HANDLERS] = [];
|
|
2763
2767
|
}
|
|
@@ -3081,7 +3085,13 @@ var Snice = (function (exports) {
|
|
|
3081
3085
|
function styles() {
|
|
3082
3086
|
return function (originalMethod, context) {
|
|
3083
3087
|
context.addInitializer(function () {
|
|
3084
|
-
//
|
|
3088
|
+
// Collect parent styles methods before overwriting with child's
|
|
3089
|
+
if (this[STYLES_METHOD] && !this[PARENT_STYLES_METHODS]) {
|
|
3090
|
+
this[PARENT_STYLES_METHODS] = [this[STYLES_METHOD]];
|
|
3091
|
+
}
|
|
3092
|
+
else if (this[STYLES_METHOD] && this[PARENT_STYLES_METHODS]) {
|
|
3093
|
+
this[PARENT_STYLES_METHODS].push(this[STYLES_METHOD]);
|
|
3094
|
+
}
|
|
3085
3095
|
this[STYLES_METHOD] = originalMethod;
|
|
3086
3096
|
});
|
|
3087
3097
|
return originalMethod;
|
|
@@ -3100,11 +3110,22 @@ var Snice = (function (exports) {
|
|
|
3100
3110
|
return;
|
|
3101
3111
|
element[STYLES_APPLIED] = true;
|
|
3102
3112
|
try {
|
|
3113
|
+
// Collect all CSS results: parent styles first, then child styles
|
|
3114
|
+
const allResults = [];
|
|
3115
|
+
const parentMethods = element[PARENT_STYLES_METHODS];
|
|
3116
|
+
if (parentMethods) {
|
|
3117
|
+
for (const method of parentMethods) {
|
|
3118
|
+
const r = method.call(element);
|
|
3119
|
+
if (isCSSResult(r))
|
|
3120
|
+
allResults.push(r);
|
|
3121
|
+
}
|
|
3122
|
+
}
|
|
3103
3123
|
const result = stylesMethod.call(element);
|
|
3104
3124
|
if (!isCSSResult(result)) {
|
|
3105
3125
|
console.warn('Styles method must return css`` template result');
|
|
3106
3126
|
return;
|
|
3107
3127
|
}
|
|
3128
|
+
allResults.push(result);
|
|
3108
3129
|
// Ensure shadow root exists
|
|
3109
3130
|
if (!element.shadowRoot) {
|
|
3110
3131
|
element.attachShadow({ mode: 'open' });
|
|
@@ -3112,14 +3133,16 @@ var Snice = (function (exports) {
|
|
|
3112
3133
|
if (!element.shadowRoot)
|
|
3113
3134
|
return;
|
|
3114
3135
|
// Prefer constructable stylesheets
|
|
3115
|
-
if (
|
|
3116
|
-
element.shadowRoot.adoptedStyleSheets =
|
|
3136
|
+
if (allResults.every(r => !!r.styleSheet) && 'adoptedStyleSheets' in element.shadowRoot) {
|
|
3137
|
+
element.shadowRoot.adoptedStyleSheets = allResults.map(r => r.styleSheet);
|
|
3117
3138
|
return;
|
|
3118
3139
|
}
|
|
3119
|
-
// Fallback
|
|
3120
|
-
const
|
|
3121
|
-
|
|
3122
|
-
|
|
3140
|
+
// Fallback — one <style> tag per stylesheet, preserving cascade order
|
|
3141
|
+
for (const r of allResults) {
|
|
3142
|
+
const style = document.createElement('style');
|
|
3143
|
+
style.textContent = r.cssText;
|
|
3144
|
+
element.shadowRoot.appendChild(style);
|
|
3145
|
+
}
|
|
3123
3146
|
}
|
|
3124
3147
|
catch (error) {
|
|
3125
3148
|
console.error('Error applying styles:', error);
|
|
@@ -3392,7 +3415,45 @@ var Snice = (function (exports) {
|
|
|
3392
3415
|
}
|
|
3393
3416
|
};
|
|
3394
3417
|
}
|
|
3418
|
+
/**
|
|
3419
|
+
* Walk the prototype chain and merge parent element metadata into the child.
|
|
3420
|
+
* Called once at class definition time — zero per-instance cost.
|
|
3421
|
+
* Skips plain HTMLElement (no metadata to merge).
|
|
3422
|
+
*
|
|
3423
|
+
* Only merges PROPERTIES (stored via context.metadata at decoration time)
|
|
3424
|
+
* and formAssociated. Other handler registrations (@watch, @on, @ready, etc.)
|
|
3425
|
+
* inherit automatically via TC39 addInitializer — parent initializers run
|
|
3426
|
+
* during child instance construction.
|
|
3427
|
+
*/
|
|
3428
|
+
function mergeParentMetadata(constructor) {
|
|
3429
|
+
let parent = Object.getPrototypeOf(constructor);
|
|
3430
|
+
// Collect ancestors bottom-up, then merge top-down so the deepest parent goes first
|
|
3431
|
+
const ancestors = [];
|
|
3432
|
+
while (parent && parent !== HTMLElement && parent !== Function.prototype) {
|
|
3433
|
+
ancestors.push(parent);
|
|
3434
|
+
parent = Object.getPrototypeOf(parent);
|
|
3435
|
+
}
|
|
3436
|
+
ancestors.reverse();
|
|
3437
|
+
for (const ancestor of ancestors) {
|
|
3438
|
+
// Properties (Map) — parent first, child overrides
|
|
3439
|
+
if (ancestor[PROPERTIES]) {
|
|
3440
|
+
if (!constructor[PROPERTIES])
|
|
3441
|
+
constructor[PROPERTIES] = new Map();
|
|
3442
|
+
for (const [key, value] of ancestor[PROPERTIES]) {
|
|
3443
|
+
if (!constructor[PROPERTIES].has(key)) {
|
|
3444
|
+
constructor[PROPERTIES].set(key, value);
|
|
3445
|
+
}
|
|
3446
|
+
}
|
|
3447
|
+
}
|
|
3448
|
+
// formAssociated — inherit if parent is form-associated
|
|
3449
|
+
if (ancestor.formAssociated && !constructor.formAssociated) {
|
|
3450
|
+
constructor.formAssociated = true;
|
|
3451
|
+
}
|
|
3452
|
+
}
|
|
3453
|
+
}
|
|
3395
3454
|
function defineElement(tagName, constructor, context, options) {
|
|
3455
|
+
// Merge metadata from parent @element classes (inheritance support)
|
|
3456
|
+
mergeParentMetadata(constructor);
|
|
3396
3457
|
if (context.metadata && context.metadata[PROPERTIES]) {
|
|
3397
3458
|
if (!constructor[PROPERTIES])
|
|
3398
3459
|
constructor[PROPERTIES] = new Map();
|
|
@@ -3446,8 +3507,12 @@ var Snice = (function (exports) {
|
|
|
3446
3507
|
}
|
|
3447
3508
|
// Always store property options on constructor for runtime access
|
|
3448
3509
|
constructor[PROPERTIES].set(propertyKey, finalOptions);
|
|
3449
|
-
// Set up the property descriptor
|
|
3450
|
-
|
|
3510
|
+
// Set up the property descriptor — re-define if a subclass overrides
|
|
3511
|
+
// the property with different options (different closure captures)
|
|
3512
|
+
const definerKey = `__propDef_${propertyKey}`;
|
|
3513
|
+
const existingDefiner = this.constructor.prototype[definerKey];
|
|
3514
|
+
if (!existingDefiner || existingDefiner !== options) {
|
|
3515
|
+
this.constructor.prototype[definerKey] = options;
|
|
3451
3516
|
const descriptor = {
|
|
3452
3517
|
get() {
|
|
3453
3518
|
// attribute: false — use internal storage only, no DOM sync
|
|
@@ -3583,12 +3648,15 @@ var Snice = (function (exports) {
|
|
|
3583
3648
|
function watch(...propertyNames) {
|
|
3584
3649
|
return function (target, context) {
|
|
3585
3650
|
const methodName = context.name;
|
|
3586
|
-
const initKey = `__watch_init_${methodName}`;
|
|
3587
3651
|
context.addInitializer(function () {
|
|
3588
3652
|
const constructor = this.constructor;
|
|
3589
|
-
|
|
3653
|
+
// Dedup by method reference — allows child classes to register
|
|
3654
|
+
// their own method with the same name as a parent's
|
|
3655
|
+
if (!constructor.__watchMethods)
|
|
3656
|
+
constructor.__watchMethods = new Set();
|
|
3657
|
+
if (constructor.__watchMethods.has(target))
|
|
3590
3658
|
return;
|
|
3591
|
-
constructor
|
|
3659
|
+
constructor.__watchMethods.add(target);
|
|
3592
3660
|
if (!constructor[PROPERTY_WATCHERS]) {
|
|
3593
3661
|
constructor[PROPERTY_WATCHERS] = new Map();
|
|
3594
3662
|
}
|
|
@@ -3659,12 +3727,14 @@ var Snice = (function (exports) {
|
|
|
3659
3727
|
}
|
|
3660
3728
|
function registerHandler(symbol, prefix, target, context, extra) {
|
|
3661
3729
|
const methodName = context.name;
|
|
3662
|
-
const initKey = `__${prefix}_init_${methodName}`;
|
|
3663
3730
|
context.addInitializer(function () {
|
|
3664
3731
|
const constructor = this.constructor;
|
|
3665
|
-
|
|
3732
|
+
const setKey = `__${prefix}Methods`;
|
|
3733
|
+
if (!constructor[setKey])
|
|
3734
|
+
constructor[setKey] = new Set();
|
|
3735
|
+
if (constructor[setKey].has(target))
|
|
3666
3736
|
return;
|
|
3667
|
-
constructor[
|
|
3737
|
+
constructor[setKey].add(target);
|
|
3668
3738
|
if (!constructor[symbol])
|
|
3669
3739
|
constructor[symbol] = [];
|
|
3670
3740
|
constructor[symbol].push({ methodName, method: target, ...extra });
|