snice 5.0.0 → 5.1.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/bin/templates/default/package.json +1 -1
- package/bin/templates/react/package.json +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/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/popover/snice-popover.js +1 -1
- package/dist/cdn/popover/snice-popover.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 +104 -44
- 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 +104 -44
- 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/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/context.d.ts +17 -7
- package/dist/index.cjs +101 -41
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +101 -41
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +101 -41
- 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/api.md +11 -5
- package/docs/ai/architecture.md +3 -5
- package/docs/ai/decorators.md +6 -1
- package/docs/ai/patterns.md +7 -13
- package/docs/elements.md +28 -21
- package/docs/routing.md +19 -10
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v5.
|
|
2
|
+
* snice v5.1.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.
|
|
@@ -8,7 +8,7 @@ var Snice = (function (exports) {
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
10
|
/*!
|
|
11
|
-
* snice
|
|
11
|
+
* snice v5.0.0
|
|
12
12
|
* 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.
|
|
13
13
|
* (c) 2024
|
|
14
14
|
* Released under the MIT License.
|
|
@@ -98,6 +98,7 @@ var Snice = (function (exports) {
|
|
|
98
98
|
const CONTEXT_TIMER = getSymbol('context-timer');
|
|
99
99
|
const CONTEXT_CALLED = getSymbol('context-called');
|
|
100
100
|
const CONTEXT_UPDATE = getSymbol('context-update');
|
|
101
|
+
const WRAPPED_CONTEXT_HANDLERS = getSymbol('wrapped-context-handlers');
|
|
101
102
|
// Registration de-dup sets on the constructor — replace previous `__*Methods`
|
|
102
103
|
// expando strings that violated the no-double-underscore rule.
|
|
103
104
|
const CONTEXT_METHODS = getSymbol('context-methods');
|
|
@@ -273,13 +274,17 @@ var Snice = (function (exports) {
|
|
|
273
274
|
const names = elementsMap.get(element);
|
|
274
275
|
if (!names)
|
|
275
276
|
continue;
|
|
276
|
-
|
|
277
|
-
|
|
277
|
+
const wrapped = element[WRAPPED_CONTEXT_HANDLERS];
|
|
278
|
+
if (!wrapped)
|
|
279
|
+
continue;
|
|
280
|
+
for (const handlerName of names) {
|
|
281
|
+
const fn = wrapped.get(handlerName);
|
|
282
|
+
if (typeof fn === 'function') {
|
|
278
283
|
try {
|
|
279
|
-
|
|
284
|
+
fn(this);
|
|
280
285
|
}
|
|
281
286
|
catch (error) {
|
|
282
|
-
console.error(`Error calling @context
|
|
287
|
+
console.error(`Error calling @context handler ${handlerName}:`, error);
|
|
283
288
|
}
|
|
284
289
|
}
|
|
285
290
|
}
|
|
@@ -294,10 +299,13 @@ var Snice = (function (exports) {
|
|
|
294
299
|
const names = this[REGISTERED_ELEMENTS].get(element);
|
|
295
300
|
if (!names)
|
|
296
301
|
return;
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
302
|
+
const wrapped = element[WRAPPED_CONTEXT_HANDLERS];
|
|
303
|
+
if (!wrapped)
|
|
304
|
+
return;
|
|
305
|
+
for (const handlerName of names) {
|
|
306
|
+
const fn = wrapped.get(handlerName);
|
|
307
|
+
if (typeof fn === 'function')
|
|
308
|
+
fn(this);
|
|
301
309
|
}
|
|
302
310
|
}
|
|
303
311
|
}
|
|
@@ -2966,46 +2974,78 @@ var Snice = (function (exports) {
|
|
|
2966
2974
|
/**
|
|
2967
2975
|
* @context decorator for receiving router context updates
|
|
2968
2976
|
*
|
|
2977
|
+
* Works on both methods and fields:
|
|
2978
|
+
*
|
|
2979
|
+
* - **Method form**: the method is invoked with the current Context on every
|
|
2980
|
+
* update (and once at register time so the first render sees the context).
|
|
2981
|
+
* - **Field form**: the field is overwritten with the current Context on
|
|
2982
|
+
* every update (and once at register time). Pair with `@property` if you
|
|
2983
|
+
* want assignment to also schedule a re-render.
|
|
2984
|
+
*
|
|
2969
2985
|
* @example
|
|
2970
2986
|
* ```typescript
|
|
2971
2987
|
* @element('my-layout')
|
|
2972
2988
|
* class MyLayout extends HTMLElement {
|
|
2973
|
-
*
|
|
2989
|
+
* // Method form
|
|
2990
|
+
* @context()
|
|
2974
2991
|
* handleContext(ctx: Context) {
|
|
2975
|
-
* this.renderNav(ctx.placards, ctx.
|
|
2992
|
+
* this.renderNav(ctx.navigation.placards, ctx.navigation.route);
|
|
2976
2993
|
* }
|
|
2977
2994
|
*
|
|
2978
|
-
*
|
|
2979
|
-
*
|
|
2980
|
-
*
|
|
2981
|
-
*
|
|
2995
|
+
* // Field form — the field is populated before first render
|
|
2996
|
+
* @context() ctx!: Context;
|
|
2997
|
+
*
|
|
2998
|
+
* // Field + @property — assignment also triggers re-render
|
|
2999
|
+
* @property({ attribute: false }) @context() reactiveCtx!: Context;
|
|
2982
3000
|
* }
|
|
2983
3001
|
* ```
|
|
2984
3002
|
*/
|
|
2985
3003
|
function context$1(options = {}) {
|
|
2986
|
-
return function (
|
|
2987
|
-
const
|
|
2988
|
-
|
|
3004
|
+
return function (value, decoratorContext) {
|
|
3005
|
+
const name = decoratorContext.name;
|
|
3006
|
+
const kind = decoratorContext.kind;
|
|
3007
|
+
const registerHandler = function () {
|
|
2989
3008
|
const constructor = this.constructor;
|
|
2990
|
-
//
|
|
2991
|
-
// the prototype chain.
|
|
3009
|
+
// De-dupe: methods identify by reference, fields identify by name.
|
|
2992
3010
|
if (!Object.prototype.hasOwnProperty.call(constructor, CONTEXT_METHODS)) {
|
|
2993
3011
|
constructor[CONTEXT_METHODS] = new Set();
|
|
2994
3012
|
}
|
|
2995
|
-
|
|
3013
|
+
const dedupeKey = kind === 'method' ? value : `field:${name}`;
|
|
3014
|
+
if (constructor[CONTEXT_METHODS].has(dedupeKey))
|
|
2996
3015
|
return;
|
|
2997
|
-
constructor[CONTEXT_METHODS].add(
|
|
3016
|
+
constructor[CONTEXT_METHODS].add(dedupeKey);
|
|
2998
3017
|
if (!Object.prototype.hasOwnProperty.call(constructor, CONTEXT_HANDLERS)) {
|
|
2999
3018
|
const inherited = constructor[CONTEXT_HANDLERS];
|
|
3000
3019
|
constructor[CONTEXT_HANDLERS] = inherited ? [...inherited] : [];
|
|
3001
3020
|
}
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3021
|
+
if (kind === 'method') {
|
|
3022
|
+
constructor[CONTEXT_HANDLERS].push({
|
|
3023
|
+
kind: 'method',
|
|
3024
|
+
methodName: name,
|
|
3025
|
+
method: value,
|
|
3026
|
+
options,
|
|
3027
|
+
});
|
|
3028
|
+
}
|
|
3029
|
+
else if (kind === 'field' || kind === 'accessor') {
|
|
3030
|
+
constructor[CONTEXT_HANDLERS].push({
|
|
3031
|
+
kind: 'field',
|
|
3032
|
+
fieldName: name,
|
|
3033
|
+
options,
|
|
3034
|
+
});
|
|
3035
|
+
}
|
|
3036
|
+
};
|
|
3037
|
+
if (kind === 'method') {
|
|
3038
|
+
decoratorContext.addInitializer(registerHandler);
|
|
3039
|
+
return value;
|
|
3040
|
+
}
|
|
3041
|
+
// Field decorators: do registration via the init function (fires per
|
|
3042
|
+
// instance during construction, with `this` bound). Returning the init
|
|
3043
|
+
// function is the canonical Stage 3 way for field decorators —
|
|
3044
|
+
// `addInitializer` for fields can be late or unreliable across runtimes.
|
|
3045
|
+
return function (initialValue) {
|
|
3046
|
+
registerHandler.call(this);
|
|
3047
|
+
return initialValue;
|
|
3048
|
+
};
|
|
3009
3049
|
};
|
|
3010
3050
|
}
|
|
3011
3051
|
/**
|
|
@@ -3024,18 +3064,30 @@ var Snice = (function (exports) {
|
|
|
3024
3064
|
}
|
|
3025
3065
|
// Store the Context instance for cleanup
|
|
3026
3066
|
element[NAVIGATION_CONTEXT_INSTANCE] = ctx;
|
|
3067
|
+
// Per-element Map of handler-name → wrapped function. Symbol-keyed so it
|
|
3068
|
+
// doesn't pollute the element's public surface.
|
|
3069
|
+
let wrapped = element[WRAPPED_CONTEXT_HANDLERS];
|
|
3070
|
+
if (!wrapped) {
|
|
3071
|
+
wrapped = new Map();
|
|
3072
|
+
element[WRAPPED_CONTEXT_HANDLERS] = wrapped;
|
|
3073
|
+
}
|
|
3027
3074
|
// Register each handler with the Context
|
|
3028
3075
|
for (const handler of handlers) {
|
|
3029
|
-
const {
|
|
3030
|
-
const
|
|
3076
|
+
const { kind, options } = handler;
|
|
3077
|
+
const handlerName = kind === 'field' ? handler.fieldName : handler.methodName;
|
|
3031
3078
|
// Create wrapped method with timing controls
|
|
3032
|
-
|
|
3079
|
+
const wrappedFn = function (context) {
|
|
3033
3080
|
// Skip if already called once
|
|
3034
3081
|
if (options.once && element[CONTEXT_CALLED]) {
|
|
3035
3082
|
return;
|
|
3036
3083
|
}
|
|
3037
3084
|
const callMethod = () => {
|
|
3038
|
-
|
|
3085
|
+
if (kind === 'field') {
|
|
3086
|
+
element[handler.fieldName] = context;
|
|
3087
|
+
}
|
|
3088
|
+
else {
|
|
3089
|
+
handler.method.call(element, context);
|
|
3090
|
+
}
|
|
3039
3091
|
// Handle once option
|
|
3040
3092
|
if (options.once) {
|
|
3041
3093
|
element[CONTEXT_CALLED] = true;
|
|
@@ -3050,7 +3102,7 @@ var Snice = (function (exports) {
|
|
|
3050
3102
|
// element overwriting each other's state.
|
|
3051
3103
|
const timerSlot = element[CONTEXT_TIMER] ||
|
|
3052
3104
|
(element[CONTEXT_TIMER] = {});
|
|
3053
|
-
const timerKey =
|
|
3105
|
+
const timerKey = handlerName;
|
|
3054
3106
|
if (options.debounce) {
|
|
3055
3107
|
clearTimeout(timerSlot[timerKey]?.timeout);
|
|
3056
3108
|
timerSlot[timerKey] = {
|
|
@@ -3069,9 +3121,20 @@ var Snice = (function (exports) {
|
|
|
3069
3121
|
}
|
|
3070
3122
|
callMethod();
|
|
3071
3123
|
};
|
|
3072
|
-
|
|
3124
|
+
wrapped.set(handlerName, wrappedFn);
|
|
3125
|
+
// Register with the Context using the handler name (lookup goes through
|
|
3126
|
+
// the WRAPPED_CONTEXT_HANDLERS Map on the element).
|
|
3073
3127
|
if (typeof ctx[CONTEXT_REGISTER] === 'function') {
|
|
3074
|
-
ctx[CONTEXT_REGISTER](element,
|
|
3128
|
+
ctx[CONTEXT_REGISTER](element, handlerName);
|
|
3129
|
+
}
|
|
3130
|
+
// Synchronously emit current context to the just-registered handler so
|
|
3131
|
+
// field/method values are populated BEFORE the first render microtask
|
|
3132
|
+
// flushes — eliminates the cold-render flicker where ctx is undefined.
|
|
3133
|
+
try {
|
|
3134
|
+
wrappedFn(ctx);
|
|
3135
|
+
}
|
|
3136
|
+
catch (error) {
|
|
3137
|
+
console.error(`Error invoking @context handler at registration:`, error);
|
|
3075
3138
|
}
|
|
3076
3139
|
}
|
|
3077
3140
|
}
|
|
@@ -3093,11 +3156,8 @@ var Snice = (function (exports) {
|
|
|
3093
3156
|
}
|
|
3094
3157
|
delete element[CONTEXT_TIMER];
|
|
3095
3158
|
}
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
const wrappedMethodName = `__wrapped_${handler.methodName}`;
|
|
3099
|
-
delete element[wrappedMethodName];
|
|
3100
|
-
}
|
|
3159
|
+
// Drop the per-element wrapped-handlers Map.
|
|
3160
|
+
delete element[WRAPPED_CONTEXT_HANDLERS];
|
|
3101
3161
|
// Unregister from Context if available
|
|
3102
3162
|
const ctx = element[NAVIGATION_CONTEXT_INSTANCE];
|
|
3103
3163
|
if (ctx && typeof ctx[CONTEXT_UNREGISTER] === 'function') {
|
|
@@ -6104,7 +6164,7 @@ var Snice = (function (exports) {
|
|
|
6104
6164
|
}
|
|
6105
6165
|
|
|
6106
6166
|
/*!
|
|
6107
|
-
* snice
|
|
6167
|
+
* snice v5.0.0
|
|
6108
6168
|
* 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.
|
|
6109
6169
|
* (c) 2024
|
|
6110
6170
|
* Released under the MIT License.
|
|
@@ -6123,7 +6183,7 @@ var Snice = (function (exports) {
|
|
|
6123
6183
|
}
|
|
6124
6184
|
|
|
6125
6185
|
/*!
|
|
6126
|
-
* snice
|
|
6186
|
+
* snice v5.0.0
|
|
6127
6187
|
* 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.
|
|
6128
6188
|
* (c) 2024
|
|
6129
6189
|
* Released under the MIT License.
|