@blukavantui/community 0.0.0-stage → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +103 -0
- package/README.md +177 -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 +516 -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/checkbox.css +1 -0
- package/dist/checkbox.d.ts +2 -0
- package/dist/checkbox.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-3LWXPCWY.js +1 -0
- package/dist/chunk-3PNBQVYS.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-5ENZVZGF.js +0 -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-AL2ETLJV.js +1 -0
- package/dist/chunk-BLDXIO7P.js +1 -0
- package/dist/chunk-BN3PDE5G.js +0 -0
- package/dist/chunk-C3CLLZH2.js +1 -0
- package/dist/chunk-CZXYS6CY.js +1 -0
- package/dist/chunk-EOKNLCNS.js +1 -0
- package/dist/chunk-EPZGLHPD.js +0 -0
- package/dist/chunk-FNX33PDD.js +0 -0
- package/dist/chunk-GEG3TNB4.js +1 -0
- package/dist/chunk-GK3INPAZ.js +1 -0
- package/dist/chunk-GXHANADL.js +1 -0
- package/dist/chunk-H5IEGCAK.js +72 -0
- package/dist/chunk-H7ETPJVW.js +1 -0
- package/dist/chunk-HO6CYWED.js +0 -0
- package/dist/chunk-IHKCC6WJ.js +1 -0
- package/dist/chunk-IIKSMXQE.js +1 -0
- package/dist/chunk-IJ62ILKE.js +0 -0
- package/dist/chunk-IO22GWON.js +0 -0
- package/dist/chunk-IZJN3EF7.js +1 -0
- package/dist/chunk-J7BV4KHG.js +1 -0
- package/dist/chunk-JVE6CXCJ.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-MSMNEIWA.js +0 -0
- package/dist/chunk-MYVLBALF.js +1 -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-OPMD7QNV.js +1 -0
- package/dist/chunk-RGTLYBOY.js +3 -0
- package/dist/chunk-RWBLICYX.js +0 -0
- package/dist/chunk-RYD6RHRX.js +0 -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-UN2SLVFG.js +1 -0
- package/dist/chunk-UUZ4HU7L.js +0 -0
- package/dist/chunk-VBRSAI3K.js +1 -0
- package/dist/chunk-VJVFHL6P.js +0 -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-XIOI5PKM.js +1 -0
- package/dist/chunk-XWXEH3SW.js +1 -0
- package/dist/chunk-Y4TCT2K6.js +1 -0
- package/dist/chunk-Y4WEMSE4.js +0 -0
- package/dist/chunk-YCLR3IE3.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/columns2.css +1 -0
- package/dist/columns2.d.ts +2 -0
- package/dist/columns2.js +1 -0
- package/dist/columns3.css +1 -0
- package/dist/columns3.d.ts +2 -0
- package/dist/columns3.js +1 -0
- package/dist/columns4.css +1 -0
- package/dist/columns4.d.ts +2 -0
- package/dist/columns4.js +1 -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 +876 -0
- package/dist/data.d.ts +10 -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/draft-components.json +77 -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/form-field.css +1 -0
- package/dist/form-field.d.ts +2 -0
- package/dist/form-field.js +1 -0
- package/dist/form-layout/choice.d.ts +15 -0
- package/dist/form-layout/layout.d.ts +12 -0
- package/dist/form-layout/select.d.ts +3 -0
- package/dist/form-layout/shared.d.ts +21 -0
- package/dist/form-layout/table.d.ts +20 -0
- package/dist/form-layout/text.d.ts +3 -0
- package/dist/form-layout/types.d.ts +151 -0
- package/dist/form-layout.css +62 -0
- package/dist/form-layout.d.ts +12 -0
- package/dist/form-layout.js +1 -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 +57 -0
- package/dist/index.js +1 -0
- package/dist/inputs.css +1587 -0
- package/dist/inputs.d.ts +16 -0
- package/dist/inputs.js +1 -0
- package/dist/layout.css +907 -0
- package/dist/layout.d.ts +11 -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/form-layout.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/form-layout.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/radio-button.css +1 -0
- package/dist/radio-button.d.ts +2 -0
- package/dist/radio-button.js +1 -0
- package/dist/radio-group.css +1 -0
- package/dist/radio-group.d.ts +2 -0
- package/dist/radio-group.js +1 -0
- package/dist/select.css +1 -0
- package/dist/select.d.ts +2 -0
- package/dist/select.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 +1194 -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 +8945 -0
- package/dist/switch.css +1 -0
- package/dist/switch.d.ts +2 -0
- package/dist/switch.js +1 -0
- package/dist/table.css +1 -0
- package/dist/table.d.ts +2 -0
- package/dist/table.js +1 -0
- package/dist/text-area.css +1 -0
- package/dist/text-area.d.ts +2 -0
- package/dist/text-area.js +1 -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/text-input.css +1 -0
- package/dist/text-input.d.ts +2 -0
- package/dist/text-input.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/FORM-LAYOUT-ESSENTIALS.md +122 -0
- package/docs/PUBLISHING.md +129 -0
- package/draft-components.json +77 -0
- package/edition.json +282 -0
- package/npm-shrinkwrap.json +554 -0
- package/package.json +457 -4
- package/scripts/build.mjs +42 -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/checkbox.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/columns2.ts +2 -0
- package/src/columns3.ts +2 -0
- package/src/columns4.ts +2 -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 +10 -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/form-field.ts +2 -0
- package/src/form-layout/choice.ts +66 -0
- package/src/form-layout/layout.ts +40 -0
- package/src/form-layout/select.ts +97 -0
- package/src/form-layout/shared.ts +57 -0
- package/src/form-layout/table.ts +86 -0
- package/src/form-layout/text.ts +73 -0
- package/src/form-layout/types.ts +59 -0
- package/src/form-layout.ts +12 -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 +58 -0
- package/src/inputs.ts +16 -0
- package/src/layout.ts +11 -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/form-layout.ts +21 -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/radio-button.ts +2 -0
- package/src/radio-group.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 +826 -0
- package/src/runtime/date-range-picker.d.ts +1 -0
- package/src/runtime/date-range-picker.js +826 -0
- package/src/runtime/date-time-picker.d.ts +1 -0
- package/src/runtime/date-time-picker.js +826 -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 +826 -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/select.ts +2 -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/switch.ts +2 -0
- package/src/table.ts +2 -0
- package/src/text-area.ts +2 -0
- package/src/text-highlight.ts +2 -0
- package/src/text-input.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 +1287 -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/checkbox.css +1 -0
- package/styles/chip-group.css +44 -0
- package/styles/chip.css +191 -0
- package/styles/collection-layout.css +30 -0
- package/styles/columns2.css +1 -0
- package/styles/columns3.css +1 -0
- package/styles/columns4.css +1 -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/form-field.css +1 -0
- package/styles/form-layout.css +62 -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/radio-button.css +1 -0
- package/styles/radio-group.css +1 -0
- package/styles/select.css +1 -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/switch.css +1 -0
- package/styles/table.css +1 -0
- package/styles/text-area.css +1 -0
- package/styles/text-highlight.css +49 -0
- package/styles/text-input.css +1 -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/form-layout.test.mjs +28 -0
- package/test/isolation.test.mjs +36 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,1117 @@
|
|
|
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
|
+
var shared = /* @__PURE__ */ state("common", () => ({ instances: /* @__PURE__ */ new Map(), hosts: /* @__PURE__ */ new Map(), serial: 0, overlays: [], inertState: /* @__PURE__ */ new Map(), oldOverflow: void 0 }));
|
|
7
|
+
function el(tag, cls, text) {
|
|
8
|
+
var n = document.createElement(tag);
|
|
9
|
+
if (cls) n.className = cls;
|
|
10
|
+
if (text !== void 0) n.textContent = text;
|
|
11
|
+
return n;
|
|
12
|
+
}
|
|
13
|
+
function at(n, key, value) {
|
|
14
|
+
n.setAttribute(key, String(value));
|
|
15
|
+
return n;
|
|
16
|
+
}
|
|
17
|
+
function clear(n) {
|
|
18
|
+
while (n.firstChild) n.removeChild(n.firstChild);
|
|
19
|
+
}
|
|
20
|
+
function listen(s, n, event, fn, options) {
|
|
21
|
+
n.addEventListener(event, fn, options);
|
|
22
|
+
s.cleanup.push(function() {
|
|
23
|
+
n.removeEventListener(event, fn, options);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function btn(text, fn, primary) {
|
|
27
|
+
var n = el("button", "blu-common-button" + (primary ? " blu-common-button--primary" : ""), text);
|
|
28
|
+
n.type = "button";
|
|
29
|
+
n.addEventListener("click", fn);
|
|
30
|
+
return n;
|
|
31
|
+
}
|
|
32
|
+
function choice(v, values, fallback) {
|
|
33
|
+
v = v || fallback;
|
|
34
|
+
if (values.indexOf(v) < 0) throw Error("Expected one of: " + values.join(", ") + ".");
|
|
35
|
+
return v;
|
|
36
|
+
}
|
|
37
|
+
function emit(s, name) {
|
|
38
|
+
if (s.dead || s.host._bluCommonOwner !== s.key || !s.events[name]) return;
|
|
39
|
+
var args = Array.prototype.slice.call(arguments, 2);
|
|
40
|
+
try {
|
|
41
|
+
Promise.resolve(s.events[name].apply(null, args)).catch(function(e) {
|
|
42
|
+
if (name !== "Error") error(s, e.message || String(e));
|
|
43
|
+
});
|
|
44
|
+
} catch (e) {
|
|
45
|
+
if (name !== "Error") error(s, e.message || String(e));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function error(s, message) {
|
|
49
|
+
if (!s.error) {
|
|
50
|
+
s.error = at(el("p", "blu-common-error"), "role", "alert");
|
|
51
|
+
s.host.append(s.error);
|
|
52
|
+
}
|
|
53
|
+
s.error.textContent = message;
|
|
54
|
+
s.error.hidden = !message;
|
|
55
|
+
if (message && message !== s.lastError) emit(s, "Error", message);
|
|
56
|
+
s.lastError = message;
|
|
57
|
+
}
|
|
58
|
+
function begin(id, options, events, key, kind) {
|
|
59
|
+
var host = document.getElementById(id);
|
|
60
|
+
if (!host) return null;
|
|
61
|
+
key = key || id;
|
|
62
|
+
var s = shared.instances.get(key);
|
|
63
|
+
if (s && s.host !== host) {
|
|
64
|
+
destroy(key);
|
|
65
|
+
s = null;
|
|
66
|
+
}
|
|
67
|
+
if (host._bluCommonOwner && host._bluCommonOwner !== key) destroy(host._bluCommonOwner);
|
|
68
|
+
if (!s) {
|
|
69
|
+
s = { host, key, kind, uid: "blu-common-" + ++shared.serial, cleanup: [], events: {}, options: {} };
|
|
70
|
+
shared.instances.set(key, s);
|
|
71
|
+
}
|
|
72
|
+
host._bluCommonOwner = key;
|
|
73
|
+
s.options = options || {};
|
|
74
|
+
s.events = events || {};
|
|
75
|
+
at(host, "data-blu-ready", "true");
|
|
76
|
+
return s;
|
|
77
|
+
}
|
|
78
|
+
function destroy(key) {
|
|
79
|
+
var s = shared.instances.get(key);
|
|
80
|
+
if (!s) return;
|
|
81
|
+
s.dead = true;
|
|
82
|
+
closeOverlay(s);
|
|
83
|
+
if (s.dispose) s.dispose();
|
|
84
|
+
s.cleanup.forEach(function(f) {
|
|
85
|
+
f();
|
|
86
|
+
});
|
|
87
|
+
if (s.host._bluCommonOwner === key) {
|
|
88
|
+
delete s.host._bluCommonOwner;
|
|
89
|
+
s.host.removeAttribute("data-blu-ready");
|
|
90
|
+
if (!s.preserve) clear(s.host);
|
|
91
|
+
}
|
|
92
|
+
shared.instances.delete(key);
|
|
93
|
+
}
|
|
94
|
+
function focusables(n) {
|
|
95
|
+
return Array.from(n.querySelectorAll('button,a[href],input,select,textarea,[tabindex]:not([tabindex="-1"])')).filter(function(x) {
|
|
96
|
+
return !x.disabled && !x.closest("[hidden],[inert]") && x.getClientRects().length;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function refreshInert() {
|
|
100
|
+
shared.inertState.forEach(function(v, n) {
|
|
101
|
+
n.inert = v;
|
|
102
|
+
});
|
|
103
|
+
shared.inertState.clear();
|
|
104
|
+
var top = shared.overlays[shared.overlays.length - 1];
|
|
105
|
+
if (!top) {
|
|
106
|
+
if (shared.oldOverflow !== void 0) document.body.style.overflow = shared.oldOverflow;
|
|
107
|
+
shared.oldOverflow = void 0;
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (shared.oldOverflow === void 0) shared.oldOverflow = document.body.style.overflow;
|
|
111
|
+
document.body.style.overflow = "hidden";
|
|
112
|
+
var node = top.layer;
|
|
113
|
+
while (node && node.parentElement) {
|
|
114
|
+
Array.from(node.parentElement.children).forEach(function(sibling) {
|
|
115
|
+
if (sibling !== node && sibling instanceof HTMLElement) {
|
|
116
|
+
shared.inertState.set(sibling, sibling.inert);
|
|
117
|
+
sibling.inert = true;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
node = node.parentElement;
|
|
121
|
+
if (node === document.body) break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function openOverlay(s, layer, panel, onEscape) {
|
|
125
|
+
if (s.overlayOpen) return;
|
|
126
|
+
s.overlayOpen = true;
|
|
127
|
+
s.layer = layer;
|
|
128
|
+
s.panel = panel;
|
|
129
|
+
s.returnFocus = document.activeElement;
|
|
130
|
+
layer.hidden = false;
|
|
131
|
+
at(layer, "popover", "manual");
|
|
132
|
+
if (layer.showPopover) {
|
|
133
|
+
try {
|
|
134
|
+
layer.showPopover();
|
|
135
|
+
} catch (_) {
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
shared.overlays.push(s);
|
|
139
|
+
refreshInert();
|
|
140
|
+
panel.tabIndex = -1;
|
|
141
|
+
s.overlayKey = function(e) {
|
|
142
|
+
if (shared.overlays[shared.overlays.length - 1] !== s) return;
|
|
143
|
+
if (e.key === "Escape") {
|
|
144
|
+
e.preventDefault();
|
|
145
|
+
e.stopImmediatePropagation();
|
|
146
|
+
onEscape();
|
|
147
|
+
} else if (e.key === "Tab") {
|
|
148
|
+
var nodes = focusables(panel), first = nodes[0] || panel, last = nodes[nodes.length - 1] || panel;
|
|
149
|
+
if (e.shiftKey && (document.activeElement === first || !panel.contains(document.activeElement))) {
|
|
150
|
+
e.preventDefault();
|
|
151
|
+
last.focus();
|
|
152
|
+
} else if (!e.shiftKey && (document.activeElement === last || !panel.contains(document.activeElement))) {
|
|
153
|
+
e.preventDefault();
|
|
154
|
+
first.focus();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
s.overlayFocus = function(e) {
|
|
159
|
+
if (shared.overlays[shared.overlays.length - 1] === s && !panel.contains(e.target)) (focusables(panel)[0] || panel).focus();
|
|
160
|
+
};
|
|
161
|
+
document.addEventListener("keydown", s.overlayKey, true);
|
|
162
|
+
document.addEventListener("focusin", s.overlayFocus, true);
|
|
163
|
+
(focusables(panel)[0] || panel).focus();
|
|
164
|
+
}
|
|
165
|
+
function closeOverlay(s) {
|
|
166
|
+
if (s.stopTracking) s.stopTracking();
|
|
167
|
+
if (!s.overlayOpen) return;
|
|
168
|
+
s.overlayOpen = false;
|
|
169
|
+
var wasTop = shared.overlays[shared.overlays.length - 1] === s;
|
|
170
|
+
shared.overlays = shared.overlays.filter(function(x) {
|
|
171
|
+
return x !== s;
|
|
172
|
+
});
|
|
173
|
+
document.removeEventListener("keydown", s.overlayKey, true);
|
|
174
|
+
document.removeEventListener("focusin", s.overlayFocus, true);
|
|
175
|
+
if (s.layer.hidePopover) {
|
|
176
|
+
try {
|
|
177
|
+
s.layer.hidePopover();
|
|
178
|
+
} catch (_) {
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
s.layer.hidden = true;
|
|
182
|
+
refreshInert();
|
|
183
|
+
if (wasTop && s.returnFocus && s.returnFocus.isConnected && !s.returnFocus.closest("[inert],[hidden]")) s.returnFocus.focus();
|
|
184
|
+
}
|
|
185
|
+
function nativeSlot(s, name) {
|
|
186
|
+
return s.host.querySelector('[data-blu-slot="' + name + '"],.blu-common-slot--' + name.toLowerCase());
|
|
187
|
+
}
|
|
188
|
+
function syncOverlay(s) {
|
|
189
|
+
var o = s.options, size = choice(o.Size, ["Small", "Medium", "Large"], "Medium"), placement = choice(o.Placement, ["Left", "Right", "Bottom"], "Right");
|
|
190
|
+
s.preserve = true;
|
|
191
|
+
if (!s.layer) {
|
|
192
|
+
var content = nativeSlot(s, "Content"), footer = nativeSlot(s, "Footer");
|
|
193
|
+
s.layer = s.host;
|
|
194
|
+
s.layer.classList.add("blu-overlay");
|
|
195
|
+
s.layer.classList.add("blu-overlay--" + s.kind.toLowerCase());
|
|
196
|
+
s.panel = at(el("section", "blu-overlay__panel"), "role", "dialog");
|
|
197
|
+
at(s.panel, "aria-modal", "true");
|
|
198
|
+
s.heading = el("h2");
|
|
199
|
+
s.heading.id = s.uid + "-title";
|
|
200
|
+
s.description = el("p", "blu-overlay__description");
|
|
201
|
+
s.description.id = s.uid + "-description";
|
|
202
|
+
s.close = btn("\xD7", function() {
|
|
203
|
+
requestClose(s, "CloseButton");
|
|
204
|
+
});
|
|
205
|
+
at(s.close, "aria-label", "Close dialog");
|
|
206
|
+
s.close.classList.add("blu-overlay__close");
|
|
207
|
+
var header = el("header", "blu-overlay__header");
|
|
208
|
+
header.append(s.heading, s.description, s.close);
|
|
209
|
+
s.content = content || el("div", "blu-common-slot--content");
|
|
210
|
+
s.content.classList.add("blu-overlay__content");
|
|
211
|
+
s.footer = el("footer", "blu-overlay__footer");
|
|
212
|
+
s.customFooter = footer || el("div");
|
|
213
|
+
s.actions = el("div", "blu-overlay__actions");
|
|
214
|
+
s.cancel = btn("Cancel", function() {
|
|
215
|
+
requestClose(s, "Cancel");
|
|
216
|
+
});
|
|
217
|
+
s.confirm = btn("Confirm", function() {
|
|
218
|
+
if (!s.options.IsBusy) emit(s, "Confirm", s.options.InstanceKey || "");
|
|
219
|
+
}, true);
|
|
220
|
+
s.actions.append(s.cancel, s.confirm);
|
|
221
|
+
s.footer.append(s.customFooter, s.actions);
|
|
222
|
+
s.panel.append(header, s.content, s.footer);
|
|
223
|
+
s.layer.append(s.panel);
|
|
224
|
+
listen(s, s.layer, "click", function(e) {
|
|
225
|
+
if (e.target === s.layer && s.options.CloseOnBackdrop !== false) requestClose(s, "Backdrop");
|
|
226
|
+
});
|
|
227
|
+
s.dispose = function() {
|
|
228
|
+
if (content) s.host.append(content);
|
|
229
|
+
if (footer) s.host.append(footer);
|
|
230
|
+
s.panel.remove();
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
at(s.layer, "data-size", size.toLowerCase());
|
|
234
|
+
at(s.layer, "data-placement", placement.toLowerCase());
|
|
235
|
+
s.heading.textContent = o.Title || "Details";
|
|
236
|
+
s.description.textContent = o.Description || "";
|
|
237
|
+
s.description.hidden = !o.Description;
|
|
238
|
+
at(s.panel, "aria-labelledby", s.heading.id);
|
|
239
|
+
if (o.Description) at(s.panel, "aria-describedby", s.description.id);
|
|
240
|
+
else s.panel.removeAttribute("aria-describedby");
|
|
241
|
+
at(s.panel, "aria-busy", !!o.IsBusy);
|
|
242
|
+
s.close.disabled = s.cancel.disabled = false;
|
|
243
|
+
s.confirm.disabled = !!o.IsBusy;
|
|
244
|
+
s.cancel.textContent = o.CancelLabel || "Cancel";
|
|
245
|
+
s.confirm.textContent = o.IsBusy ? "Working\u2026" : o.ConfirmLabel || "Confirm";
|
|
246
|
+
s.footer.hidden = o.ShowFooter === false;
|
|
247
|
+
s.actions.hidden = o.ShowDefaultActions === false;
|
|
248
|
+
if (o.IsOpen) openOverlay(s, s.layer, s.panel, function() {
|
|
249
|
+
if (s.options.CloseOnEscape !== false) requestClose(s, "Escape");
|
|
250
|
+
});
|
|
251
|
+
else {
|
|
252
|
+
closeOverlay(s);
|
|
253
|
+
s.layer.hidden = true;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
function requestClose(s, reason) {
|
|
257
|
+
s.options.IsOpen = false;
|
|
258
|
+
closeOverlay(s);
|
|
259
|
+
emit(s, "OpenChanged", false, reason);
|
|
260
|
+
}
|
|
261
|
+
function api(kind, render, cached) {
|
|
262
|
+
return { sync: function(id, options, events, key) {
|
|
263
|
+
var s = begin(id, options, events, key, kind);
|
|
264
|
+
if (!s) return;
|
|
265
|
+
try {
|
|
266
|
+
var signature = cached ? JSON.stringify(s.options) : null;
|
|
267
|
+
if (!cached || s.renderSignature !== signature) {
|
|
268
|
+
render(s);
|
|
269
|
+
s.renderSignature = signature;
|
|
270
|
+
}
|
|
271
|
+
error(s, "");
|
|
272
|
+
return "";
|
|
273
|
+
} catch (e) {
|
|
274
|
+
s.renderSignature = void 0;
|
|
275
|
+
s.cascaderSignature = null;
|
|
276
|
+
closeOverlay(s);
|
|
277
|
+
error(s, e.message || String(e));
|
|
278
|
+
return e.message || String(e);
|
|
279
|
+
}
|
|
280
|
+
}, destroy };
|
|
281
|
+
}
|
|
282
|
+
function installModal() {
|
|
283
|
+
return register("Modal", () => api("Modal", syncOverlay, false));
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// ../blu-grid/docs/scripts/modules/rich.js
|
|
287
|
+
import { global as global3, runtime as runtime2, state as state2, register as register2 } from "./kernel.js";
|
|
288
|
+
var shared2 = /* @__PURE__ */ state2("rich", () => ({ instances: /* @__PURE__ */ new Map(), serial: 0 }));
|
|
289
|
+
function el2(tag, cls, value) {
|
|
290
|
+
var n = document.createElement(tag);
|
|
291
|
+
if (cls) n.className = cls;
|
|
292
|
+
if (value !== void 0) n.textContent = value;
|
|
293
|
+
return n;
|
|
294
|
+
}
|
|
295
|
+
function attr(n, k, v) {
|
|
296
|
+
n.setAttribute(k, String(v));
|
|
297
|
+
return n;
|
|
298
|
+
}
|
|
299
|
+
function url(v) {
|
|
300
|
+
if (!v) return "";
|
|
301
|
+
var u = new URL(String(v), document.baseURI);
|
|
302
|
+
if (!/^https?:$/.test(u.protocol) && u.protocol !== "blob:") throw Error("Use an HTTP(S), relative or blob URL.");
|
|
303
|
+
return u.href;
|
|
304
|
+
}
|
|
305
|
+
function ratio(v) {
|
|
306
|
+
return /^\s*\d+(\.\d+)?\s*\/\s*\d+(\.\d+)?\s*$/.test(v || "") ? v : "4 / 3";
|
|
307
|
+
}
|
|
308
|
+
function on(s, n, e, fn) {
|
|
309
|
+
n.addEventListener(e, fn);
|
|
310
|
+
s.cleanup.push(function() {
|
|
311
|
+
n.removeEventListener(e, fn);
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
function emit2(s, name) {
|
|
315
|
+
if (s.dead || !s.events[name]) return;
|
|
316
|
+
try {
|
|
317
|
+
Promise.resolve(s.events[name].apply(null, Array.prototype.slice.call(arguments, 2))).catch(function(e) {
|
|
318
|
+
report(s, e);
|
|
319
|
+
});
|
|
320
|
+
} catch (e) {
|
|
321
|
+
report(s, e);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
function report(s, e) {
|
|
325
|
+
var message = e ? e.message || String(e) : "";
|
|
326
|
+
s.error.textContent = message;
|
|
327
|
+
s.error.hidden = !message;
|
|
328
|
+
if (message && message !== s.lastError) {
|
|
329
|
+
s.lastError = message;
|
|
330
|
+
if (s.events.Error) try {
|
|
331
|
+
s.events.Error(message);
|
|
332
|
+
} catch (_) {
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
function button(label, fn, cls) {
|
|
337
|
+
var n = el2("button", "blu-rich-button " + (cls || ""), label);
|
|
338
|
+
n.type = "button";
|
|
339
|
+
n.addEventListener("click", fn);
|
|
340
|
+
return n;
|
|
341
|
+
}
|
|
342
|
+
function image(src, alt, eager) {
|
|
343
|
+
var n = el2("img");
|
|
344
|
+
n.alt = alt || "";
|
|
345
|
+
n.loading = eager ? "eager" : "lazy";
|
|
346
|
+
n.decoding = "async";
|
|
347
|
+
if (src) n.src = url(src);
|
|
348
|
+
return n;
|
|
349
|
+
}
|
|
350
|
+
function modal(s, title, content) {
|
|
351
|
+
if (!s.modal) {
|
|
352
|
+
s.modal = el2("div", s.kind === "VideoLightbox" || s.kind === "MediaImage" ? "blu-media-lightbox" : s.kind === "ProfileCard" ? "blu-profile-lightbox" : "");
|
|
353
|
+
s.modal.id = s.uid + "-modal";
|
|
354
|
+
s.modalSlot = el2("div", "blu-common-slot--content");
|
|
355
|
+
s.modal.append(s.modalSlot);
|
|
356
|
+
s.host.append(s.modal);
|
|
357
|
+
}
|
|
358
|
+
if (content && content.parentElement !== s.modalSlot) s.modalSlot.replaceChildren(content);
|
|
359
|
+
runtime2.Modal.sync(s.modal.id, { Title: title, IsOpen: true, Size: "Large", ShowFooter: false, CloseOnEscape: true, CloseOnBackdrop: true }, { OpenChanged: function() {
|
|
360
|
+
if (s.pause) s.pause();
|
|
361
|
+
if (s.kind === "VideoLightbox") {
|
|
362
|
+
s.options.IsOpen = false;
|
|
363
|
+
emit2(s, "OpenChanged", false);
|
|
364
|
+
}
|
|
365
|
+
} }, s.uid + "-modal");
|
|
366
|
+
}
|
|
367
|
+
function closeModal(s) {
|
|
368
|
+
if (s.modal) runtime2.Modal.sync(s.modal.id, { Title: s.options.Title || "Details", IsOpen: false, Size: "Large", ShowFooter: false }, {}, s.uid + "-modal");
|
|
369
|
+
if (s.pause) s.pause();
|
|
370
|
+
}
|
|
371
|
+
function destroy2(key) {
|
|
372
|
+
var s = shared2.instances.get(key);
|
|
373
|
+
if (!s || s.destroying) return;
|
|
374
|
+
s.destroying = true;
|
|
375
|
+
if (s.beforeDestroy) s.beforeDestroy();
|
|
376
|
+
s.dead = true;
|
|
377
|
+
s.cleanup.forEach(function(f) {
|
|
378
|
+
f();
|
|
379
|
+
});
|
|
380
|
+
if (s.pause) s.pause();
|
|
381
|
+
if (s.modal) runtime2.Modal.destroy(s.uid + "-modal");
|
|
382
|
+
if (s.observer) s.observer.disconnect();
|
|
383
|
+
if (s.resize) s.resize.disconnect();
|
|
384
|
+
if (s.frame) cancelAnimationFrame(s.frame);
|
|
385
|
+
Object.keys(s.slots).forEach(function(k) {
|
|
386
|
+
s.host.append(s.slots[k]);
|
|
387
|
+
});
|
|
388
|
+
s.root.remove();
|
|
389
|
+
if (s.modal) s.modal.remove();
|
|
390
|
+
if (s.host._bluRichOwner === key) delete s.host._bluRichOwner;
|
|
391
|
+
shared2.instances.delete(key);
|
|
392
|
+
}
|
|
393
|
+
function define(kind, slug, init, update) {
|
|
394
|
+
return { sync: function(id, options, events, key) {
|
|
395
|
+
var host = document.getElementById(id);
|
|
396
|
+
if (!host) return "Component host was not found.";
|
|
397
|
+
key = key || id;
|
|
398
|
+
var s = shared2.instances.get(key);
|
|
399
|
+
if (s && (s.host !== host || s.kind !== kind)) {
|
|
400
|
+
destroy2(key);
|
|
401
|
+
s = null;
|
|
402
|
+
}
|
|
403
|
+
if (host._bluRichOwner && host._bluRichOwner !== key) destroy2(host._bluRichOwner);
|
|
404
|
+
if (!s) {
|
|
405
|
+
s = { host, key, kind, uid: "blu-rich-" + ++shared2.serial, cleanup: [], slots: {}, events: {}, options: {} };
|
|
406
|
+
Array.from(host.children).forEach(function(n) {
|
|
407
|
+
var match = n.className && String(n.className).match(/blu-common-slot--(\w+)/);
|
|
408
|
+
if (match) s.slots[match[1]] = n;
|
|
409
|
+
});
|
|
410
|
+
s.root = el2("div", "blu-rich blu-" + slug);
|
|
411
|
+
s.body = el2("div", "blu-rich-body");
|
|
412
|
+
s.error = attr(el2("p", "blu-rich-error"), "role", "alert");
|
|
413
|
+
s.error.hidden = true;
|
|
414
|
+
s.root.append(s.body, s.error);
|
|
415
|
+
host.append(s.root);
|
|
416
|
+
shared2.instances.set(key, s);
|
|
417
|
+
s.fresh = true;
|
|
418
|
+
}
|
|
419
|
+
host._bluRichOwner = key;
|
|
420
|
+
s.options = options || {};
|
|
421
|
+
s.events = events || {};
|
|
422
|
+
var preview = host.nextElementSibling;
|
|
423
|
+
if (preview && preview.classList.contains("blu-component-preview")) preview.hidden = true;
|
|
424
|
+
if (s.options.AccessibleLabel) {
|
|
425
|
+
attr(s.root, "aria-label", s.options.AccessibleLabel);
|
|
426
|
+
attr(s.root, "role", "group");
|
|
427
|
+
} else {
|
|
428
|
+
s.root.removeAttribute("aria-label");
|
|
429
|
+
s.root.removeAttribute("role");
|
|
430
|
+
}
|
|
431
|
+
try {
|
|
432
|
+
if (s.fresh) {
|
|
433
|
+
init(s);
|
|
434
|
+
s.fresh = false;
|
|
435
|
+
}
|
|
436
|
+
update(s);
|
|
437
|
+
report(s, null);
|
|
438
|
+
return "";
|
|
439
|
+
} catch (e) {
|
|
440
|
+
report(s, e);
|
|
441
|
+
return e.message || String(e);
|
|
442
|
+
}
|
|
443
|
+
}, destroy: destroy2 };
|
|
444
|
+
}
|
|
445
|
+
function videoPosition(n) {
|
|
446
|
+
return Number.isFinite(n.currentTime) ? Math.max(0, n.currentTime) : 0;
|
|
447
|
+
}
|
|
448
|
+
function videoActivityReset(s) {
|
|
449
|
+
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() };
|
|
450
|
+
}
|
|
451
|
+
function videoActivitySample(s) {
|
|
452
|
+
var a = s.activity, n = s.video;
|
|
453
|
+
if (!a) return;
|
|
454
|
+
var now = performance.now(), position = videoPosition(n), delta = position - a.position, elapsed = Math.max(0, (now - a.clock) / 1e3);
|
|
455
|
+
if (a.playing && !a.seeking && !n.seeking && delta > 0 && delta <= elapsed * Math.max(a.rate, n.playbackRate || 1) + 0.75) {
|
|
456
|
+
var last = a.segments[a.segments.length - 1];
|
|
457
|
+
if (last && Math.abs(last.EndSeconds - a.position) < 0.02) last.EndSeconds = position;
|
|
458
|
+
else a.segments.push({ StartSeconds: a.position, EndSeconds: position });
|
|
459
|
+
}
|
|
460
|
+
a.position = position;
|
|
461
|
+
a.clock = now;
|
|
462
|
+
a.rate = n.playbackRate || 1;
|
|
463
|
+
}
|
|
464
|
+
function videoActivityFlush(s, reason, sample) {
|
|
465
|
+
if (s.dead || !s.activity) return;
|
|
466
|
+
if (sample !== false) videoActivitySample(s);
|
|
467
|
+
var a = s.activity, n = s.video;
|
|
468
|
+
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) {
|
|
469
|
+
return { StartSeconds: Number(r.StartSeconds.toFixed(3)), EndSeconds: Number(r.EndSeconds.toFixed(3)) };
|
|
470
|
+
}) };
|
|
471
|
+
a.segments = [];
|
|
472
|
+
a.flushedAt = performance.now();
|
|
473
|
+
emit2(s, "ViewingActivity", JSON.stringify(payload));
|
|
474
|
+
return payload;
|
|
475
|
+
}
|
|
476
|
+
function videoActivity(s) {
|
|
477
|
+
var n = s.video;
|
|
478
|
+
videoActivityReset(s);
|
|
479
|
+
on(s, n, "play", function() {
|
|
480
|
+
videoActivitySample(s);
|
|
481
|
+
s.activity.playing = true;
|
|
482
|
+
});
|
|
483
|
+
on(s, n, "pause", function() {
|
|
484
|
+
if (s.suppressActivityPause) {
|
|
485
|
+
s.suppressActivityPause = false;
|
|
486
|
+
s.activity.playing = false;
|
|
487
|
+
return;
|
|
488
|
+
}
|
|
489
|
+
videoActivityFlush(s, n.ended ? "Ended" : "Paused");
|
|
490
|
+
s.activity.playing = false;
|
|
491
|
+
s.activity.endedSent = n.ended;
|
|
492
|
+
});
|
|
493
|
+
on(s, n, "ended", function() {
|
|
494
|
+
if (!s.activity.endedSent) videoActivityFlush(s, "Ended");
|
|
495
|
+
s.activity.playing = false;
|
|
496
|
+
s.activity.endedSent = false;
|
|
497
|
+
});
|
|
498
|
+
on(s, n, "seeking", function() {
|
|
499
|
+
if (!s.activity.seeking) videoActivityFlush(s, "Seek", false);
|
|
500
|
+
s.activity.seeking = true;
|
|
501
|
+
s.activity.position = videoPosition(n);
|
|
502
|
+
s.activity.clock = performance.now();
|
|
503
|
+
});
|
|
504
|
+
on(s, n, "seeked", function() {
|
|
505
|
+
s.activity.seeking = false;
|
|
506
|
+
s.activity.position = videoPosition(n);
|
|
507
|
+
s.activity.clock = performance.now();
|
|
508
|
+
s.activity.playing = !n.paused && !n.ended;
|
|
509
|
+
});
|
|
510
|
+
on(s, n, "ratechange", function() {
|
|
511
|
+
videoActivitySample(s);
|
|
512
|
+
});
|
|
513
|
+
on(s, n, "timeupdate", function() {
|
|
514
|
+
videoActivitySample(s);
|
|
515
|
+
if (s.activity.segments.length && (performance.now() - s.activity.flushedAt >= 15e3 || s.activity.segments.length >= 100)) videoActivityFlush(s, "Progress", false);
|
|
516
|
+
});
|
|
517
|
+
on(s, document, "visibilitychange", function() {
|
|
518
|
+
if (document.visibilityState === "hidden") videoActivityFlush(s, "Hidden");
|
|
519
|
+
});
|
|
520
|
+
s.beforeDestroy = function() {
|
|
521
|
+
videoActivityFlush(s, "Destroy");
|
|
522
|
+
videoExitPictureInPicture(s);
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
function videoHeatmapRows(raw) {
|
|
526
|
+
var rows = typeof raw === "string" ? JSON.parse(raw || "[]") : raw || [];
|
|
527
|
+
if (!Array.isArray(rows) || rows.length > 500) throw Error("ViewingHeatmap supports up to 500 time ranges.");
|
|
528
|
+
var end = 0;
|
|
529
|
+
return rows.map(function(r) {
|
|
530
|
+
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.");
|
|
531
|
+
end = r.EndSeconds;
|
|
532
|
+
return { StartSeconds: r.StartSeconds, EndSeconds: r.EndSeconds, Views: r.Views };
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
function videoHeatmap(s) {
|
|
536
|
+
if (!s.heatmap) return;
|
|
537
|
+
var duration = s.video.duration, rows = s.heatmapRows || [], max = rows.reduce(function(m, r) {
|
|
538
|
+
return Math.max(m, r.Views);
|
|
539
|
+
}, 0), show = !!s.options.ShowViewingHeatmap && Number.isFinite(duration) && duration > 0 && rows.length > 0 && max > 0;
|
|
540
|
+
s.heatmap.style.display = show ? "" : "none";
|
|
541
|
+
s.seekHint.hidden = !show;
|
|
542
|
+
attr(s.videoFrame, "data-heatmap", show);
|
|
543
|
+
s.heatmapMax = max;
|
|
544
|
+
if (!show) {
|
|
545
|
+
s.timeline.removeAttribute("aria-describedby");
|
|
546
|
+
return;
|
|
547
|
+
}
|
|
548
|
+
attr(s.timeline, "aria-describedby", s.heatmapDescription.id);
|
|
549
|
+
s.heatmapDescription.textContent = "Viewing activity supplied by the application. Taller areas were viewed more often.";
|
|
550
|
+
var signature = JSON.stringify([duration, rows]);
|
|
551
|
+
if (signature === s.heatmapSignature) return;
|
|
552
|
+
s.heatmapSignature = signature;
|
|
553
|
+
var points = [[0, 42]], lastEnd = 0;
|
|
554
|
+
rows.forEach(function(r) {
|
|
555
|
+
var start = Math.min(duration, r.StartSeconds) / duration * 1e3, end = Math.min(duration, r.EndSeconds) / duration * 1e3;
|
|
556
|
+
if (end <= start) return;
|
|
557
|
+
if (start > lastEnd) {
|
|
558
|
+
points.push([lastEnd, 42], [start, 42]);
|
|
559
|
+
}
|
|
560
|
+
points.push([(start + end) / 2, 42 - r.Views / max * 36]);
|
|
561
|
+
lastEnd = end;
|
|
562
|
+
});
|
|
563
|
+
points.push([lastEnd, 42], [1e3, 42]);
|
|
564
|
+
var path = "M0 44 L" + points[0].join(" ");
|
|
565
|
+
for (var i = 1; i < points.length; i++) {
|
|
566
|
+
var previous = points[i - 1], current = points[i], middle = (previous[0] + current[0]) / 2;
|
|
567
|
+
path += " C" + middle + " " + previous[1] + " " + middle + " " + current[1] + " " + current.join(" ");
|
|
568
|
+
}
|
|
569
|
+
attr(s.heatmapPath, "d", path + " L1000 44 Z");
|
|
570
|
+
}
|
|
571
|
+
function videoHeatmapHint(s, position) {
|
|
572
|
+
var duration = s.video.duration;
|
|
573
|
+
if (!Number.isFinite(duration) || duration <= 0) return;
|
|
574
|
+
position = Math.max(0, Math.min(duration, position));
|
|
575
|
+
var row = (s.heatmapRows || []).find(function(r) {
|
|
576
|
+
return position >= r.StartSeconds && position < r.EndSeconds;
|
|
577
|
+
});
|
|
578
|
+
s.seekHint.textContent = videoTime(position) + (row && row.Views === s.heatmapMax ? " \xB7 Most viewed" : "");
|
|
579
|
+
s.seekHint.style.left = Math.max(8, Math.min(92, position / duration * 100)) + "%";
|
|
580
|
+
}
|
|
581
|
+
function videoPictureInPictureAvailable(s) {
|
|
582
|
+
return s.options.AllowPictureInPicture !== false && !!document.pictureInPictureEnabled && typeof s.video.requestPictureInPicture === "function" && !s.video.disablePictureInPicture;
|
|
583
|
+
}
|
|
584
|
+
function videoExitPictureInPicture(s) {
|
|
585
|
+
if (document.pictureInPictureElement === s.video && document.exitPictureInPicture) {
|
|
586
|
+
var p = document.exitPictureInPicture();
|
|
587
|
+
if (p) p.catch(function() {
|
|
588
|
+
});
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
function videoPictureInPictureMessage(error2, exiting) {
|
|
592
|
+
if (exiting) return "The browser could not close the floating window. Use the close control on that window to return to this player.";
|
|
593
|
+
switch (error2 && error2.name) {
|
|
594
|
+
case "NotSupportedError":
|
|
595
|
+
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.";
|
|
596
|
+
case "SecurityError":
|
|
597
|
+
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.";
|
|
598
|
+
case "NotAllowedError":
|
|
599
|
+
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.";
|
|
600
|
+
case "InvalidStateError":
|
|
601
|
+
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.";
|
|
602
|
+
default:
|
|
603
|
+
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.";
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
function videoClearPictureInPictureNotice(s) {
|
|
607
|
+
if (s.pipNotice) s.pipNotice.hidden = true;
|
|
608
|
+
}
|
|
609
|
+
function videoPictureInPicture(s) {
|
|
610
|
+
if (!videoPictureInPictureAvailable(s) || s.pipPending) return;
|
|
611
|
+
var exiting = document.pictureInPictureElement === s.video, source = s.source;
|
|
612
|
+
function failed(e) {
|
|
613
|
+
if (s.dead || s.source !== source) return;
|
|
614
|
+
var message = videoPictureInPictureMessage(e, exiting);
|
|
615
|
+
s.pipNoticeTitle.textContent = exiting ? "Picture-in-picture is still open" : "Picture-in-picture unavailable";
|
|
616
|
+
s.pipNoticeText.textContent = message;
|
|
617
|
+
s.pipNotice.hidden = false;
|
|
618
|
+
emit2(s, "Error", message);
|
|
619
|
+
}
|
|
620
|
+
function finished() {
|
|
621
|
+
s.pipPending = false;
|
|
622
|
+
if (!s.dead) videoControlsState(s);
|
|
623
|
+
}
|
|
624
|
+
videoClearPictureInPictureNotice(s);
|
|
625
|
+
s.pipPending = true;
|
|
626
|
+
videoControlsState(s);
|
|
627
|
+
try {
|
|
628
|
+
var p = exiting ? document.exitPictureInPicture() : s.video.requestPictureInPicture();
|
|
629
|
+
Promise.resolve(p).then(function() {
|
|
630
|
+
if (!s.dead && s.source === source) videoClearPictureInPictureNotice(s);
|
|
631
|
+
}, failed).then(finished, finished);
|
|
632
|
+
} catch (e) {
|
|
633
|
+
failed(e);
|
|
634
|
+
finished();
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
function video(s, parent) {
|
|
638
|
+
var n = el2("video", "blu-video-player__media");
|
|
639
|
+
n.controls = true;
|
|
640
|
+
n.playsInline = true;
|
|
641
|
+
n.preload = "none";
|
|
642
|
+
parent.append(n);
|
|
643
|
+
s.video = n;
|
|
644
|
+
videoActivity(s);
|
|
645
|
+
s.pause = function() {
|
|
646
|
+
if (s.isVideoOpen) {
|
|
647
|
+
videoActivityFlush(s, "Closed");
|
|
648
|
+
s.isVideoOpen = false;
|
|
649
|
+
s.suppressActivityPause = !n.paused;
|
|
650
|
+
videoExitPictureInPicture(s);
|
|
651
|
+
}
|
|
652
|
+
n.pause();
|
|
653
|
+
};
|
|
654
|
+
["play", "pause", "ended"].forEach(function(e) {
|
|
655
|
+
on(s, n, e, function() {
|
|
656
|
+
emit2(s, "PlaybackChanged", e === "play" ? "Playing" : e === "pause" ? "Paused" : "Ended");
|
|
657
|
+
});
|
|
658
|
+
});
|
|
659
|
+
on(s, n, "error", function() {
|
|
660
|
+
if (n.currentSrc) report(s, Error("The video could not be loaded. Check the media URL and response format."));
|
|
661
|
+
});
|
|
662
|
+
}
|
|
663
|
+
function videoOptions(s) {
|
|
664
|
+
var o = s.options, n = s.video, source = url(o.SourceUrl), captions = url(o.CaptionsUrl), corsChanged = !!captions !== !!s.captions;
|
|
665
|
+
if (captions) n.crossOrigin = "anonymous";
|
|
666
|
+
else n.removeAttribute("crossorigin");
|
|
667
|
+
if (s.source !== source || corsChanged || s.activity.mediaId !== String(o.MediaId || "")) {
|
|
668
|
+
if (s.source) videoActivityFlush(s, "SourceChanged");
|
|
669
|
+
s.suppressActivityPause = !n.paused;
|
|
670
|
+
n.pause();
|
|
671
|
+
videoExitPictureInPicture(s);
|
|
672
|
+
videoClearPictureInPictureNotice(s);
|
|
673
|
+
videoActivityReset(s);
|
|
674
|
+
s.source = source;
|
|
675
|
+
if (source) n.src = source;
|
|
676
|
+
else n.removeAttribute("src");
|
|
677
|
+
n.load();
|
|
678
|
+
}
|
|
679
|
+
n.poster = url(o.PosterUrl);
|
|
680
|
+
n.loop = !!o.IsLooping;
|
|
681
|
+
if (s.muted !== o.IsMuted) {
|
|
682
|
+
n.muted = !!o.IsMuted;
|
|
683
|
+
s.muted = o.IsMuted;
|
|
684
|
+
}
|
|
685
|
+
attr(n, "aria-label", o.Title || "Video");
|
|
686
|
+
n.style.aspectRatio = ratio(o.AspectRatio || "16 / 9");
|
|
687
|
+
if (s.captions !== captions || s.language !== o.CaptionLanguage) {
|
|
688
|
+
n.querySelectorAll("track").forEach(function(t) {
|
|
689
|
+
t.remove();
|
|
690
|
+
});
|
|
691
|
+
s.captionFailed = false;
|
|
692
|
+
if (captions) {
|
|
693
|
+
var track = el2("track");
|
|
694
|
+
track.kind = "captions";
|
|
695
|
+
track.src = captions;
|
|
696
|
+
track.srclang = o.CaptionLanguage || "en";
|
|
697
|
+
track.label = "Captions";
|
|
698
|
+
track.default = true;
|
|
699
|
+
n.append(track);
|
|
700
|
+
on(s, track, "load", function() {
|
|
701
|
+
if (track.parentNode === n) videoControlsState(s);
|
|
702
|
+
});
|
|
703
|
+
on(s, track, "error", function() {
|
|
704
|
+
if (track.parentNode !== n) return;
|
|
705
|
+
s.captionFailed = true;
|
|
706
|
+
videoControlsState(s);
|
|
707
|
+
report(s, Error("Captions could not be loaded. Check the caption URL and cross-origin permissions."));
|
|
708
|
+
});
|
|
709
|
+
}
|
|
710
|
+
s.captions = captions;
|
|
711
|
+
s.language = o.CaptionLanguage;
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
function videoTime(value) {
|
|
715
|
+
value = Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 0;
|
|
716
|
+
var hours = Math.floor(value / 3600), minutes = Math.floor(value % 3600 / 60), seconds = String(value % 60).padStart(2, "0");
|
|
717
|
+
return hours ? hours + ":" + String(minutes).padStart(2, "0") + ":" + seconds : minutes + ":" + seconds;
|
|
718
|
+
}
|
|
719
|
+
function videoIcon(name) {
|
|
720
|
+
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" };
|
|
721
|
+
var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"), path = document.createElementNS(svg.namespaceURI, "path");
|
|
722
|
+
attr(svg, "viewBox", "0 0 24 24");
|
|
723
|
+
attr(svg, "aria-hidden", "true");
|
|
724
|
+
attr(svg, "focusable", "false");
|
|
725
|
+
attr(path, "d", paths[name]);
|
|
726
|
+
attr(path, "fill", name === "play" ? "currentColor" : "none");
|
|
727
|
+
attr(path, "stroke", "currentColor");
|
|
728
|
+
attr(path, "stroke-width", "1.8");
|
|
729
|
+
attr(path, "stroke-linecap", "round");
|
|
730
|
+
attr(path, "stroke-linejoin", "round");
|
|
731
|
+
svg.append(path);
|
|
732
|
+
return svg;
|
|
733
|
+
}
|
|
734
|
+
function videoButton(s, label, icon, action, cls) {
|
|
735
|
+
var n = el2("button", "blu-video-player__button " + (cls || ""));
|
|
736
|
+
n.type = "button";
|
|
737
|
+
attr(n, "aria-label", label);
|
|
738
|
+
n.title = label;
|
|
739
|
+
if (icon) n.append(videoIcon(icon));
|
|
740
|
+
else n.textContent = label;
|
|
741
|
+
on(s, n, "click", action);
|
|
742
|
+
return n;
|
|
743
|
+
}
|
|
744
|
+
function videoPlay(s) {
|
|
745
|
+
var n = s.video;
|
|
746
|
+
if (!s.source) return;
|
|
747
|
+
if (!n.paused) {
|
|
748
|
+
n.pause();
|
|
749
|
+
return;
|
|
750
|
+
}
|
|
751
|
+
if (n.ended) n.currentTime = 0;
|
|
752
|
+
report(s, null);
|
|
753
|
+
var pending = n.play();
|
|
754
|
+
if (pending) pending.catch(function(e) {
|
|
755
|
+
if (!s.dead && e.name !== "AbortError") report(s, Error("Playback could not start. Check the video source and try again."));
|
|
756
|
+
});
|
|
757
|
+
}
|
|
758
|
+
function videoSeek(s, time) {
|
|
759
|
+
var n = s.video;
|
|
760
|
+
if (Number.isFinite(n.duration) && n.duration > 0) {
|
|
761
|
+
videoActivitySample(s);
|
|
762
|
+
n.currentTime = Math.max(0, Math.min(n.duration, time));
|
|
763
|
+
videoControlsState(s);
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
function videoFullscreen(s) {
|
|
767
|
+
var n = s.video, frame = s.videoFrame, promise;
|
|
768
|
+
try {
|
|
769
|
+
if (document.fullscreenElement === frame) promise = document.exitFullscreen();
|
|
770
|
+
else if (frame.requestFullscreen && document.fullscreenEnabled) promise = frame.requestFullscreen();
|
|
771
|
+
else if (n.webkitEnterFullscreen) n.webkitEnterFullscreen();
|
|
772
|
+
if (promise) promise.catch(function() {
|
|
773
|
+
if (!s.dead) report(s, Error("Fullscreen is unavailable in this browser or embedded page."));
|
|
774
|
+
});
|
|
775
|
+
} catch (e) {
|
|
776
|
+
report(s, e);
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
function videoControlsState(s) {
|
|
780
|
+
if (s.dead || !s.videoControls) return;
|
|
781
|
+
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";
|
|
782
|
+
s.pauseGlass.hidden = playing || s.options.ShowPauseGlass === false;
|
|
783
|
+
if (s.playLabel !== label) {
|
|
784
|
+
s.playLabel = label;
|
|
785
|
+
attr(s.playButton, "aria-label", label);
|
|
786
|
+
s.playButton.title = label;
|
|
787
|
+
s.playButton.replaceChildren(videoIcon(playing ? "pause" : "play"));
|
|
788
|
+
attr(s.bigPlay, "aria-label", label);
|
|
789
|
+
s.bigPlay.title = label;
|
|
790
|
+
}
|
|
791
|
+
var moveFocus = document.activeElement === s.bigPlay;
|
|
792
|
+
s.bigPlay.hidden = playing || !!n.error || !s.source;
|
|
793
|
+
s.playButton.disabled = !s.source || !!n.error;
|
|
794
|
+
if (moveFocus && s.bigPlay.hidden && !s.playButton.disabled) s.playButton.focus();
|
|
795
|
+
s.timeline.disabled = !ready;
|
|
796
|
+
s.timeline.max = String(ready ? n.duration : 1);
|
|
797
|
+
s.timeline.value = String(ready ? n.currentTime : 0);
|
|
798
|
+
attr(s.timeline, "aria-valuetext", videoTime(n.currentTime) + " of " + videoTime(n.duration));
|
|
799
|
+
s.timeline.style.setProperty("--blu-video-progress", (ready ? n.currentTime / n.duration * 100 : 0) + "%");
|
|
800
|
+
s.time.textContent = videoTime(n.currentTime) + " / " + (n.duration === Infinity ? "Live" : videoTime(n.duration));
|
|
801
|
+
var muted = n.muted || n.volume === 0, volumeLabel = muted ? "Unmute video" : "Mute video";
|
|
802
|
+
if (s.volumeLabel !== volumeLabel) {
|
|
803
|
+
s.volumeLabel = volumeLabel;
|
|
804
|
+
attr(s.muteButton, "aria-label", volumeLabel);
|
|
805
|
+
s.muteButton.title = volumeLabel;
|
|
806
|
+
s.muteButton.replaceChildren(videoIcon(muted ? "muted" : "volume"));
|
|
807
|
+
}
|
|
808
|
+
s.volume.value = String(muted ? 0 : n.volume);
|
|
809
|
+
attr(s.volume, "aria-valuetext", Math.round((muted ? 0 : n.volume) * 100) + "%");
|
|
810
|
+
s.volume.style.setProperty("--blu-video-progress", (muted ? 0 : n.volume * 100) + "%");
|
|
811
|
+
var track = n.textTracks[0], hasCaptions = !!s.options.CaptionsUrl;
|
|
812
|
+
s.captionsButton.hidden = !hasCaptions;
|
|
813
|
+
s.captionsButton.disabled = !track || s.captionFailed;
|
|
814
|
+
attr(s.captionsButton, "aria-pressed", !!track && track.mode === "showing");
|
|
815
|
+
var full = document.fullscreenElement === s.videoFrame;
|
|
816
|
+
attr(s.fullButton, "aria-label", full ? "Exit fullscreen" : "Enter fullscreen");
|
|
817
|
+
s.fullButton.title = full ? "Exit fullscreen" : "Enter fullscreen";
|
|
818
|
+
s.pipButton.hidden = !videoPictureInPictureAvailable(s);
|
|
819
|
+
s.pipButton.disabled = !!s.pipPending || n.readyState < 2;
|
|
820
|
+
var pip = document.pictureInPictureElement === n;
|
|
821
|
+
attr(s.pipButton, "aria-pressed", pip);
|
|
822
|
+
attr(s.pipButton, "aria-label", pip ? "Exit picture-in-picture" : "Picture-in-picture");
|
|
823
|
+
s.pipButton.title = pip ? "Exit picture-in-picture" : "Picture-in-picture";
|
|
824
|
+
videoHeatmap(s);
|
|
825
|
+
s.speedButton.textContent = n.playbackRate + "\xD7";
|
|
826
|
+
s.speedChoices.forEach(function(b) {
|
|
827
|
+
attr(b, "aria-pressed", Number(b.dataset.rate) === n.playbackRate);
|
|
828
|
+
});
|
|
829
|
+
}
|
|
830
|
+
function videoControls(s, parent) {
|
|
831
|
+
var n = s.video;
|
|
832
|
+
s.videoFrame = attr(el2("div", "blu-rich blu-video-player blu-video-player__frame"), "role", "group");
|
|
833
|
+
s.videoFrame.tabIndex = 0;
|
|
834
|
+
s.videoFrame.id = s.uid + "-player";
|
|
835
|
+
(parent || s.body).append(s.videoFrame);
|
|
836
|
+
s.stage = el2("div", "blu-video-player__stage");
|
|
837
|
+
s.videoFrame.append(s.stage);
|
|
838
|
+
s.stage.append(n);
|
|
839
|
+
s.pauseGlass = attr(el2("div", "blu-video-player__pause-glass"), "aria-hidden", "true");
|
|
840
|
+
s.stage.append(s.pauseGlass);
|
|
841
|
+
s.titleNode = el2("div", "blu-video-player__title");
|
|
842
|
+
s.stage.append(s.titleNode);
|
|
843
|
+
s.bigPlay = videoButton(s, "Play video", "play", function() {
|
|
844
|
+
videoPlay(s);
|
|
845
|
+
}, "blu-video-player__big-play");
|
|
846
|
+
s.stage.append(s.bigPlay);
|
|
847
|
+
s.videoStatus = attr(el2("span", "blu-video-player__status"), "role", "status");
|
|
848
|
+
s.videoStatus.hidden = true;
|
|
849
|
+
s.stage.append(s.videoStatus);
|
|
850
|
+
s.videoControls = el2("div", "blu-video-player__controls");
|
|
851
|
+
s.videoFrame.append(s.videoControls);
|
|
852
|
+
s.timeline = attr(el2("input", "blu-video-player__range blu-video-player__timeline"), "aria-label", "Video position");
|
|
853
|
+
s.timeline.type = "range";
|
|
854
|
+
s.timeline.min = 0;
|
|
855
|
+
s.timeline.max = 1;
|
|
856
|
+
s.timeline.step = 0.1;
|
|
857
|
+
s.timeline.value = 0;
|
|
858
|
+
s.timeline.disabled = true;
|
|
859
|
+
s.seekWrap = el2("div", "blu-video-player__seek");
|
|
860
|
+
s.videoControls.append(s.seekWrap);
|
|
861
|
+
s.heatmap = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
862
|
+
attr(s.heatmap, "class", "blu-video-player__heatmap");
|
|
863
|
+
attr(s.heatmap, "viewBox", "0 0 1000 44");
|
|
864
|
+
attr(s.heatmap, "preserveAspectRatio", "none");
|
|
865
|
+
attr(s.heatmap, "aria-hidden", "true");
|
|
866
|
+
s.heatmap.style.display = "none";
|
|
867
|
+
s.heatmapPath = document.createElementNS(s.heatmap.namespaceURI, "path");
|
|
868
|
+
s.heatmap.append(s.heatmapPath);
|
|
869
|
+
s.seekHint = el2("span", "blu-video-player__seek-hint");
|
|
870
|
+
attr(s.seekHint, "aria-hidden", "true");
|
|
871
|
+
s.seekHint.hidden = true;
|
|
872
|
+
s.heatmapDescription = el2("span", "blu-video-player__sr");
|
|
873
|
+
s.heatmapDescription.id = s.uid + "-viewing-description";
|
|
874
|
+
s.seekWrap.append(s.heatmap, s.seekHint, s.heatmapDescription, s.timeline);
|
|
875
|
+
on(s, s.seekWrap, "pointermove", function(e) {
|
|
876
|
+
var r = s.timeline.getBoundingClientRect();
|
|
877
|
+
videoHeatmapHint(s, (e.clientX - r.left) / r.width * n.duration);
|
|
878
|
+
});
|
|
879
|
+
on(s, s.timeline, "focus", function() {
|
|
880
|
+
videoHeatmapHint(s, n.currentTime);
|
|
881
|
+
});
|
|
882
|
+
on(s, s.timeline, "input", function() {
|
|
883
|
+
videoHeatmapHint(s, Number(s.timeline.value));
|
|
884
|
+
});
|
|
885
|
+
var row = el2("div", "blu-video-player__row");
|
|
886
|
+
s.videoControls.append(row);
|
|
887
|
+
s.playButton = videoButton(s, "Play video", "play", function() {
|
|
888
|
+
videoPlay(s);
|
|
889
|
+
}, "blu-video-player__primary");
|
|
890
|
+
s.muteButton = videoButton(s, "Mute video", "volume", function() {
|
|
891
|
+
var wasMuted = n.muted || n.volume === 0;
|
|
892
|
+
if (n.volume === 0) n.volume = s.lastVolume || 1;
|
|
893
|
+
else s.lastVolume = n.volume;
|
|
894
|
+
n.muted = !wasMuted;
|
|
895
|
+
});
|
|
896
|
+
s.volume = attr(el2("input", "blu-video-player__range blu-video-player__volume"), "aria-label", "Volume");
|
|
897
|
+
s.volume.type = "range";
|
|
898
|
+
s.volume.min = 0;
|
|
899
|
+
s.volume.max = 1;
|
|
900
|
+
s.volume.step = 0.05;
|
|
901
|
+
s.volume.value = 1;
|
|
902
|
+
s.time = el2("span", "blu-video-player__time", "0:00 / 0:00");
|
|
903
|
+
attr(s.time, "aria-live", "off");
|
|
904
|
+
var spacer = el2("span", "blu-video-player__spacer");
|
|
905
|
+
s.captionsButton = videoButton(s, "Captions", "captions", function() {
|
|
906
|
+
var t = n.textTracks[0];
|
|
907
|
+
if (t) t.mode = t.mode === "showing" ? "hidden" : "showing";
|
|
908
|
+
videoControlsState(s);
|
|
909
|
+
});
|
|
910
|
+
attr(s.captionsButton, "aria-pressed", "false");
|
|
911
|
+
s.speedWrap = el2("div", "blu-video-player__speed");
|
|
912
|
+
s.speedButton = videoButton(s, "Playback speed", null, function() {
|
|
913
|
+
s.speedPanel.hidden = !s.speedPanel.hidden;
|
|
914
|
+
attr(s.speedButton, "aria-expanded", !s.speedPanel.hidden);
|
|
915
|
+
});
|
|
916
|
+
attr(s.speedButton, "aria-label", "Playback speed");
|
|
917
|
+
attr(s.speedButton, "aria-expanded", "false");
|
|
918
|
+
s.speedPanel = attr(el2("div", "blu-video-player__speed-panel"), "role", "group");
|
|
919
|
+
s.speedPanel.id = s.uid + "-speed";
|
|
920
|
+
attr(s.speedPanel, "aria-label", "Playback speed");
|
|
921
|
+
attr(s.speedButton, "aria-controls", s.speedPanel.id);
|
|
922
|
+
s.speedPanel.hidden = true;
|
|
923
|
+
s.speedPanel.append(el2("span", "blu-video-player__speed-label", "Playback speed"));
|
|
924
|
+
s.speedChoices = [0.5, 0.75, 1, 1.25, 1.5, 2].map(function(rate) {
|
|
925
|
+
var b = videoButton(s, rate === 1 ? "Normal" : rate + "\xD7", null, function() {
|
|
926
|
+
n.playbackRate = rate;
|
|
927
|
+
s.speedPanel.hidden = true;
|
|
928
|
+
attr(s.speedButton, "aria-expanded", "false");
|
|
929
|
+
s.speedButton.focus();
|
|
930
|
+
videoControlsState(s);
|
|
931
|
+
});
|
|
932
|
+
b.dataset.rate = rate;
|
|
933
|
+
s.speedPanel.append(b);
|
|
934
|
+
return b;
|
|
935
|
+
});
|
|
936
|
+
s.speedWrap.append(s.speedButton, s.speedPanel);
|
|
937
|
+
s.fullButton = videoButton(s, "Enter fullscreen", "fullscreen", function() {
|
|
938
|
+
videoFullscreen(s);
|
|
939
|
+
});
|
|
940
|
+
s.fullButton.hidden = !(document.fullscreenEnabled && s.videoFrame.requestFullscreen) && !n.webkitEnterFullscreen;
|
|
941
|
+
s.pipButton = videoButton(s, "Picture-in-picture", "pip", function() {
|
|
942
|
+
videoPictureInPicture(s);
|
|
943
|
+
});
|
|
944
|
+
row.append(s.playButton, s.muteButton, s.volume, s.time, spacer, s.captionsButton, s.speedWrap, s.pipButton, s.fullButton);
|
|
945
|
+
s.pipNotice = el2("div", "blu-video-player__notice");
|
|
946
|
+
s.pipNotice.hidden = true;
|
|
947
|
+
var noticeIcon = el2("span", "blu-video-player__notice-icon");
|
|
948
|
+
noticeIcon.append(videoIcon("pip"));
|
|
949
|
+
var noticeCopy = attr(el2("div", "blu-video-player__notice-copy"), "role", "status");
|
|
950
|
+
attr(noticeCopy, "aria-atomic", "true");
|
|
951
|
+
s.pipNoticeTitle = el2("strong");
|
|
952
|
+
s.pipNoticeText = el2("p");
|
|
953
|
+
noticeCopy.append(s.pipNoticeTitle, s.pipNoticeText);
|
|
954
|
+
var dismiss = videoButton(s, "Dismiss picture-in-picture message", null, function() {
|
|
955
|
+
videoClearPictureInPictureNotice(s);
|
|
956
|
+
s.pipButton.focus();
|
|
957
|
+
}, "blu-video-player__notice-dismiss");
|
|
958
|
+
dismiss.textContent = "\xD7";
|
|
959
|
+
s.pipNotice.append(noticeIcon, noticeCopy, dismiss);
|
|
960
|
+
s.videoFrame.append(s.pipNotice);
|
|
961
|
+
n.controls = false;
|
|
962
|
+
n.preload = s.kind === "VideoLightbox" ? "none" : "metadata";
|
|
963
|
+
attr(n, "tabindex", "-1");
|
|
964
|
+
on(s, s.timeline, "input", function() {
|
|
965
|
+
videoSeek(s, Number(s.timeline.value));
|
|
966
|
+
});
|
|
967
|
+
on(s, s.volume, "input", function() {
|
|
968
|
+
n.volume = Number(s.volume.value);
|
|
969
|
+
n.muted = n.volume === 0;
|
|
970
|
+
});
|
|
971
|
+
on(s, n, "click", function() {
|
|
972
|
+
videoPlay(s);
|
|
973
|
+
});
|
|
974
|
+
["play", "pause", "ended", "timeupdate", "durationchange", "loadedmetadata", "loadeddata", "enterpictureinpicture", "leavepictureinpicture", "volumechange", "ratechange", "emptied", "error"].forEach(function(e) {
|
|
975
|
+
on(s, n, e, function() {
|
|
976
|
+
videoControlsState(s);
|
|
977
|
+
});
|
|
978
|
+
});
|
|
979
|
+
["waiting", "seeking", "loadstart"].forEach(function(e) {
|
|
980
|
+
on(s, n, e, function() {
|
|
981
|
+
s.videoStatus.textContent = "Loading video\u2026";
|
|
982
|
+
s.videoStatus.hidden = !s.source;
|
|
983
|
+
});
|
|
984
|
+
});
|
|
985
|
+
["playing", "canplay", "seeked", "pause", "error", "emptied"].forEach(function(e) {
|
|
986
|
+
on(s, n, e, function() {
|
|
987
|
+
s.videoStatus.hidden = true;
|
|
988
|
+
});
|
|
989
|
+
});
|
|
990
|
+
on(s, n.textTracks, "change", function() {
|
|
991
|
+
videoControlsState(s);
|
|
992
|
+
});
|
|
993
|
+
on(s, n.textTracks, "addtrack", function() {
|
|
994
|
+
videoControlsState(s);
|
|
995
|
+
});
|
|
996
|
+
on(s, document, "fullscreenchange", function() {
|
|
997
|
+
videoControlsState(s);
|
|
998
|
+
});
|
|
999
|
+
on(s, document, "pointerdown", function(e) {
|
|
1000
|
+
if (!s.speedWrap.contains(e.target)) {
|
|
1001
|
+
s.speedPanel.hidden = true;
|
|
1002
|
+
attr(s.speedButton, "aria-expanded", "false");
|
|
1003
|
+
}
|
|
1004
|
+
});
|
|
1005
|
+
on(s, s.speedWrap, "focusout", function(e) {
|
|
1006
|
+
if (!s.speedWrap.contains(e.relatedTarget)) {
|
|
1007
|
+
s.speedPanel.hidden = true;
|
|
1008
|
+
attr(s.speedButton, "aria-expanded", "false");
|
|
1009
|
+
}
|
|
1010
|
+
});
|
|
1011
|
+
on(s, s.videoFrame, "keydown", function(e) {
|
|
1012
|
+
if (e.key === "Escape" && !s.speedPanel.hidden) {
|
|
1013
|
+
e.preventDefault();
|
|
1014
|
+
e.stopPropagation();
|
|
1015
|
+
s.speedPanel.hidden = true;
|
|
1016
|
+
attr(s.speedButton, "aria-expanded", "false");
|
|
1017
|
+
s.speedButton.focus();
|
|
1018
|
+
return;
|
|
1019
|
+
}
|
|
1020
|
+
if (e.target !== s.videoFrame || e.altKey || e.ctrlKey || e.metaKey) return;
|
|
1021
|
+
if (e.key === " " || e.key === "k") {
|
|
1022
|
+
e.preventDefault();
|
|
1023
|
+
videoPlay(s);
|
|
1024
|
+
} else if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
|
|
1025
|
+
e.preventDefault();
|
|
1026
|
+
videoSeek(s, n.currentTime + (e.key === "ArrowLeft" ? -5 : 5));
|
|
1027
|
+
} else if (e.key === "m") {
|
|
1028
|
+
e.preventDefault();
|
|
1029
|
+
n.muted = !n.muted;
|
|
1030
|
+
} else if (e.key === "f") {
|
|
1031
|
+
e.preventDefault();
|
|
1032
|
+
videoFullscreen(s);
|
|
1033
|
+
}
|
|
1034
|
+
});
|
|
1035
|
+
attr(s.videoFrame, "aria-keyshortcuts", "Space k ArrowLeft ArrowRight m f");
|
|
1036
|
+
}
|
|
1037
|
+
function videoControlTheme(s) {
|
|
1038
|
+
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);
|
|
1039
|
+
if (!theme && !hex) throw Error("ControlColor must be a ComponentColor name or a #RGB/#RRGGBB color.");
|
|
1040
|
+
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))";
|
|
1041
|
+
if (hex) {
|
|
1042
|
+
var digits = value.slice(1);
|
|
1043
|
+
if (digits.length === 3) digits = digits.split("").map(function(c) {
|
|
1044
|
+
return c + c;
|
|
1045
|
+
}).join("");
|
|
1046
|
+
var rgb = [0, 2, 4].map(function(i) {
|
|
1047
|
+
var c = parseInt(digits.slice(i, i + 2), 16) / 255;
|
|
1048
|
+
return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
|
|
1049
|
+
});
|
|
1050
|
+
contrast = 0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2] > 0.179 ? "#000" : "#fff";
|
|
1051
|
+
}
|
|
1052
|
+
[s.root, s.videoFrame, s.player].forEach(function(n) {
|
|
1053
|
+
if (!n) return;
|
|
1054
|
+
n.style.setProperty("--blu-video-accent", accent);
|
|
1055
|
+
n.style.setProperty("--blu-video-control-text", text);
|
|
1056
|
+
n.style.setProperty("--blu-video-contrast", contrast);
|
|
1057
|
+
n.style.setProperty("--blu-video-soft", soft);
|
|
1058
|
+
});
|
|
1059
|
+
}
|
|
1060
|
+
function videoPlayerOptions(s) {
|
|
1061
|
+
videoControlTheme(s);
|
|
1062
|
+
var raw = s.options.ViewingHeatmapJson || "[]";
|
|
1063
|
+
if (raw !== s.heatmapRaw) {
|
|
1064
|
+
s.heatmapRows = videoHeatmapRows(raw);
|
|
1065
|
+
s.heatmapRaw = raw;
|
|
1066
|
+
}
|
|
1067
|
+
videoOptions(s);
|
|
1068
|
+
s.titleNode.textContent = s.options.Title || "";
|
|
1069
|
+
s.titleNode.hidden = !s.options.Title;
|
|
1070
|
+
attr(s.videoFrame, "aria-label", s.options.Title || "Video player");
|
|
1071
|
+
attr(s.videoFrame, "data-rounded", !!s.options.IsRounded);
|
|
1072
|
+
videoControlsState(s);
|
|
1073
|
+
}
|
|
1074
|
+
function openVideo(s) {
|
|
1075
|
+
s.isVideoOpen = true;
|
|
1076
|
+
s.video.preload = "metadata";
|
|
1077
|
+
modal(s, s.options.Title || "Video", s.player);
|
|
1078
|
+
}
|
|
1079
|
+
function installVideoLightbox() {
|
|
1080
|
+
installModal();
|
|
1081
|
+
return register2("VideoLightbox", () => define("VideoLightbox", "video-lightbox", function(s) {
|
|
1082
|
+
s.trigger = button("Watch the film", function() {
|
|
1083
|
+
s.options.IsOpen = true;
|
|
1084
|
+
openVideo(s);
|
|
1085
|
+
emit2(s, "OpenChanged", true);
|
|
1086
|
+
}, "blu-video-lightbox__trigger");
|
|
1087
|
+
s.poster = image("", "", false);
|
|
1088
|
+
s.play = el2("span", "blu-video-lightbox__play", "\u25B6");
|
|
1089
|
+
attr(s.play, "aria-hidden", "true");
|
|
1090
|
+
s.label = el2("span");
|
|
1091
|
+
s.trigger.replaceChildren(s.poster, s.play, s.label);
|
|
1092
|
+
s.body.append(s.trigger);
|
|
1093
|
+
s.player = el2("div");
|
|
1094
|
+
video(s, s.player);
|
|
1095
|
+
videoControls(s, s.player);
|
|
1096
|
+
s.dismiss = button("Close video", function() {
|
|
1097
|
+
s.options.IsOpen = false;
|
|
1098
|
+
closeModal(s);
|
|
1099
|
+
emit2(s, "OpenChanged", false);
|
|
1100
|
+
}, "blu-video-lightbox__dismiss");
|
|
1101
|
+
s.player.append(s.dismiss);
|
|
1102
|
+
}, function(s) {
|
|
1103
|
+
var o = s.options;
|
|
1104
|
+
videoPlayerOptions(s);
|
|
1105
|
+
attr(s.trigger, "data-rounded", !!o.IsRounded);
|
|
1106
|
+
s.poster.hidden = o.ShowPoster === false || !o.PosterUrl;
|
|
1107
|
+
if (o.PosterUrl) s.poster.src = url(o.PosterUrl);
|
|
1108
|
+
s.label.textContent = o.PlayLabel || "Watch the film";
|
|
1109
|
+
attr(s.trigger, "aria-haspopup", "dialog");
|
|
1110
|
+
s.trigger.style.aspectRatio = o.ShowPoster === false ? "auto" : ratio(o.AspectRatio || "16 / 9");
|
|
1111
|
+
if (o.IsOpen) openVideo(s);
|
|
1112
|
+
else closeModal(s);
|
|
1113
|
+
}));
|
|
1114
|
+
}
|
|
1115
|
+
export {
|
|
1116
|
+
installVideoLightbox
|
|
1117
|
+
};
|