snice 5.2.2 → 6.0.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/README.md +5 -8
- package/adapters/react/SniceProvider.js +1 -1
- package/adapters/react/SniceRouter.js +1 -1
- package/adapters/react/audio-recorder.d.ts +0 -4
- package/adapters/react/audio-recorder.d.ts.map +1 -1
- package/adapters/react/audio-recorder.js +1 -1
- package/adapters/react/audio-recorder.js.map +1 -1
- package/adapters/react/audio-recorder.tsx +1 -5
- package/adapters/react/avatar.d.ts +0 -1
- package/adapters/react/avatar.d.ts.map +1 -1
- package/adapters/react/avatar.js +1 -1
- package/adapters/react/avatar.js.map +1 -1
- package/adapters/react/avatar.tsx +1 -2
- package/adapters/react/breadcrumbs.d.ts +0 -1
- package/adapters/react/breadcrumbs.d.ts.map +1 -1
- package/adapters/react/breadcrumbs.js +1 -1
- package/adapters/react/breadcrumbs.js.map +1 -1
- package/adapters/react/breadcrumbs.tsx +1 -2
- package/adapters/react/camera-annotate.d.ts +0 -5
- package/adapters/react/camera-annotate.d.ts.map +1 -1
- package/adapters/react/camera-annotate.js +1 -1
- package/adapters/react/camera-annotate.js.map +1 -1
- package/adapters/react/camera-annotate.tsx +1 -6
- package/adapters/react/card.d.ts +0 -2
- package/adapters/react/card.d.ts.map +1 -1
- package/adapters/react/card.js +1 -1
- package/adapters/react/card.js.map +1 -1
- package/adapters/react/card.tsx +1 -3
- package/adapters/react/carousel.d.ts +0 -1
- package/adapters/react/carousel.d.ts.map +1 -1
- package/adapters/react/carousel.js +1 -1
- package/adapters/react/carousel.js.map +1 -1
- package/adapters/react/carousel.tsx +1 -2
- package/adapters/react/cart.d.ts +0 -1
- package/adapters/react/cart.d.ts.map +1 -1
- package/adapters/react/cart.js +1 -1
- package/adapters/react/cart.js.map +1 -1
- package/adapters/react/cart.tsx +1 -2
- package/adapters/react/chart.d.ts +0 -5
- package/adapters/react/chart.d.ts.map +1 -1
- package/adapters/react/chart.js +1 -1
- package/adapters/react/chart.js.map +1 -1
- package/adapters/react/chart.tsx +1 -6
- package/adapters/react/chat.d.ts +4 -1
- package/adapters/react/chat.d.ts.map +1 -1
- package/adapters/react/chat.js +2 -2
- package/adapters/react/chat.js.map +1 -1
- package/adapters/react/chat.tsx +6 -3
- package/adapters/react/chip.d.ts +0 -1
- package/adapters/react/chip.d.ts.map +1 -1
- package/adapters/react/chip.js +1 -1
- package/adapters/react/chip.js.map +1 -1
- package/adapters/react/chip.tsx +1 -2
- package/adapters/react/command-palette.d.ts +0 -4
- package/adapters/react/command-palette.d.ts.map +1 -1
- package/adapters/react/command-palette.js +1 -1
- package/adapters/react/command-palette.js.map +1 -1
- package/adapters/react/command-palette.tsx +1 -5
- package/adapters/react/comments.d.ts +0 -1
- package/adapters/react/comments.d.ts.map +1 -1
- package/adapters/react/comments.js +1 -1
- package/adapters/react/comments.js.map +1 -1
- package/adapters/react/comments.tsx +1 -2
- package/adapters/react/countdown.d.ts +0 -4
- package/adapters/react/countdown.d.ts.map +1 -1
- package/adapters/react/countdown.js +1 -1
- package/adapters/react/countdown.js.map +1 -1
- package/adapters/react/countdown.tsx +1 -5
- package/adapters/react/date-time-picker.d.ts +0 -1
- package/adapters/react/date-time-picker.d.ts.map +1 -1
- package/adapters/react/date-time-picker.js +1 -1
- package/adapters/react/date-time-picker.js.map +1 -1
- package/adapters/react/date-time-picker.tsx +1 -2
- package/adapters/react/file-upload.d.ts +0 -2
- package/adapters/react/file-upload.d.ts.map +1 -1
- package/adapters/react/file-upload.js +1 -1
- package/adapters/react/file-upload.js.map +1 -1
- package/adapters/react/file-upload.tsx +1 -3
- package/adapters/react/heatmap.d.ts +0 -4
- package/adapters/react/heatmap.d.ts.map +1 -1
- package/adapters/react/heatmap.js +1 -1
- package/adapters/react/heatmap.js.map +1 -1
- package/adapters/react/heatmap.tsx +1 -5
- package/adapters/react/image.d.ts +0 -2
- package/adapters/react/image.d.ts.map +1 -1
- package/adapters/react/image.js +1 -1
- package/adapters/react/image.js.map +1 -1
- package/adapters/react/image.tsx +1 -3
- package/adapters/react/kanban.d.ts +0 -4
- package/adapters/react/kanban.d.ts.map +1 -1
- package/adapters/react/kanban.js +1 -1
- package/adapters/react/kanban.js.map +1 -1
- package/adapters/react/kanban.tsx +1 -5
- package/adapters/react/key-value.d.ts +0 -2
- package/adapters/react/key-value.d.ts.map +1 -1
- package/adapters/react/key-value.js +1 -1
- package/adapters/react/key-value.js.map +1 -1
- package/adapters/react/key-value.tsx +1 -3
- package/adapters/react/leaderboard.d.ts +0 -1
- package/adapters/react/leaderboard.d.ts.map +1 -1
- package/adapters/react/leaderboard.js +1 -1
- package/adapters/react/leaderboard.js.map +1 -1
- package/adapters/react/leaderboard.tsx +1 -2
- package/adapters/react/map.d.ts +0 -3
- package/adapters/react/map.d.ts.map +1 -1
- package/adapters/react/map.js +1 -1
- package/adapters/react/map.js.map +1 -1
- package/adapters/react/map.tsx +1 -4
- package/adapters/react/markdown.d.ts +1 -1
- package/adapters/react/markdown.d.ts.map +1 -1
- package/adapters/react/markdown.js +1 -1
- package/adapters/react/markdown.js.map +1 -1
- package/adapters/react/markdown.tsx +2 -2
- package/adapters/react/matchRoute.d.ts +1 -1
- package/adapters/react/matchRoute.js +38 -4
- package/adapters/react/matchRoute.js.map +1 -1
- package/adapters/react/message-strip.d.ts +1 -1
- package/adapters/react/message-strip.js +1 -1
- package/adapters/react/message-strip.tsx +2 -2
- package/adapters/react/music-player.d.ts +0 -1
- package/adapters/react/music-player.d.ts.map +1 -1
- package/adapters/react/music-player.js +1 -1
- package/adapters/react/music-player.js.map +1 -1
- package/adapters/react/music-player.tsx +1 -2
- package/adapters/react/org-chart.d.ts +0 -1
- package/adapters/react/org-chart.d.ts.map +1 -1
- package/adapters/react/org-chart.js +1 -1
- package/adapters/react/org-chart.js.map +1 -1
- package/adapters/react/org-chart.tsx +1 -2
- package/adapters/react/paint.d.ts +0 -1
- package/adapters/react/paint.d.ts.map +1 -1
- package/adapters/react/paint.js +1 -1
- package/adapters/react/paint.js.map +1 -1
- package/adapters/react/paint.tsx +1 -2
- package/adapters/react/podcast-player.d.ts +0 -2
- package/adapters/react/podcast-player.d.ts.map +1 -1
- package/adapters/react/podcast-player.js +1 -1
- package/adapters/react/podcast-player.js.map +1 -1
- package/adapters/react/podcast-player.tsx +1 -3
- package/adapters/react/product-card.d.ts +0 -3
- package/adapters/react/product-card.d.ts.map +1 -1
- package/adapters/react/product-card.js +1 -1
- package/adapters/react/product-card.js.map +1 -1
- package/adapters/react/product-card.tsx +1 -4
- package/adapters/react/qr-reader.d.ts +0 -4
- package/adapters/react/qr-reader.d.ts.map +1 -1
- package/adapters/react/qr-reader.js +1 -1
- package/adapters/react/qr-reader.js.map +1 -1
- package/adapters/react/qr-reader.tsx +1 -5
- package/adapters/react/recipe.d.ts +0 -5
- package/adapters/react/recipe.d.ts.map +1 -1
- package/adapters/react/recipe.js +1 -1
- package/adapters/react/recipe.js.map +1 -1
- package/adapters/react/recipe.tsx +1 -6
- package/adapters/react/route-specificity.d.ts +1 -0
- package/adapters/react/spotlight.d.ts +0 -2
- package/adapters/react/spotlight.d.ts.map +1 -1
- package/adapters/react/spotlight.js +1 -1
- package/adapters/react/spotlight.js.map +1 -1
- package/adapters/react/spotlight.tsx +1 -3
- package/adapters/react/tag-input.d.ts +0 -4
- package/adapters/react/tag-input.d.ts.map +1 -1
- package/adapters/react/tag-input.js +1 -1
- package/adapters/react/tag-input.js.map +1 -1
- package/adapters/react/tag-input.tsx +1 -5
- package/adapters/react/terminal.d.ts +0 -1
- package/adapters/react/terminal.d.ts.map +1 -1
- package/adapters/react/terminal.js +1 -1
- package/adapters/react/terminal.js.map +1 -1
- package/adapters/react/terminal.tsx +1 -2
- package/adapters/react/time-picker.d.ts +0 -1
- package/adapters/react/time-picker.d.ts.map +1 -1
- package/adapters/react/time-picker.js +1 -1
- package/adapters/react/time-picker.js.map +1 -1
- package/adapters/react/time-picker.tsx +1 -2
- package/adapters/react/timer.d.ts +0 -1
- package/adapters/react/timer.d.ts.map +1 -1
- package/adapters/react/timer.js +1 -1
- package/adapters/react/timer.js.map +1 -1
- package/adapters/react/timer.tsx +1 -2
- package/adapters/react/useRequestHandler.js +1 -1
- package/adapters/react/video-player.d.ts +0 -6
- package/adapters/react/video-player.d.ts.map +1 -1
- package/adapters/react/video-player.js +1 -1
- package/adapters/react/video-player.js.map +1 -1
- package/adapters/react/video-player.tsx +1 -7
- package/adapters/react/virtual-scroller.d.ts +0 -1
- package/adapters/react/virtual-scroller.d.ts.map +1 -1
- package/adapters/react/virtual-scroller.js +1 -1
- package/adapters/react/virtual-scroller.js.map +1 -1
- package/adapters/react/virtual-scroller.tsx +1 -2
- package/bin/templates/default/tests/services/jwt.test.ts +8 -1
- package/bin/templates/react/tests/services/jwt.test.ts +10 -3
- 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 +2 -2
- package/dist/cdn/action-bar/snice-action-bar.js +2 -2
- package/dist/cdn/action-bar/snice-action-bar.js.map +1 -1
- package/dist/cdn/action-bar/snice-action-bar.min.js +2 -2
- package/dist/cdn/action-bar/snice-action-bar.min.js.map +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.js.map +1 -1
- package/dist/cdn/alert/snice-alert.min.js +1 -1
- package/dist/cdn/alert/snice-alert.min.js.map +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.js.map +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.min.js +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.min.js.map +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.js.map +1 -1
- package/dist/cdn/badge/snice-badge.min.js +1 -1
- package/dist/cdn/badge/snice-badge.min.js.map +1 -1
- package/dist/cdn/banner/README.md +1 -1
- package/dist/cdn/banner/snice-banner.js +2 -2
- package/dist/cdn/banner/snice-banner.js.map +1 -1
- package/dist/cdn/banner/snice-banner.min.js +2 -2
- package/dist/cdn/banner/snice-banner.min.js.map +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.js.map +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js.map +1 -1
- package/dist/cdn/button/snice-button.js +1 -1
- package/dist/cdn/button/snice-button.js.map +1 -1
- package/dist/cdn/button/snice-button.min.js +1 -1
- package/dist/cdn/button/snice-button.min.js.map +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.js.map +1 -1
- package/dist/cdn/chart/snice-chart.min.js +1 -1
- package/dist/cdn/chart/snice-chart.min.js.map +1 -1
- package/dist/cdn/chat/README.md +2 -2
- package/dist/cdn/chat/snice-chat.js +785 -89
- package/dist/cdn/chat/snice-chat.js.map +1 -1
- package/dist/cdn/chat/snice-chat.min.js +71 -75
- package/dist/cdn/chat/snice-chat.min.js.map +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.js.map +1 -1
- package/dist/cdn/chip/snice-chip.min.js +1 -1
- package/dist/cdn/chip/snice-chip.min.js.map +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/README.md +1 -1
- package/dist/cdn/command-palette/snice-command-palette.js +2 -2
- package/dist/cdn/command-palette/snice-command-palette.js.map +1 -1
- package/dist/cdn/command-palette/snice-command-palette.min.js +2 -2
- package/dist/cdn/command-palette/snice-command-palette.min.js.map +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.js.map +1 -1
- package/dist/cdn/data-card/snice-data-card.min.js +1 -1
- package/dist/cdn/data-card/snice-data-card.min.js.map +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.js.map +1 -1
- package/dist/cdn/drawer/snice-drawer.min.js +1 -1
- package/dist/cdn/drawer/snice-drawer.min.js.map +1 -1
- package/dist/cdn/empty-state/snice-empty-state.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.js.map +1 -1
- package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.min.js.map +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.js.map +1 -1
- package/dist/cdn/funnel/snice-funnel.min.js +1 -1
- package/dist/cdn/funnel/snice-funnel.min.js.map +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.js.map +1 -1
- package/dist/cdn/image/snice-image.min.js +1 -1
- package/dist/cdn/image/snice-image.min.js.map +1 -1
- package/dist/cdn/input/snice-input.js +1 -1
- package/dist/cdn/input/snice-input.js.map +1 -1
- package/dist/cdn/input/snice-input.min.js +1 -1
- package/dist/cdn/input/snice-input.min.js.map +1 -1
- package/dist/cdn/invoice/README.md +1 -1
- package/dist/cdn/invoice/snice-invoice.js +2 -2
- package/dist/cdn/invoice/snice-invoice.js.map +1 -1
- package/dist/cdn/invoice/snice-invoice.min.js +2 -2
- package/dist/cdn/invoice/snice-invoice.min.js.map +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.js.map +1 -1
- package/dist/cdn/kpi/snice-kpi.min.js +1 -1
- package/dist/cdn/kpi/snice-kpi.min.js.map +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.js.map +1 -1
- package/dist/cdn/list/snice-list.min.js +1 -1
- package/dist/cdn/list/snice-list.min.js.map +1 -1
- package/dist/cdn/location/snice-location.js +1 -1
- package/dist/cdn/location/snice-location.js.map +1 -1
- package/dist/cdn/location/snice-location.min.js +1 -1
- package/dist/cdn/location/snice-location.min.js.map +1 -1
- package/dist/cdn/login/snice-login.js +3 -1
- package/dist/cdn/login/snice-login.js.map +1 -1
- package/dist/cdn/login/snice-login.min.js +1 -1
- package/dist/cdn/login/snice-login.min.js.map +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/README.md +2 -2
- package/dist/cdn/markdown/snice-markdown.js +16 -3
- package/dist/cdn/markdown/snice-markdown.js.map +1 -1
- package/dist/cdn/markdown/snice-markdown.min.js +3 -3
- package/dist/cdn/markdown/snice-markdown.min.js.map +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 +2 -2
- package/dist/cdn/menu/snice-menu.js.map +1 -1
- package/dist/cdn/menu/snice-menu.min.js +2 -2
- package/dist/cdn/menu/snice-menu.min.js.map +1 -1
- package/dist/cdn/message-strip/snice-message-strip.js +9 -9
- package/dist/cdn/message-strip/snice-message-strip.js.map +1 -1
- package/dist/cdn/message-strip/snice-message-strip.min.js +3 -3
- package/dist/cdn/message-strip/snice-message-strip.min.js.map +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.js.map +1 -1
- package/dist/cdn/modal/snice-modal.min.js +1 -1
- package/dist/cdn/modal/snice-modal.min.js.map +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.js.map +1 -1
- package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.min.js.map +1 -1
- package/dist/cdn/notification-center/snice-notification-center.js +1 -1
- package/dist/cdn/notification-center/snice-notification-center.js.map +1 -1
- package/dist/cdn/notification-center/snice-notification-center.min.js +1 -1
- package/dist/cdn/notification-center/snice-notification-center.min.js.map +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 +3 -3
- package/dist/cdn/product-card/snice-product-card.js.map +1 -1
- package/dist/cdn/product-card/snice-product-card.min.js +3 -3
- package/dist/cdn/product-card/snice-product-card.min.js.map +1 -1
- package/dist/cdn/progress/README.md +1 -1
- package/dist/cdn/progress/snice-progress.js +2 -2
- package/dist/cdn/progress/snice-progress.js.map +1 -1
- package/dist/cdn/progress/snice-progress.min.js +2 -2
- package/dist/cdn/progress/snice-progress.min.js.map +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.js +2 -2
- package/dist/cdn/progress-ring/snice-progress-ring.js.map +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.min.js +2 -2
- package/dist/cdn/progress-ring/snice-progress-ring.min.js.map +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 +644 -172
- 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 +644 -172
- 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.js.map +1 -1
- package/dist/cdn/sankey/snice-sankey.min.js +1 -1
- package/dist/cdn/sankey/snice-sankey.min.js.map +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.js.map +1 -1
- package/dist/cdn/split-button/snice-split-button.min.js +1 -1
- package/dist/cdn/split-button/snice-split-button.min.js.map +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/README.md +1 -1
- package/dist/cdn/table/snice-table.js +14 -4
- package/dist/cdn/table/snice-table.js.map +1 -1
- package/dist/cdn/table/snice-table.min.js +14 -4
- package/dist/cdn/table/snice-table.min.js.map +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 +2 -2
- package/dist/cdn/tag-input/snice-tag-input.js.map +1 -1
- package/dist/cdn/tag-input/snice-tag-input.min.js +2 -2
- package/dist/cdn/tag-input/snice-tag-input.min.js.map +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/README.md +1 -1
- package/dist/cdn/time-picker/snice-time-picker.js +18 -13
- package/dist/cdn/time-picker/snice-time-picker.js.map +1 -1
- package/dist/cdn/time-picker/snice-time-picker.min.js +3 -3
- package/dist/cdn/time-picker/snice-time-picker.min.js.map +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.js.map +1 -1
- package/dist/cdn/timeline/snice-timeline.min.js +1 -1
- package/dist/cdn/timeline/snice-timeline.min.js.map +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.js.map +1 -1
- package/dist/cdn/toast/snice-toast.min.js +1 -1
- package/dist/cdn/toast/snice-toast.min.js.map +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.js.map +1 -1
- package/dist/cdn/treemap/snice-treemap.min.js +1 -1
- package/dist/cdn/treemap/snice-treemap.min.js.map +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/components/action-bar/snice-action-bar.js +1 -1
- package/dist/components/action-bar/snice-action-bar.js.map +1 -1
- package/dist/components/banner/snice-banner.js +1 -1
- package/dist/components/banner/snice-banner.js.map +1 -1
- package/dist/components/chat/snice-chat-message.d.ts +32 -0
- package/dist/components/chat/snice-chat-message.js +127 -0
- package/dist/components/chat/snice-chat-message.js.map +1 -0
- package/dist/components/chat/snice-chat-message.types.d.ts +30 -0
- package/dist/components/chat/snice-chat.d.ts +31 -4
- package/dist/components/chat/snice-chat.js +363 -90
- package/dist/components/chat/snice-chat.js.map +1 -1
- package/dist/components/chat/snice-chat.types.d.ts +34 -3
- package/dist/components/command-palette/snice-command-palette.js +1 -1
- package/dist/components/command-palette/snice-command-palette.js.map +1 -1
- package/dist/components/icons/index.d.ts +4 -0
- package/dist/components/icons/index.js +5 -1
- package/dist/components/icons/index.js.map +1 -1
- package/dist/components/invoice/snice-invoice.js +1 -1
- package/dist/components/invoice/snice-invoice.js.map +1 -1
- package/dist/components/login/snice-login.d.ts +2 -2
- package/dist/components/login/snice-login.js +2 -0
- package/dist/components/login/snice-login.js.map +1 -1
- package/dist/components/login/snice-login.types.d.ts +4 -0
- package/dist/components/markdown/snice-markdown.d.ts +1 -0
- package/dist/components/markdown/snice-markdown.js +15 -2
- package/dist/components/markdown/snice-markdown.js.map +1 -1
- package/dist/components/menu/snice-menu.js +1 -1
- package/dist/components/menu/snice-menu.js.map +1 -1
- package/dist/components/message-strip/snice-message-strip.d.ts +1 -1
- package/dist/components/message-strip/snice-message-strip.js +8 -8
- package/dist/components/message-strip/snice-message-strip.types.d.ts +1 -1
- package/dist/components/product-card/snice-product-card.js +2 -2
- package/dist/components/product-card/snice-product-card.js.map +1 -1
- package/dist/components/progress/snice-progress.js +1 -1
- package/dist/components/progress/snice-progress.js.map +1 -1
- package/dist/components/progress-ring/snice-progress-ring.js +1 -1
- package/dist/components/progress-ring/snice-progress-ring.js.map +1 -1
- package/dist/components/table/snice-table.js +13 -3
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/tag-input/snice-tag-input.js +1 -1
- package/dist/components/tag-input/snice-tag-input.js.map +1 -1
- package/dist/components/time-picker/snice-time-picker.js +17 -12
- package/dist/components/time-picker/snice-time-picker.js.map +1 -1
- package/dist/components/utils.d.ts +6 -0
- package/dist/components/utils.js +1 -1
- package/dist/components/utils.js.map +1 -1
- package/dist/element.d.ts +2 -1
- package/dist/events.d.ts +6 -0
- package/dist/index.cjs +641 -169
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +641 -169
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +641 -169
- package/dist/index.iife.js.map +1 -1
- package/dist/parts.d.ts +1 -8
- 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.d.ts +1 -1
- package/dist/react/matchRoute.js +38 -4
- package/dist/react/matchRoute.js.map +1 -1
- package/dist/react/route-specificity.d.ts +1 -0
- package/dist/react/useRequestHandler.js +1 -1
- package/dist/render.d.ts +7 -0
- package/dist/route-specificity.d.ts +1 -0
- package/dist/symbols.cjs +14 -1
- package/dist/symbols.cjs.map +1 -1
- package/dist/symbols.d.ts +3 -0
- package/dist/symbols.esm.js +12 -2
- package/dist/symbols.esm.js.map +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/dist/types/context.d.ts +5 -2
- package/dist/types/dispatch-options.d.ts +7 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/on-options.d.ts +14 -0
- package/dist/types/watch-options.d.ts +9 -0
- package/dist/utils.d.ts +26 -0
- package/docs/ai/DEVELOPMENT.md +1 -1
- package/docs/ai/README.md +11 -0
- package/docs/ai/api.md +24 -5
- package/docs/ai/cdn.md +31 -0
- package/docs/ai/components/chat.md +57 -1
- package/docs/ai/components/message-strip.md +3 -3
- package/docs/ai/decorators.md +44 -5
- package/docs/cdn.md +56 -0
- package/docs/components/chat.md +108 -2
- package/docs/components/message-strip.md +8 -8
- package/docs/elements.md +21 -0
- package/docs/events.md +88 -0
- package/docs/superpowers/specs/2026-05-26-chat-styling-design.md +155 -0
- package/docs/superpowers/specs/2026-05-27-chat-theming-REMAINING.md +83 -0
- package/docs/superpowers/specs/2026-06-09-chat-custom-content-design.md +233 -0
- package/package.json +1 -1
package/dist/parts.d.ts
CHANGED
|
@@ -156,14 +156,7 @@ export interface KeyboardFilter {
|
|
|
156
156
|
meta?: boolean;
|
|
157
157
|
anyModifiers?: boolean;
|
|
158
158
|
}
|
|
159
|
-
|
|
160
|
-
* Parse keyboard shortcut specification
|
|
161
|
-
* Examples:
|
|
162
|
-
* "enter" -> { key: "Enter" }
|
|
163
|
-
* "ctrl+s" -> { key: "s", ctrl: true }
|
|
164
|
-
* "ctrl+shift+s" -> { key: "s", ctrl: true, shift: true }
|
|
165
|
-
* "~enter" -> { key: "Enter", anyModifiers: true }
|
|
166
|
-
*/
|
|
159
|
+
export declare function warnIfModifierMisuse(eventName: string): void;
|
|
167
160
|
export declare function parseKeyboardFilter(spec: string): KeyboardFilter;
|
|
168
161
|
/**
|
|
169
162
|
* Check if keyboard event matches the filter
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v5.2.
|
|
2
|
+
* snice v5.2.3
|
|
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.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v5.2.
|
|
2
|
+
* snice v5.2.3
|
|
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.
|
package/dist/react/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v5.2.
|
|
2
|
+
* snice v5.2.3
|
|
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.
|
|
@@ -11,6 +11,6 @@ export interface MatchResult {
|
|
|
11
11
|
/**
|
|
12
12
|
* Match a URL path against an array of route configs.
|
|
13
13
|
* Uses pica-route — same matching as vanilla Snice's Router.
|
|
14
|
-
* Routes are sorted by specificity (
|
|
14
|
+
* Routes are sorted by per-segment specificity (static > dynamic > wildcard).
|
|
15
15
|
*/
|
|
16
16
|
export declare function matchRoutes(routes: RouteConfig[], pathname: string): MatchResult | null;
|
package/dist/react/matchRoute.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v5.2.
|
|
2
|
+
* snice v5.2.3
|
|
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,14 +8,48 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { Route } from 'pica-route';
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Route specificity scorer for the React binding.
|
|
13
|
+
*
|
|
14
|
+
* IMPORTANT: keep this in exact sync with `src/route-specificity.ts`. The React
|
|
15
|
+
* integration is bundled in isolation (rootDir: src/react) and cannot import
|
|
16
|
+
* across that boundary, so the scorer is mirrored here. The `matchRoutes`
|
|
17
|
+
* resolution tests exercise this copy, so behavioral drift is caught.
|
|
18
|
+
*
|
|
19
|
+
* Scoring is per-segment by ROLE, not string length: a static segment outweighs
|
|
20
|
+
* a dynamic (`:param`) segment, which outweighs a wildcard (`*` / `*name`). So
|
|
21
|
+
* `/post/new` beats `/post/:id`, and a splat always ranks last. Sort callers
|
|
22
|
+
* descending by this score (highest = most specific = first).
|
|
23
|
+
*/
|
|
24
|
+
const STATIC_SEGMENT = 10;
|
|
25
|
+
const DYNAMIC_SEGMENT = 3;
|
|
26
|
+
const WILDCARD_SEGMENT = -2;
|
|
27
|
+
function routeSpecificity(spec) {
|
|
28
|
+
const segments = spec.split('/').filter(Boolean);
|
|
29
|
+
// Base on segment count so a deeper path outranks a shallower one on ties.
|
|
30
|
+
let score = segments.length;
|
|
31
|
+
for (const segment of segments) {
|
|
32
|
+
if (segment.startsWith('*')) {
|
|
33
|
+
score += WILDCARD_SEGMENT;
|
|
34
|
+
}
|
|
35
|
+
else if (segment.startsWith(':')) {
|
|
36
|
+
score += DYNAMIC_SEGMENT;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
score += STATIC_SEGMENT;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return score;
|
|
43
|
+
}
|
|
44
|
+
|
|
11
45
|
/**
|
|
12
46
|
* Match a URL path against an array of route configs.
|
|
13
47
|
* Uses pica-route — same matching as vanilla Snice's Router.
|
|
14
|
-
* Routes are sorted by specificity (
|
|
48
|
+
* Routes are sorted by per-segment specificity (static > dynamic > wildcard).
|
|
15
49
|
*/
|
|
16
50
|
function matchRoutes(routes, pathname) {
|
|
17
|
-
// Sort by specificity (
|
|
18
|
-
const sorted = [...routes].sort((a, b) => b.path
|
|
51
|
+
// Sort by specificity (most specific first), same model as the vanilla Router.
|
|
52
|
+
const sorted = [...routes].sort((a, b) => routeSpecificity(b.path) - routeSpecificity(a.path));
|
|
19
53
|
for (const route of sorted) {
|
|
20
54
|
const matcher = new Route(route.path);
|
|
21
55
|
const params = matcher.match(pathname);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchRoute.js","sources":["../../src/react/matchRoute.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"matchRoute.js","sources":["../../src/react/route-specificity.ts","../../src/react/matchRoute.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;;;;;;;AAAA;;;;;;;;;;;;AAYG;AACH,MAAM,cAAc,GAAG,EAAE;AACzB,MAAM,eAAe,GAAG,CAAC;AACzB,MAAM,gBAAgB,GAAG,EAAE;AAErB,SAAU,gBAAgB,CAAC,IAAY,EAAA;AAC3C,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;;AAEhD,IAAA,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM;AAE3B,IAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC3B,KAAK,IAAI,gBAAgB;QAC3B;AAAO,aAAA,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAClC,KAAK,IAAI,eAAe;QAC1B;aAAO;YACL,KAAK,IAAI,cAAc;QACzB;IACF;AAEA,IAAA,OAAO,KAAK;AACd;;ACnBA;;;;AAIG;AACG,SAAU,WAAW,CAAC,MAAqB,EAAE,QAAgB,EAAA;;AAEjE,IAAA,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE9F,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;AACtC,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,gBAAA,MAAM,EAAE,MAAqB;gBAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB;QACH;IACF;AAEA,IAAA,OAAO,IAAI;AACb;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function routeSpecificity(spec: string): number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v5.2.
|
|
2
|
+
* snice v5.2.3
|
|
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.
|
package/dist/render.d.ts
CHANGED
|
@@ -39,6 +39,13 @@ export interface RenderOptions {
|
|
|
39
39
|
* @param immediate - Force immediate render (used for initial render)
|
|
40
40
|
*/
|
|
41
41
|
export declare function requestRender(element: HTMLElement, immediate?: boolean): void;
|
|
42
|
+
/**
|
|
43
|
+
* Clear any pending debounce/throttle render timers on an element (e.g. on
|
|
44
|
+
* disconnect, so they don't fire on a dead element and retain it until they
|
|
45
|
+
* expire). Returns true if a render was actually pending, so the caller can
|
|
46
|
+
* arrange a replay on reconnect via PENDING_RECONNECT_RENDER.
|
|
47
|
+
*/
|
|
48
|
+
export declare function clearRenderTimers(element: HTMLElement): boolean;
|
|
42
49
|
/**
|
|
43
50
|
* @render decorator for component rendering
|
|
44
51
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function routeSpecificity(spec: string): number;
|
package/dist/symbols.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v5.2.
|
|
2
|
+
* snice v5.2.3
|
|
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.
|
|
@@ -35,6 +35,12 @@ const READY_PROMISE = getSymbol('ready-promise');
|
|
|
35
35
|
const READY_RESOLVE = getSymbol('ready-resolve');
|
|
36
36
|
const RENDERED_PROMISE = getSymbol('rendered-promise');
|
|
37
37
|
const RENDERED_RESOLVE = getSymbol('rendered-resolve');
|
|
38
|
+
// Set when a render is requested but dropped because the element was
|
|
39
|
+
// disconnected; consumed on reconnect to replay exactly the missed render.
|
|
40
|
+
const PENDING_RECONNECT_RENDER = getSymbol('pending-reconnect-render');
|
|
41
|
+
// Per-element synchronous render-nesting depth, used to cap runaway re-entry
|
|
42
|
+
// without a shared global counter that one element could exhaust for others.
|
|
43
|
+
const RENDER_DEPTH = getSymbol('render-depth');
|
|
38
44
|
const CONTROLLER = getSymbol('controller');
|
|
39
45
|
const INITIALIZED = getSymbol('initialized');
|
|
40
46
|
// Event handler symbols
|
|
@@ -115,6 +121,10 @@ const ADOPTED_METHODS = getSymbol('adopted-methods');
|
|
|
115
121
|
// Controller attach-abort — set to an AbortController while attachController
|
|
116
122
|
// is awaiting element.ready, so detachController can short-circuit the wait.
|
|
117
123
|
const CONTROLLER_ABORT = getSymbol('controller-abort');
|
|
124
|
+
// Set on a controller instance once it has gotten past element.ready and is
|
|
125
|
+
// being attached, so detachController knows not to run detach() on a controller
|
|
126
|
+
// whose attach() was aborted before it ever ran.
|
|
127
|
+
const CONTROLLER_ATTACHED = getSymbol('controller-attached');
|
|
118
128
|
const PROPERTY_DEFINERS = getSymbol('property-definers');
|
|
119
129
|
|
|
120
130
|
exports.ADOPTED_HANDLERS = ADOPTED_HANDLERS;
|
|
@@ -135,6 +145,7 @@ exports.CONTEXT_UNREGISTER = CONTEXT_UNREGISTER;
|
|
|
135
145
|
exports.CONTEXT_UPDATE = CONTEXT_UPDATE;
|
|
136
146
|
exports.CONTROLLER = CONTROLLER;
|
|
137
147
|
exports.CONTROLLER_ABORT = CONTROLLER_ABORT;
|
|
148
|
+
exports.CONTROLLER_ATTACHED = CONTROLLER_ATTACHED;
|
|
138
149
|
exports.CONTROLLER_ID = CONTROLLER_ID;
|
|
139
150
|
exports.CONTROLLER_KEY = CONTROLLER_KEY;
|
|
140
151
|
exports.CONTROLLER_NAME_KEY = CONTROLLER_NAME_KEY;
|
|
@@ -163,6 +174,7 @@ exports.PAGE_TRANSITION = PAGE_TRANSITION;
|
|
|
163
174
|
exports.PARENT_STYLES_METHODS = PARENT_STYLES_METHODS;
|
|
164
175
|
exports.PARTS = PARTS;
|
|
165
176
|
exports.PART_TIMERS = PART_TIMERS;
|
|
177
|
+
exports.PENDING_RECONNECT_RENDER = PENDING_RECONNECT_RENDER;
|
|
166
178
|
exports.PRE_INIT_PROPERTY_VALUES = PRE_INIT_PROPERTY_VALUES;
|
|
167
179
|
exports.PROPERTIES = PROPERTIES;
|
|
168
180
|
exports.PROPERTIES_INITIALIZED = PROPERTIES_INITIALIZED;
|
|
@@ -179,6 +191,7 @@ exports.REGISTERED_ELEMENTS = REGISTERED_ELEMENTS;
|
|
|
179
191
|
exports.RENDERED_PROMISE = RENDERED_PROMISE;
|
|
180
192
|
exports.RENDERED_RESOLVE = RENDERED_RESOLVE;
|
|
181
193
|
exports.RENDER_CALLBACKS = RENDER_CALLBACKS;
|
|
194
|
+
exports.RENDER_DEPTH = RENDER_DEPTH;
|
|
182
195
|
exports.RENDER_INSTANCE = RENDER_INSTANCE;
|
|
183
196
|
exports.RENDER_METHOD = RENDER_METHOD;
|
|
184
197
|
exports.RENDER_OPTIONS = RENDER_OPTIONS;
|
package/dist/symbols.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.cjs","sources":["../src/global.ts","../src/symbols.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;;;;;;;AAAA;AACA;AAKA;AACA;AACA,IAAI,CAAE,UAAkB,CAAC,KAAK,EAAE;IAC7B,UAAkB,CAAC,KAAK,GAAG;QAC1B,kBAAkB,EAAE,IAAI,GAAG,EAAE;AAC7B,QAAA,mBAAmB,EAAE;KACtB;AACH;AAKA;AACA;AACM,SAAU,SAAS,CAAC,IAAY,EAAA;IACpC,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,CAAA,CAAE,CAAC;AACpC;;ACtBA;AACA;MAMa,mBAAmB,GAAG,SAAS,CAAC,qBAAqB;MACrD,sBAAsB,GAAG,SAAS,CAAC,wBAAwB;MAC3D,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;MAC/C,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;AAE5D;MACa,aAAa,GAAG,SAAS,CAAC,eAAe;MACzC,aAAa,GAAG,SAAS,CAAC,eAAe;MACzC,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;MAC/C,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"symbols.cjs","sources":["../src/global.ts","../src/symbols.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
|
package/dist/symbols.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export declare const READY_PROMISE: symbol;
|
|
|
8
8
|
export declare const READY_RESOLVE: symbol;
|
|
9
9
|
export declare const RENDERED_PROMISE: symbol;
|
|
10
10
|
export declare const RENDERED_RESOLVE: symbol;
|
|
11
|
+
export declare const PENDING_RECONNECT_RENDER: symbol;
|
|
12
|
+
export declare const RENDER_DEPTH: symbol;
|
|
11
13
|
export declare const CONTROLLER: symbol;
|
|
12
14
|
export declare const INITIALIZED: symbol;
|
|
13
15
|
export declare const ON_HANDLERS: symbol;
|
|
@@ -71,4 +73,5 @@ export declare const RECONNECT_METHODS: symbol;
|
|
|
71
73
|
export declare const MOVED_METHODS: symbol;
|
|
72
74
|
export declare const ADOPTED_METHODS: symbol;
|
|
73
75
|
export declare const CONTROLLER_ABORT: symbol;
|
|
76
|
+
export declare const CONTROLLER_ATTACHED: symbol;
|
|
74
77
|
export declare const PROPERTY_DEFINERS: symbol;
|
package/dist/symbols.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v5.2.
|
|
2
|
+
* snice v5.2.3
|
|
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.
|
|
@@ -33,6 +33,12 @@ const READY_PROMISE = getSymbol('ready-promise');
|
|
|
33
33
|
const READY_RESOLVE = getSymbol('ready-resolve');
|
|
34
34
|
const RENDERED_PROMISE = getSymbol('rendered-promise');
|
|
35
35
|
const RENDERED_RESOLVE = getSymbol('rendered-resolve');
|
|
36
|
+
// Set when a render is requested but dropped because the element was
|
|
37
|
+
// disconnected; consumed on reconnect to replay exactly the missed render.
|
|
38
|
+
const PENDING_RECONNECT_RENDER = getSymbol('pending-reconnect-render');
|
|
39
|
+
// Per-element synchronous render-nesting depth, used to cap runaway re-entry
|
|
40
|
+
// without a shared global counter that one element could exhaust for others.
|
|
41
|
+
const RENDER_DEPTH = getSymbol('render-depth');
|
|
36
42
|
const CONTROLLER = getSymbol('controller');
|
|
37
43
|
const INITIALIZED = getSymbol('initialized');
|
|
38
44
|
// Event handler symbols
|
|
@@ -113,7 +119,11 @@ const ADOPTED_METHODS = getSymbol('adopted-methods');
|
|
|
113
119
|
// Controller attach-abort — set to an AbortController while attachController
|
|
114
120
|
// is awaiting element.ready, so detachController can short-circuit the wait.
|
|
115
121
|
const CONTROLLER_ABORT = getSymbol('controller-abort');
|
|
122
|
+
// Set on a controller instance once it has gotten past element.ready and is
|
|
123
|
+
// being attached, so detachController knows not to run detach() on a controller
|
|
124
|
+
// whose attach() was aborted before it ever ran.
|
|
125
|
+
const CONTROLLER_ATTACHED = getSymbol('controller-attached');
|
|
116
126
|
const PROPERTY_DEFINERS = getSymbol('property-definers');
|
|
117
127
|
|
|
118
|
-
export { ADOPTED_HANDLERS, ADOPTED_METHODS, ADOPTED_TIMERS, CHANNEL_HANDLERS, CLEANUP, CONTEXT_CALLED, CONTEXT_HANDLER, CONTEXT_METHODS, CONTEXT_METHOD_NAME, CONTEXT_NOTIFY_ELEMENT, CONTEXT_OPTIONS, CONTEXT_REGISTER, CONTEXT_REQUEST_HANDLER, CONTEXT_TIMER, CONTEXT_UNREGISTER, CONTEXT_UPDATE, CONTROLLER, CONTROLLER_ABORT, CONTROLLER_ID, CONTROLLER_KEY, CONTROLLER_NAME_KEY, CONTROLLER_OPERATIONS, CREATED_AT, CURRENT_PAGE_MARKER, DISPATCH_TIMERS, DISPOSE_HANDLERS, DISPOSE_METHODS, EXPLICITLY_SET_PROPERTIES, INITIALIZED, IS_CONTROLLER_CLASS, IS_CONTROLLER_INSTANCE, IS_ELEMENT_CLASS, IS_UPDATING, MOVED_HANDLERS, MOVED_METHODS, MOVED_TIMERS, NATIVE_CONTROLLER, NAVIGATION_CONTEXT_INSTANCE, OBSERVERS, OBSERVE_METHODS, ON_HANDLERS, ON_METHODS, PAGE_TRANSITION, PARENT_STYLES_METHODS, PARTS, PART_TIMERS, PRE_INIT_PROPERTY_VALUES, PROPERTIES, PROPERTIES_INITIALIZED, PROPERTY_DEFINERS, PROPERTY_VALUES, PROPERTY_WATCHERS, READY_HANDLERS, READY_METHODS, READY_PROMISE, READY_RESOLVE, RECONNECT_HANDLERS, RECONNECT_METHODS, REGISTERED_ELEMENTS, RENDERED_PROMISE, RENDERED_RESOLVE, RENDER_CALLBACKS, RENDER_INSTANCE, RENDER_METHOD, RENDER_OPTIONS, RENDER_TIMERS, RESPOND_METHODS, ROUTER_CONTEXT, SETTING_FROM_PROPERTY, STYLES_APPLIED, STYLES_METHOD, WATCH_METHODS, getSymbol };
|
|
128
|
+
export { ADOPTED_HANDLERS, ADOPTED_METHODS, ADOPTED_TIMERS, CHANNEL_HANDLERS, CLEANUP, CONTEXT_CALLED, CONTEXT_HANDLER, CONTEXT_METHODS, CONTEXT_METHOD_NAME, CONTEXT_NOTIFY_ELEMENT, CONTEXT_OPTIONS, CONTEXT_REGISTER, CONTEXT_REQUEST_HANDLER, CONTEXT_TIMER, CONTEXT_UNREGISTER, CONTEXT_UPDATE, CONTROLLER, CONTROLLER_ABORT, CONTROLLER_ATTACHED, CONTROLLER_ID, CONTROLLER_KEY, CONTROLLER_NAME_KEY, CONTROLLER_OPERATIONS, CREATED_AT, CURRENT_PAGE_MARKER, DISPATCH_TIMERS, DISPOSE_HANDLERS, DISPOSE_METHODS, EXPLICITLY_SET_PROPERTIES, INITIALIZED, IS_CONTROLLER_CLASS, IS_CONTROLLER_INSTANCE, IS_ELEMENT_CLASS, IS_UPDATING, MOVED_HANDLERS, MOVED_METHODS, MOVED_TIMERS, NATIVE_CONTROLLER, NAVIGATION_CONTEXT_INSTANCE, OBSERVERS, OBSERVE_METHODS, ON_HANDLERS, ON_METHODS, PAGE_TRANSITION, PARENT_STYLES_METHODS, PARTS, PART_TIMERS, PENDING_RECONNECT_RENDER, PRE_INIT_PROPERTY_VALUES, PROPERTIES, PROPERTIES_INITIALIZED, PROPERTY_DEFINERS, PROPERTY_VALUES, PROPERTY_WATCHERS, READY_HANDLERS, READY_METHODS, READY_PROMISE, READY_RESOLVE, RECONNECT_HANDLERS, RECONNECT_METHODS, REGISTERED_ELEMENTS, RENDERED_PROMISE, RENDERED_RESOLVE, RENDER_CALLBACKS, RENDER_DEPTH, RENDER_INSTANCE, RENDER_METHOD, RENDER_OPTIONS, RENDER_TIMERS, RESPOND_METHODS, ROUTER_CONTEXT, SETTING_FROM_PROPERTY, STYLES_APPLIED, STYLES_METHOD, WATCH_METHODS, getSymbol };
|
|
119
129
|
//# sourceMappingURL=symbols.esm.js.map
|
package/dist/symbols.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.esm.js","sources":["../src/global.ts","../src/symbols.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;;;;;AAAA;AACA;AAKA;AACA;AACA,IAAI,CAAE,UAAkB,CAAC,KAAK,EAAE;IAC7B,UAAkB,CAAC,KAAK,GAAG;QAC1B,kBAAkB,EAAE,IAAI,GAAG,EAAE;AAC7B,QAAA,mBAAmB,EAAE;KACtB;AACH;AAKA;AACA;AACM,SAAU,SAAS,CAAC,IAAY,EAAA;IACpC,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,CAAA,CAAE,CAAC;AACpC;;ACtBA;AACA;MAMa,mBAAmB,GAAG,SAAS,CAAC,qBAAqB;MACrD,sBAAsB,GAAG,SAAS,CAAC,wBAAwB;MAC3D,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;MAC/C,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;AAE5D;MACa,aAAa,GAAG,SAAS,CAAC,eAAe;MACzC,aAAa,GAAG,SAAS,CAAC,eAAe;MACzC,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;MAC/C,gBAAgB,GAAG,SAAS,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"symbols.esm.js","sources":["../src/global.ts","../src/symbols.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
|
package/dist/transitions.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v5.2.
|
|
2
|
+
* snice v5.2.3
|
|
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.
|
package/dist/transitions.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v5.2.
|
|
2
|
+
* snice v5.2.3
|
|
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.
|
package/dist/types/context.d.ts
CHANGED
|
@@ -17,10 +17,13 @@ export declare class Context {
|
|
|
17
17
|
*/
|
|
18
18
|
[CONTEXT_REGISTER]: (element: HTMLElement, methodName: string) => void;
|
|
19
19
|
/**
|
|
20
|
-
* Unregister an element from receiving context updates
|
|
20
|
+
* Unregister an element from receiving context updates. With a methodName,
|
|
21
|
+
* removes only that one handler (so a `once` handler tearing itself down
|
|
22
|
+
* doesn't kill the element's other @context handlers); without one, removes
|
|
23
|
+
* the element entirely (used on disconnect).
|
|
21
24
|
* @internal Used by @context decorator cleanup
|
|
22
25
|
*/
|
|
23
|
-
[CONTEXT_UNREGISTER]: (element: HTMLElement) => void;
|
|
26
|
+
[CONTEXT_UNREGISTER]: (element: HTMLElement, methodName?: string) => void;
|
|
24
27
|
/**
|
|
25
28
|
* Update the context and notify all registered elements
|
|
26
29
|
* Prevents infinite loops by tracking update state
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { OnScope } from './on-options';
|
|
1
2
|
export interface DispatchOptions extends EventInit {
|
|
2
3
|
/**
|
|
3
4
|
* Whether to dispatch even if the method returns undefined (default: true)
|
|
@@ -7,4 +8,10 @@ export interface DispatchOptions extends EventInit {
|
|
|
7
8
|
debounce?: number;
|
|
8
9
|
/** Throttle the dispatch by specified milliseconds */
|
|
9
10
|
throttle?: number;
|
|
11
|
+
/**
|
|
12
|
+
* Where to dispatch the event. Default is the host element.
|
|
13
|
+
* Use `'global'` to dispatch on `document`, a selector for an ancestor
|
|
14
|
+
* (via `closest()`), a direct EventTarget, or a resolver function.
|
|
15
|
+
*/
|
|
16
|
+
scope?: OnScope;
|
|
10
17
|
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolver for the EventTarget where the listener is attached.
|
|
3
|
+
* - `'global'`: attach to `document` (cross-cutting events)
|
|
4
|
+
* - string: treated as a CSS selector for `host.closest(selector)` (nearest ancestor)
|
|
5
|
+
* - `Element` / `EventTarget`: attached directly to that node
|
|
6
|
+
* - `() => Element | EventTarget | null`: called at connect time; null skips
|
|
7
|
+
*/
|
|
8
|
+
export type OnScope = 'global' | string | EventTarget | ((this: HTMLElement) => EventTarget | null);
|
|
1
9
|
export interface OnOptions {
|
|
2
10
|
/** Use capture phase instead of bubble phase */
|
|
3
11
|
capture?: boolean;
|
|
@@ -15,4 +23,10 @@ export interface OnOptions {
|
|
|
15
23
|
throttle?: number;
|
|
16
24
|
/** CSS selector to target specific elements within shadow root */
|
|
17
25
|
target?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Where to attach the listener. Default is the host element.
|
|
28
|
+
* Use `'global'` for document-wide events, a selector for an ancestor
|
|
29
|
+
* (via `closest()`), a direct EventTarget, or a resolver function.
|
|
30
|
+
*/
|
|
31
|
+
scope?: OnScope;
|
|
18
32
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface WatchOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Whether the watcher fires once during initialization with the element's
|
|
4
|
+
* initial value (`oldValue` is `undefined`), in addition to firing on later
|
|
5
|
+
* changes. Defaults to `true`. Set `false` for a change-only watcher — e.g.
|
|
6
|
+
* one that dispatches an event, so it doesn't emit spuriously on mount.
|
|
7
|
+
*/
|
|
8
|
+
immediate?: boolean;
|
|
9
|
+
}
|
package/dist/utils.d.ts
CHANGED
|
@@ -21,6 +21,11 @@ export declare function parseAttributeValue(attributeValue: string | null, prope
|
|
|
21
21
|
* @param initialValue - The default value assigned to the property field (used for type detection)
|
|
22
22
|
* @returns The string representation for the HTML attribute, or null if value should remove attribute
|
|
23
23
|
*/
|
|
24
|
+
/**
|
|
25
|
+
* Default property dirty-check: has the value changed? Like `!==`, but treats
|
|
26
|
+
* NaN → NaN as unchanged (NaN !== NaN would otherwise re-fire forever).
|
|
27
|
+
*/
|
|
28
|
+
export declare function notEqual(value: unknown, old: unknown): boolean;
|
|
24
29
|
/**
|
|
25
30
|
* Extract attribute name from property options
|
|
26
31
|
*/
|
|
@@ -82,6 +87,13 @@ export declare function ensureObj(obj: any, sym: symbol): Record<string, any>;
|
|
|
82
87
|
* Invoke property watchers for a given property change
|
|
83
88
|
*/
|
|
84
89
|
export declare function invokeWatchers(instance: any, constructor: any, propName: string, oldValue: any, newValue: any): void;
|
|
90
|
+
/**
|
|
91
|
+
* Fire the one-time initialization call for `@watch(..., { immediate: true })`
|
|
92
|
+
* handlers. Runs once per declared property after the element is initialized,
|
|
93
|
+
* passing the effective initial value with `oldValue` undefined. Non-immediate
|
|
94
|
+
* watchers are untouched — they only react to later changes.
|
|
95
|
+
*/
|
|
96
|
+
export declare function invokeImmediateWatchers(instance: any, constructor: any): void;
|
|
85
97
|
/**
|
|
86
98
|
* Create a debounced version of a function
|
|
87
99
|
*/
|
|
@@ -90,4 +102,18 @@ export declare function createDebounced<T extends (...args: any[]) => any>(fn: T
|
|
|
90
102
|
* Create a throttled version of a function (leading + trailing edge)
|
|
91
103
|
*/
|
|
92
104
|
export declare function createThrottled<T extends (...args: any[]) => any>(fn: T, delay: number): T;
|
|
105
|
+
/**
|
|
106
|
+
* Resolve a scope option to a concrete EventTarget.
|
|
107
|
+
*
|
|
108
|
+
* - undefined → host element (default behavior)
|
|
109
|
+
* - 'global' → `document`
|
|
110
|
+
* - string → `host.closest(selector)` (nearest matching ancestor)
|
|
111
|
+
* - EventTarget instance → that target directly
|
|
112
|
+
* - resolver function → called with host as `this`, returns target or null
|
|
113
|
+
*
|
|
114
|
+
* Returns null when the scope cannot be resolved (e.g. selector matches no
|
|
115
|
+
* ancestor, resolver returns null). Caller decides how to handle null —
|
|
116
|
+
* typically warn in dev and skip listener attachment.
|
|
117
|
+
*/
|
|
118
|
+
export declare function resolveScope(host: HTMLElement, scope: unknown): EventTarget | null;
|
|
93
119
|
export declare function valueToAttribute(value: any, propertyOptions: PropertyOptions, initialValue?: any): string | null;
|
package/docs/ai/DEVELOPMENT.md
CHANGED
|
@@ -99,7 +99,7 @@ All CDN builds use the shared runtime (external `snice` imports). Load `snice-ru
|
|
|
99
99
|
- IIFE: `.js` + `.min.js`
|
|
100
100
|
- Sourcemaps + README
|
|
101
101
|
|
|
102
|
-
**Size:** Runtime ~
|
|
102
|
+
**Size:** Runtime ~21KB gzip, components ~1-93KB each
|
|
103
103
|
|
|
104
104
|
**Features:**
|
|
105
105
|
- Shared runtime (external snice imports)
|
package/docs/ai/README.md
CHANGED
|
@@ -49,6 +49,17 @@ claude mcp add snice -- npx snice mcp
|
|
|
49
49
|
- `search_docs` - Search documentation
|
|
50
50
|
- `validate_code` - Check code for common mistakes
|
|
51
51
|
|
|
52
|
+
## CDN / Standalone Usage
|
|
53
|
+
|
|
54
|
+
Runtime first, then one bundle per component (any order after runtime):
|
|
55
|
+
```html
|
|
56
|
+
<script src="snice-runtime.min.js"></script> <!-- required, first -->
|
|
57
|
+
<script src="snice-button.min.js"></script>
|
|
58
|
+
<snice-button variant="primary">Click me</snice-button>
|
|
59
|
+
```
|
|
60
|
+
- Omit the runtime → elements never register → blank page.
|
|
61
|
+
- Full details (load order, bundle families, `theme.css` + dark mode, `.min.js` vs `.esm`): [cdn.md](cdn.md).
|
|
62
|
+
|
|
52
63
|
## Pitfalls
|
|
53
64
|
|
|
54
65
|
**Decorators:**
|
package/docs/ai/api.md
CHANGED
|
@@ -42,8 +42,9 @@
|
|
|
42
42
|
// Syncs with attributes, triggers re-render
|
|
43
43
|
// Types: String (default), Number, Boolean, Object, Array
|
|
44
44
|
|
|
45
|
-
@watch(...propertyNames: string[])
|
|
46
|
-
//
|
|
45
|
+
@watch(...propertyNames: string[], options?: { immediate?: boolean })
|
|
46
|
+
// Fires once on init: (undefined, initialValue, propertyName), then on every change: (oldVal, newVal, propertyName)
|
|
47
|
+
// { immediate: false } → change-only, skip the init call (use for event-dispatching watchers)
|
|
47
48
|
```
|
|
48
49
|
|
|
49
50
|
## Lifecycle
|
|
@@ -79,15 +80,31 @@ html`
|
|
|
79
80
|
```typescript
|
|
80
81
|
@on(event: string | string[], selector?: string, options?: OnOptions)
|
|
81
82
|
// Works in elements + controllers
|
|
82
|
-
// Options: { debounce?, throttle?, preventDefault?, stopPropagation?, once?, capture?, passive?, target? }
|
|
83
|
+
// Options: { debounce?, throttle?, preventDefault?, stopPropagation?, once?, capture?, passive?, target?, scope? }
|
|
83
84
|
// target: CSS selector for shadow DOM event delegation
|
|
85
|
+
// scope: 'global' | selector | EventTarget | () => EventTarget | null — redirects listener attachment
|
|
84
86
|
// Keyboard: 'keydown:Enter', 'keydown.escape', 'keydown:ctrl+s', 'keydown:~Space'
|
|
85
87
|
// Supports both ':' and '.' notation
|
|
86
88
|
|
|
87
|
-
@dispatch(eventName: string, options?: { debounce?, throttle?, dispatchOnUndefined
|
|
89
|
+
@dispatch(eventName: string, options?: { debounce?, throttle?, dispatchOnUndefined?, scope?, ...EventInit })
|
|
88
90
|
// Fires CustomEvent after method, detail = return value
|
|
89
91
|
// Supports async methods (dispatches after promise resolves)
|
|
90
92
|
// dispatchOnUndefined: false (default) — skips dispatch if method returns undefined
|
|
93
|
+
// scope: 'global' | selector | EventTarget | () => EventTarget | null — redirects dispatch target
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**scope option (shared by @on and @dispatch):**
|
|
97
|
+
```typescript
|
|
98
|
+
// omitted → host element (default)
|
|
99
|
+
// 'global' → document
|
|
100
|
+
// 'app-shell' → host.closest('app-shell')
|
|
101
|
+
// someEl → that EventTarget
|
|
102
|
+
// function → called with host as `this`; null skips with console.warn
|
|
103
|
+
|
|
104
|
+
@on('bus:save', { scope: 'global' }) // document-level listener
|
|
105
|
+
@on('bus:added', { scope: 'cart-shell' }) // ancestor-scoped listener
|
|
106
|
+
@dispatch('bus:save', { scope: 'global' }) // dispatch on document
|
|
107
|
+
@dispatch('bus:added', { scope: 'cart-shell' })// dispatch on ancestor
|
|
91
108
|
```
|
|
92
109
|
|
|
93
110
|
## Communication
|
|
@@ -257,7 +274,9 @@ attr="${val}" // Attribute
|
|
|
257
274
|
```typescript
|
|
258
275
|
interface TemplateResult { readonly _$litType$: number; }
|
|
259
276
|
interface CSSResult { cssText: string; }
|
|
260
|
-
interface OnOptions { debounce?, throttle?, preventDefault?, stopPropagation?, once?, capture?, passive?, target? }
|
|
277
|
+
interface OnOptions { debounce?, throttle?, preventDefault?, stopPropagation?, once?, capture?, passive?, target?, scope? }
|
|
278
|
+
interface DispatchOptions extends EventInit { debounce?, throttle?, dispatchOnUndefined?, scope? }
|
|
279
|
+
type OnScope = 'global' | string | EventTarget | ((this: HTMLElement) => EventTarget | null)
|
|
261
280
|
interface RenderOptions { debounce?, throttle?, once?, sync?, differential? }
|
|
262
281
|
interface Layout { update(context, placards, route, params) }
|
|
263
282
|
interface Placard { name, title, icon?, description?, order?, show?, visibleOn?, parent?, group?, searchTerms?, hotkeys?, breadcrumbs?, tooltip? }
|
package/docs/ai/cdn.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# CDN / Standalone Usage
|
|
2
|
+
|
|
3
|
+
Use any component on a plain HTML page — no bundler. Each component is a standalone `.min.js` sharing one runtime.
|
|
4
|
+
|
|
5
|
+
## Load order
|
|
6
|
+
|
|
7
|
+
Runtime first, then one bundle per component (components any order after runtime):
|
|
8
|
+
```html
|
|
9
|
+
<link rel="stylesheet" href="theme.css"> <!-- optional: tokens + dark mode -->
|
|
10
|
+
<script src="snice-runtime.min.js"></script> <!-- required, first -->
|
|
11
|
+
<script src="snice-button.min.js"></script>
|
|
12
|
+
<snice-button variant="primary">Click me</snice-button>
|
|
13
|
+
```
|
|
14
|
+
- `snice-runtime.min.js` shared by all — omit it → elements never register → blank page.
|
|
15
|
+
|
|
16
|
+
## Bundle families
|
|
17
|
+
|
|
18
|
+
One bundle registers its whole family:
|
|
19
|
+
- `snice-tabs.min.js` → `<snice-tabs>` `<snice-tab>` `<snice-tab-panel>`
|
|
20
|
+
- `snice-select.min.js` → `<snice-select>` `<snice-option>`
|
|
21
|
+
- `snice-toast.min.js` → `<snice-toast>` `<snice-toast-container>`
|
|
22
|
+
|
|
23
|
+
## Theme / dark mode
|
|
24
|
+
|
|
25
|
+
- `theme.css` optional — components have light-mode fallbacks; add it for full tokens + dark mode.
|
|
26
|
+
- Dark follows OS by default; force with `<html data-theme="dark">` (or `"light"` to pin).
|
|
27
|
+
|
|
28
|
+
## Builds
|
|
29
|
+
|
|
30
|
+
- Use `.min.js` (IIFE) for `<script src>`, not `.esm.min.js` (ESM, for bundlers).
|
|
31
|
+
- Build one: `snice build-component <name>`.
|
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Slack-style chat interface with messages, typing indicators, reactions, and file attachments.
|
|
4
4
|
|
|
5
|
+
## Components
|
|
6
|
+
|
|
7
|
+
- `snice-chat` - container
|
|
8
|
+
- `snice-chat-message` - declarative message child (rendered first; `messages`-array entries append after)
|
|
9
|
+
|
|
5
10
|
## Properties
|
|
6
11
|
|
|
7
12
|
```typescript
|
|
@@ -13,6 +18,26 @@ allowFiles: boolean = true; // attribute: allow-files
|
|
|
13
18
|
showTyping: boolean = true; // attribute: show-typing
|
|
14
19
|
showAvatars: boolean = true; // attribute: show-avatars
|
|
15
20
|
showTimestamps: boolean = true; // attribute: show-timestamps
|
|
21
|
+
authorColors: Record<string,string> = {}; // property only; per-author colors
|
|
22
|
+
colorAuthors: boolean = false; // attribute: color-authors; auto color per author
|
|
23
|
+
markdown: boolean = false; // render bodies as markdown by default
|
|
24
|
+
layout: 'default' | 'bubbles' = 'default'; // 'bubbles' = aligned colored bubbles
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
ChatMessage adds: `format?: 'text'|'markdown'` (unset = chat-level `markdown` applies), `authorColor?: string` (CSS color; values containing `;`/`{`/`}` are rejected).
|
|
28
|
+
|
|
29
|
+
### snice-chat-message attributes
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
author: string = '';
|
|
33
|
+
avatar: string = '';
|
|
34
|
+
type: 'text'|'file'|'image'|'system' = 'text';
|
|
35
|
+
format?: 'text'|'markdown'; // unset = chat-level markdown applies
|
|
36
|
+
edited: boolean = false;
|
|
37
|
+
authorColor: string = ''; // attribute: author-color
|
|
38
|
+
reactions?: MessageReaction[]; // property only
|
|
39
|
+
attachment?: MessageAttachment; // property only
|
|
40
|
+
// body = element text content
|
|
16
41
|
```
|
|
17
42
|
|
|
18
43
|
## Methods
|
|
@@ -32,18 +57,30 @@ showTimestamps: boolean = true; // attribute: show-timestamps
|
|
|
32
57
|
- `message-edit` -> `{ messageId: string, newContent: string }`
|
|
33
58
|
- `message-delete` -> `{ messageId: string }`
|
|
34
59
|
- `message-react` -> `{ messageId: string, emoji: string }`
|
|
35
|
-
- `message-thread` -> `{ messageId: string }`
|
|
36
60
|
- `typing-start` -> `{}`
|
|
37
61
|
- `typing-stop` -> `{}`
|
|
38
62
|
|
|
63
|
+
React, edit, and delete self-apply to the local `messages` model AND emit the event — don't also mutate in the handler or it double-applies. On backend rejection, revert via `updateMessage()`. Delete is confirmed inline first. `message-send` does not self-add; the consumer adds the sent message.
|
|
64
|
+
|
|
39
65
|
## CSS Parts
|
|
40
66
|
|
|
41
67
|
- `base` - Chat container
|
|
42
68
|
- `messages` - Messages scrollable area
|
|
69
|
+
- `message` / `message-own` / `message-other` - message row (+ own/other variants)
|
|
70
|
+
- `system-message` - system message row
|
|
71
|
+
- `avatar`, `author`, `timestamp`, `edited`, `message-text` - message internals
|
|
72
|
+
- `attachment` - message attachment
|
|
73
|
+
- `reactions` / `reaction` / `reaction-active` - reactions
|
|
74
|
+
- `actions` - hover action menu (react on any message; edit/delete owner-only)
|
|
75
|
+
- `edit-input` / `edit-save` / `edit-cancel` - inline editor (shown while editing)
|
|
76
|
+
- `delete-confirm` / `delete-confirm-yes` / `delete-confirm-no` - inline delete confirmation
|
|
77
|
+
- `typing-indicator` - typing indicator row
|
|
43
78
|
- `input-area` - Input area wrapper
|
|
44
79
|
- `input-container` - Input + buttons container
|
|
45
80
|
- `input` - Textarea input field
|
|
46
81
|
|
|
82
|
+
Per-author color is injected inline as `--snice-chat-author-color`; `::part(author)` reads it.
|
|
83
|
+
|
|
47
84
|
## Basic Usage
|
|
48
85
|
|
|
49
86
|
```html
|
|
@@ -63,6 +100,25 @@ chat.addTypingIndicator('Alice');
|
|
|
63
100
|
chat.removeTypingIndicator('Alice');
|
|
64
101
|
```
|
|
65
102
|
|
|
103
|
+
```html
|
|
104
|
+
<!-- declarative messages (slot first; messages array appends after) -->
|
|
105
|
+
<snice-chat current-user="Me" color-authors layout="bubbles" markdown>
|
|
106
|
+
<snice-chat-message slot="messages" author="Alice">shipped **v5.3**</snice-chat-message>
|
|
107
|
+
<snice-chat-message slot="messages" author="Me" format="text">on it</snice-chat-message>
|
|
108
|
+
</snice-chat>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
chat.authorColors = { Alice: '#e11d48' }; // explicit per-author color
|
|
113
|
+
chat.addMessage({ type:'text', author:'Alice', timestamp:new Date(),
|
|
114
|
+
format:'markdown', content:'run `npm i snice@latest`' });
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```css
|
|
118
|
+
snice-chat::part(author) { font-family: 'Inter'; }
|
|
119
|
+
snice-chat::part(message-own) { background: rgba(37,99,235,.06); }
|
|
120
|
+
```
|
|
121
|
+
|
|
66
122
|
## Accessibility
|
|
67
123
|
|
|
68
124
|
- Keyboard navigation for messages and controls
|