snice 4.35.1 → 4.36.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/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 +99 -31
- 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 +99 -31
- 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 +96 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +96 -28
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +96 -28
- 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.35.
|
|
2
|
+
* snice v4.35.1
|
|
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,13 +3133,13 @@ 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 to <style> tag
|
|
3140
|
+
// Fallback to <style> tag — concatenate all CSS
|
|
3120
3141
|
const style = document.createElement('style');
|
|
3121
|
-
style.textContent =
|
|
3142
|
+
style.textContent = allResults.map(r => r.cssText).join('\n');
|
|
3122
3143
|
element.shadowRoot.appendChild(style);
|
|
3123
3144
|
}
|
|
3124
3145
|
catch (error) {
|
|
@@ -3392,7 +3413,45 @@ var Snice = (function (exports) {
|
|
|
3392
3413
|
}
|
|
3393
3414
|
};
|
|
3394
3415
|
}
|
|
3416
|
+
/**
|
|
3417
|
+
* Walk the prototype chain and merge parent element metadata into the child.
|
|
3418
|
+
* Called once at class definition time — zero per-instance cost.
|
|
3419
|
+
* Skips plain HTMLElement (no metadata to merge).
|
|
3420
|
+
*
|
|
3421
|
+
* Only merges PROPERTIES (stored via context.metadata at decoration time)
|
|
3422
|
+
* and formAssociated. Other handler registrations (@watch, @on, @ready, etc.)
|
|
3423
|
+
* inherit automatically via TC39 addInitializer — parent initializers run
|
|
3424
|
+
* during child instance construction.
|
|
3425
|
+
*/
|
|
3426
|
+
function mergeParentMetadata(constructor) {
|
|
3427
|
+
let parent = Object.getPrototypeOf(constructor);
|
|
3428
|
+
// Collect ancestors bottom-up, then merge top-down so the deepest parent goes first
|
|
3429
|
+
const ancestors = [];
|
|
3430
|
+
while (parent && parent !== HTMLElement && parent !== Function.prototype) {
|
|
3431
|
+
ancestors.push(parent);
|
|
3432
|
+
parent = Object.getPrototypeOf(parent);
|
|
3433
|
+
}
|
|
3434
|
+
ancestors.reverse();
|
|
3435
|
+
for (const ancestor of ancestors) {
|
|
3436
|
+
// Properties (Map) — parent first, child overrides
|
|
3437
|
+
if (ancestor[PROPERTIES]) {
|
|
3438
|
+
if (!constructor[PROPERTIES])
|
|
3439
|
+
constructor[PROPERTIES] = new Map();
|
|
3440
|
+
for (const [key, value] of ancestor[PROPERTIES]) {
|
|
3441
|
+
if (!constructor[PROPERTIES].has(key)) {
|
|
3442
|
+
constructor[PROPERTIES].set(key, value);
|
|
3443
|
+
}
|
|
3444
|
+
}
|
|
3445
|
+
}
|
|
3446
|
+
// formAssociated — inherit if parent is form-associated
|
|
3447
|
+
if (ancestor.formAssociated && !constructor.formAssociated) {
|
|
3448
|
+
constructor.formAssociated = true;
|
|
3449
|
+
}
|
|
3450
|
+
}
|
|
3451
|
+
}
|
|
3395
3452
|
function defineElement(tagName, constructor, context, options) {
|
|
3453
|
+
// Merge metadata from parent @element classes (inheritance support)
|
|
3454
|
+
mergeParentMetadata(constructor);
|
|
3396
3455
|
if (context.metadata && context.metadata[PROPERTIES]) {
|
|
3397
3456
|
if (!constructor[PROPERTIES])
|
|
3398
3457
|
constructor[PROPERTIES] = new Map();
|
|
@@ -3446,8 +3505,12 @@ var Snice = (function (exports) {
|
|
|
3446
3505
|
}
|
|
3447
3506
|
// Always store property options on constructor for runtime access
|
|
3448
3507
|
constructor[PROPERTIES].set(propertyKey, finalOptions);
|
|
3449
|
-
// Set up the property descriptor
|
|
3450
|
-
|
|
3508
|
+
// Set up the property descriptor — re-define if a subclass overrides
|
|
3509
|
+
// the property with different options (different closure captures)
|
|
3510
|
+
const definerKey = `__propDef_${propertyKey}`;
|
|
3511
|
+
const existingDefiner = this.constructor.prototype[definerKey];
|
|
3512
|
+
if (!existingDefiner || existingDefiner !== options) {
|
|
3513
|
+
this.constructor.prototype[definerKey] = options;
|
|
3451
3514
|
const descriptor = {
|
|
3452
3515
|
get() {
|
|
3453
3516
|
// attribute: false — use internal storage only, no DOM sync
|
|
@@ -3583,12 +3646,15 @@ var Snice = (function (exports) {
|
|
|
3583
3646
|
function watch(...propertyNames) {
|
|
3584
3647
|
return function (target, context) {
|
|
3585
3648
|
const methodName = context.name;
|
|
3586
|
-
const initKey = `__watch_init_${methodName}`;
|
|
3587
3649
|
context.addInitializer(function () {
|
|
3588
3650
|
const constructor = this.constructor;
|
|
3589
|
-
|
|
3651
|
+
// Dedup by method reference — allows child classes to register
|
|
3652
|
+
// their own method with the same name as a parent's
|
|
3653
|
+
if (!constructor.__watchMethods)
|
|
3654
|
+
constructor.__watchMethods = new Set();
|
|
3655
|
+
if (constructor.__watchMethods.has(target))
|
|
3590
3656
|
return;
|
|
3591
|
-
constructor
|
|
3657
|
+
constructor.__watchMethods.add(target);
|
|
3592
3658
|
if (!constructor[PROPERTY_WATCHERS]) {
|
|
3593
3659
|
constructor[PROPERTY_WATCHERS] = new Map();
|
|
3594
3660
|
}
|
|
@@ -3659,12 +3725,14 @@ var Snice = (function (exports) {
|
|
|
3659
3725
|
}
|
|
3660
3726
|
function registerHandler(symbol, prefix, target, context, extra) {
|
|
3661
3727
|
const methodName = context.name;
|
|
3662
|
-
const initKey = `__${prefix}_init_${methodName}`;
|
|
3663
3728
|
context.addInitializer(function () {
|
|
3664
3729
|
const constructor = this.constructor;
|
|
3665
|
-
|
|
3730
|
+
const setKey = `__${prefix}Methods`;
|
|
3731
|
+
if (!constructor[setKey])
|
|
3732
|
+
constructor[setKey] = new Set();
|
|
3733
|
+
if (constructor[setKey].has(target))
|
|
3666
3734
|
return;
|
|
3667
|
-
constructor[
|
|
3735
|
+
constructor[setKey].add(target);
|
|
3668
3736
|
if (!constructor[symbol])
|
|
3669
3737
|
constructor[symbol] = [];
|
|
3670
3738
|
constructor[symbol].push({ methodName, method: target, ...extra });
|