snice 3.2.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/templates/base/src/components/counter-button.ts +2 -2
- package/bin/templates/base/src/pages/about-page.ts +8 -5
- package/bin/templates/base/src/pages/home-page.ts +9 -6
- package/bin/templates/base/src/pages/not-found-page.ts +7 -4
- package/dist/components/accordion/snice-accordion-item.d.ts +2 -2
- package/dist/components/accordion/snice-accordion-item.js +9 -9
- package/dist/components/accordion/snice-accordion-item.js.map +1 -1
- package/dist/components/accordion/snice-accordion.d.ts +2 -2
- package/dist/components/accordion/snice-accordion.js +9 -9
- package/dist/components/accordion/snice-accordion.js.map +1 -1
- package/dist/components/actions/snice-actions.d.ts +28 -0
- package/dist/components/actions/snice-actions.js +220 -0
- package/dist/components/actions/snice-actions.js.map +1 -0
- package/dist/components/actions/snice-actions.types.d.ts +27 -0
- package/dist/components/alert/snice-alert.d.ts +2 -2
- package/dist/components/alert/snice-alert.js +8 -8
- package/dist/components/alert/snice-alert.js.map +1 -1
- package/dist/components/audio-recorder/snice-audio-recorder.d.ts +58 -0
- package/dist/components/audio-recorder/snice-audio-recorder.js +413 -0
- package/dist/components/audio-recorder/snice-audio-recorder.js.map +1 -0
- package/dist/components/audio-recorder/snice-audio-recorder.types.d.ts +28 -0
- package/dist/components/avatar/snice-avatar.d.ts +2 -2
- package/dist/components/avatar/snice-avatar.js +9 -9
- package/dist/components/avatar/snice-avatar.js.map +1 -1
- package/dist/components/badge/snice-badge.d.ts +2 -2
- package/dist/components/badge/snice-badge.js +10 -10
- package/dist/components/badge/snice-badge.js.map +1 -1
- package/dist/components/banner/snice-banner.d.ts +2 -2
- package/dist/components/banner/snice-banner.js +8 -8
- package/dist/components/banner/snice-banner.js.map +1 -1
- package/dist/components/breadcrumbs/snice-breadcrumbs.d.ts +2 -2
- package/dist/components/breadcrumbs/snice-breadcrumbs.js +11 -11
- package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
- package/dist/components/button/snice-button.d.ts +2 -2
- package/dist/components/button/snice-button.js +8 -8
- package/dist/components/button/snice-button.js.map +1 -1
- package/dist/components/calendar/snice-calendar.d.ts +46 -0
- package/dist/components/calendar/snice-calendar.js +294 -0
- package/dist/components/calendar/snice-calendar.js.map +1 -0
- package/dist/components/calendar/snice-calendar.types.d.ts +34 -0
- package/dist/components/camera/snice-camera.d.ts +39 -0
- package/dist/components/camera/snice-camera.js +286 -0
- package/dist/components/camera/snice-camera.js.map +1 -0
- package/dist/components/camera/snice-camera.types.d.ts +28 -0
- package/dist/components/card/snice-card.d.ts +2 -2
- package/dist/components/card/snice-card.js +9 -9
- package/dist/components/card/snice-card.js.map +1 -1
- package/dist/components/carousel/snice-carousel.d.ts +32 -0
- package/dist/components/carousel/snice-carousel.js +279 -0
- package/dist/components/carousel/snice-carousel.js.map +1 -0
- package/dist/components/carousel/snice-carousel.types.d.ts +22 -0
- package/dist/components/chart/snice-chart.d.ts +73 -0
- package/dist/components/chart/snice-chart.js +946 -0
- package/dist/components/chart/snice-chart.js.map +1 -0
- package/dist/components/chart/snice-chart.types.d.ts +71 -0
- package/dist/components/chat/snice-chat.d.ts +98 -0
- package/dist/components/chat/snice-chat.js +589 -0
- package/dist/components/chat/snice-chat.js.map +1 -0
- package/dist/components/chat/snice-chat.types.d.ts +141 -0
- package/dist/components/checkbox/snice-checkbox.d.ts +2 -2
- package/dist/components/checkbox/snice-checkbox.js +8 -8
- package/dist/components/checkbox/snice-checkbox.js.map +1 -1
- package/dist/components/chip/snice-chip.d.ts +2 -2
- package/dist/components/chip/snice-chip.js +8 -8
- package/dist/components/chip/snice-chip.js.map +1 -1
- package/dist/components/code-block/snice-code-block.d.ts +15 -0
- package/dist/components/code-block/snice-code-block.js +141 -0
- package/dist/components/code-block/snice-code-block.js.map +1 -0
- package/dist/components/code-block/snice-code-block.types.d.ts +15 -0
- package/dist/components/color-display/snice-color-display.d.ts +2 -2
- package/dist/components/color-display/snice-color-display.js +10 -10
- package/dist/components/color-display/snice-color-display.js.map +1 -1
- package/dist/components/color-picker/snice-color-picker.d.ts +2 -2
- package/dist/components/color-picker/snice-color-picker.js +8 -8
- package/dist/components/color-picker/snice-color-picker.js.map +1 -1
- package/dist/components/command-palette/snice-command-palette.d.ts +47 -0
- package/dist/components/command-palette/snice-command-palette.js +428 -0
- package/dist/components/command-palette/snice-command-palette.js.map +1 -0
- package/dist/components/command-palette/snice-command-palette.types.d.ts +49 -0
- package/dist/components/date-picker/snice-date-picker.d.ts +2 -2
- package/dist/components/date-picker/snice-date-picker.js +9 -9
- package/dist/components/date-picker/snice-date-picker.js.map +1 -1
- package/dist/components/divider/snice-divider.d.ts +2 -2
- package/dist/components/divider/snice-divider.js +10 -10
- package/dist/components/divider/snice-divider.js.map +1 -1
- package/dist/components/doc/snice-doc.d.ts +93 -0
- package/dist/components/doc/snice-doc.js +626 -0
- package/dist/components/doc/snice-doc.js.map +1 -0
- package/dist/components/doc/snice-doc.types.d.ts +118 -0
- package/dist/components/draw/snice-draw.d.ts +71 -0
- package/dist/components/draw/snice-draw.js +709 -0
- package/dist/components/draw/snice-draw.js.map +1 -0
- package/dist/components/draw/snice-draw.types.d.ts +41 -0
- package/dist/components/drawer/snice-drawer.d.ts +2 -2
- package/dist/components/drawer/snice-drawer.js +9 -9
- package/dist/components/drawer/snice-drawer.js.map +1 -1
- package/dist/components/empty-state/snice-empty-state.d.ts +2 -2
- package/dist/components/empty-state/snice-empty-state.js +8 -8
- package/dist/components/empty-state/snice-empty-state.js.map +1 -1
- package/dist/components/file-upload/snice-file-upload.d.ts +2 -3
- package/dist/components/file-upload/snice-file-upload.js +8 -15
- package/dist/components/file-upload/snice-file-upload.js.map +1 -1
- package/dist/components/gantt/snice-gantt.d.ts +29 -0
- package/dist/components/gantt/snice-gantt.js +268 -0
- package/dist/components/gantt/snice-gantt.js.map +1 -0
- package/dist/components/gantt/snice-gantt.types.d.ts +23 -0
- package/dist/components/image/snice-image.d.ts +2 -2
- package/dist/components/image/snice-image.js +11 -11
- package/dist/components/image/snice-image.js.map +1 -1
- package/dist/components/input/snice-input.d.ts +2 -2
- package/dist/components/input/snice-input.js +8 -8
- package/dist/components/input/snice-input.js.map +1 -1
- package/dist/components/kanban/snice-kanban.d.ts +31 -0
- package/dist/components/kanban/snice-kanban.js +243 -0
- package/dist/components/kanban/snice-kanban.js.map +1 -0
- package/dist/components/kanban/snice-kanban.types.d.ts +29 -0
- package/dist/components/kpi/snice-kpi.d.ts +2 -2
- package/dist/components/kpi/snice-kpi.js +11 -11
- package/dist/components/kpi/snice-kpi.js.map +1 -1
- package/dist/components/layout/snice-layout-blog.d.ts +2 -2
- package/dist/components/layout/snice-layout-blog.js +8 -8
- package/dist/components/layout/snice-layout-blog.js.map +1 -1
- package/dist/components/layout/snice-layout-card.d.ts +2 -2
- package/dist/components/layout/snice-layout-card.js +8 -8
- package/dist/components/layout/snice-layout-card.js.map +1 -1
- package/dist/components/layout/snice-layout-centered.d.ts +2 -2
- package/dist/components/layout/snice-layout-centered.js +8 -8
- package/dist/components/layout/snice-layout-centered.js.map +1 -1
- package/dist/components/layout/snice-layout-dashboard.d.ts +2 -2
- package/dist/components/layout/snice-layout-dashboard.js +8 -8
- package/dist/components/layout/snice-layout-dashboard.js.map +1 -1
- package/dist/components/layout/snice-layout-fullscreen.d.ts +2 -2
- package/dist/components/layout/snice-layout-fullscreen.js +8 -8
- package/dist/components/layout/snice-layout-fullscreen.js.map +1 -1
- package/dist/components/layout/snice-layout-landing.d.ts +2 -2
- package/dist/components/layout/snice-layout-landing.js +8 -8
- package/dist/components/layout/snice-layout-landing.js.map +1 -1
- package/dist/components/layout/snice-layout-minimal.d.ts +2 -2
- package/dist/components/layout/snice-layout-minimal.js +8 -8
- package/dist/components/layout/snice-layout-minimal.js.map +1 -1
- package/dist/components/layout/snice-layout-sidebar.d.ts +2 -2
- package/dist/components/layout/snice-layout-sidebar.js +8 -8
- package/dist/components/layout/snice-layout-sidebar.js.map +1 -1
- package/dist/components/layout/snice-layout-split.d.ts +2 -2
- package/dist/components/layout/snice-layout-split.js +8 -8
- package/dist/components/layout/snice-layout-split.js.map +1 -1
- package/dist/components/layout/snice-layout.d.ts +2 -2
- package/dist/components/layout/snice-layout.js +8 -8
- package/dist/components/layout/snice-layout.js.map +1 -1
- package/dist/components/link/snice-link.d.ts +2 -2
- package/dist/components/link/snice-link.js +10 -10
- package/dist/components/link/snice-link.js.map +1 -1
- package/dist/components/list/snice-list-item.d.ts +6 -0
- package/dist/components/list/snice-list-item.js +68 -0
- package/dist/components/list/snice-list-item.js.map +1 -0
- package/dist/components/list/snice-list.d.ts +23 -0
- package/dist/components/list/snice-list.js +276 -0
- package/dist/components/list/snice-list.js.map +1 -0
- package/dist/components/list/snice-list.types.d.ts +10 -0
- package/dist/components/location/snice-location.d.ts +35 -0
- package/dist/components/location/snice-location.js +238 -0
- package/dist/components/location/snice-location.js.map +1 -0
- package/dist/components/location/snice-location.types.d.ts +35 -0
- package/dist/components/login/snice-login.d.ts +2 -2
- package/dist/components/login/snice-login.js +8 -8
- package/dist/components/login/snice-login.js.map +1 -1
- package/dist/components/menu/snice-menu-divider.d.ts +4 -0
- package/dist/components/menu/snice-menu-divider.js +53 -0
- package/dist/components/menu/snice-menu-divider.js.map +1 -0
- package/dist/components/menu/snice-menu-item.d.ts +10 -0
- package/dist/components/menu/snice-menu-item.js +99 -0
- package/dist/components/menu/snice-menu-item.js.map +1 -0
- package/dist/components/menu/snice-menu-item.types.d.ts +9 -0
- package/dist/components/menu/snice-menu.d.ts +27 -0
- package/dist/components/menu/snice-menu.js +199 -0
- package/dist/components/menu/snice-menu.js.map +1 -0
- package/dist/components/menu/snice-menu.types.d.ts +18 -0
- package/dist/components/modal/snice-modal.d.ts +2 -2
- package/dist/components/modal/snice-modal.js +8 -8
- package/dist/components/modal/snice-modal.js.map +1 -1
- package/dist/components/nav/snice-nav.js.map +1 -1
- package/dist/components/pagination/snice-pagination.d.ts +2 -2
- package/dist/components/pagination/snice-pagination.js +8 -8
- package/dist/components/pagination/snice-pagination.js.map +1 -1
- package/dist/components/progress/snice-progress.d.ts +2 -2
- package/dist/components/progress/snice-progress.js +10 -10
- package/dist/components/progress/snice-progress.js.map +1 -1
- package/dist/components/qr-code/qrcode.d.ts +28 -0
- package/dist/components/qr-code/qrcode.js +916 -0
- package/dist/components/qr-code/qrcode.js.map +1 -0
- package/dist/components/qr-code/snice-qr-code.d.ts +35 -0
- package/dist/components/qr-code/snice-qr-code.js +263 -0
- package/dist/components/qr-code/snice-qr-code.js.map +1 -0
- package/dist/components/qr-code/snice-qr-code.types.d.ts +33 -0
- package/dist/components/radio/snice-radio.d.ts +2 -2
- package/dist/components/radio/snice-radio.js +8 -8
- package/dist/components/radio/snice-radio.js.map +1 -1
- package/dist/components/select/snice-option.d.ts +2 -2
- package/dist/components/select/snice-option.js +8 -8
- package/dist/components/select/snice-option.js.map +1 -1
- package/dist/components/select/snice-select.d.ts +2 -2
- package/dist/components/select/snice-select.js +9 -9
- package/dist/components/select/snice-select.js.map +1 -1
- package/dist/components/skeleton/snice-skeleton.d.ts +2 -2
- package/dist/components/skeleton/snice-skeleton.js +9 -9
- package/dist/components/skeleton/snice-skeleton.js.map +1 -1
- package/dist/components/slider/snice-slider.d.ts +2 -2
- package/dist/components/slider/snice-slider.js +8 -8
- package/dist/components/slider/snice-slider.js.map +1 -1
- package/dist/components/sparkline/snice-sparkline.d.ts +2 -2
- package/dist/components/sparkline/snice-sparkline.js +10 -10
- package/dist/components/sparkline/snice-sparkline.js.map +1 -1
- package/dist/components/spinner/snice-spinner.d.ts +2 -2
- package/dist/components/spinner/snice-spinner.js +10 -10
- package/dist/components/spinner/snice-spinner.js.map +1 -1
- package/dist/components/split-pane/snice-split-pane.d.ts +32 -0
- package/dist/components/split-pane/snice-split-pane.js +191 -0
- package/dist/components/split-pane/snice-split-pane.js.map +1 -0
- package/dist/components/split-pane/snice-split-pane.types.d.ts +19 -0
- package/dist/components/stat/snice-stat.d.ts +14 -0
- package/dist/components/stat/snice-stat.js +140 -0
- package/dist/components/stat/snice-stat.js.map +1 -0
- package/dist/components/stat/snice-stat.types.d.ts +12 -0
- package/dist/components/stepper/snice-stepper-panel.d.ts +2 -2
- package/dist/components/stepper/snice-stepper-panel.js +10 -10
- package/dist/components/stepper/snice-stepper-panel.js.map +1 -1
- package/dist/components/stepper/snice-stepper.d.ts +2 -2
- package/dist/components/stepper/snice-stepper.js +11 -11
- package/dist/components/stepper/snice-stepper.js.map +1 -1
- package/dist/components/switch/snice-switch.d.ts +2 -2
- package/dist/components/switch/snice-switch.js +8 -8
- package/dist/components/switch/snice-switch.js.map +1 -1
- package/dist/components/table/snice-cell-actions.d.ts +2 -2
- package/dist/components/table/snice-cell-actions.js +8 -8
- package/dist/components/table/snice-cell-actions.js.map +1 -1
- package/dist/components/table/snice-cell-boolean.d.ts +2 -2
- package/dist/components/table/snice-cell-boolean.js +8 -8
- package/dist/components/table/snice-cell-boolean.js.map +1 -1
- package/dist/components/table/snice-cell-color.d.ts +2 -2
- package/dist/components/table/snice-cell-color.js +8 -8
- package/dist/components/table/snice-cell-color.js.map +1 -1
- package/dist/components/table/snice-cell-currency.d.ts +2 -2
- package/dist/components/table/snice-cell-currency.js +8 -8
- package/dist/components/table/snice-cell-currency.js.map +1 -1
- package/dist/components/table/snice-cell-date.d.ts +2 -2
- package/dist/components/table/snice-cell-date.js +8 -8
- package/dist/components/table/snice-cell-date.js.map +1 -1
- package/dist/components/table/snice-cell-duration.d.ts +2 -2
- package/dist/components/table/snice-cell-duration.js +8 -8
- package/dist/components/table/snice-cell-duration.js.map +1 -1
- package/dist/components/table/snice-cell-email.d.ts +2 -2
- package/dist/components/table/snice-cell-email.js +8 -8
- package/dist/components/table/snice-cell-email.js.map +1 -1
- package/dist/components/table/snice-cell-filesize.d.ts +2 -2
- package/dist/components/table/snice-cell-filesize.js +8 -8
- package/dist/components/table/snice-cell-filesize.js.map +1 -1
- package/dist/components/table/snice-cell-image.d.ts +2 -2
- package/dist/components/table/snice-cell-image.js +8 -8
- package/dist/components/table/snice-cell-image.js.map +1 -1
- package/dist/components/table/snice-cell-json.d.ts +2 -2
- package/dist/components/table/snice-cell-json.js +8 -8
- package/dist/components/table/snice-cell-json.js.map +1 -1
- package/dist/components/table/snice-cell-link.d.ts +2 -2
- package/dist/components/table/snice-cell-link.js +8 -8
- package/dist/components/table/snice-cell-link.js.map +1 -1
- package/dist/components/table/snice-cell-location.d.ts +2 -2
- package/dist/components/table/snice-cell-location.js +8 -8
- package/dist/components/table/snice-cell-location.js.map +1 -1
- package/dist/components/table/snice-cell-number.d.ts +2 -2
- package/dist/components/table/snice-cell-number.js +8 -8
- package/dist/components/table/snice-cell-number.js.map +1 -1
- package/dist/components/table/snice-cell-percentage.d.ts +2 -2
- package/dist/components/table/snice-cell-percentage.js +8 -8
- package/dist/components/table/snice-cell-percentage.js.map +1 -1
- package/dist/components/table/snice-cell-phone.d.ts +2 -2
- package/dist/components/table/snice-cell-phone.js +8 -8
- package/dist/components/table/snice-cell-phone.js.map +1 -1
- package/dist/components/table/snice-cell-progress.d.ts +2 -2
- package/dist/components/table/snice-cell-progress.js +8 -8
- package/dist/components/table/snice-cell-progress.js.map +1 -1
- package/dist/components/table/snice-cell-rating.d.ts +2 -2
- package/dist/components/table/snice-cell-rating.js +8 -8
- package/dist/components/table/snice-cell-rating.js.map +1 -1
- package/dist/components/table/snice-cell-sparkline.d.ts +2 -2
- package/dist/components/table/snice-cell-sparkline.js +8 -8
- package/dist/components/table/snice-cell-sparkline.js.map +1 -1
- package/dist/components/table/snice-cell-status.d.ts +2 -2
- package/dist/components/table/snice-cell-status.js +8 -8
- package/dist/components/table/snice-cell-status.js.map +1 -1
- package/dist/components/table/snice-cell-tag.d.ts +2 -2
- package/dist/components/table/snice-cell-tag.js +8 -8
- package/dist/components/table/snice-cell-tag.js.map +1 -1
- package/dist/components/table/snice-cell-text.d.ts +2 -2
- package/dist/components/table/snice-cell-text.js +8 -8
- package/dist/components/table/snice-cell-text.js.map +1 -1
- package/dist/components/table/snice-cell.d.ts +2 -2
- package/dist/components/table/snice-cell.js +8 -8
- package/dist/components/table/snice-cell.js.map +1 -1
- package/dist/components/table/snice-column.d.ts +1 -1
- package/dist/components/table/snice-column.js +4 -4
- package/dist/components/table/snice-column.js.map +1 -1
- package/dist/components/table/snice-header.d.ts +2 -2
- package/dist/components/table/snice-header.js +8 -8
- package/dist/components/table/snice-header.js.map +1 -1
- package/dist/components/table/snice-progress.d.ts +2 -2
- package/dist/components/table/snice-progress.js +8 -8
- package/dist/components/table/snice-progress.js.map +1 -1
- package/dist/components/table/snice-rating.d.ts +2 -2
- package/dist/components/table/snice-rating.js +8 -8
- package/dist/components/table/snice-rating.js.map +1 -1
- package/dist/components/table/snice-row.d.ts +2 -2
- package/dist/components/table/snice-row.js +8 -8
- package/dist/components/table/snice-row.js.map +1 -1
- package/dist/components/table/snice-table.d.ts +2 -3
- package/dist/components/table/snice-table.js +8 -13
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/tabs/snice-tab-panel.d.ts +2 -2
- package/dist/components/tabs/snice-tab-panel.js +8 -8
- package/dist/components/tabs/snice-tab-panel.js.map +1 -1
- package/dist/components/tabs/snice-tab.d.ts +2 -2
- package/dist/components/tabs/snice-tab.js +8 -8
- package/dist/components/tabs/snice-tab.js.map +1 -1
- package/dist/components/tabs/snice-tabs.d.ts +2 -2
- package/dist/components/tabs/snice-tabs.js +8 -8
- package/dist/components/tabs/snice-tabs.js.map +1 -1
- package/dist/components/terminal/snice-terminal.types.d.ts +133 -0
- package/dist/components/textarea/snice-textarea.d.ts +2 -2
- package/dist/components/textarea/snice-textarea.js +8 -8
- package/dist/components/textarea/snice-textarea.js.map +1 -1
- package/dist/components/timeline/snice-timeline.d.ts +1 -1
- package/dist/components/timeline/snice-timeline.js +7 -7
- package/dist/components/timeline/snice-timeline.js.map +1 -1
- package/dist/components/toast/snice-toast-container.d.ts +2 -2
- package/dist/components/toast/snice-toast-container.js +8 -8
- package/dist/components/toast/snice-toast-container.js.map +1 -1
- package/dist/components/toast/snice-toast.d.ts +2 -2
- package/dist/components/toast/snice-toast.js +8 -8
- package/dist/components/toast/snice-toast.js.map +1 -1
- package/dist/components/tooltip/snice-tooltip.d.ts +2 -2
- package/dist/components/tooltip/snice-tooltip.js +8 -8
- package/dist/components/tooltip/snice-tooltip.js.map +1 -1
- package/dist/components/tree/snice-tree-item.d.ts +35 -0
- package/dist/components/tree/snice-tree-item.js +301 -0
- package/dist/components/tree/snice-tree-item.js.map +1 -0
- package/dist/components/tree/snice-tree-item.types.d.ts +30 -0
- package/dist/components/tree/snice-tree.d.ts +45 -0
- package/dist/components/tree/snice-tree.js +390 -0
- package/dist/components/tree/snice-tree.js.map +1 -0
- package/dist/components/tree/snice-tree.types.d.ts +65 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.d.ts +31 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.js +160 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.js.map +1 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.types.d.ts +19 -0
- package/dist/index.cjs +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.iife.js +1 -1
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/components/actions.md +81 -0
- package/docs/ai/components/audio-recorder.md +97 -0
- package/docs/ai/components/calendar.md +95 -0
- package/docs/ai/components/camera.md +130 -0
- package/docs/ai/components/carousel.md +49 -0
- package/docs/ai/components/chart.md +160 -0
- package/docs/ai/components/chat.md +189 -0
- package/docs/ai/components/code-block.md +32 -0
- package/docs/ai/components/command-palette.md +117 -0
- package/docs/ai/components/doc.md +154 -0
- package/docs/ai/components/draw.md +140 -0
- package/docs/ai/components/gantt.md +95 -0
- package/docs/ai/components/kanban.md +102 -0
- package/docs/ai/components/layout.md +261 -0
- package/docs/ai/components/list.md +50 -0
- package/docs/ai/components/location.md +75 -0
- package/docs/ai/components/menu.md +114 -0
- package/docs/ai/components/popover.md +70 -0
- package/docs/ai/components/qr-code.md +106 -0
- package/docs/ai/components/split-pane.md +71 -0
- package/docs/ai/components/stat.md +29 -0
- package/docs/ai/components/tree.md +191 -0
- package/docs/ai/components/virtual-scroller.md +71 -0
- package/docs/components/actions.md +317 -0
- package/docs/components/alert.md +540 -0
- package/docs/components/audio-recorder.md +152 -0
- package/docs/components/badge.md +593 -0
- package/docs/components/breadcrumbs.md +568 -0
- package/docs/components/button.md +648 -0
- package/docs/components/calendar.md +397 -0
- package/docs/components/camera.md +383 -0
- package/docs/components/card.md +778 -0
- package/docs/components/carousel.md +63 -0
- package/docs/components/chart.md +526 -0
- package/docs/components/chat.md +482 -0
- package/docs/components/checkbox.md +714 -0
- package/docs/components/chip.md +670 -0
- package/docs/components/code-block.md +49 -0
- package/docs/components/command-palette.md +159 -0
- package/docs/components/doc.md +357 -0
- package/docs/components/draw.md +307 -0
- package/docs/components/gantt.md +347 -0
- package/docs/components/kanban.md +410 -0
- package/docs/components/list.md +65 -0
- package/docs/components/location.md +369 -0
- package/docs/components/menu.md +633 -0
- package/docs/components/popover.md +333 -0
- package/docs/components/qr-code.md +464 -0
- package/docs/components/split-pane.md +315 -0
- package/docs/components/stat.md +45 -0
- package/docs/components/tree.md +536 -0
- package/docs/components/virtual-scroller.md +298 -0
- package/package.json +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type ActionButtonSize = 'small' | 'medium' | 'large';
|
|
2
|
+
export type ActionButtonVariant = 'text' | 'outlined' | 'filled';
|
|
3
|
+
export interface ActionButton {
|
|
4
|
+
id: string;
|
|
5
|
+
label?: string;
|
|
6
|
+
icon?: string;
|
|
7
|
+
iconImage?: string;
|
|
8
|
+
variant?: ActionButtonVariant;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
danger?: boolean;
|
|
11
|
+
tooltip?: string;
|
|
12
|
+
action?: () => void | Promise<void>;
|
|
13
|
+
href?: string;
|
|
14
|
+
target?: string;
|
|
15
|
+
data?: any;
|
|
16
|
+
}
|
|
17
|
+
export interface SniceActionsElement extends HTMLElement {
|
|
18
|
+
actions: ActionButton[];
|
|
19
|
+
size: ActionButtonSize;
|
|
20
|
+
variant: ActionButtonVariant;
|
|
21
|
+
showLabels: boolean;
|
|
22
|
+
maxVisible: number;
|
|
23
|
+
moreLabel: string;
|
|
24
|
+
moreIcon: string;
|
|
25
|
+
triggerAction(id: string): void;
|
|
26
|
+
getAction(id: string): ActionButton | undefined;
|
|
27
|
+
}
|
|
@@ -7,8 +7,8 @@ export declare class SniceAlert extends HTMLElement implements SniceAlertElement
|
|
|
7
7
|
icon: string;
|
|
8
8
|
alertElement?: HTMLElement;
|
|
9
9
|
private isHidden;
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
render(): import("snice").TemplateResult;
|
|
11
|
+
styles(): import("snice").CSSResult;
|
|
12
12
|
private shouldShowDefaultIcon;
|
|
13
13
|
handleDismiss(): {
|
|
14
14
|
variant: AlertVariant;
|
|
@@ -28,8 +28,8 @@ let SniceAlert = (() => {
|
|
|
28
28
|
let _alertElement_decorators;
|
|
29
29
|
let _alertElement_initializers = [];
|
|
30
30
|
let _alertElement_extraInitializers = [];
|
|
31
|
-
let
|
|
32
|
-
let
|
|
31
|
+
let _render_decorators;
|
|
32
|
+
let _styles_decorators;
|
|
33
33
|
let _handleDismiss_decorators;
|
|
34
34
|
let _dispatchAlertHidden_decorators;
|
|
35
35
|
let _dispatchAlertShown_decorators;
|
|
@@ -53,13 +53,13 @@ let SniceAlert = (() => {
|
|
|
53
53
|
_dismissible_decorators = [property({ type: Boolean, })];
|
|
54
54
|
_icon_decorators = [property({})];
|
|
55
55
|
_alertElement_decorators = [query('.alert')];
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
_render_decorators = [render()];
|
|
57
|
+
_styles_decorators = [styles()];
|
|
58
58
|
_handleDismiss_decorators = [dispatch('alert-dismiss')];
|
|
59
59
|
_dispatchAlertHidden_decorators = [dispatch('alert-hidden')];
|
|
60
60
|
_dispatchAlertShown_decorators = [dispatch('alert-shown')];
|
|
61
|
-
__esDecorate(this, null,
|
|
62
|
-
__esDecorate(this, null,
|
|
61
|
+
__esDecorate(this, null, _render_decorators, { kind: "method", name: "render", static: false, private: false, access: { has: obj => "render" in obj, get: obj => obj.render }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
62
|
+
__esDecorate(this, null, _styles_decorators, { kind: "method", name: "styles", static: false, private: false, access: { has: obj => "styles" in obj, get: obj => obj.styles }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
63
63
|
__esDecorate(this, null, _handleDismiss_decorators, { kind: "method", name: "handleDismiss", static: false, private: false, access: { has: obj => "handleDismiss" in obj, get: obj => obj.handleDismiss }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
64
64
|
__esDecorate(this, null, _dispatchAlertHidden_decorators, { kind: "method", name: "dispatchAlertHidden", static: false, private: false, access: { has: obj => "dispatchAlertHidden" in obj, get: obj => obj.dispatchAlertHidden }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
65
65
|
__esDecorate(this, null, _dispatchAlertShown_decorators, { kind: "method", name: "dispatchAlertShown", static: false, private: false, access: { has: obj => "dispatchAlertShown" in obj, get: obj => obj.dispatchAlertShown }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
@@ -74,7 +74,7 @@ let SniceAlert = (() => {
|
|
|
74
74
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
75
75
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
76
76
|
}
|
|
77
|
-
|
|
77
|
+
render() {
|
|
78
78
|
const hasIcon = this.icon ? this.icon !== 'none' : this.shouldShowDefaultIcon();
|
|
79
79
|
const classes = [
|
|
80
80
|
'alert',
|
|
@@ -109,7 +109,7 @@ let SniceAlert = (() => {
|
|
|
109
109
|
</div>
|
|
110
110
|
`;
|
|
111
111
|
}
|
|
112
|
-
|
|
112
|
+
styles() {
|
|
113
113
|
return css /*css*/ `${cssContent}`;
|
|
114
114
|
}
|
|
115
115
|
shouldShowDefaultIcon() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snice-alert.js","sources":["../../../components/alert/snice-alert.css?inline","../../../../components/alert/snice-alert.ts"],"sourcesContent":["export default \":host{display:block;--alert-padding:0.75rem 1rem;--alert-border-radius:6px;--alert-font-size:0.875rem;--alert-icon-size:1.25rem;--alert-border-width:1px}.alert{display:flex;align-items:flex-start;padding:var(--alert-padding);border-radius:var(--alert-border-radius);font-size:var(--alert-font-size);line-height:1.5;border:var(--alert-border-width) solid;position:relative;animation:.3s slideIn}.alert--hidden{display:none}@keyframes slideIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideOut{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}.alert--hiding{animation:.3s forwards slideOut}:host([variant=info]) .alert{background:rgb(var(--snice-color-blue-50,239 246 255));border-color:rgb(var(--snice-color-blue-200,191 219 254));color:rgb(var(--snice-color-blue-900,30 58 138))}:host([variant=success]) .alert{background:rgb(var(--snice-color-green-50,240 253 244));border-color:rgb(var(--snice-color-green-200,187 247 208));color:rgb(var(--snice-color-green-900,20 83 45))}:host([variant=warning]) .alert{background:rgb(var(--snice-color-yellow-50,254 252 232));border-color:rgb(var(--snice-color-yellow-200,254 240 138));color:rgb(var(--snice-color-yellow-900,113 63 18))}:host([variant=error]) .alert{background:rgb(var(--snice-color-red-50,254 242 242));border-color:rgb(var(--snice-color-red-200,254 202 202));color:rgb(var(--snice-color-red-900,127 29 29))}.alert-icon{flex-shrink:0;width:var(--alert-icon-size);height:var(--alert-icon-size);margin-right:.75rem;display:flex;align-items:center;justify-content:center}.alert-icon svg{width:100%;height:100%}:host([variant=info]) .alert-icon--default::before{content:\\\"ℹ\\\";font-size:1.125rem;font-weight:700}:host([variant=success]) .alert-icon--default::before{content:\\\"✓\\\";font-size:1rem;font-weight:700}:host([variant=warning]) .alert-icon--default::before{content:\\\"⚠\\\";font-size:1.125rem}:host([variant=error]) .alert-icon--default::before{content:\\\"✕\\\";font-size:1rem;font-weight:700}.alert-content{flex:1;min-width:0}.alert-title{font-weight:600;margin-bottom:.25rem}.alert-title:empty{display:none}.alert-description{color:inherit;opacity:.9}.alert-dismiss{flex-shrink:0;margin-left:.75rem;margin-right:-.25rem;padding:.25rem;background:0 0;border:none;cursor:pointer;opacity:.6;transition:opacity .2s;border-radius:4px;display:flex;align-items:center;justify-content:center;color:inherit}.alert-dismiss:hover{opacity:1}.alert-dismiss:focus-visible{outline:currentColor solid 2px;outline-offset:2px}.alert-dismiss svg{width:1rem;height:1rem}:host([size=small]){--alert-padding:0.5rem 0.75rem;--alert-font-size:0.75rem;--alert-icon-size:1rem;--alert-border-radius:4px}:host([size=large]){--alert-padding:1rem 1.25rem;--alert-font-size:1rem;--alert-icon-size:1.5rem;--alert-border-radius:8px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\";",null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snice-alert.js","sources":["../../../components/alert/snice-alert.css?inline","../../../../components/alert/snice-alert.ts"],"sourcesContent":["export default \":host{display:block;--alert-padding:0.75rem 1rem;--alert-border-radius:6px;--alert-font-size:0.875rem;--alert-icon-size:1.25rem;--alert-border-width:1px}.alert{display:flex;align-items:flex-start;padding:var(--alert-padding);border-radius:var(--alert-border-radius);font-size:var(--alert-font-size);line-height:1.5;border:var(--alert-border-width) solid;position:relative;animation:.3s slideIn}.alert--hidden{display:none}@keyframes slideIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideOut{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}.alert--hiding{animation:.3s forwards slideOut}:host([variant=info]) .alert{background:rgb(var(--snice-color-blue-50,239 246 255));border-color:rgb(var(--snice-color-blue-200,191 219 254));color:rgb(var(--snice-color-blue-900,30 58 138))}:host([variant=success]) .alert{background:rgb(var(--snice-color-green-50,240 253 244));border-color:rgb(var(--snice-color-green-200,187 247 208));color:rgb(var(--snice-color-green-900,20 83 45))}:host([variant=warning]) .alert{background:rgb(var(--snice-color-yellow-50,254 252 232));border-color:rgb(var(--snice-color-yellow-200,254 240 138));color:rgb(var(--snice-color-yellow-900,113 63 18))}:host([variant=error]) .alert{background:rgb(var(--snice-color-red-50,254 242 242));border-color:rgb(var(--snice-color-red-200,254 202 202));color:rgb(var(--snice-color-red-900,127 29 29))}.alert-icon{flex-shrink:0;width:var(--alert-icon-size);height:var(--alert-icon-size);margin-right:.75rem;display:flex;align-items:center;justify-content:center}.alert-icon svg{width:100%;height:100%}:host([variant=info]) .alert-icon--default::before{content:\\\"ℹ\\\";font-size:1.125rem;font-weight:700}:host([variant=success]) .alert-icon--default::before{content:\\\"✓\\\";font-size:1rem;font-weight:700}:host([variant=warning]) .alert-icon--default::before{content:\\\"⚠\\\";font-size:1.125rem}:host([variant=error]) .alert-icon--default::before{content:\\\"✕\\\";font-size:1rem;font-weight:700}.alert-content{flex:1;min-width:0}.alert-title{font-weight:600;margin-bottom:.25rem}.alert-title:empty{display:none}.alert-description{color:inherit;opacity:.9}.alert-dismiss{flex-shrink:0;margin-left:.75rem;margin-right:-.25rem;padding:.25rem;background:0 0;border:none;cursor:pointer;opacity:.6;transition:opacity .2s;border-radius:4px;display:flex;align-items:center;justify-content:center;color:inherit}.alert-dismiss:hover{opacity:1}.alert-dismiss:focus-visible{outline:currentColor solid 2px;outline-offset:2px}.alert-dismiss svg{width:1rem;height:1rem}:host([size=small]){--alert-padding:0.5rem 0.75rem;--alert-font-size:0.75rem;--alert-icon-size:1rem;--alert-border-radius:4px}:host([size=large]){--alert-padding:1rem 1.25rem;--alert-font-size:1rem;--alert-icon-size:1.5rem;--alert-border-radius:8px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\";",null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { AudioFormat, RecorderState, AudioRecording, SniceAudioRecorderElement } from './snice-audio-recorder.types';
|
|
2
|
+
export declare class SniceAudioRecorder extends HTMLElement implements SniceAudioRecorderElement {
|
|
3
|
+
autoStart: boolean;
|
|
4
|
+
format: AudioFormat;
|
|
5
|
+
bitrate: number;
|
|
6
|
+
showControls: boolean;
|
|
7
|
+
showVisualizer: boolean;
|
|
8
|
+
maxDuration: number;
|
|
9
|
+
showTimer: boolean;
|
|
10
|
+
private mediaRecorder;
|
|
11
|
+
private stream;
|
|
12
|
+
private audioChunks;
|
|
13
|
+
private state;
|
|
14
|
+
private startTime;
|
|
15
|
+
private pausedTime;
|
|
16
|
+
private duration;
|
|
17
|
+
private timerInterval;
|
|
18
|
+
private errorMessage;
|
|
19
|
+
private audioContext;
|
|
20
|
+
private analyser;
|
|
21
|
+
private visualizerData;
|
|
22
|
+
private animationFrame;
|
|
23
|
+
private recordedUrl;
|
|
24
|
+
styles(): import("snice").CSSResult;
|
|
25
|
+
connectedCallback(): void;
|
|
26
|
+
disconnectedCallback(): void;
|
|
27
|
+
render(): import("snice").TemplateResult;
|
|
28
|
+
private renderVisualizer;
|
|
29
|
+
private renderControls;
|
|
30
|
+
private getStateLabel;
|
|
31
|
+
private formatTime;
|
|
32
|
+
private getVisualizerHeight;
|
|
33
|
+
start(): Promise<void>;
|
|
34
|
+
stop(): Promise<AudioRecording>;
|
|
35
|
+
pause(): void;
|
|
36
|
+
resume(): void;
|
|
37
|
+
cancel(): void;
|
|
38
|
+
getState(): RecorderState;
|
|
39
|
+
getDuration(): number;
|
|
40
|
+
isRecording(): boolean;
|
|
41
|
+
download(filename?: string): void;
|
|
42
|
+
private handleRecordingComplete;
|
|
43
|
+
private startTimer;
|
|
44
|
+
private stopTimer;
|
|
45
|
+
private updateVisualizer;
|
|
46
|
+
private cleanup;
|
|
47
|
+
private emitRecorderStart;
|
|
48
|
+
private emitRecorderError;
|
|
49
|
+
private emitRecorderPause;
|
|
50
|
+
private emitRecorderResume;
|
|
51
|
+
private emitRecorderCancel;
|
|
52
|
+
private emitRecorderStop;
|
|
53
|
+
}
|
|
54
|
+
declare global {
|
|
55
|
+
interface HTMLElementTagNameMap {
|
|
56
|
+
'snice-audio-recorder': SniceAudioRecorder;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
import { __runInitializers, __esDecorate } from 'tslib';
|
|
2
|
+
import { element, property, styles, render, dispatch, css, html } from 'snice';
|
|
3
|
+
|
|
4
|
+
var recorderStyles = ":host{display:block;width:100%;max-width:500px;font-family:var(--font-family, system-ui, -apple-system, sans-serif)}.recorder-container{background:var(--recorder-bg,#f5f5f5);border-radius:var(--recorder-border-radius,12px);padding:24px;box-shadow:0 2px 8px rgba(0,0,0,.1)}.recorder-status{text-align:center;margin-bottom:20px}.recorder-state{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:20px;font-size:14px;font-weight:500}.recorder-state.inactive{background:#e0e0e0;color:#666}.recorder-state.recording{background:#f443361a;color:#f44336}.recorder-state.paused{background:#ff98001a;color:#ff9800}.recorder-state-icon{width:8px;height:8px;border-radius:50%;background:currentColor}.recorder-state.recording .recorder-state-icon{animation:1.5s ease-in-out infinite pulse}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}.recorder-timer{font-size:32px;font-weight:300;text-align:center;margin:20px 0;font-variant-numeric:tabular-nums;color:var(--text-color,#333)}.recorder-visualizer{height:80px;display:flex;align-items:center;justify-content:center;gap:2px;margin:20px 0;background:rgba(0,0,0,.05);border-radius:8px;padding:10px}.visualizer-bar{flex:1;max-width:4px;background:var(--primary-color,#2196f3);border-radius:2px;transition:height .1s}.recorder-controls{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:20px}.recorder-btn{width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s;color:#fff;font-size:20px;background:var(--primary-color,#2196f3)}.recorder-btn:hover{transform:scale(1.1)}.recorder-btn:active{transform:scale(.95)}.recorder-btn.record{width:64px;height:64px;background:#f44336}.recorder-btn.record:hover{background:#d32f2f}.recorder-btn.pause{background:#ff9800}.recorder-btn.pause:hover{background:#f57c00}.recorder-btn.stop{background:#666}.recorder-btn.stop:hover{background:#555}.recorder-btn.cancel{background:0 0;color:#666;border:2px solid #e0e0e0}.recorder-btn.cancel:hover{border-color:#666;color:#333}.recorder-btn.download{background:#4caf50}.recorder-btn.download:hover{background:#45a049}.recorder-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.recorder-info{display:flex;justify-content:space-between;align-items:center;margin-top:16px;padding-top:16px;border-top:1px solid #e0e0e0;font-size:12px;color:#666}.recorder-error{margin-top:12px;padding:12px;background:#ffebee;color:#c62828;border-radius:6px;font-size:14px;text-align:center}.recorder-playback{margin-top:20px}.recorder-playback audio{width:100%;border-radius:8px}";
|
|
5
|
+
|
|
6
|
+
let SniceAudioRecorder = (() => {
|
|
7
|
+
let _classDecorators = [element('snice-audio-recorder')];
|
|
8
|
+
let _classDescriptor;
|
|
9
|
+
let _classExtraInitializers = [];
|
|
10
|
+
let _classThis;
|
|
11
|
+
let _classSuper = HTMLElement;
|
|
12
|
+
let _instanceExtraInitializers = [];
|
|
13
|
+
let _autoStart_decorators;
|
|
14
|
+
let _autoStart_initializers = [];
|
|
15
|
+
let _autoStart_extraInitializers = [];
|
|
16
|
+
let _format_decorators;
|
|
17
|
+
let _format_initializers = [];
|
|
18
|
+
let _format_extraInitializers = [];
|
|
19
|
+
let _bitrate_decorators;
|
|
20
|
+
let _bitrate_initializers = [];
|
|
21
|
+
let _bitrate_extraInitializers = [];
|
|
22
|
+
let _showControls_decorators;
|
|
23
|
+
let _showControls_initializers = [];
|
|
24
|
+
let _showControls_extraInitializers = [];
|
|
25
|
+
let _showVisualizer_decorators;
|
|
26
|
+
let _showVisualizer_initializers = [];
|
|
27
|
+
let _showVisualizer_extraInitializers = [];
|
|
28
|
+
let _maxDuration_decorators;
|
|
29
|
+
let _maxDuration_initializers = [];
|
|
30
|
+
let _maxDuration_extraInitializers = [];
|
|
31
|
+
let _showTimer_decorators;
|
|
32
|
+
let _showTimer_initializers = [];
|
|
33
|
+
let _showTimer_extraInitializers = [];
|
|
34
|
+
let _styles_decorators;
|
|
35
|
+
let _render_decorators;
|
|
36
|
+
let _emitRecorderStart_decorators;
|
|
37
|
+
let _emitRecorderError_decorators;
|
|
38
|
+
let _emitRecorderPause_decorators;
|
|
39
|
+
let _emitRecorderResume_decorators;
|
|
40
|
+
let _emitRecorderCancel_decorators;
|
|
41
|
+
let _emitRecorderStop_decorators;
|
|
42
|
+
(class extends _classSuper {
|
|
43
|
+
static { _classThis = this; }
|
|
44
|
+
constructor() {
|
|
45
|
+
super(...arguments);
|
|
46
|
+
this.autoStart = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _autoStart_initializers, false));
|
|
47
|
+
this.format = (__runInitializers(this, _autoStart_extraInitializers), __runInitializers(this, _format_initializers, 'audio/webm'));
|
|
48
|
+
this.bitrate = (__runInitializers(this, _format_extraInitializers), __runInitializers(this, _bitrate_initializers, 128000));
|
|
49
|
+
this.showControls = (__runInitializers(this, _bitrate_extraInitializers), __runInitializers(this, _showControls_initializers, true));
|
|
50
|
+
this.showVisualizer = (__runInitializers(this, _showControls_extraInitializers), __runInitializers(this, _showVisualizer_initializers, true));
|
|
51
|
+
this.maxDuration = (__runInitializers(this, _showVisualizer_extraInitializers), __runInitializers(this, _maxDuration_initializers, 0)); // 0 = unlimited
|
|
52
|
+
this.showTimer = (__runInitializers(this, _maxDuration_extraInitializers), __runInitializers(this, _showTimer_initializers, true));
|
|
53
|
+
this.mediaRecorder = (__runInitializers(this, _showTimer_extraInitializers), null);
|
|
54
|
+
this.stream = null;
|
|
55
|
+
this.audioChunks = [];
|
|
56
|
+
this.state = 'inactive';
|
|
57
|
+
this.startTime = 0;
|
|
58
|
+
this.pausedTime = 0;
|
|
59
|
+
this.duration = 0;
|
|
60
|
+
this.timerInterval = null;
|
|
61
|
+
this.errorMessage = '';
|
|
62
|
+
this.audioContext = null;
|
|
63
|
+
this.analyser = null;
|
|
64
|
+
this.visualizerData = null;
|
|
65
|
+
this.animationFrame = null;
|
|
66
|
+
this.recordedUrl = '';
|
|
67
|
+
}
|
|
68
|
+
static {
|
|
69
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
70
|
+
_autoStart_decorators = [property({ type: Boolean, attribute: 'auto-start' })];
|
|
71
|
+
_format_decorators = [property({ type: String })];
|
|
72
|
+
_bitrate_decorators = [property({ type: Number })];
|
|
73
|
+
_showControls_decorators = [property({ type: Boolean, attribute: 'show-controls' })];
|
|
74
|
+
_showVisualizer_decorators = [property({ type: Boolean, attribute: 'show-visualizer' })];
|
|
75
|
+
_maxDuration_decorators = [property({ type: Number, attribute: 'max-duration' })];
|
|
76
|
+
_showTimer_decorators = [property({ type: Boolean, attribute: 'show-timer' })];
|
|
77
|
+
_styles_decorators = [styles()];
|
|
78
|
+
_render_decorators = [render()];
|
|
79
|
+
_emitRecorderStart_decorators = [dispatch('@snice/recorder-start', { bubbles: true, composed: true })];
|
|
80
|
+
_emitRecorderError_decorators = [dispatch('@snice/recorder-error', { bubbles: true, composed: true })];
|
|
81
|
+
_emitRecorderPause_decorators = [dispatch('@snice/recorder-pause', { bubbles: true, composed: true })];
|
|
82
|
+
_emitRecorderResume_decorators = [dispatch('@snice/recorder-resume', { bubbles: true, composed: true })];
|
|
83
|
+
_emitRecorderCancel_decorators = [dispatch('@snice/recorder-cancel', { bubbles: true, composed: true })];
|
|
84
|
+
_emitRecorderStop_decorators = [dispatch('@snice/recorder-stop', { bubbles: true, composed: true })];
|
|
85
|
+
__esDecorate(this, null, _styles_decorators, { kind: "method", name: "styles", static: false, private: false, access: { has: obj => "styles" in obj, get: obj => obj.styles }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
86
|
+
__esDecorate(this, null, _render_decorators, { kind: "method", name: "render", static: false, private: false, access: { has: obj => "render" in obj, get: obj => obj.render }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
87
|
+
__esDecorate(this, null, _emitRecorderStart_decorators, { kind: "method", name: "emitRecorderStart", static: false, private: false, access: { has: obj => "emitRecorderStart" in obj, get: obj => obj.emitRecorderStart }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
88
|
+
__esDecorate(this, null, _emitRecorderError_decorators, { kind: "method", name: "emitRecorderError", static: false, private: false, access: { has: obj => "emitRecorderError" in obj, get: obj => obj.emitRecorderError }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
89
|
+
__esDecorate(this, null, _emitRecorderPause_decorators, { kind: "method", name: "emitRecorderPause", static: false, private: false, access: { has: obj => "emitRecorderPause" in obj, get: obj => obj.emitRecorderPause }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
90
|
+
__esDecorate(this, null, _emitRecorderResume_decorators, { kind: "method", name: "emitRecorderResume", static: false, private: false, access: { has: obj => "emitRecorderResume" in obj, get: obj => obj.emitRecorderResume }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
91
|
+
__esDecorate(this, null, _emitRecorderCancel_decorators, { kind: "method", name: "emitRecorderCancel", static: false, private: false, access: { has: obj => "emitRecorderCancel" in obj, get: obj => obj.emitRecorderCancel }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
92
|
+
__esDecorate(this, null, _emitRecorderStop_decorators, { kind: "method", name: "emitRecorderStop", static: false, private: false, access: { has: obj => "emitRecorderStop" in obj, get: obj => obj.emitRecorderStop }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
93
|
+
__esDecorate(null, null, _autoStart_decorators, { kind: "field", name: "autoStart", static: false, private: false, access: { has: obj => "autoStart" in obj, get: obj => obj.autoStart, set: (obj, value) => { obj.autoStart = value; } }, metadata: _metadata }, _autoStart_initializers, _autoStart_extraInitializers);
|
|
94
|
+
__esDecorate(null, null, _format_decorators, { kind: "field", name: "format", static: false, private: false, access: { has: obj => "format" in obj, get: obj => obj.format, set: (obj, value) => { obj.format = value; } }, metadata: _metadata }, _format_initializers, _format_extraInitializers);
|
|
95
|
+
__esDecorate(null, null, _bitrate_decorators, { kind: "field", name: "bitrate", static: false, private: false, access: { has: obj => "bitrate" in obj, get: obj => obj.bitrate, set: (obj, value) => { obj.bitrate = value; } }, metadata: _metadata }, _bitrate_initializers, _bitrate_extraInitializers);
|
|
96
|
+
__esDecorate(null, null, _showControls_decorators, { kind: "field", name: "showControls", static: false, private: false, access: { has: obj => "showControls" in obj, get: obj => obj.showControls, set: (obj, value) => { obj.showControls = value; } }, metadata: _metadata }, _showControls_initializers, _showControls_extraInitializers);
|
|
97
|
+
__esDecorate(null, null, _showVisualizer_decorators, { kind: "field", name: "showVisualizer", static: false, private: false, access: { has: obj => "showVisualizer" in obj, get: obj => obj.showVisualizer, set: (obj, value) => { obj.showVisualizer = value; } }, metadata: _metadata }, _showVisualizer_initializers, _showVisualizer_extraInitializers);
|
|
98
|
+
__esDecorate(null, null, _maxDuration_decorators, { kind: "field", name: "maxDuration", static: false, private: false, access: { has: obj => "maxDuration" in obj, get: obj => obj.maxDuration, set: (obj, value) => { obj.maxDuration = value; } }, metadata: _metadata }, _maxDuration_initializers, _maxDuration_extraInitializers);
|
|
99
|
+
__esDecorate(null, null, _showTimer_decorators, { kind: "field", name: "showTimer", static: false, private: false, access: { has: obj => "showTimer" in obj, get: obj => obj.showTimer, set: (obj, value) => { obj.showTimer = value; } }, metadata: _metadata }, _showTimer_initializers, _showTimer_extraInitializers);
|
|
100
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
101
|
+
_classThis = _classDescriptor.value;
|
|
102
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
103
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
104
|
+
}
|
|
105
|
+
styles() {
|
|
106
|
+
return css /*css*/ `${recorderStyles}`;
|
|
107
|
+
}
|
|
108
|
+
connectedCallback() {
|
|
109
|
+
if (this.autoStart) {
|
|
110
|
+
this.start();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
disconnectedCallback() {
|
|
114
|
+
this.cleanup();
|
|
115
|
+
}
|
|
116
|
+
render() {
|
|
117
|
+
return html /*html*/ `
|
|
118
|
+
<div class="recorder-container">
|
|
119
|
+
<div class="recorder-status">
|
|
120
|
+
<div class="recorder-state ${this.state}">
|
|
121
|
+
<div class="recorder-state-icon"></div>
|
|
122
|
+
<span>${this.getStateLabel()}</span>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
|
|
126
|
+
${this.showTimer ? html `
|
|
127
|
+
<div class="recorder-timer">${this.formatTime(this.duration)}</div>
|
|
128
|
+
` : ''}
|
|
129
|
+
|
|
130
|
+
${this.showVisualizer ? this.renderVisualizer() : ''}
|
|
131
|
+
|
|
132
|
+
${this.showControls ? this.renderControls() : ''}
|
|
133
|
+
|
|
134
|
+
${this.errorMessage ? html `
|
|
135
|
+
<div class="recorder-error">${this.errorMessage}</div>
|
|
136
|
+
` : ''}
|
|
137
|
+
|
|
138
|
+
${this.recordedUrl ? html `
|
|
139
|
+
<div class="recorder-playback">
|
|
140
|
+
<audio src="${this.recordedUrl}" controls></audio>
|
|
141
|
+
</div>
|
|
142
|
+
` : ''}
|
|
143
|
+
|
|
144
|
+
<div class="recorder-info">
|
|
145
|
+
<span>Format: ${this.format.split('/')[1].toUpperCase()}</span>
|
|
146
|
+
<span>Bitrate: ${this.bitrate / 1000}kbps</span>
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
`;
|
|
150
|
+
}
|
|
151
|
+
renderVisualizer() {
|
|
152
|
+
const bars = Array.from({ length: 32 }, (_, i) => {
|
|
153
|
+
const height = this.getVisualizerHeight(i);
|
|
154
|
+
return html /*html*/ `<div class="visualizer-bar" style="height: ${height}px;"></div>`;
|
|
155
|
+
});
|
|
156
|
+
return html /*html*/ `<div class="recorder-visualizer">${bars}</div>`;
|
|
157
|
+
}
|
|
158
|
+
renderControls() {
|
|
159
|
+
if (this.state === 'inactive') {
|
|
160
|
+
return html /*html*/ `
|
|
161
|
+
<div class="recorder-controls">
|
|
162
|
+
<button class="recorder-btn record" @click=${() => this.start()} title="Start Recording">
|
|
163
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
|
|
164
|
+
<circle cx="12" cy="12" r="8"/>
|
|
165
|
+
</svg>
|
|
166
|
+
</button>
|
|
167
|
+
</div>
|
|
168
|
+
`;
|
|
169
|
+
}
|
|
170
|
+
if (this.state === 'recording') {
|
|
171
|
+
return html /*html*/ `
|
|
172
|
+
<div class="recorder-controls">
|
|
173
|
+
<button class="recorder-btn cancel" @click=${() => this.cancel()} title="Cancel">
|
|
174
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
175
|
+
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
176
|
+
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
177
|
+
</svg>
|
|
178
|
+
</button>
|
|
179
|
+
<button class="recorder-btn pause" @click=${() => this.pause()} title="Pause">
|
|
180
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
|
|
181
|
+
<rect x="6" y="4" width="4" height="16"></rect>
|
|
182
|
+
<rect x="14" y="4" width="4" height="16"></rect>
|
|
183
|
+
</svg>
|
|
184
|
+
</button>
|
|
185
|
+
<button class="recorder-btn stop" @click=${() => this.stop()} title="Stop">
|
|
186
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
|
|
187
|
+
<rect x="6" y="6" width="12" height="12"></rect>
|
|
188
|
+
</svg>
|
|
189
|
+
</button>
|
|
190
|
+
</div>
|
|
191
|
+
`;
|
|
192
|
+
}
|
|
193
|
+
if (this.state === 'paused') {
|
|
194
|
+
return html /*html*/ `
|
|
195
|
+
<div class="recorder-controls">
|
|
196
|
+
<button class="recorder-btn cancel" @click=${() => this.cancel()} title="Cancel">
|
|
197
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
198
|
+
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
199
|
+
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
200
|
+
</svg>
|
|
201
|
+
</button>
|
|
202
|
+
<button class="recorder-btn record" @click=${() => this.resume()} title="Resume">
|
|
203
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
|
|
204
|
+
<path d="M8 5v14l11-7z"/>
|
|
205
|
+
</svg>
|
|
206
|
+
</button>
|
|
207
|
+
<button class="recorder-btn stop" @click=${() => this.stop()} title="Stop">
|
|
208
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
|
|
209
|
+
<rect x="6" y="6" width="12" height="12"></rect>
|
|
210
|
+
</svg>
|
|
211
|
+
</button>
|
|
212
|
+
</div>
|
|
213
|
+
`;
|
|
214
|
+
}
|
|
215
|
+
return '';
|
|
216
|
+
}
|
|
217
|
+
getStateLabel() {
|
|
218
|
+
switch (this.state) {
|
|
219
|
+
case 'recording': return 'Recording';
|
|
220
|
+
case 'paused': return 'Paused';
|
|
221
|
+
default: return 'Ready';
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
formatTime(seconds) {
|
|
225
|
+
const mins = Math.floor(seconds / 60);
|
|
226
|
+
const secs = Math.floor(seconds % 60);
|
|
227
|
+
return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
|
|
228
|
+
}
|
|
229
|
+
getVisualizerHeight(index) {
|
|
230
|
+
if (!this.visualizerData || this.state !== 'recording') {
|
|
231
|
+
return 4;
|
|
232
|
+
}
|
|
233
|
+
const value = this.visualizerData[index * 4] || 0;
|
|
234
|
+
return 4 + (value / 255) * 60;
|
|
235
|
+
}
|
|
236
|
+
async start() {
|
|
237
|
+
try {
|
|
238
|
+
this.errorMessage = '';
|
|
239
|
+
this.audioChunks = [];
|
|
240
|
+
this.recordedUrl = '';
|
|
241
|
+
this.stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
242
|
+
// Setup visualizer
|
|
243
|
+
if (this.showVisualizer) {
|
|
244
|
+
this.audioContext = new AudioContext();
|
|
245
|
+
this.analyser = this.audioContext.createAnalyser();
|
|
246
|
+
const source = this.audioContext.createMediaStreamSource(this.stream);
|
|
247
|
+
source.connect(this.analyser);
|
|
248
|
+
this.analyser.fftSize = 256;
|
|
249
|
+
this.visualizerData = new Uint8Array(this.analyser.frequencyBinCount);
|
|
250
|
+
this.updateVisualizer();
|
|
251
|
+
}
|
|
252
|
+
const options = {
|
|
253
|
+
mimeType: this.format,
|
|
254
|
+
audioBitsPerSecond: this.bitrate
|
|
255
|
+
};
|
|
256
|
+
this.mediaRecorder = new MediaRecorder(this.stream, options);
|
|
257
|
+
this.mediaRecorder.ondataavailable = (event) => {
|
|
258
|
+
if (event.data.size > 0) {
|
|
259
|
+
this.audioChunks.push(event.data);
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
this.mediaRecorder.onstop = () => {
|
|
263
|
+
this.handleRecordingComplete();
|
|
264
|
+
};
|
|
265
|
+
this.mediaRecorder.start();
|
|
266
|
+
this.state = 'recording';
|
|
267
|
+
this.startTime = Date.now();
|
|
268
|
+
this.startTimer();
|
|
269
|
+
this.emitRecorderStart();
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
this.errorMessage = error instanceof Error ? error.message : 'Failed to start recording';
|
|
273
|
+
this.emitRecorderError(error);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
async stop() {
|
|
277
|
+
if (!this.mediaRecorder || this.state === 'inactive') {
|
|
278
|
+
throw new Error('No active recording');
|
|
279
|
+
}
|
|
280
|
+
return new Promise((resolve) => {
|
|
281
|
+
const resolveWithRecording = () => {
|
|
282
|
+
const blob = new Blob(this.audioChunks, { type: this.format });
|
|
283
|
+
const url = URL.createObjectURL(blob);
|
|
284
|
+
const recording = {
|
|
285
|
+
blob,
|
|
286
|
+
url,
|
|
287
|
+
duration: this.duration,
|
|
288
|
+
size: blob.size,
|
|
289
|
+
format: this.format,
|
|
290
|
+
timestamp: Date.now()
|
|
291
|
+
};
|
|
292
|
+
this.recordedUrl = url;
|
|
293
|
+
resolve(recording);
|
|
294
|
+
};
|
|
295
|
+
this.mediaRecorder.addEventListener('stop', resolveWithRecording, { once: true });
|
|
296
|
+
this.mediaRecorder.stop();
|
|
297
|
+
this.stopTimer();
|
|
298
|
+
this.cleanup();
|
|
299
|
+
this.state = 'inactive';
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
pause() {
|
|
303
|
+
if (this.mediaRecorder && this.state === 'recording') {
|
|
304
|
+
this.mediaRecorder.pause();
|
|
305
|
+
this.pausedTime = Date.now();
|
|
306
|
+
this.state = 'paused';
|
|
307
|
+
this.stopTimer();
|
|
308
|
+
this.emitRecorderPause();
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
resume() {
|
|
312
|
+
if (this.mediaRecorder && this.state === 'paused') {
|
|
313
|
+
this.mediaRecorder.resume();
|
|
314
|
+
const pauseDuration = (Date.now() - this.pausedTime) / 1000;
|
|
315
|
+
this.startTime += pauseDuration * 1000;
|
|
316
|
+
this.state = 'recording';
|
|
317
|
+
this.startTimer();
|
|
318
|
+
this.emitRecorderResume();
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
cancel() {
|
|
322
|
+
if (this.mediaRecorder) {
|
|
323
|
+
this.mediaRecorder.stop();
|
|
324
|
+
}
|
|
325
|
+
this.audioChunks = [];
|
|
326
|
+
this.stopTimer();
|
|
327
|
+
this.cleanup();
|
|
328
|
+
this.state = 'inactive';
|
|
329
|
+
this.duration = 0;
|
|
330
|
+
this.emitRecorderCancel();
|
|
331
|
+
}
|
|
332
|
+
getState() {
|
|
333
|
+
return this.state;
|
|
334
|
+
}
|
|
335
|
+
getDuration() {
|
|
336
|
+
return this.duration;
|
|
337
|
+
}
|
|
338
|
+
isRecording() {
|
|
339
|
+
return this.state === 'recording';
|
|
340
|
+
}
|
|
341
|
+
download(filename = `recording-${Date.now()}.webm`) {
|
|
342
|
+
if (!this.recordedUrl) {
|
|
343
|
+
throw new Error('No recording available');
|
|
344
|
+
}
|
|
345
|
+
const a = document.createElement('a');
|
|
346
|
+
a.href = this.recordedUrl;
|
|
347
|
+
a.download = filename;
|
|
348
|
+
a.click();
|
|
349
|
+
}
|
|
350
|
+
handleRecordingComplete() {
|
|
351
|
+
this.emitRecorderStop();
|
|
352
|
+
}
|
|
353
|
+
startTimer() {
|
|
354
|
+
this.timerInterval = window.setInterval(() => {
|
|
355
|
+
this.duration = (Date.now() - this.startTime) / 1000;
|
|
356
|
+
if (this.maxDuration > 0 && this.duration >= this.maxDuration) {
|
|
357
|
+
this.stop();
|
|
358
|
+
}
|
|
359
|
+
}, 100);
|
|
360
|
+
}
|
|
361
|
+
stopTimer() {
|
|
362
|
+
if (this.timerInterval !== null) {
|
|
363
|
+
clearInterval(this.timerInterval);
|
|
364
|
+
this.timerInterval = null;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
updateVisualizer() {
|
|
368
|
+
if (!this.analyser || !this.visualizerData || this.state !== 'recording') {
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
this.analyser.getByteFrequencyData(this.visualizerData);
|
|
372
|
+
this.animationFrame = requestAnimationFrame(() => this.updateVisualizer());
|
|
373
|
+
}
|
|
374
|
+
cleanup() {
|
|
375
|
+
if (this.stream) {
|
|
376
|
+
this.stream.getTracks().forEach(track => track.stop());
|
|
377
|
+
this.stream = null;
|
|
378
|
+
}
|
|
379
|
+
if (this.audioContext) {
|
|
380
|
+
this.audioContext.close();
|
|
381
|
+
this.audioContext = null;
|
|
382
|
+
}
|
|
383
|
+
if (this.animationFrame !== null) {
|
|
384
|
+
cancelAnimationFrame(this.animationFrame);
|
|
385
|
+
this.animationFrame = null;
|
|
386
|
+
}
|
|
387
|
+
this.analyser = null;
|
|
388
|
+
this.visualizerData = null;
|
|
389
|
+
}
|
|
390
|
+
emitRecorderStart() {
|
|
391
|
+
return { recorder: this };
|
|
392
|
+
}
|
|
393
|
+
emitRecorderError(error) {
|
|
394
|
+
return { recorder: this, error };
|
|
395
|
+
}
|
|
396
|
+
emitRecorderPause() {
|
|
397
|
+
return { recorder: this };
|
|
398
|
+
}
|
|
399
|
+
emitRecorderResume() {
|
|
400
|
+
return { recorder: this };
|
|
401
|
+
}
|
|
402
|
+
emitRecorderCancel() {
|
|
403
|
+
return { recorder: this };
|
|
404
|
+
}
|
|
405
|
+
emitRecorderStop() {
|
|
406
|
+
return { recorder: this };
|
|
407
|
+
}
|
|
408
|
+
});
|
|
409
|
+
return _classThis;
|
|
410
|
+
})();
|
|
411
|
+
|
|
412
|
+
export { SniceAudioRecorder };
|
|
413
|
+
//# sourceMappingURL=snice-audio-recorder.js.map
|