@blukavantui/community 0.0.0-stage → 1.0.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/LICENSE.txt +103 -0
- package/README.md +171 -2
- package/THIRD_PARTY_NOTICES.txt +58 -0
- package/assets/fonts/dm-sans-LICENSE.txt +93 -0
- package/assets/fonts/dm-sans-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/dm-sans-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/dm-sans-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/dm-sans-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-LICENSE.txt +93 -0
- package/assets/fonts/ibm-plex-mono-latin-100-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-100-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-200-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-200-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-300-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-300-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-400-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-500-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-600-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-700-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-700-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-100-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-100-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-200-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-200-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-300-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-300-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-400-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-400-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-500-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-500-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-600-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-600-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-700-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-700-normal.woff2 +0 -0
- package/assets/fonts/inter-LICENSE.txt +93 -0
- package/assets/fonts/inter-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/inter-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/jetbrains-mono-LICENSE.txt +93 -0
- package/assets/fonts/jetbrains-mono-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/jetbrains-mono-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/lora-LICENSE.txt +93 -0
- package/assets/fonts/lora-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/lora-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/lora-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/lora-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/manifest.json +618 -0
- package/assets/fonts/manrope-LICENSE.txt +93 -0
- package/assets/fonts/manrope-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/manrope-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/merriweather-LICENSE.txt +93 -0
- package/assets/fonts/merriweather-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/merriweather-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/merriweather-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/merriweather-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/montserrat-LICENSE.txt +93 -0
- package/assets/fonts/montserrat-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/montserrat-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/montserrat-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/montserrat-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/playfair-display-LICENSE.txt +93 -0
- package/assets/fonts/playfair-display-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/playfair-display-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/playfair-display-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/playfair-display-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/roboto-LICENSE.txt +93 -0
- package/assets/fonts/roboto-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/roboto-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/roboto-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/roboto-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/source-sans-3-LICENSE.txt +93 -0
- package/assets/fonts/source-sans-3-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/source-sans-3-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/source-sans-3-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/source-sans-3-latin-wght-normal.woff2 +0 -0
- package/dist/advanced-types.d.ts +114 -0
- package/dist/app-layout.css +115 -0
- package/dist/app-layout.d.ts +2 -0
- package/dist/app-layout.js +1 -0
- package/dist/badge.css +131 -0
- package/dist/badge.d.ts +2 -0
- package/dist/badge.js +1 -0
- package/dist/bluui-community-grid.js +72 -0
- package/dist/bluui-community.js +1 -0
- package/dist/breadcrumbs.css +77 -0
- package/dist/breadcrumbs.d.ts +2 -0
- package/dist/breadcrumbs.js +1 -0
- package/dist/build-audit.json +388 -0
- package/dist/button.css +625 -0
- package/dist/button.d.ts +2 -0
- package/dist/button.js +1 -0
- package/dist/card.css +119 -0
- package/dist/card.d.ts +2 -0
- package/dist/card.js +1 -0
- package/dist/cascader.css +152 -0
- package/dist/cascader.d.ts +2 -0
- package/dist/cascader.js +1 -0
- package/dist/chat-widget.css +121 -0
- package/dist/chat-widget.d.ts +2 -0
- package/dist/chat-widget.js +1 -0
- package/dist/chat.css +66 -0
- package/dist/chat.d.ts +2 -0
- package/dist/chat.js +1 -0
- package/dist/chip-group.css +44 -0
- package/dist/chip-group.d.ts +2 -0
- package/dist/chip-group.js +1 -0
- package/dist/chip.css +191 -0
- package/dist/chip.d.ts +2 -0
- package/dist/chip.js +1 -0
- package/dist/chunk-2HFI6CC6.js +0 -0
- package/dist/chunk-2MQNFEGJ.js +1 -0
- package/dist/chunk-2TCNAQC6.js +1 -0
- package/dist/chunk-3LWXPCWY.js +1 -0
- package/dist/chunk-3ZS5YITP.js +1 -0
- package/dist/chunk-4RM3B4L7.js +1 -0
- package/dist/chunk-4USJBOSC.js +1 -0
- package/dist/chunk-5TEIXA4R.js +1 -0
- package/dist/chunk-64LOE3FU.js +1 -0
- package/dist/chunk-6EHKOVZK.js +1 -0
- package/dist/chunk-6EJIIQNF.js +1 -0
- package/dist/chunk-6XOMFIPU.js +1 -0
- package/dist/chunk-75BQYII5.js +1 -0
- package/dist/chunk-7HXX66DB.js +3 -0
- package/dist/chunk-7KMRDQZG.js +0 -0
- package/dist/chunk-AICXIQKD.js +1 -0
- package/dist/chunk-BLDXIO7P.js +1 -0
- package/dist/chunk-C3CLLZH2.js +1 -0
- package/dist/chunk-CTLZIWMX.js +1 -0
- package/dist/chunk-CZXYS6CY.js +1 -0
- package/dist/chunk-GEG3TNB4.js +1 -0
- package/dist/chunk-GK3INPAZ.js +1 -0
- package/dist/chunk-H5IEGCAK.js +72 -0
- package/dist/chunk-H7ETPJVW.js +1 -0
- package/dist/chunk-IHKCC6WJ.js +1 -0
- package/dist/chunk-IIKSMXQE.js +1 -0
- package/dist/chunk-J7BV4KHG.js +1 -0
- package/dist/chunk-K2P2BHV5.js +1 -0
- package/dist/chunk-KBOMPMSI.js +1 -0
- package/dist/chunk-KR3UUTB2.js +1 -0
- package/dist/chunk-LGJVLEAH.js +1 -0
- package/dist/chunk-LJ4O6YTN.js +1 -0
- package/dist/chunk-MBC4UVTS.js +1 -0
- package/dist/chunk-MCVO25PZ.js +1 -0
- package/dist/chunk-MEEQNPGM.js +1 -0
- package/dist/chunk-MHHJZYXW.js +1 -0
- package/dist/chunk-MSMNEIWA.js +0 -0
- package/dist/chunk-MZBB5ROJ.js +1 -0
- package/dist/chunk-NB5PGEDY.js +1 -0
- package/dist/chunk-NTFHNL7T.js +1 -0
- package/dist/chunk-O3MRWAI5.js +1 -0
- package/dist/chunk-RGTLYBOY.js +3 -0
- package/dist/chunk-RZ5YSY7Y.js +0 -0
- package/dist/chunk-SDMH2EVD.js +1 -0
- package/dist/chunk-SEJUHKS5.js +1 -0
- package/dist/chunk-SIU7DSOA.js +1 -0
- package/dist/chunk-T45UAWNI.js +3 -0
- package/dist/chunk-TIXCZTJ7.js +0 -0
- package/dist/chunk-U4ZP73V4.js +1 -0
- package/dist/chunk-U73BNLZ3.js +1 -0
- package/dist/chunk-UEOCR2C3.js +2 -0
- package/dist/chunk-UUZ4HU7L.js +0 -0
- package/dist/chunk-VBRSAI3K.js +1 -0
- package/dist/chunk-W27NAI62.js +1 -0
- package/dist/chunk-W4SW4RWX.js +1 -0
- package/dist/chunk-WHA6UO5X.js +1 -0
- package/dist/chunk-XDYBNO4P.js +1 -0
- package/dist/chunk-XIOI5PKM.js +1 -0
- package/dist/chunk-Y4TCT2K6.js +1 -0
- package/dist/chunk-Y4WEMSE4.js +0 -0
- package/dist/collection-layout.css +30 -0
- package/dist/collection-layout.d.ts +2 -0
- package/dist/collection-layout.js +1 -0
- package/dist/colors.d.ts +2 -0
- package/dist/command-palette.css +35 -0
- package/dist/command-palette.d.ts +2 -0
- package/dist/command-palette.js +1 -0
- package/dist/component-factories/app-layout.d.ts +2 -0
- package/dist/component-factories/breadcrumbs.d.ts +2 -0
- package/dist/component-factories/cascader.d.ts +2 -0
- package/dist/component-factories/chat-widget.d.ts +2 -0
- package/dist/component-factories/chat.d.ts +2 -0
- package/dist/component-factories/collection-layout.d.ts +2 -0
- package/dist/component-factories/command-palette.d.ts +2 -0
- package/dist/component-factories/content-carousel.d.ts +2 -0
- package/dist/component-factories/dashboard-canvas.d.ts +3 -0
- package/dist/component-factories/dashboard-panel.d.ts +3 -0
- package/dist/component-factories/date-picker.d.ts +2 -0
- package/dist/component-factories/date-range-picker.d.ts +2 -0
- package/dist/component-factories/date-time-picker.d.ts +2 -0
- package/dist/component-factories/descriptions.d.ts +2 -0
- package/dist/component-factories/drawer.d.ts +2 -0
- package/dist/component-factories/float-button.d.ts +2 -0
- package/dist/component-factories/font-provider.d.ts +2 -0
- package/dist/component-factories/hero-section.d.ts +2 -0
- package/dist/component-factories/image-compare.d.ts +2 -0
- package/dist/component-factories/logo-cloud.d.ts +2 -0
- package/dist/component-factories/media-card.d.ts +2 -0
- package/dist/component-factories/media-image.d.ts +2 -0
- package/dist/component-factories/modal.d.ts +2 -0
- package/dist/component-factories/notification-center.d.ts +3 -0
- package/dist/component-factories/notification.d.ts +5 -0
- package/dist/component-factories/page-header.d.ts +2 -0
- package/dist/component-factories/page-layout.d.ts +2 -0
- package/dist/component-factories/pagination.d.ts +2 -0
- package/dist/component-factories/profile-card.d.ts +2 -0
- package/dist/component-factories/qr-code.d.ts +2 -0
- package/dist/component-factories/quote-card.d.ts +2 -0
- package/dist/component-factories/shape-mask.d.ts +2 -0
- package/dist/component-factories/sidebar.d.ts +2 -0
- package/dist/component-factories/sparkline.d.ts +2 -0
- package/dist/component-factories/split-section.d.ts +2 -0
- package/dist/component-factories/splitter.d.ts +2 -0
- package/dist/component-factories/statistic.d.ts +2 -0
- package/dist/component-factories/text-highlight.d.ts +2 -0
- package/dist/component-factories/time-picker.d.ts +2 -0
- package/dist/component-factories/timeline.d.ts +2 -0
- package/dist/component-factories/tour.d.ts +2 -0
- package/dist/component-factories/transfer-list.d.ts +2 -0
- package/dist/component-factories/tree-select.d.ts +2 -0
- package/dist/component-factories/tree-view.d.ts +2 -0
- package/dist/component-factories/upload-manager.d.ts +2 -0
- package/dist/component-factories/video-lightbox.d.ts +2 -0
- package/dist/component-factories/video-player.d.ts +2 -0
- package/dist/component-runtime.d.ts +2 -0
- package/dist/content-carousel.css +34 -0
- package/dist/content-carousel.d.ts +2 -0
- package/dist/content-carousel.js +1 -0
- package/dist/content.css +2085 -0
- package/dist/content.d.ts +13 -0
- package/dist/content.js +1 -0
- package/dist/core.css +1070 -0
- package/dist/core.d.ts +6 -0
- package/dist/core.js +1 -0
- package/dist/dashboard-canvas.css +49 -0
- package/dist/dashboard-canvas.d.ts +2 -0
- package/dist/dashboard-canvas.js +1 -0
- package/dist/dashboard-panel.css +2 -0
- package/dist/dashboard-panel.d.ts +2 -0
- package/dist/dashboard-panel.js +1 -0
- package/dist/data.css +813 -0
- package/dist/data.d.ts +9 -0
- package/dist/data.js +1 -0
- package/dist/date-picker.css +78 -0
- package/dist/date-picker.d.ts +2 -0
- package/dist/date-picker.js +1 -0
- package/dist/date-range-picker.css +78 -0
- package/dist/date-range-picker.d.ts +2 -0
- package/dist/date-range-picker.js +1 -0
- package/dist/date-time-picker.css +78 -0
- package/dist/date-time-picker.d.ts +2 -0
- package/dist/date-time-picker.js +1 -0
- package/dist/descriptions.css +113 -0
- package/dist/descriptions.d.ts +2 -0
- package/dist/descriptions.js +1 -0
- package/dist/dom.d.ts +7 -0
- package/dist/drawer.css +215 -0
- package/dist/drawer.d.ts +2 -0
- package/dist/drawer.js +1 -0
- package/dist/empty-state.css +110 -0
- package/dist/empty-state.d.ts +2 -0
- package/dist/empty-state.js +1 -0
- package/dist/essentials.css +1295 -0
- package/dist/essentials.d.ts +11 -0
- package/dist/essentials.js +1 -0
- package/dist/feedback.css +1136 -0
- package/dist/feedback.d.ts +10 -0
- package/dist/feedback.js +1 -0
- package/dist/float-button.css +28 -0
- package/dist/float-button.d.ts +2 -0
- package/dist/float-button.js +1 -0
- package/dist/font-provider.css +5 -0
- package/dist/font-provider.d.ts +2 -0
- package/dist/font-provider.js +1 -0
- package/dist/fonts/dm-sans-LICENSE.txt +93 -0
- package/dist/fonts/dm-sans-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/dm-sans-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/dm-sans-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/dm-sans-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-LICENSE.txt +93 -0
- package/dist/fonts/ibm-plex-mono-latin-100-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-100-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-200-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-200-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-300-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-300-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-400-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-500-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-600-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-700-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-700-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-100-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-100-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-200-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-200-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-300-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-300-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-400-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-500-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-500-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-600-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-600-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-700-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-700-normal.woff2 +0 -0
- package/dist/fonts/inter-LICENSE.txt +93 -0
- package/dist/fonts/inter-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-LICENSE.txt +93 -0
- package/dist/fonts/jetbrains-mono-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/lora-LICENSE.txt +93 -0
- package/dist/fonts/lora-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/lora-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/lora-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/lora-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/manifest.json +618 -0
- package/dist/fonts/manrope-LICENSE.txt +93 -0
- package/dist/fonts/manrope-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/manrope-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/merriweather-LICENSE.txt +93 -0
- package/dist/fonts/merriweather-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/merriweather-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/merriweather-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/merriweather-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/montserrat-LICENSE.txt +93 -0
- package/dist/fonts/montserrat-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/montserrat-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/montserrat-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/montserrat-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-LICENSE.txt +93 -0
- package/dist/fonts/playfair-display-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/playfair-display-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/playfair-display-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/roboto-LICENSE.txt +93 -0
- package/dist/fonts/roboto-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/roboto-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/roboto-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/roboto-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/source-sans-3-LICENSE.txt +93 -0
- package/dist/fonts/source-sans-3-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/source-sans-3-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/source-sans-3-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/source-sans-3-latin-wght-normal.woff2 +0 -0
- package/dist/grid-basic.css +12 -0
- package/dist/grid-basic.d.ts +10 -0
- package/dist/grid-basic.js +1 -0
- package/dist/grid-spec.d.ts +37 -0
- package/dist/grid.css +12 -0
- package/dist/grid.d.ts +1 -0
- package/dist/grid.js +1 -0
- package/dist/hero-section.css +41 -0
- package/dist/hero-section.d.ts +2 -0
- package/dist/hero-section.js +1 -0
- package/dist/image-compare.css +35 -0
- package/dist/image-compare.d.ts +2 -0
- package/dist/image-compare.js +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.js +1 -0
- package/dist/inputs.css +1524 -0
- package/dist/inputs.d.ts +8 -0
- package/dist/inputs.js +1 -0
- package/dist/layout.css +844 -0
- package/dist/layout.d.ts +8 -0
- package/dist/layout.js +1 -0
- package/dist/logo-cloud.css +33 -0
- package/dist/logo-cloud.d.ts +2 -0
- package/dist/logo-cloud.js +1 -0
- package/dist/marketing-template-layout.css +30 -0
- package/dist/media-card.css +41 -0
- package/dist/media-card.d.ts +2 -0
- package/dist/media-card.js +1 -0
- package/dist/media-image.css +531 -0
- package/dist/media-image.d.ts +2 -0
- package/dist/media-image.js +1 -0
- package/dist/modal.css +210 -0
- package/dist/modal.d.ts +2 -0
- package/dist/modal.js +1 -0
- package/dist/native/app-layout.js +1 -0
- package/dist/native/cascader.js +1 -0
- package/dist/native/chat-widget.js +3 -0
- package/dist/native/chat.js +3 -0
- package/dist/native/collection-layout.js +1 -0
- package/dist/native/command-palette.js +1 -0
- package/dist/native/content-carousel.js +1 -0
- package/dist/native/dashboard-canvas.js +1 -0
- package/dist/native/date-picker.js +1 -0
- package/dist/native/date-range-picker.js +1 -0
- package/dist/native/date-time-picker.js +1 -0
- package/dist/native/descriptions.js +1 -0
- package/dist/native/drawer.js +1 -0
- package/dist/native/float-button.js +1 -0
- package/dist/native/font-provider.js +1 -0
- package/dist/native/hero-section.js +1 -0
- package/dist/native/image-compare.js +1 -0
- package/dist/native/logo-cloud.js +1 -0
- package/dist/native/media-card.js +1 -0
- package/dist/native/media-image.js +1 -0
- package/dist/native/modal.js +1 -0
- package/dist/native/notification-center.js +1 -0
- package/dist/native/notification.js +2 -0
- package/dist/native/page-layout.js +1 -0
- package/dist/native/pagination.js +1 -0
- package/dist/native/profile-card.js +1 -0
- package/dist/native/qr-code.js +3 -0
- package/dist/native/quote-card.js +1 -0
- package/dist/native/shape-mask.js +1 -0
- package/dist/native/sparkline.js +1 -0
- package/dist/native/split-section.js +1 -0
- package/dist/native/splitter.js +1 -0
- package/dist/native/statistic.js +1 -0
- package/dist/native/text-highlight.js +1 -0
- package/dist/native/time-picker.js +1 -0
- package/dist/native/timeline.js +1 -0
- package/dist/native/tour.js +1 -0
- package/dist/native/transfer-list.js +1 -0
- package/dist/native/tree-select.js +1 -0
- package/dist/native/tree-view.js +1 -0
- package/dist/native/upload-manager.js +1 -0
- package/dist/native/video-lightbox.js +1 -0
- package/dist/native/video-player.js +1 -0
- package/dist/native-base.d.ts +1 -0
- package/dist/native-components/app-layout.d.ts +1 -0
- package/dist/native-components/cascader.d.ts +1 -0
- package/dist/native-components/chat-widget.d.ts +1 -0
- package/dist/native-components/chat.d.ts +1 -0
- package/dist/native-components/collection-layout.d.ts +1 -0
- package/dist/native-components/command-palette.d.ts +1 -0
- package/dist/native-components/content-carousel.d.ts +1 -0
- package/dist/native-components/dashboard-canvas.d.ts +1 -0
- package/dist/native-components/date-picker.d.ts +1 -0
- package/dist/native-components/date-range-picker.d.ts +1 -0
- package/dist/native-components/date-time-picker.d.ts +1 -0
- package/dist/native-components/descriptions.d.ts +1 -0
- package/dist/native-components/drawer.d.ts +1 -0
- package/dist/native-components/float-button.d.ts +1 -0
- package/dist/native-components/font-provider.d.ts +1 -0
- package/dist/native-components/hero-section.d.ts +1 -0
- package/dist/native-components/image-compare.d.ts +1 -0
- package/dist/native-components/logo-cloud.d.ts +1 -0
- package/dist/native-components/media-card.d.ts +1 -0
- package/dist/native-components/media-image.d.ts +1 -0
- package/dist/native-components/modal.d.ts +1 -0
- package/dist/native-components/notification-center.d.ts +1 -0
- package/dist/native-components/notification.d.ts +1 -0
- package/dist/native-components/page-layout.d.ts +1 -0
- package/dist/native-components/pagination.d.ts +1 -0
- package/dist/native-components/profile-card.d.ts +1 -0
- package/dist/native-components/qr-code.d.ts +1 -0
- package/dist/native-components/quote-card.d.ts +1 -0
- package/dist/native-components/shape-mask.d.ts +1 -0
- package/dist/native-components/sparkline.d.ts +1 -0
- package/dist/native-components/split-section.d.ts +1 -0
- package/dist/native-components/splitter.d.ts +1 -0
- package/dist/native-components/statistic.d.ts +1 -0
- package/dist/native-components/text-highlight.d.ts +1 -0
- package/dist/native-components/time-picker.d.ts +1 -0
- package/dist/native-components/timeline.d.ts +1 -0
- package/dist/native-components/tour.d.ts +1 -0
- package/dist/native-components/transfer-list.d.ts +1 -0
- package/dist/native-components/tree-select.d.ts +1 -0
- package/dist/native-components/tree-view.d.ts +1 -0
- package/dist/native-components/upload-manager.d.ts +1 -0
- package/dist/native-components/video-lightbox.d.ts +1 -0
- package/dist/native-components/video-player.d.ts +1 -0
- package/dist/native-grid.d.ts +1 -0
- package/dist/native.d.ts +1 -0
- package/dist/notification-center.css +49 -0
- package/dist/notification-center.d.ts +2 -0
- package/dist/notification-center.js +1 -0
- package/dist/notification.css +155 -0
- package/dist/notification.d.ts +2 -0
- package/dist/notification.js +1 -0
- package/dist/page-header.css +184 -0
- package/dist/page-header.d.ts +2 -0
- package/dist/page-header.js +1 -0
- package/dist/page-layout.css +117 -0
- package/dist/page-layout.d.ts +2 -0
- package/dist/page-layout.js +1 -0
- package/dist/pagination.css +127 -0
- package/dist/pagination.d.ts +2 -0
- package/dist/pagination.js +1 -0
- package/dist/primitives.d.ts +1 -0
- package/dist/profile-card.css +484 -0
- package/dist/profile-card.d.ts +2 -0
- package/dist/profile-card.js +1 -0
- package/dist/qr-code.css +125 -0
- package/dist/qr-code.d.ts +2 -0
- package/dist/qr-code.js +1 -0
- package/dist/quote-card.css +30 -0
- package/dist/quote-card.d.ts +2 -0
- package/dist/quote-card.js +1 -0
- package/dist/shape-mask.css +10 -0
- package/dist/shape-mask.d.ts +2 -0
- package/dist/shape-mask.js +1 -0
- package/dist/sidebar.css +183 -0
- package/dist/sidebar.d.ts +2 -0
- package/dist/sidebar.js +1 -0
- package/dist/sizes.json +1012 -0
- package/dist/skeleton.css +69 -0
- package/dist/skeleton.d.ts +2 -0
- package/dist/skeleton.js +1 -0
- package/dist/sparkline.css +38 -0
- package/dist/sparkline.d.ts +2 -0
- package/dist/sparkline.js +1 -0
- package/dist/split-section.css +34 -0
- package/dist/split-section.d.ts +2 -0
- package/dist/split-section.js +1 -0
- package/dist/splitter.css +32 -0
- package/dist/splitter.d.ts +2 -0
- package/dist/splitter.js +1 -0
- package/dist/statistic.css +107 -0
- package/dist/statistic.d.ts +2 -0
- package/dist/statistic.js +1 -0
- package/dist/styles.css +8882 -0
- package/dist/text-highlight.css +49 -0
- package/dist/text-highlight.d.ts +2 -0
- package/dist/text-highlight.js +1 -0
- package/dist/theme-runtime.d.ts +1 -0
- package/dist/theme.css +1391 -0
- package/dist/theme.d.ts +10 -0
- package/dist/theme.js +1 -0
- package/dist/time-picker.css +78 -0
- package/dist/time-picker.d.ts +2 -0
- package/dist/time-picker.js +1 -0
- package/dist/timeline.css +126 -0
- package/dist/timeline.d.ts +2 -0
- package/dist/timeline.js +1 -0
- package/dist/tour.css +138 -0
- package/dist/tour.d.ts +2 -0
- package/dist/tour.js +1 -0
- package/dist/transfer-list.css +878 -0
- package/dist/transfer-list.d.ts +2 -0
- package/dist/transfer-list.js +1 -0
- package/dist/tree-select.css +135 -0
- package/dist/tree-select.d.ts +2 -0
- package/dist/tree-select.js +1 -0
- package/dist/tree-view.css +118 -0
- package/dist/tree-view.d.ts +2 -0
- package/dist/tree-view.js +1 -0
- package/dist/types.d.ts +1284 -0
- package/dist/upload-manager.css +40 -0
- package/dist/upload-manager.d.ts +2 -0
- package/dist/upload-manager.js +1 -0
- package/dist/video-lightbox.css +639 -0
- package/dist/video-lightbox.d.ts +2 -0
- package/dist/video-lightbox.js +1 -0
- package/dist/video-player.css +92 -0
- package/dist/video-player.d.ts +2 -0
- package/dist/video-player.js +1 -0
- package/docs/PUBLISHING.md +25 -0
- package/edition.json +245 -0
- package/npm-shrinkwrap.json +554 -0
- package/package.json +391 -4
- package/scripts/build.mjs +34 -0
- package/scripts/verify-package.mjs +136 -0
- package/src/advanced-types.ts +89 -0
- package/src/app-layout.ts +2 -0
- package/src/badge.ts +2 -0
- package/src/breadcrumbs.ts +2 -0
- package/src/button.ts +2 -0
- package/src/card.ts +2 -0
- package/src/cascader.ts +2 -0
- package/src/chat-widget.ts +2 -0
- package/src/chat.ts +2 -0
- package/src/chip-group.ts +2 -0
- package/src/chip.ts +2 -0
- package/src/collection-layout.ts +2 -0
- package/src/colors.ts +3 -0
- package/src/command-palette.ts +2 -0
- package/src/component-factories/app-layout.ts +8 -0
- package/src/component-factories/breadcrumbs.ts +45 -0
- package/src/component-factories/cascader.ts +11 -0
- package/src/component-factories/chat-widget.ts +12 -0
- package/src/component-factories/chat.ts +10 -0
- package/src/component-factories/collection-layout.ts +5 -0
- package/src/component-factories/command-palette.ts +79 -0
- package/src/component-factories/content-carousel.ts +5 -0
- package/src/component-factories/dashboard-canvas.ts +11 -0
- package/src/component-factories/dashboard-panel.ts +9 -0
- package/src/component-factories/date-picker.ts +6 -0
- package/src/component-factories/date-range-picker.ts +6 -0
- package/src/component-factories/date-time-picker.ts +6 -0
- package/src/component-factories/descriptions.ts +11 -0
- package/src/component-factories/drawer.ts +12 -0
- package/src/component-factories/float-button.ts +7 -0
- package/src/component-factories/font-provider.ts +6 -0
- package/src/component-factories/hero-section.ts +5 -0
- package/src/component-factories/image-compare.ts +5 -0
- package/src/component-factories/logo-cloud.ts +5 -0
- package/src/component-factories/media-card.ts +5 -0
- package/src/component-factories/media-image.ts +5 -0
- package/src/component-factories/modal.ts +12 -0
- package/src/component-factories/notification-center.ts +13 -0
- package/src/component-factories/notification.ts +16 -0
- package/src/component-factories/page-header.ts +73 -0
- package/src/component-factories/page-layout.ts +8 -0
- package/src/component-factories/pagination.ts +11 -0
- package/src/component-factories/profile-card.ts +5 -0
- package/src/component-factories/qr-code.ts +11 -0
- package/src/component-factories/quote-card.ts +5 -0
- package/src/component-factories/shape-mask.ts +6 -0
- package/src/component-factories/sidebar.ts +98 -0
- package/src/component-factories/sparkline.ts +8 -0
- package/src/component-factories/split-section.ts +5 -0
- package/src/component-factories/splitter.ts +105 -0
- package/src/component-factories/statistic.ts +10 -0
- package/src/component-factories/text-highlight.ts +5 -0
- package/src/component-factories/time-picker.ts +6 -0
- package/src/component-factories/timeline.ts +11 -0
- package/src/component-factories/tour.ts +13 -0
- package/src/component-factories/transfer-list.ts +159 -0
- package/src/component-factories/tree-select.ts +83 -0
- package/src/component-factories/tree-view.ts +115 -0
- package/src/component-factories/upload-manager.ts +76 -0
- package/src/component-factories/video-lightbox.ts +5 -0
- package/src/component-factories/video-player.ts +5 -0
- package/src/component-runtime.ts +20 -0
- package/src/content-carousel.ts +2 -0
- package/src/content.ts +13 -0
- package/src/core.ts +6 -0
- package/src/dashboard-canvas.ts +2 -0
- package/src/dashboard-panel.ts +2 -0
- package/src/data.ts +9 -0
- package/src/date-picker.ts +2 -0
- package/src/date-range-picker.ts +2 -0
- package/src/date-time-picker.ts +2 -0
- package/src/descriptions.ts +2 -0
- package/src/dom.ts +65 -0
- package/src/drawer.ts +2 -0
- package/src/empty-state.ts +2 -0
- package/src/essentials.ts +180 -0
- package/src/feedback.ts +10 -0
- package/src/float-button.ts +2 -0
- package/src/font-provider.ts +2 -0
- package/src/grid-basic.ts +46 -0
- package/src/grid-spec.ts +93 -0
- package/src/grid.ts +1 -0
- package/src/hero-section.ts +2 -0
- package/src/image-compare.ts +2 -0
- package/src/index.ts +56 -0
- package/src/inputs.ts +8 -0
- package/src/layout.ts +8 -0
- package/src/logo-cloud.ts +2 -0
- package/src/media-card.ts +2 -0
- package/src/media-image.ts +2 -0
- package/src/modal.ts +2 -0
- package/src/native-base.ts +20 -0
- package/src/native-components/app-layout.ts +2 -0
- package/src/native-components/cascader.ts +2 -0
- package/src/native-components/chat-widget.ts +2 -0
- package/src/native-components/chat.ts +2 -0
- package/src/native-components/collection-layout.ts +2 -0
- package/src/native-components/command-palette.ts +2 -0
- package/src/native-components/content-carousel.ts +2 -0
- package/src/native-components/dashboard-canvas.ts +2 -0
- package/src/native-components/date-picker.ts +2 -0
- package/src/native-components/date-range-picker.ts +2 -0
- package/src/native-components/date-time-picker.ts +2 -0
- package/src/native-components/descriptions.ts +2 -0
- package/src/native-components/drawer.ts +2 -0
- package/src/native-components/float-button.ts +2 -0
- package/src/native-components/font-provider.ts +2 -0
- package/src/native-components/hero-section.ts +2 -0
- package/src/native-components/image-compare.ts +2 -0
- package/src/native-components/logo-cloud.ts +2 -0
- package/src/native-components/media-card.ts +2 -0
- package/src/native-components/media-image.ts +2 -0
- package/src/native-components/modal.ts +2 -0
- package/src/native-components/notification-center.ts +2 -0
- package/src/native-components/notification.ts +2 -0
- package/src/native-components/page-layout.ts +2 -0
- package/src/native-components/pagination.ts +2 -0
- package/src/native-components/profile-card.ts +2 -0
- package/src/native-components/qr-code.ts +2 -0
- package/src/native-components/quote-card.ts +2 -0
- package/src/native-components/shape-mask.ts +2 -0
- package/src/native-components/sparkline.ts +2 -0
- package/src/native-components/split-section.ts +2 -0
- package/src/native-components/splitter.ts +2 -0
- package/src/native-components/statistic.ts +2 -0
- package/src/native-components/text-highlight.ts +2 -0
- package/src/native-components/time-picker.ts +2 -0
- package/src/native-components/timeline.ts +2 -0
- package/src/native-components/tour.ts +2 -0
- package/src/native-components/transfer-list.ts +2 -0
- package/src/native-components/tree-select.ts +2 -0
- package/src/native-components/tree-view.ts +2 -0
- package/src/native-components/upload-manager.ts +2 -0
- package/src/native-components/video-lightbox.ts +2 -0
- package/src/native-components/video-player.ts +2 -0
- package/src/native-grid.ts +3 -0
- package/src/native.ts +3 -0
- package/src/notification-center.ts +2 -0
- package/src/notification.ts +2 -0
- package/src/page-header.ts +2 -0
- package/src/page-layout.ts +2 -0
- package/src/pagination.ts +2 -0
- package/src/primitives.ts +1 -0
- package/src/profile-card.ts +2 -0
- package/src/qr-code.ts +2 -0
- package/src/quote-card.ts +2 -0
- package/src/runtime/app-layout.d.ts +1 -0
- package/src/runtime/app-layout.js +168 -0
- package/src/runtime/cascader.d.ts +1 -0
- package/src/runtime/cascader.js +381 -0
- package/src/runtime/chat-widget.d.ts +1 -0
- package/src/runtime/chat-widget.js +630 -0
- package/src/runtime/chat.d.ts +1 -0
- package/src/runtime/chat.js +461 -0
- package/src/runtime/collection-layout.d.ts +1 -0
- package/src/runtime/collection-layout.js +269 -0
- package/src/runtime/command-palette.d.ts +1 -0
- package/src/runtime/command-palette.js +302 -0
- package/src/runtime/content-carousel.d.ts +1 -0
- package/src/runtime/content-carousel.js +282 -0
- package/src/runtime/dashboard-canvas.d.ts +1 -0
- package/src/runtime/dashboard-canvas.js +493 -0
- package/src/runtime/date-picker.d.ts +1 -0
- package/src/runtime/date-picker.js +817 -0
- package/src/runtime/date-range-picker.d.ts +1 -0
- package/src/runtime/date-range-picker.js +817 -0
- package/src/runtime/date-time-picker.d.ts +1 -0
- package/src/runtime/date-time-picker.js +817 -0
- package/src/runtime/descriptions.d.ts +1 -0
- package/src/runtime/descriptions.js +220 -0
- package/src/runtime/drawer.d.ts +1 -0
- package/src/runtime/drawer.js +287 -0
- package/src/runtime/empty-state.d.ts +1 -0
- package/src/runtime/empty-state.js +178 -0
- package/src/runtime/float-button.d.ts +1 -0
- package/src/runtime/float-button.js +171 -0
- package/src/runtime/font-provider.d.ts +1 -0
- package/src/runtime/font-provider.js +694 -0
- package/src/runtime/hero-section.d.ts +1 -0
- package/src/runtime/hero-section.js +186 -0
- package/src/runtime/image-compare.d.ts +1 -0
- package/src/runtime/image-compare.js +242 -0
- package/src/runtime/kernel.js +8 -0
- package/src/runtime/logo-cloud.d.ts +1 -0
- package/src/runtime/logo-cloud.js +163 -0
- package/src/runtime/media-card.d.ts +1 -0
- package/src/runtime/media-card.js +189 -0
- package/src/runtime/media-image.d.ts +1 -0
- package/src/runtime/media-image.js +480 -0
- package/src/runtime/modal.d.ts +1 -0
- package/src/runtime/modal.js +287 -0
- package/src/runtime/notification-center.d.ts +1 -0
- package/src/runtime/notification-center.js +417 -0
- package/src/runtime/notification.d.ts +1 -0
- package/src/runtime/notification.js +347 -0
- package/src/runtime/page-layout.d.ts +1 -0
- package/src/runtime/page-layout.js +105 -0
- package/src/runtime/pagination.d.ts +1 -0
- package/src/runtime/pagination.js +274 -0
- package/src/runtime/profile-card.d.ts +1 -0
- package/src/runtime/profile-card.js +512 -0
- package/src/runtime/qr-code.d.ts +1 -0
- package/src/runtime/qr-code.js +1942 -0
- package/src/runtime/quote-card.d.ts +1 -0
- package/src/runtime/quote-card.js +153 -0
- package/src/runtime/shape-mask.d.ts +1 -0
- package/src/runtime/shape-mask.js +211 -0
- package/src/runtime/sparkline.d.ts +1 -0
- package/src/runtime/sparkline.js +197 -0
- package/src/runtime/split-section.d.ts +1 -0
- package/src/runtime/split-section.js +148 -0
- package/src/runtime/splitter.d.ts +1 -0
- package/src/runtime/splitter.js +278 -0
- package/src/runtime/statistic.d.ts +1 -0
- package/src/runtime/statistic.js +204 -0
- package/src/runtime/text-highlight.d.ts +1 -0
- package/src/runtime/text-highlight.js +194 -0
- package/src/runtime/time-picker.d.ts +1 -0
- package/src/runtime/time-picker.js +817 -0
- package/src/runtime/timeline.d.ts +1 -0
- package/src/runtime/timeline.js +213 -0
- package/src/runtime/tour.d.ts +1 -0
- package/src/runtime/tour.js +412 -0
- package/src/runtime/transfer.d.ts +1 -0
- package/src/runtime/transfer.js +88 -0
- package/src/runtime/tree-select.d.ts +1 -0
- package/src/runtime/tree-select.js +420 -0
- package/src/runtime/tree.d.ts +1 -0
- package/src/runtime/tree.js +302 -0
- package/src/runtime/upload-manager.d.ts +1 -0
- package/src/runtime/upload-manager.js +408 -0
- package/src/runtime/video-lightbox.d.ts +1 -0
- package/src/runtime/video-lightbox.js +1117 -0
- package/src/runtime/video-player.d.ts +1 -0
- package/src/runtime/video-player.js +770 -0
- package/src/shape-mask.ts +2 -0
- package/src/sidebar.ts +2 -0
- package/src/skeleton.ts +2 -0
- package/src/sparkline.ts +2 -0
- package/src/split-section.ts +2 -0
- package/src/splitter.ts +2 -0
- package/src/statistic.ts +2 -0
- package/src/text-highlight.ts +2 -0
- package/src/theme-runtime.ts +70 -0
- package/src/theme.ts +32 -0
- package/src/time-picker.ts +2 -0
- package/src/timeline.ts +2 -0
- package/src/tour.ts +2 -0
- package/src/transfer-list.ts +2 -0
- package/src/tree-select.ts +2 -0
- package/src/tree-view.ts +2 -0
- package/src/types.ts +1299 -0
- package/src/upload-manager.ts +2 -0
- package/src/video-lightbox.ts +2 -0
- package/src/video-player.ts +2 -0
- package/styles/app-layout.css +115 -0
- package/styles/badge.css +131 -0
- package/styles/breadcrumbs.css +77 -0
- package/styles/button.css +625 -0
- package/styles/card.css +119 -0
- package/styles/cascader.css +152 -0
- package/styles/chat-widget.css +121 -0
- package/styles/chat.css +66 -0
- package/styles/chip-group.css +44 -0
- package/styles/chip.css +191 -0
- package/styles/collection-layout.css +30 -0
- package/styles/command-palette.css +35 -0
- package/styles/content-carousel.css +34 -0
- package/styles/dashboard-canvas.css +49 -0
- package/styles/dashboard-panel.css +2 -0
- package/styles/date-picker.css +78 -0
- package/styles/date-range-picker.css +78 -0
- package/styles/date-time-picker.css +78 -0
- package/styles/descriptions.css +113 -0
- package/styles/drawer.css +215 -0
- package/styles/empty-state.css +110 -0
- package/styles/float-button.css +28 -0
- package/styles/font-provider.css +5 -0
- package/styles/grid-basic.css +12 -0
- package/styles/hero-section.css +41 -0
- package/styles/image-compare.css +35 -0
- package/styles/logo-cloud.css +33 -0
- package/styles/marketing-template-layout.css +30 -0
- package/styles/media-card.css +41 -0
- package/styles/media-image.css +531 -0
- package/styles/modal.css +210 -0
- package/styles/notification-center.css +49 -0
- package/styles/notification.css +155 -0
- package/styles/page-header.css +184 -0
- package/styles/page-layout.css +117 -0
- package/styles/pagination.css +127 -0
- package/styles/profile-card.css +484 -0
- package/styles/qr-code.css +125 -0
- package/styles/quote-card.css +30 -0
- package/styles/shape-mask.css +10 -0
- package/styles/sidebar.css +183 -0
- package/styles/skeleton.css +69 -0
- package/styles/sparkline.css +38 -0
- package/styles/split-section.css +34 -0
- package/styles/splitter.css +32 -0
- package/styles/statistic.css +107 -0
- package/styles/text-highlight.css +49 -0
- package/styles/theme.css +1391 -0
- package/styles/time-picker.css +78 -0
- package/styles/timeline.css +126 -0
- package/styles/tour.css +138 -0
- package/styles/transfer-list.css +878 -0
- package/styles/tree-select.css +135 -0
- package/styles/tree-view.css +118 -0
- package/styles/upload-manager.css +40 -0
- package/styles/video-lightbox.css +639 -0
- package/styles/video-player.css +92 -0
- package/test/contracts.test.mjs +8 -0
- package/test/isolation.test.mjs +36 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,770 @@
|
|
|
1
|
+
// ../blu-grid/docs/scripts/modules/qr-encoder.js
|
|
2
|
+
import { global } from "./kernel.js";
|
|
3
|
+
|
|
4
|
+
// ../blu-grid/docs/scripts/modules/common.js
|
|
5
|
+
import { global as global2, runtime, state, register } from "./kernel.js";
|
|
6
|
+
|
|
7
|
+
// ../blu-grid/docs/scripts/modules/rich.js
|
|
8
|
+
import { global as global3, runtime as runtime2, state as state2, register as register2 } from "./kernel.js";
|
|
9
|
+
var shared = /* @__PURE__ */ state2("rich", () => ({ instances: /* @__PURE__ */ new Map(), serial: 0 }));
|
|
10
|
+
function el(tag, cls, value) {
|
|
11
|
+
var n = document.createElement(tag);
|
|
12
|
+
if (cls) n.className = cls;
|
|
13
|
+
if (value !== void 0) n.textContent = value;
|
|
14
|
+
return n;
|
|
15
|
+
}
|
|
16
|
+
function attr(n, k, v) {
|
|
17
|
+
n.setAttribute(k, String(v));
|
|
18
|
+
return n;
|
|
19
|
+
}
|
|
20
|
+
function url(v) {
|
|
21
|
+
if (!v) return "";
|
|
22
|
+
var u = new URL(String(v), document.baseURI);
|
|
23
|
+
if (!/^https?:$/.test(u.protocol) && u.protocol !== "blob:") throw Error("Use an HTTP(S), relative or blob URL.");
|
|
24
|
+
return u.href;
|
|
25
|
+
}
|
|
26
|
+
function ratio(v) {
|
|
27
|
+
return /^\s*\d+(\.\d+)?\s*\/\s*\d+(\.\d+)?\s*$/.test(v || "") ? v : "4 / 3";
|
|
28
|
+
}
|
|
29
|
+
function on(s, n, e, fn) {
|
|
30
|
+
n.addEventListener(e, fn);
|
|
31
|
+
s.cleanup.push(function() {
|
|
32
|
+
n.removeEventListener(e, fn);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function emit(s, name) {
|
|
36
|
+
if (s.dead || !s.events[name]) return;
|
|
37
|
+
try {
|
|
38
|
+
Promise.resolve(s.events[name].apply(null, Array.prototype.slice.call(arguments, 2))).catch(function(e) {
|
|
39
|
+
report(s, e);
|
|
40
|
+
});
|
|
41
|
+
} catch (e) {
|
|
42
|
+
report(s, e);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function report(s, e) {
|
|
46
|
+
var message = e ? e.message || String(e) : "";
|
|
47
|
+
s.error.textContent = message;
|
|
48
|
+
s.error.hidden = !message;
|
|
49
|
+
if (message && message !== s.lastError) {
|
|
50
|
+
s.lastError = message;
|
|
51
|
+
if (s.events.Error) try {
|
|
52
|
+
s.events.Error(message);
|
|
53
|
+
} catch (_) {
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function destroy(key) {
|
|
58
|
+
var s = shared.instances.get(key);
|
|
59
|
+
if (!s || s.destroying) return;
|
|
60
|
+
s.destroying = true;
|
|
61
|
+
if (s.beforeDestroy) s.beforeDestroy();
|
|
62
|
+
s.dead = true;
|
|
63
|
+
s.cleanup.forEach(function(f) {
|
|
64
|
+
f();
|
|
65
|
+
});
|
|
66
|
+
if (s.pause) s.pause();
|
|
67
|
+
if (s.modal) runtime2.Modal.destroy(s.uid + "-modal");
|
|
68
|
+
if (s.observer) s.observer.disconnect();
|
|
69
|
+
if (s.resize) s.resize.disconnect();
|
|
70
|
+
if (s.frame) cancelAnimationFrame(s.frame);
|
|
71
|
+
Object.keys(s.slots).forEach(function(k) {
|
|
72
|
+
s.host.append(s.slots[k]);
|
|
73
|
+
});
|
|
74
|
+
s.root.remove();
|
|
75
|
+
if (s.modal) s.modal.remove();
|
|
76
|
+
if (s.host._bluRichOwner === key) delete s.host._bluRichOwner;
|
|
77
|
+
shared.instances.delete(key);
|
|
78
|
+
}
|
|
79
|
+
function define(kind, slug, init, update) {
|
|
80
|
+
return { sync: function(id, options, events, key) {
|
|
81
|
+
var host = document.getElementById(id);
|
|
82
|
+
if (!host) return "Component host was not found.";
|
|
83
|
+
key = key || id;
|
|
84
|
+
var s = shared.instances.get(key);
|
|
85
|
+
if (s && (s.host !== host || s.kind !== kind)) {
|
|
86
|
+
destroy(key);
|
|
87
|
+
s = null;
|
|
88
|
+
}
|
|
89
|
+
if (host._bluRichOwner && host._bluRichOwner !== key) destroy(host._bluRichOwner);
|
|
90
|
+
if (!s) {
|
|
91
|
+
s = { host, key, kind, uid: "blu-rich-" + ++shared.serial, cleanup: [], slots: {}, events: {}, options: {} };
|
|
92
|
+
Array.from(host.children).forEach(function(n) {
|
|
93
|
+
var match = n.className && String(n.className).match(/blu-common-slot--(\w+)/);
|
|
94
|
+
if (match) s.slots[match[1]] = n;
|
|
95
|
+
});
|
|
96
|
+
s.root = el("div", "blu-rich blu-" + slug);
|
|
97
|
+
s.body = el("div", "blu-rich-body");
|
|
98
|
+
s.error = attr(el("p", "blu-rich-error"), "role", "alert");
|
|
99
|
+
s.error.hidden = true;
|
|
100
|
+
s.root.append(s.body, s.error);
|
|
101
|
+
host.append(s.root);
|
|
102
|
+
shared.instances.set(key, s);
|
|
103
|
+
s.fresh = true;
|
|
104
|
+
}
|
|
105
|
+
host._bluRichOwner = key;
|
|
106
|
+
s.options = options || {};
|
|
107
|
+
s.events = events || {};
|
|
108
|
+
var preview = host.nextElementSibling;
|
|
109
|
+
if (preview && preview.classList.contains("blu-component-preview")) preview.hidden = true;
|
|
110
|
+
if (s.options.AccessibleLabel) {
|
|
111
|
+
attr(s.root, "aria-label", s.options.AccessibleLabel);
|
|
112
|
+
attr(s.root, "role", "group");
|
|
113
|
+
} else {
|
|
114
|
+
s.root.removeAttribute("aria-label");
|
|
115
|
+
s.root.removeAttribute("role");
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
if (s.fresh) {
|
|
119
|
+
init(s);
|
|
120
|
+
s.fresh = false;
|
|
121
|
+
}
|
|
122
|
+
update(s);
|
|
123
|
+
report(s, null);
|
|
124
|
+
return "";
|
|
125
|
+
} catch (e) {
|
|
126
|
+
report(s, e);
|
|
127
|
+
return e.message || String(e);
|
|
128
|
+
}
|
|
129
|
+
}, destroy };
|
|
130
|
+
}
|
|
131
|
+
function videoPosition(n) {
|
|
132
|
+
return Number.isFinite(n.currentTime) ? Math.max(0, n.currentTime) : 0;
|
|
133
|
+
}
|
|
134
|
+
function videoActivityReset(s) {
|
|
135
|
+
s.activity = { session: typeof crypto !== "undefined" && crypto.randomUUID ? crypto.randomUUID() : Date.now().toString(36) + "-" + Math.random().toString(36).slice(2), sequence: 0, mediaId: String(s.options.MediaId || ""), position: videoPosition(s.video), clock: performance.now(), playing: false, seeking: false, rate: s.video.playbackRate || 1, segments: [], flushedAt: performance.now() };
|
|
136
|
+
}
|
|
137
|
+
function videoActivitySample(s) {
|
|
138
|
+
var a = s.activity, n = s.video;
|
|
139
|
+
if (!a) return;
|
|
140
|
+
var now = performance.now(), position = videoPosition(n), delta = position - a.position, elapsed = Math.max(0, (now - a.clock) / 1e3);
|
|
141
|
+
if (a.playing && !a.seeking && !n.seeking && delta > 0 && delta <= elapsed * Math.max(a.rate, n.playbackRate || 1) + 0.75) {
|
|
142
|
+
var last = a.segments[a.segments.length - 1];
|
|
143
|
+
if (last && Math.abs(last.EndSeconds - a.position) < 0.02) last.EndSeconds = position;
|
|
144
|
+
else a.segments.push({ StartSeconds: a.position, EndSeconds: position });
|
|
145
|
+
}
|
|
146
|
+
a.position = position;
|
|
147
|
+
a.clock = now;
|
|
148
|
+
a.rate = n.playbackRate || 1;
|
|
149
|
+
}
|
|
150
|
+
function videoActivityFlush(s, reason, sample) {
|
|
151
|
+
if (s.dead || !s.activity) return;
|
|
152
|
+
if (sample !== false) videoActivitySample(s);
|
|
153
|
+
var a = s.activity, n = s.video;
|
|
154
|
+
var payload = { Version: 1, SessionId: a.session, Sequence: ++a.sequence, MediaId: a.mediaId, Reason: reason, PositionSeconds: videoPosition(n), DurationSeconds: Number.isFinite(n.duration) ? Math.max(0, n.duration) : 0, Segments: a.segments.map(function(r) {
|
|
155
|
+
return { StartSeconds: Number(r.StartSeconds.toFixed(3)), EndSeconds: Number(r.EndSeconds.toFixed(3)) };
|
|
156
|
+
}) };
|
|
157
|
+
a.segments = [];
|
|
158
|
+
a.flushedAt = performance.now();
|
|
159
|
+
emit(s, "ViewingActivity", JSON.stringify(payload));
|
|
160
|
+
return payload;
|
|
161
|
+
}
|
|
162
|
+
function videoActivity(s) {
|
|
163
|
+
var n = s.video;
|
|
164
|
+
videoActivityReset(s);
|
|
165
|
+
on(s, n, "play", function() {
|
|
166
|
+
videoActivitySample(s);
|
|
167
|
+
s.activity.playing = true;
|
|
168
|
+
});
|
|
169
|
+
on(s, n, "pause", function() {
|
|
170
|
+
if (s.suppressActivityPause) {
|
|
171
|
+
s.suppressActivityPause = false;
|
|
172
|
+
s.activity.playing = false;
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
videoActivityFlush(s, n.ended ? "Ended" : "Paused");
|
|
176
|
+
s.activity.playing = false;
|
|
177
|
+
s.activity.endedSent = n.ended;
|
|
178
|
+
});
|
|
179
|
+
on(s, n, "ended", function() {
|
|
180
|
+
if (!s.activity.endedSent) videoActivityFlush(s, "Ended");
|
|
181
|
+
s.activity.playing = false;
|
|
182
|
+
s.activity.endedSent = false;
|
|
183
|
+
});
|
|
184
|
+
on(s, n, "seeking", function() {
|
|
185
|
+
if (!s.activity.seeking) videoActivityFlush(s, "Seek", false);
|
|
186
|
+
s.activity.seeking = true;
|
|
187
|
+
s.activity.position = videoPosition(n);
|
|
188
|
+
s.activity.clock = performance.now();
|
|
189
|
+
});
|
|
190
|
+
on(s, n, "seeked", function() {
|
|
191
|
+
s.activity.seeking = false;
|
|
192
|
+
s.activity.position = videoPosition(n);
|
|
193
|
+
s.activity.clock = performance.now();
|
|
194
|
+
s.activity.playing = !n.paused && !n.ended;
|
|
195
|
+
});
|
|
196
|
+
on(s, n, "ratechange", function() {
|
|
197
|
+
videoActivitySample(s);
|
|
198
|
+
});
|
|
199
|
+
on(s, n, "timeupdate", function() {
|
|
200
|
+
videoActivitySample(s);
|
|
201
|
+
if (s.activity.segments.length && (performance.now() - s.activity.flushedAt >= 15e3 || s.activity.segments.length >= 100)) videoActivityFlush(s, "Progress", false);
|
|
202
|
+
});
|
|
203
|
+
on(s, document, "visibilitychange", function() {
|
|
204
|
+
if (document.visibilityState === "hidden") videoActivityFlush(s, "Hidden");
|
|
205
|
+
});
|
|
206
|
+
s.beforeDestroy = function() {
|
|
207
|
+
videoActivityFlush(s, "Destroy");
|
|
208
|
+
videoExitPictureInPicture(s);
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
function videoHeatmapRows(raw) {
|
|
212
|
+
var rows = typeof raw === "string" ? JSON.parse(raw || "[]") : raw || [];
|
|
213
|
+
if (!Array.isArray(rows) || rows.length > 500) throw Error("ViewingHeatmap supports up to 500 time ranges.");
|
|
214
|
+
var end = 0;
|
|
215
|
+
return rows.map(function(r) {
|
|
216
|
+
if (!r || !Number.isFinite(r.StartSeconds) || !Number.isFinite(r.EndSeconds) || !Number.isFinite(r.Views) || r.StartSeconds < end || r.StartSeconds < 0 || r.EndSeconds <= r.StartSeconds || r.Views < 0) throw Error("ViewingHeatmap needs ordered, non-overlapping ranges with finite StartSeconds, EndSeconds and nonnegative Views.");
|
|
217
|
+
end = r.EndSeconds;
|
|
218
|
+
return { StartSeconds: r.StartSeconds, EndSeconds: r.EndSeconds, Views: r.Views };
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
function videoHeatmap(s) {
|
|
222
|
+
if (!s.heatmap) return;
|
|
223
|
+
var duration = s.video.duration, rows = s.heatmapRows || [], max = rows.reduce(function(m, r) {
|
|
224
|
+
return Math.max(m, r.Views);
|
|
225
|
+
}, 0), show = !!s.options.ShowViewingHeatmap && Number.isFinite(duration) && duration > 0 && rows.length > 0 && max > 0;
|
|
226
|
+
s.heatmap.style.display = show ? "" : "none";
|
|
227
|
+
s.seekHint.hidden = !show;
|
|
228
|
+
attr(s.videoFrame, "data-heatmap", show);
|
|
229
|
+
s.heatmapMax = max;
|
|
230
|
+
if (!show) {
|
|
231
|
+
s.timeline.removeAttribute("aria-describedby");
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
attr(s.timeline, "aria-describedby", s.heatmapDescription.id);
|
|
235
|
+
s.heatmapDescription.textContent = "Viewing activity supplied by the application. Taller areas were viewed more often.";
|
|
236
|
+
var signature = JSON.stringify([duration, rows]);
|
|
237
|
+
if (signature === s.heatmapSignature) return;
|
|
238
|
+
s.heatmapSignature = signature;
|
|
239
|
+
var points = [[0, 42]], lastEnd = 0;
|
|
240
|
+
rows.forEach(function(r) {
|
|
241
|
+
var start = Math.min(duration, r.StartSeconds) / duration * 1e3, end = Math.min(duration, r.EndSeconds) / duration * 1e3;
|
|
242
|
+
if (end <= start) return;
|
|
243
|
+
if (start > lastEnd) {
|
|
244
|
+
points.push([lastEnd, 42], [start, 42]);
|
|
245
|
+
}
|
|
246
|
+
points.push([(start + end) / 2, 42 - r.Views / max * 36]);
|
|
247
|
+
lastEnd = end;
|
|
248
|
+
});
|
|
249
|
+
points.push([lastEnd, 42], [1e3, 42]);
|
|
250
|
+
var path = "M0 44 L" + points[0].join(" ");
|
|
251
|
+
for (var i = 1; i < points.length; i++) {
|
|
252
|
+
var previous = points[i - 1], current = points[i], middle = (previous[0] + current[0]) / 2;
|
|
253
|
+
path += " C" + middle + " " + previous[1] + " " + middle + " " + current[1] + " " + current.join(" ");
|
|
254
|
+
}
|
|
255
|
+
attr(s.heatmapPath, "d", path + " L1000 44 Z");
|
|
256
|
+
}
|
|
257
|
+
function videoHeatmapHint(s, position) {
|
|
258
|
+
var duration = s.video.duration;
|
|
259
|
+
if (!Number.isFinite(duration) || duration <= 0) return;
|
|
260
|
+
position = Math.max(0, Math.min(duration, position));
|
|
261
|
+
var row = (s.heatmapRows || []).find(function(r) {
|
|
262
|
+
return position >= r.StartSeconds && position < r.EndSeconds;
|
|
263
|
+
});
|
|
264
|
+
s.seekHint.textContent = videoTime(position) + (row && row.Views === s.heatmapMax ? " \xB7 Most viewed" : "");
|
|
265
|
+
s.seekHint.style.left = Math.max(8, Math.min(92, position / duration * 100)) + "%";
|
|
266
|
+
}
|
|
267
|
+
function videoPictureInPictureAvailable(s) {
|
|
268
|
+
return s.options.AllowPictureInPicture !== false && !!document.pictureInPictureEnabled && typeof s.video.requestPictureInPicture === "function" && !s.video.disablePictureInPicture;
|
|
269
|
+
}
|
|
270
|
+
function videoExitPictureInPicture(s) {
|
|
271
|
+
if (document.pictureInPictureElement === s.video && document.exitPictureInPicture) {
|
|
272
|
+
var p = document.exitPictureInPicture();
|
|
273
|
+
if (p) p.catch(function() {
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
function videoPictureInPictureMessage(error, exiting) {
|
|
278
|
+
if (exiting) return "The browser could not close the floating window. Use the close control on that window to return to this player.";
|
|
279
|
+
switch (error && error.name) {
|
|
280
|
+
case "NotSupportedError":
|
|
281
|
+
return "This browser or app cannot open a floating video window, or picture-in-picture is disabled in its settings. Restarting playback will not enable it. Open this page in a browser that supports picture-in-picture, or keep watching here.";
|
|
282
|
+
case "SecurityError":
|
|
283
|
+
return "Picture-in-picture is blocked by this page\u2019s permissions policy. Restarting playback will not change that. If this player is embedded, the host page must allow picture-in-picture.";
|
|
284
|
+
case "NotAllowedError":
|
|
285
|
+
return "The browser requires a direct click on the picture-in-picture button. Click it in the player to open a floating window; restarting playback is not required.";
|
|
286
|
+
case "InvalidStateError":
|
|
287
|
+
return "The browser cannot use this video for picture-in-picture yet. Wait for a video frame to load. If it still fails, this source may have no usable video track or picture-in-picture may be disabled.";
|
|
288
|
+
default:
|
|
289
|
+
return "The browser could not open a floating video window and did not provide a specific cause. Keep watching here, or open this page in a browser that supports picture-in-picture.";
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
function videoClearPictureInPictureNotice(s) {
|
|
293
|
+
if (s.pipNotice) s.pipNotice.hidden = true;
|
|
294
|
+
}
|
|
295
|
+
function videoPictureInPicture(s) {
|
|
296
|
+
if (!videoPictureInPictureAvailable(s) || s.pipPending) return;
|
|
297
|
+
var exiting = document.pictureInPictureElement === s.video, source = s.source;
|
|
298
|
+
function failed(e) {
|
|
299
|
+
if (s.dead || s.source !== source) return;
|
|
300
|
+
var message = videoPictureInPictureMessage(e, exiting);
|
|
301
|
+
s.pipNoticeTitle.textContent = exiting ? "Picture-in-picture is still open" : "Picture-in-picture unavailable";
|
|
302
|
+
s.pipNoticeText.textContent = message;
|
|
303
|
+
s.pipNotice.hidden = false;
|
|
304
|
+
emit(s, "Error", message);
|
|
305
|
+
}
|
|
306
|
+
function finished() {
|
|
307
|
+
s.pipPending = false;
|
|
308
|
+
if (!s.dead) videoControlsState(s);
|
|
309
|
+
}
|
|
310
|
+
videoClearPictureInPictureNotice(s);
|
|
311
|
+
s.pipPending = true;
|
|
312
|
+
videoControlsState(s);
|
|
313
|
+
try {
|
|
314
|
+
var p = exiting ? document.exitPictureInPicture() : s.video.requestPictureInPicture();
|
|
315
|
+
Promise.resolve(p).then(function() {
|
|
316
|
+
if (!s.dead && s.source === source) videoClearPictureInPictureNotice(s);
|
|
317
|
+
}, failed).then(finished, finished);
|
|
318
|
+
} catch (e) {
|
|
319
|
+
failed(e);
|
|
320
|
+
finished();
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
function video(s, parent) {
|
|
324
|
+
var n = el("video", "blu-video-player__media");
|
|
325
|
+
n.controls = true;
|
|
326
|
+
n.playsInline = true;
|
|
327
|
+
n.preload = "none";
|
|
328
|
+
parent.append(n);
|
|
329
|
+
s.video = n;
|
|
330
|
+
videoActivity(s);
|
|
331
|
+
s.pause = function() {
|
|
332
|
+
if (s.isVideoOpen) {
|
|
333
|
+
videoActivityFlush(s, "Closed");
|
|
334
|
+
s.isVideoOpen = false;
|
|
335
|
+
s.suppressActivityPause = !n.paused;
|
|
336
|
+
videoExitPictureInPicture(s);
|
|
337
|
+
}
|
|
338
|
+
n.pause();
|
|
339
|
+
};
|
|
340
|
+
["play", "pause", "ended"].forEach(function(e) {
|
|
341
|
+
on(s, n, e, function() {
|
|
342
|
+
emit(s, "PlaybackChanged", e === "play" ? "Playing" : e === "pause" ? "Paused" : "Ended");
|
|
343
|
+
});
|
|
344
|
+
});
|
|
345
|
+
on(s, n, "error", function() {
|
|
346
|
+
if (n.currentSrc) report(s, Error("The video could not be loaded. Check the media URL and response format."));
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
function videoOptions(s) {
|
|
350
|
+
var o = s.options, n = s.video, source = url(o.SourceUrl), captions = url(o.CaptionsUrl), corsChanged = !!captions !== !!s.captions;
|
|
351
|
+
if (captions) n.crossOrigin = "anonymous";
|
|
352
|
+
else n.removeAttribute("crossorigin");
|
|
353
|
+
if (s.source !== source || corsChanged || s.activity.mediaId !== String(o.MediaId || "")) {
|
|
354
|
+
if (s.source) videoActivityFlush(s, "SourceChanged");
|
|
355
|
+
s.suppressActivityPause = !n.paused;
|
|
356
|
+
n.pause();
|
|
357
|
+
videoExitPictureInPicture(s);
|
|
358
|
+
videoClearPictureInPictureNotice(s);
|
|
359
|
+
videoActivityReset(s);
|
|
360
|
+
s.source = source;
|
|
361
|
+
if (source) n.src = source;
|
|
362
|
+
else n.removeAttribute("src");
|
|
363
|
+
n.load();
|
|
364
|
+
}
|
|
365
|
+
n.poster = url(o.PosterUrl);
|
|
366
|
+
n.loop = !!o.IsLooping;
|
|
367
|
+
if (s.muted !== o.IsMuted) {
|
|
368
|
+
n.muted = !!o.IsMuted;
|
|
369
|
+
s.muted = o.IsMuted;
|
|
370
|
+
}
|
|
371
|
+
attr(n, "aria-label", o.Title || "Video");
|
|
372
|
+
n.style.aspectRatio = ratio(o.AspectRatio || "16 / 9");
|
|
373
|
+
if (s.captions !== captions || s.language !== o.CaptionLanguage) {
|
|
374
|
+
n.querySelectorAll("track").forEach(function(t) {
|
|
375
|
+
t.remove();
|
|
376
|
+
});
|
|
377
|
+
s.captionFailed = false;
|
|
378
|
+
if (captions) {
|
|
379
|
+
var track = el("track");
|
|
380
|
+
track.kind = "captions";
|
|
381
|
+
track.src = captions;
|
|
382
|
+
track.srclang = o.CaptionLanguage || "en";
|
|
383
|
+
track.label = "Captions";
|
|
384
|
+
track.default = true;
|
|
385
|
+
n.append(track);
|
|
386
|
+
on(s, track, "load", function() {
|
|
387
|
+
if (track.parentNode === n) videoControlsState(s);
|
|
388
|
+
});
|
|
389
|
+
on(s, track, "error", function() {
|
|
390
|
+
if (track.parentNode !== n) return;
|
|
391
|
+
s.captionFailed = true;
|
|
392
|
+
videoControlsState(s);
|
|
393
|
+
report(s, Error("Captions could not be loaded. Check the caption URL and cross-origin permissions."));
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
s.captions = captions;
|
|
397
|
+
s.language = o.CaptionLanguage;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
function videoTime(value) {
|
|
401
|
+
value = Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 0;
|
|
402
|
+
var hours = Math.floor(value / 3600), minutes = Math.floor(value % 3600 / 60), seconds = String(value % 60).padStart(2, "0");
|
|
403
|
+
return hours ? hours + ":" + String(minutes).padStart(2, "0") + ":" + seconds : minutes + ":" + seconds;
|
|
404
|
+
}
|
|
405
|
+
function videoIcon(name) {
|
|
406
|
+
var paths = { play: "M8 5 19 12 8 19Z", pause: "M8 5V19M16 5V19", volume: "M11 5 6 9H3V15H6L11 19ZM15 8Q20 12 15 16M18 5Q26 12 18 19", muted: "M11 5 6 9H3V15H6L11 19ZM16 9 22 15M22 9 16 15", fullscreen: "M8 3H3V8M16 3H21V8M21 16V21H16M8 21H3V16", exit: "M3 8H8V3M16 3V8H21M21 16H16V21M8 21V16H3", captions: "M3 5H21V19H3ZM10 9H6V15H10M18 9H14V15H18", pip: "M3 5H21V19H3ZM12 11H19V17H12Z" };
|
|
407
|
+
var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"), path = document.createElementNS(svg.namespaceURI, "path");
|
|
408
|
+
attr(svg, "viewBox", "0 0 24 24");
|
|
409
|
+
attr(svg, "aria-hidden", "true");
|
|
410
|
+
attr(svg, "focusable", "false");
|
|
411
|
+
attr(path, "d", paths[name]);
|
|
412
|
+
attr(path, "fill", name === "play" ? "currentColor" : "none");
|
|
413
|
+
attr(path, "stroke", "currentColor");
|
|
414
|
+
attr(path, "stroke-width", "1.8");
|
|
415
|
+
attr(path, "stroke-linecap", "round");
|
|
416
|
+
attr(path, "stroke-linejoin", "round");
|
|
417
|
+
svg.append(path);
|
|
418
|
+
return svg;
|
|
419
|
+
}
|
|
420
|
+
function videoButton(s, label, icon, action, cls) {
|
|
421
|
+
var n = el("button", "blu-video-player__button " + (cls || ""));
|
|
422
|
+
n.type = "button";
|
|
423
|
+
attr(n, "aria-label", label);
|
|
424
|
+
n.title = label;
|
|
425
|
+
if (icon) n.append(videoIcon(icon));
|
|
426
|
+
else n.textContent = label;
|
|
427
|
+
on(s, n, "click", action);
|
|
428
|
+
return n;
|
|
429
|
+
}
|
|
430
|
+
function videoPlay(s) {
|
|
431
|
+
var n = s.video;
|
|
432
|
+
if (!s.source) return;
|
|
433
|
+
if (!n.paused) {
|
|
434
|
+
n.pause();
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
if (n.ended) n.currentTime = 0;
|
|
438
|
+
report(s, null);
|
|
439
|
+
var pending = n.play();
|
|
440
|
+
if (pending) pending.catch(function(e) {
|
|
441
|
+
if (!s.dead && e.name !== "AbortError") report(s, Error("Playback could not start. Check the video source and try again."));
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
function videoSeek(s, time) {
|
|
445
|
+
var n = s.video;
|
|
446
|
+
if (Number.isFinite(n.duration) && n.duration > 0) {
|
|
447
|
+
videoActivitySample(s);
|
|
448
|
+
n.currentTime = Math.max(0, Math.min(n.duration, time));
|
|
449
|
+
videoControlsState(s);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
function videoFullscreen(s) {
|
|
453
|
+
var n = s.video, frame = s.videoFrame, promise;
|
|
454
|
+
try {
|
|
455
|
+
if (document.fullscreenElement === frame) promise = document.exitFullscreen();
|
|
456
|
+
else if (frame.requestFullscreen && document.fullscreenEnabled) promise = frame.requestFullscreen();
|
|
457
|
+
else if (n.webkitEnterFullscreen) n.webkitEnterFullscreen();
|
|
458
|
+
if (promise) promise.catch(function() {
|
|
459
|
+
if (!s.dead) report(s, Error("Fullscreen is unavailable in this browser or embedded page."));
|
|
460
|
+
});
|
|
461
|
+
} catch (e) {
|
|
462
|
+
report(s, e);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
function videoControlsState(s) {
|
|
466
|
+
if (s.dead || !s.videoControls) return;
|
|
467
|
+
var n = s.video, ready = Number.isFinite(n.duration) && n.duration > 0, playing = !n.paused && !n.ended, label = n.ended ? "Replay video" : playing ? "Pause video" : "Play video";
|
|
468
|
+
s.pauseGlass.hidden = playing || s.options.ShowPauseGlass === false;
|
|
469
|
+
if (s.playLabel !== label) {
|
|
470
|
+
s.playLabel = label;
|
|
471
|
+
attr(s.playButton, "aria-label", label);
|
|
472
|
+
s.playButton.title = label;
|
|
473
|
+
s.playButton.replaceChildren(videoIcon(playing ? "pause" : "play"));
|
|
474
|
+
attr(s.bigPlay, "aria-label", label);
|
|
475
|
+
s.bigPlay.title = label;
|
|
476
|
+
}
|
|
477
|
+
var moveFocus = document.activeElement === s.bigPlay;
|
|
478
|
+
s.bigPlay.hidden = playing || !!n.error || !s.source;
|
|
479
|
+
s.playButton.disabled = !s.source || !!n.error;
|
|
480
|
+
if (moveFocus && s.bigPlay.hidden && !s.playButton.disabled) s.playButton.focus();
|
|
481
|
+
s.timeline.disabled = !ready;
|
|
482
|
+
s.timeline.max = String(ready ? n.duration : 1);
|
|
483
|
+
s.timeline.value = String(ready ? n.currentTime : 0);
|
|
484
|
+
attr(s.timeline, "aria-valuetext", videoTime(n.currentTime) + " of " + videoTime(n.duration));
|
|
485
|
+
s.timeline.style.setProperty("--blu-video-progress", (ready ? n.currentTime / n.duration * 100 : 0) + "%");
|
|
486
|
+
s.time.textContent = videoTime(n.currentTime) + " / " + (n.duration === Infinity ? "Live" : videoTime(n.duration));
|
|
487
|
+
var muted = n.muted || n.volume === 0, volumeLabel = muted ? "Unmute video" : "Mute video";
|
|
488
|
+
if (s.volumeLabel !== volumeLabel) {
|
|
489
|
+
s.volumeLabel = volumeLabel;
|
|
490
|
+
attr(s.muteButton, "aria-label", volumeLabel);
|
|
491
|
+
s.muteButton.title = volumeLabel;
|
|
492
|
+
s.muteButton.replaceChildren(videoIcon(muted ? "muted" : "volume"));
|
|
493
|
+
}
|
|
494
|
+
s.volume.value = String(muted ? 0 : n.volume);
|
|
495
|
+
attr(s.volume, "aria-valuetext", Math.round((muted ? 0 : n.volume) * 100) + "%");
|
|
496
|
+
s.volume.style.setProperty("--blu-video-progress", (muted ? 0 : n.volume * 100) + "%");
|
|
497
|
+
var track = n.textTracks[0], hasCaptions = !!s.options.CaptionsUrl;
|
|
498
|
+
s.captionsButton.hidden = !hasCaptions;
|
|
499
|
+
s.captionsButton.disabled = !track || s.captionFailed;
|
|
500
|
+
attr(s.captionsButton, "aria-pressed", !!track && track.mode === "showing");
|
|
501
|
+
var full = document.fullscreenElement === s.videoFrame;
|
|
502
|
+
attr(s.fullButton, "aria-label", full ? "Exit fullscreen" : "Enter fullscreen");
|
|
503
|
+
s.fullButton.title = full ? "Exit fullscreen" : "Enter fullscreen";
|
|
504
|
+
s.pipButton.hidden = !videoPictureInPictureAvailable(s);
|
|
505
|
+
s.pipButton.disabled = !!s.pipPending || n.readyState < 2;
|
|
506
|
+
var pip = document.pictureInPictureElement === n;
|
|
507
|
+
attr(s.pipButton, "aria-pressed", pip);
|
|
508
|
+
attr(s.pipButton, "aria-label", pip ? "Exit picture-in-picture" : "Picture-in-picture");
|
|
509
|
+
s.pipButton.title = pip ? "Exit picture-in-picture" : "Picture-in-picture";
|
|
510
|
+
videoHeatmap(s);
|
|
511
|
+
s.speedButton.textContent = n.playbackRate + "\xD7";
|
|
512
|
+
s.speedChoices.forEach(function(b) {
|
|
513
|
+
attr(b, "aria-pressed", Number(b.dataset.rate) === n.playbackRate);
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
function videoControls(s, parent) {
|
|
517
|
+
var n = s.video;
|
|
518
|
+
s.videoFrame = attr(el("div", "blu-rich blu-video-player blu-video-player__frame"), "role", "group");
|
|
519
|
+
s.videoFrame.tabIndex = 0;
|
|
520
|
+
s.videoFrame.id = s.uid + "-player";
|
|
521
|
+
(parent || s.body).append(s.videoFrame);
|
|
522
|
+
s.stage = el("div", "blu-video-player__stage");
|
|
523
|
+
s.videoFrame.append(s.stage);
|
|
524
|
+
s.stage.append(n);
|
|
525
|
+
s.pauseGlass = attr(el("div", "blu-video-player__pause-glass"), "aria-hidden", "true");
|
|
526
|
+
s.stage.append(s.pauseGlass);
|
|
527
|
+
s.titleNode = el("div", "blu-video-player__title");
|
|
528
|
+
s.stage.append(s.titleNode);
|
|
529
|
+
s.bigPlay = videoButton(s, "Play video", "play", function() {
|
|
530
|
+
videoPlay(s);
|
|
531
|
+
}, "blu-video-player__big-play");
|
|
532
|
+
s.stage.append(s.bigPlay);
|
|
533
|
+
s.videoStatus = attr(el("span", "blu-video-player__status"), "role", "status");
|
|
534
|
+
s.videoStatus.hidden = true;
|
|
535
|
+
s.stage.append(s.videoStatus);
|
|
536
|
+
s.videoControls = el("div", "blu-video-player__controls");
|
|
537
|
+
s.videoFrame.append(s.videoControls);
|
|
538
|
+
s.timeline = attr(el("input", "blu-video-player__range blu-video-player__timeline"), "aria-label", "Video position");
|
|
539
|
+
s.timeline.type = "range";
|
|
540
|
+
s.timeline.min = 0;
|
|
541
|
+
s.timeline.max = 1;
|
|
542
|
+
s.timeline.step = 0.1;
|
|
543
|
+
s.timeline.value = 0;
|
|
544
|
+
s.timeline.disabled = true;
|
|
545
|
+
s.seekWrap = el("div", "blu-video-player__seek");
|
|
546
|
+
s.videoControls.append(s.seekWrap);
|
|
547
|
+
s.heatmap = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
548
|
+
attr(s.heatmap, "class", "blu-video-player__heatmap");
|
|
549
|
+
attr(s.heatmap, "viewBox", "0 0 1000 44");
|
|
550
|
+
attr(s.heatmap, "preserveAspectRatio", "none");
|
|
551
|
+
attr(s.heatmap, "aria-hidden", "true");
|
|
552
|
+
s.heatmap.style.display = "none";
|
|
553
|
+
s.heatmapPath = document.createElementNS(s.heatmap.namespaceURI, "path");
|
|
554
|
+
s.heatmap.append(s.heatmapPath);
|
|
555
|
+
s.seekHint = el("span", "blu-video-player__seek-hint");
|
|
556
|
+
attr(s.seekHint, "aria-hidden", "true");
|
|
557
|
+
s.seekHint.hidden = true;
|
|
558
|
+
s.heatmapDescription = el("span", "blu-video-player__sr");
|
|
559
|
+
s.heatmapDescription.id = s.uid + "-viewing-description";
|
|
560
|
+
s.seekWrap.append(s.heatmap, s.seekHint, s.heatmapDescription, s.timeline);
|
|
561
|
+
on(s, s.seekWrap, "pointermove", function(e) {
|
|
562
|
+
var r = s.timeline.getBoundingClientRect();
|
|
563
|
+
videoHeatmapHint(s, (e.clientX - r.left) / r.width * n.duration);
|
|
564
|
+
});
|
|
565
|
+
on(s, s.timeline, "focus", function() {
|
|
566
|
+
videoHeatmapHint(s, n.currentTime);
|
|
567
|
+
});
|
|
568
|
+
on(s, s.timeline, "input", function() {
|
|
569
|
+
videoHeatmapHint(s, Number(s.timeline.value));
|
|
570
|
+
});
|
|
571
|
+
var row = el("div", "blu-video-player__row");
|
|
572
|
+
s.videoControls.append(row);
|
|
573
|
+
s.playButton = videoButton(s, "Play video", "play", function() {
|
|
574
|
+
videoPlay(s);
|
|
575
|
+
}, "blu-video-player__primary");
|
|
576
|
+
s.muteButton = videoButton(s, "Mute video", "volume", function() {
|
|
577
|
+
var wasMuted = n.muted || n.volume === 0;
|
|
578
|
+
if (n.volume === 0) n.volume = s.lastVolume || 1;
|
|
579
|
+
else s.lastVolume = n.volume;
|
|
580
|
+
n.muted = !wasMuted;
|
|
581
|
+
});
|
|
582
|
+
s.volume = attr(el("input", "blu-video-player__range blu-video-player__volume"), "aria-label", "Volume");
|
|
583
|
+
s.volume.type = "range";
|
|
584
|
+
s.volume.min = 0;
|
|
585
|
+
s.volume.max = 1;
|
|
586
|
+
s.volume.step = 0.05;
|
|
587
|
+
s.volume.value = 1;
|
|
588
|
+
s.time = el("span", "blu-video-player__time", "0:00 / 0:00");
|
|
589
|
+
attr(s.time, "aria-live", "off");
|
|
590
|
+
var spacer = el("span", "blu-video-player__spacer");
|
|
591
|
+
s.captionsButton = videoButton(s, "Captions", "captions", function() {
|
|
592
|
+
var t = n.textTracks[0];
|
|
593
|
+
if (t) t.mode = t.mode === "showing" ? "hidden" : "showing";
|
|
594
|
+
videoControlsState(s);
|
|
595
|
+
});
|
|
596
|
+
attr(s.captionsButton, "aria-pressed", "false");
|
|
597
|
+
s.speedWrap = el("div", "blu-video-player__speed");
|
|
598
|
+
s.speedButton = videoButton(s, "Playback speed", null, function() {
|
|
599
|
+
s.speedPanel.hidden = !s.speedPanel.hidden;
|
|
600
|
+
attr(s.speedButton, "aria-expanded", !s.speedPanel.hidden);
|
|
601
|
+
});
|
|
602
|
+
attr(s.speedButton, "aria-label", "Playback speed");
|
|
603
|
+
attr(s.speedButton, "aria-expanded", "false");
|
|
604
|
+
s.speedPanel = attr(el("div", "blu-video-player__speed-panel"), "role", "group");
|
|
605
|
+
s.speedPanel.id = s.uid + "-speed";
|
|
606
|
+
attr(s.speedPanel, "aria-label", "Playback speed");
|
|
607
|
+
attr(s.speedButton, "aria-controls", s.speedPanel.id);
|
|
608
|
+
s.speedPanel.hidden = true;
|
|
609
|
+
s.speedPanel.append(el("span", "blu-video-player__speed-label", "Playback speed"));
|
|
610
|
+
s.speedChoices = [0.5, 0.75, 1, 1.25, 1.5, 2].map(function(rate) {
|
|
611
|
+
var b = videoButton(s, rate === 1 ? "Normal" : rate + "\xD7", null, function() {
|
|
612
|
+
n.playbackRate = rate;
|
|
613
|
+
s.speedPanel.hidden = true;
|
|
614
|
+
attr(s.speedButton, "aria-expanded", "false");
|
|
615
|
+
s.speedButton.focus();
|
|
616
|
+
videoControlsState(s);
|
|
617
|
+
});
|
|
618
|
+
b.dataset.rate = rate;
|
|
619
|
+
s.speedPanel.append(b);
|
|
620
|
+
return b;
|
|
621
|
+
});
|
|
622
|
+
s.speedWrap.append(s.speedButton, s.speedPanel);
|
|
623
|
+
s.fullButton = videoButton(s, "Enter fullscreen", "fullscreen", function() {
|
|
624
|
+
videoFullscreen(s);
|
|
625
|
+
});
|
|
626
|
+
s.fullButton.hidden = !(document.fullscreenEnabled && s.videoFrame.requestFullscreen) && !n.webkitEnterFullscreen;
|
|
627
|
+
s.pipButton = videoButton(s, "Picture-in-picture", "pip", function() {
|
|
628
|
+
videoPictureInPicture(s);
|
|
629
|
+
});
|
|
630
|
+
row.append(s.playButton, s.muteButton, s.volume, s.time, spacer, s.captionsButton, s.speedWrap, s.pipButton, s.fullButton);
|
|
631
|
+
s.pipNotice = el("div", "blu-video-player__notice");
|
|
632
|
+
s.pipNotice.hidden = true;
|
|
633
|
+
var noticeIcon = el("span", "blu-video-player__notice-icon");
|
|
634
|
+
noticeIcon.append(videoIcon("pip"));
|
|
635
|
+
var noticeCopy = attr(el("div", "blu-video-player__notice-copy"), "role", "status");
|
|
636
|
+
attr(noticeCopy, "aria-atomic", "true");
|
|
637
|
+
s.pipNoticeTitle = el("strong");
|
|
638
|
+
s.pipNoticeText = el("p");
|
|
639
|
+
noticeCopy.append(s.pipNoticeTitle, s.pipNoticeText);
|
|
640
|
+
var dismiss = videoButton(s, "Dismiss picture-in-picture message", null, function() {
|
|
641
|
+
videoClearPictureInPictureNotice(s);
|
|
642
|
+
s.pipButton.focus();
|
|
643
|
+
}, "blu-video-player__notice-dismiss");
|
|
644
|
+
dismiss.textContent = "\xD7";
|
|
645
|
+
s.pipNotice.append(noticeIcon, noticeCopy, dismiss);
|
|
646
|
+
s.videoFrame.append(s.pipNotice);
|
|
647
|
+
n.controls = false;
|
|
648
|
+
n.preload = s.kind === "VideoLightbox" ? "none" : "metadata";
|
|
649
|
+
attr(n, "tabindex", "-1");
|
|
650
|
+
on(s, s.timeline, "input", function() {
|
|
651
|
+
videoSeek(s, Number(s.timeline.value));
|
|
652
|
+
});
|
|
653
|
+
on(s, s.volume, "input", function() {
|
|
654
|
+
n.volume = Number(s.volume.value);
|
|
655
|
+
n.muted = n.volume === 0;
|
|
656
|
+
});
|
|
657
|
+
on(s, n, "click", function() {
|
|
658
|
+
videoPlay(s);
|
|
659
|
+
});
|
|
660
|
+
["play", "pause", "ended", "timeupdate", "durationchange", "loadedmetadata", "loadeddata", "enterpictureinpicture", "leavepictureinpicture", "volumechange", "ratechange", "emptied", "error"].forEach(function(e) {
|
|
661
|
+
on(s, n, e, function() {
|
|
662
|
+
videoControlsState(s);
|
|
663
|
+
});
|
|
664
|
+
});
|
|
665
|
+
["waiting", "seeking", "loadstart"].forEach(function(e) {
|
|
666
|
+
on(s, n, e, function() {
|
|
667
|
+
s.videoStatus.textContent = "Loading video\u2026";
|
|
668
|
+
s.videoStatus.hidden = !s.source;
|
|
669
|
+
});
|
|
670
|
+
});
|
|
671
|
+
["playing", "canplay", "seeked", "pause", "error", "emptied"].forEach(function(e) {
|
|
672
|
+
on(s, n, e, function() {
|
|
673
|
+
s.videoStatus.hidden = true;
|
|
674
|
+
});
|
|
675
|
+
});
|
|
676
|
+
on(s, n.textTracks, "change", function() {
|
|
677
|
+
videoControlsState(s);
|
|
678
|
+
});
|
|
679
|
+
on(s, n.textTracks, "addtrack", function() {
|
|
680
|
+
videoControlsState(s);
|
|
681
|
+
});
|
|
682
|
+
on(s, document, "fullscreenchange", function() {
|
|
683
|
+
videoControlsState(s);
|
|
684
|
+
});
|
|
685
|
+
on(s, document, "pointerdown", function(e) {
|
|
686
|
+
if (!s.speedWrap.contains(e.target)) {
|
|
687
|
+
s.speedPanel.hidden = true;
|
|
688
|
+
attr(s.speedButton, "aria-expanded", "false");
|
|
689
|
+
}
|
|
690
|
+
});
|
|
691
|
+
on(s, s.speedWrap, "focusout", function(e) {
|
|
692
|
+
if (!s.speedWrap.contains(e.relatedTarget)) {
|
|
693
|
+
s.speedPanel.hidden = true;
|
|
694
|
+
attr(s.speedButton, "aria-expanded", "false");
|
|
695
|
+
}
|
|
696
|
+
});
|
|
697
|
+
on(s, s.videoFrame, "keydown", function(e) {
|
|
698
|
+
if (e.key === "Escape" && !s.speedPanel.hidden) {
|
|
699
|
+
e.preventDefault();
|
|
700
|
+
e.stopPropagation();
|
|
701
|
+
s.speedPanel.hidden = true;
|
|
702
|
+
attr(s.speedButton, "aria-expanded", "false");
|
|
703
|
+
s.speedButton.focus();
|
|
704
|
+
return;
|
|
705
|
+
}
|
|
706
|
+
if (e.target !== s.videoFrame || e.altKey || e.ctrlKey || e.metaKey) return;
|
|
707
|
+
if (e.key === " " || e.key === "k") {
|
|
708
|
+
e.preventDefault();
|
|
709
|
+
videoPlay(s);
|
|
710
|
+
} else if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
|
|
711
|
+
e.preventDefault();
|
|
712
|
+
videoSeek(s, n.currentTime + (e.key === "ArrowLeft" ? -5 : 5));
|
|
713
|
+
} else if (e.key === "m") {
|
|
714
|
+
e.preventDefault();
|
|
715
|
+
n.muted = !n.muted;
|
|
716
|
+
} else if (e.key === "f") {
|
|
717
|
+
e.preventDefault();
|
|
718
|
+
videoFullscreen(s);
|
|
719
|
+
}
|
|
720
|
+
});
|
|
721
|
+
attr(s.videoFrame, "aria-keyshortcuts", "Space k ArrowLeft ArrowRight m f");
|
|
722
|
+
}
|
|
723
|
+
function videoControlTheme(s) {
|
|
724
|
+
var value = String(s.options.ControlColor || "Primary"), key = value.toLowerCase(), theme = /^(default|primary|secondary|success|processing|warning|error|danger|magenta|red|volcano|orange|gold|lime|green|cyan|blue|geekblue|purple)$/.test(key), hex = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i.test(value);
|
|
725
|
+
if (!theme && !hex) throw Error("ControlColor must be a ComponentColor name or a #RGB/#RRGGBB color.");
|
|
726
|
+
var accent = theme ? "var(--bluui-color-" + key + "-solid,var(--bluui-color-primary-solid,#4f46e5))" : value, text = theme ? "var(--bluui-color-" + key + "-text," + accent + ")" : value, contrast = "var(--bluui-color-" + key + "-contrast,#fff)", soft = theme ? "var(--bluui-color-" + key + "-soft,var(--bluui-surface-muted,#f1f5f9))" : "color-mix(in srgb, " + value + " 14%, var(--bluui-surface,#fff))";
|
|
727
|
+
if (hex) {
|
|
728
|
+
var digits = value.slice(1);
|
|
729
|
+
if (digits.length === 3) digits = digits.split("").map(function(c) {
|
|
730
|
+
return c + c;
|
|
731
|
+
}).join("");
|
|
732
|
+
var rgb = [0, 2, 4].map(function(i) {
|
|
733
|
+
var c = parseInt(digits.slice(i, i + 2), 16) / 255;
|
|
734
|
+
return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
|
|
735
|
+
});
|
|
736
|
+
contrast = 0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2] > 0.179 ? "#000" : "#fff";
|
|
737
|
+
}
|
|
738
|
+
[s.root, s.videoFrame, s.player].forEach(function(n) {
|
|
739
|
+
if (!n) return;
|
|
740
|
+
n.style.setProperty("--blu-video-accent", accent);
|
|
741
|
+
n.style.setProperty("--blu-video-control-text", text);
|
|
742
|
+
n.style.setProperty("--blu-video-contrast", contrast);
|
|
743
|
+
n.style.setProperty("--blu-video-soft", soft);
|
|
744
|
+
});
|
|
745
|
+
}
|
|
746
|
+
function videoPlayerOptions(s) {
|
|
747
|
+
videoControlTheme(s);
|
|
748
|
+
var raw = s.options.ViewingHeatmapJson || "[]";
|
|
749
|
+
if (raw !== s.heatmapRaw) {
|
|
750
|
+
s.heatmapRows = videoHeatmapRows(raw);
|
|
751
|
+
s.heatmapRaw = raw;
|
|
752
|
+
}
|
|
753
|
+
videoOptions(s);
|
|
754
|
+
s.titleNode.textContent = s.options.Title || "";
|
|
755
|
+
s.titleNode.hidden = !s.options.Title;
|
|
756
|
+
attr(s.videoFrame, "aria-label", s.options.Title || "Video player");
|
|
757
|
+
attr(s.videoFrame, "data-rounded", !!s.options.IsRounded);
|
|
758
|
+
videoControlsState(s);
|
|
759
|
+
}
|
|
760
|
+
function installVideoPlayer() {
|
|
761
|
+
return register2("VideoPlayer", () => define("VideoPlayer", "video-player", function(s) {
|
|
762
|
+
video(s, s.body);
|
|
763
|
+
videoControls(s);
|
|
764
|
+
}, function(s) {
|
|
765
|
+
videoPlayerOptions(s);
|
|
766
|
+
}));
|
|
767
|
+
}
|
|
768
|
+
export {
|
|
769
|
+
installVideoPlayer
|
|
770
|
+
};
|