@rosettadash/web-components 0.1.1 → 0.1.3
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/browser/media.js +461 -39
- package/browser/media.js.map +3 -3
- package/package.json +332 -36
- package/src/domain/i18n/app-language-select/index.d.ts +3 -0
- package/src/domain/i18n/app-language-select/index.js +3 -0
- package/src/domain/i18n/app-language-select/index.js.map +1 -0
- package/src/domain/i18n/app-language-select/parse-locale-options.d.ts +7 -0
- package/src/domain/i18n/app-language-select/parse-locale-options.js +39 -0
- package/src/domain/i18n/app-language-select/parse-locale-options.js.map +1 -0
- package/src/domain/i18n/app-language-select/rd-app-language-select.d.ts +38 -0
- package/src/domain/i18n/app-language-select/rd-app-language-select.js +138 -0
- package/src/domain/i18n/app-language-select/rd-app-language-select.js.map +1 -0
- package/src/domain/i18n/index.d.ts +2 -0
- package/src/domain/i18n/index.js +6 -0
- package/src/domain/i18n/index.js.map +1 -0
- package/src/domain/index.d.ts +6 -0
- package/src/domain/index.js +18 -0
- package/src/domain/index.js.map +1 -0
- package/src/domain/person-invite/index.d.ts +2 -0
- package/src/domain/person-invite/index.js +2 -0
- package/src/domain/person-invite/index.js.map +1 -0
- package/src/domain/person-invite/rd-person-invite.d.ts +17 -0
- package/src/domain/person-invite/rd-person-invite.js +33 -0
- package/src/domain/person-invite/rd-person-invite.js.map +1 -0
- package/src/domain/role-assign/index.d.ts +2 -0
- package/src/domain/role-assign/index.js +2 -0
- package/src/domain/role-assign/index.js.map +1 -0
- package/src/domain/role-assign/rd-role-assign.d.ts +21 -0
- package/src/domain/role-assign/rd-role-assign.js +36 -0
- package/src/domain/role-assign/rd-role-assign.js.map +1 -0
- package/src/domain/role-gate/index.d.ts +2 -0
- package/src/domain/role-gate/index.js +2 -0
- package/src/domain/role-gate/index.js.map +1 -0
- package/src/domain/role-gate/rd-role-gate.d.ts +19 -0
- package/src/domain/role-gate/rd-role-gate.js +31 -0
- package/src/domain/role-gate/rd-role-gate.js.map +1 -0
- package/src/domain/time-preset/index.d.ts +2 -0
- package/src/domain/time-preset/index.js +2 -0
- package/src/domain/time-preset/index.js.map +1 -0
- package/src/domain/time-preset/rd-time-preset.d.ts +23 -0
- package/src/domain/time-preset/rd-time-preset.js +34 -0
- package/src/domain/time-preset/rd-time-preset.js.map +1 -0
- package/src/index.d.ts +5 -5
- package/src/index.js +13 -13
- package/src/index.js.map +1 -1
- package/src/layout/collapsible/index.d.ts +2 -0
- package/src/layout/collapsible/index.js +2 -0
- package/src/layout/collapsible/index.js.map +1 -0
- package/src/layout/collapsible/rd-collapsible.d.ts +21 -0
- package/src/layout/collapsible/rd-collapsible.js +50 -0
- package/src/layout/collapsible/rd-collapsible.js.map +1 -0
- package/src/layout/flex/index.d.ts +2 -0
- package/src/layout/flex/index.js +2 -0
- package/src/layout/flex/index.js.map +1 -0
- package/src/layout/flex/rd-flex-layout.d.ts +17 -0
- package/src/layout/flex/rd-flex-layout.js +24 -0
- package/src/layout/flex/rd-flex-layout.js.map +1 -0
- package/src/layout/grid/index.d.ts +2 -0
- package/src/layout/grid/index.js +2 -0
- package/src/layout/grid/index.js.map +1 -0
- package/src/layout/grid/rd-grid-layout.d.ts +17 -0
- package/src/layout/grid/rd-grid-layout.js +24 -0
- package/src/layout/grid/rd-grid-layout.js.map +1 -0
- package/src/layout/index.d.ts +9 -0
- package/src/layout/index.js +27 -0
- package/src/layout/index.js.map +1 -0
- package/src/layout/modal/index.d.ts +2 -0
- package/src/layout/modal/index.js +2 -0
- package/src/layout/modal/index.js.map +1 -0
- package/src/layout/modal/rd-modal-layout.d.ts +20 -0
- package/src/layout/modal/rd-modal-layout.js +40 -0
- package/src/layout/modal/rd-modal-layout.js.map +1 -0
- package/src/layout/scroll-region/index.d.ts +2 -0
- package/src/layout/scroll-region/index.js +2 -0
- package/src/layout/scroll-region/index.js.map +1 -0
- package/src/layout/scroll-region/rd-scroll-region.d.ts +17 -0
- package/src/layout/scroll-region/rd-scroll-region.js +26 -0
- package/src/layout/scroll-region/rd-scroll-region.js.map +1 -0
- package/src/layout/tabs/index.d.ts +2 -0
- package/src/layout/tabs/index.js +2 -0
- package/src/layout/tabs/index.js.map +1 -0
- package/src/layout/tabs/rd-tabs-layout.d.ts +23 -0
- package/src/layout/tabs/rd-tabs-layout.js +34 -0
- package/src/layout/tabs/rd-tabs-layout.js.map +1 -0
- package/src/lib/element-utils.js +3 -0
- package/src/lib/element-utils.js.map +1 -1
- package/src/lib/rosetta-atom-element.d.ts +23 -0
- package/src/lib/rosetta-atom-element.js +104 -0
- package/src/lib/rosetta-atom-element.js.map +1 -0
- package/src/lib/shadow-base.js +3 -0
- package/src/lib/shadow-base.js.map +1 -1
- package/src/lib/shadow-resources.js +7 -2
- package/src/lib/shadow-resources.js.map +1 -1
- package/src/logic/index.d.ts +2 -0
- package/src/logic/index.js +6 -0
- package/src/logic/index.js.map +1 -0
- package/src/logic/timer/index.d.ts +2 -0
- package/src/logic/timer/index.js +2 -0
- package/src/logic/timer/index.js.map +1 -0
- package/src/logic/timer/rd-timer.d.ts +18 -0
- package/src/logic/timer/rd-timer.js +24 -0
- package/src/logic/timer/rd-timer.js.map +1 -0
- package/src/visual/chart/bar/index.d.ts +2 -0
- package/src/visual/chart/bar/index.js +2 -0
- package/src/visual/chart/bar/index.js.map +1 -0
- package/src/visual/chart/bar/rd-bar-chart.d.ts +21 -0
- package/src/visual/chart/bar/rd-bar-chart.js +83 -0
- package/src/visual/chart/bar/rd-bar-chart.js.map +1 -0
- package/src/visual/chart/line/index.d.ts +2 -0
- package/src/visual/chart/line/index.js +2 -0
- package/src/visual/chart/line/index.js.map +1 -0
- package/src/visual/chart/line/rd-line-chart.d.ts +22 -0
- package/src/visual/chart/line/rd-line-chart.js +105 -0
- package/src/visual/chart/line/rd-line-chart.js.map +1 -0
- package/src/visual/chart/pie/index.d.ts +2 -0
- package/src/visual/chart/pie/index.js +2 -0
- package/src/visual/chart/pie/index.js.map +1 -0
- package/src/visual/chart/pie/rd-pie-chart.d.ts +15 -0
- package/src/visual/chart/pie/rd-pie-chart.js +23 -0
- package/src/visual/chart/pie/rd-pie-chart.js.map +1 -0
- package/src/visual/detail/index.d.ts +2 -0
- package/src/visual/detail/index.js +2 -0
- package/src/visual/detail/index.js.map +1 -0
- package/src/visual/detail/rd-detail-panel.d.ts +16 -0
- package/src/visual/detail/rd-detail-panel.js +24 -0
- package/src/visual/detail/rd-detail-panel.js.map +1 -0
- package/src/visual/display/3d-bar-chart/index.d.ts +2 -0
- package/src/visual/display/3d-bar-chart/index.js +2 -0
- package/src/visual/display/3d-bar-chart/index.js.map +1 -0
- package/src/visual/display/3d-bar-chart/rd-three-bar-chart.d.ts +16 -0
- package/src/visual/display/3d-bar-chart/rd-three-bar-chart.js +24 -0
- package/src/visual/display/3d-bar-chart/rd-three-bar-chart.js.map +1 -0
- package/src/visual/display/3d-geo-globe/globe-view.d.ts +86 -0
- package/src/visual/display/3d-geo-globe/globe-view.js +235 -0
- package/src/visual/display/3d-geo-globe/globe-view.js.map +1 -0
- package/src/visual/display/3d-geo-globe/index.d.ts +3 -0
- package/src/visual/display/3d-geo-globe/index.js +3 -0
- package/src/visual/display/3d-geo-globe/index.js.map +1 -0
- package/src/visual/display/3d-geo-globe/rd-three-geo-globe.d.ts +36 -0
- package/src/visual/display/3d-geo-globe/rd-three-geo-globe.js +330 -0
- package/src/visual/display/3d-geo-globe/rd-three-geo-globe.js.map +1 -0
- package/src/visual/display/3d-gltf-model/index.d.ts +2 -0
- package/src/visual/display/3d-gltf-model/index.js +2 -0
- package/src/visual/display/3d-gltf-model/index.js.map +1 -0
- package/src/visual/display/3d-gltf-model/rd-three-gltf-model.d.ts +16 -0
- package/src/visual/display/3d-gltf-model/rd-three-gltf-model.js +24 -0
- package/src/visual/display/3d-gltf-model/rd-three-gltf-model.js.map +1 -0
- package/src/visual/display/3d-scatter/index.d.ts +2 -0
- package/src/visual/display/3d-scatter/index.js +2 -0
- package/src/visual/display/3d-scatter/index.js.map +1 -0
- package/src/visual/display/3d-scatter/rd-three-scatter-plot.d.ts +16 -0
- package/src/visual/display/3d-scatter/rd-three-scatter-plot.js +24 -0
- package/src/visual/display/3d-scatter/rd-three-scatter-plot.js.map +1 -0
- package/src/visual/display/3d-scene/index.d.ts +2 -0
- package/src/visual/display/3d-scene/index.js +2 -0
- package/src/visual/display/3d-scene/index.js.map +1 -0
- package/src/visual/display/3d-scene/rd-three-scene-point-cloud.d.ts +16 -0
- package/src/visual/display/3d-scene/rd-three-scene-point-cloud.js +24 -0
- package/src/visual/display/3d-scene/rd-three-scene-point-cloud.js.map +1 -0
- package/src/visual/display/geo-map/geo-map-types.d.ts +32 -0
- package/src/visual/display/geo-map/geo-map-types.js +10 -0
- package/src/visual/display/geo-map/geo-map-types.js.map +1 -0
- package/src/visual/display/geo-map/index.d.ts +5 -0
- package/src/visual/display/geo-map/index.js +5 -0
- package/src/visual/display/geo-map/index.js.map +1 -0
- package/src/visual/display/geo-map/parse-center.d.ts +5 -0
- package/src/visual/display/geo-map/parse-center.js +28 -0
- package/src/visual/display/geo-map/parse-center.js.map +1 -0
- package/src/visual/display/geo-map/parse-markers.d.ts +2 -0
- package/src/visual/display/geo-map/parse-markers.js +32 -0
- package/src/visual/display/geo-map/parse-markers.js.map +1 -0
- package/src/visual/display/geo-map/providers/create-adapter.d.ts +2 -0
- package/src/visual/display/geo-map/providers/create-adapter.js +11 -0
- package/src/visual/display/geo-map/providers/create-adapter.js.map +1 -0
- package/src/visual/display/geo-map/providers/google-maps-adapter.d.ts +2 -0
- package/src/visual/display/geo-map/providers/google-maps-adapter.js +63 -0
- package/src/visual/display/geo-map/providers/google-maps-adapter.js.map +1 -0
- package/src/visual/display/geo-map/providers/leaflet-adapter.d.ts +2 -0
- package/src/visual/display/geo-map/providers/leaflet-adapter.js +78 -0
- package/src/visual/display/geo-map/providers/leaflet-adapter.js.map +1 -0
- package/src/visual/display/geo-map/providers/maplibre-adapter.d.ts +2 -0
- package/src/visual/display/geo-map/providers/maplibre-adapter.js +71 -0
- package/src/visual/display/geo-map/providers/maplibre-adapter.js.map +1 -0
- package/src/visual/display/geo-map/providers/provider-utils.d.ts +8 -0
- package/src/visual/display/geo-map/providers/provider-utils.js +28 -0
- package/src/visual/display/geo-map/providers/provider-utils.js.map +1 -0
- package/src/visual/display/geo-map/rd-geo-map.d.ts +48 -0
- package/src/visual/display/geo-map/rd-geo-map.js +219 -0
- package/src/visual/display/geo-map/rd-geo-map.js.map +1 -0
- package/src/visual/display/index.d.ts +7 -0
- package/src/visual/display/index.js +21 -0
- package/src/visual/display/index.js.map +1 -0
- package/src/visual/index.d.ts +34 -0
- package/src/visual/index.js +102 -0
- package/src/visual/index.js.map +1 -0
- package/src/visual/input/checkbox/index.d.ts +2 -0
- package/src/visual/input/checkbox/index.js +2 -0
- package/src/visual/input/checkbox/index.js.map +1 -0
- package/src/visual/input/checkbox/rd-checkbox-input.d.ts +19 -0
- package/src/visual/input/checkbox/rd-checkbox-input.js +32 -0
- package/src/visual/input/checkbox/rd-checkbox-input.js.map +1 -0
- package/src/visual/input/date-range/index.d.ts +2 -0
- package/src/visual/input/date-range/index.js +2 -0
- package/src/visual/input/date-range/index.js.map +1 -0
- package/src/visual/input/date-range/rd-date-range-filter.d.ts +24 -0
- package/src/visual/input/date-range/rd-date-range-filter.js +42 -0
- package/src/visual/input/date-range/rd-date-range-filter.js.map +1 -0
- package/src/visual/input/number/index.d.ts +2 -0
- package/src/visual/input/number/index.js +2 -0
- package/src/visual/input/number/index.js.map +1 -0
- package/src/visual/input/number/rd-number-input.d.ts +22 -0
- package/src/visual/input/number/rd-number-input.js +36 -0
- package/src/visual/input/number/rd-number-input.js.map +1 -0
- package/src/visual/input/select/index.d.ts +2 -0
- package/src/visual/input/select/index.js +2 -0
- package/src/visual/input/select/index.js.map +1 -0
- package/src/visual/input/select/rd-select-input.d.ts +24 -0
- package/src/visual/input/select/rd-select-input.js +37 -0
- package/src/visual/input/select/rd-select-input.js.map +1 -0
- package/src/visual/input/text/index.d.ts +2 -0
- package/src/visual/input/text/index.js +2 -0
- package/src/visual/input/text/index.js.map +1 -0
- package/src/visual/input/text/rd-text-input.d.ts +21 -0
- package/src/visual/input/text/rd-text-input.js +35 -0
- package/src/visual/input/text/rd-text-input.js.map +1 -0
- package/src/visual/input/textarea/index.d.ts +2 -0
- package/src/visual/input/textarea/index.js +2 -0
- package/src/visual/input/textarea/index.js.map +1 -0
- package/src/visual/input/textarea/rd-textarea-input.d.ts +20 -0
- package/src/visual/input/textarea/rd-textarea-input.js +34 -0
- package/src/visual/input/textarea/rd-textarea-input.js.map +1 -0
- package/src/visual/kpi/index.d.ts +2 -0
- package/src/visual/kpi/index.js +2 -0
- package/src/visual/kpi/index.js.map +1 -0
- package/src/visual/kpi/rd-kpi-card.d.ts +18 -0
- package/src/visual/kpi/rd-kpi-card.js +26 -0
- package/src/visual/kpi/rd-kpi-card.js.map +1 -0
- package/src/visual/media/index.d.ts +2 -0
- package/src/visual/media/index.js +6 -0
- package/src/visual/media/index.js.map +1 -1
- package/src/visual/media/live-capture/index.d.ts +2 -0
- package/src/visual/media/live-capture/index.js +2 -0
- package/src/visual/media/live-capture/index.js.map +1 -0
- package/src/visual/media/live-capture/rd-live-capture.d.ts +16 -0
- package/src/visual/media/live-capture/rd-live-capture.js +23 -0
- package/src/visual/media/live-capture/rd-live-capture.js.map +1 -0
- package/src/visual/media/video-source/rd-video-source.d.ts +5 -0
- package/src/visual/media/video-source/rd-video-source.js +101 -18
- package/src/visual/media/video-source/rd-video-source.js.map +1 -1
- package/src/visual/media/youtube-embed/index.d.ts +3 -0
- package/src/visual/media/youtube-embed/index.js +3 -0
- package/src/visual/media/youtube-embed/index.js.map +1 -0
- package/src/visual/media/youtube-embed/parse-youtube-id.d.ts +10 -0
- package/src/visual/media/youtube-embed/parse-youtube-id.js +56 -0
- package/src/visual/media/youtube-embed/parse-youtube-id.js.map +1 -0
- package/src/visual/media/youtube-embed/rd-youtube-embed.d.ts +35 -0
- package/src/visual/media/youtube-embed/rd-youtube-embed.js +121 -0
- package/src/visual/media/youtube-embed/rd-youtube-embed.js.map +1 -0
- package/src/visual/news/article-detail/index.d.ts +2 -0
- package/src/visual/news/article-detail/index.js +2 -0
- package/src/visual/news/article-detail/index.js.map +1 -0
- package/src/visual/news/article-detail/rd-news-article-detail.d.ts +16 -0
- package/src/visual/news/article-detail/rd-news-article-detail.js +24 -0
- package/src/visual/news/article-detail/rd-news-article-detail.js.map +1 -0
- package/src/visual/news/language-select/index.d.ts +2 -0
- package/src/visual/news/language-select/index.js +2 -0
- package/src/visual/news/language-select/index.js.map +1 -0
- package/src/visual/news/language-select/rd-news-language-select.d.ts +23 -0
- package/src/visual/news/language-select/rd-news-language-select.js +37 -0
- package/src/visual/news/language-select/rd-news-language-select.js.map +1 -0
- package/src/visual/news/region-select/index.d.ts +2 -0
- package/src/visual/news/region-select/index.js +2 -0
- package/src/visual/news/region-select/index.js.map +1 -0
- package/src/visual/news/region-select/rd-news-region-select.d.ts +23 -0
- package/src/visual/news/region-select/rd-news-region-select.js +37 -0
- package/src/visual/news/region-select/rd-news-region-select.js.map +1 -0
- package/src/visual/news/results-table/index.d.ts +2 -0
- package/src/visual/news/results-table/index.js +2 -0
- package/src/visual/news/results-table/index.js.map +1 -0
- package/src/visual/news/results-table/rd-news-results-table.d.ts +16 -0
- package/src/visual/news/results-table/rd-news-results-table.js +33 -0
- package/src/visual/news/results-table/rd-news-results-table.js.map +1 -0
- package/src/visual/news/search-box/index.d.ts +2 -0
- package/src/visual/news/search-box/index.js +2 -0
- package/src/visual/news/search-box/index.js.map +1 -0
- package/src/visual/news/search-box/rd-news-search-box.d.ts +19 -0
- package/src/visual/news/search-box/rd-news-search-box.js +42 -0
- package/src/visual/news/search-box/rd-news-search-box.js.map +1 -0
- package/src/visual/news/type-select/index.d.ts +2 -0
- package/src/visual/news/type-select/index.js +2 -0
- package/src/visual/news/type-select/index.js.map +1 -0
- package/src/visual/news/type-select/rd-news-type-select.d.ts +23 -0
- package/src/visual/news/type-select/rd-news-type-select.js +37 -0
- package/src/visual/news/type-select/rd-news-type-select.js.map +1 -0
- package/src/visual/plugin/metric-chip/index.d.ts +2 -0
- package/src/visual/plugin/metric-chip/index.js +2 -0
- package/src/visual/plugin/metric-chip/index.js.map +1 -0
- package/src/visual/plugin/metric-chip/rd-metric-chip.d.ts +16 -0
- package/src/visual/plugin/metric-chip/rd-metric-chip.js +23 -0
- package/src/visual/plugin/metric-chip/rd-metric-chip.js.map +1 -0
- package/src/visual/plugin/status-badge/index.d.ts +2 -0
- package/src/visual/plugin/status-badge/index.js +2 -0
- package/src/visual/plugin/status-badge/index.js.map +1 -0
- package/src/visual/plugin/status-badge/rd-status-badge.d.ts +16 -0
- package/src/visual/plugin/status-badge/rd-status-badge.js +19 -0
- package/src/visual/plugin/status-badge/rd-status-badge.js.map +1 -0
- package/src/visual/skeleton/index.d.ts +2 -0
- package/src/visual/skeleton/index.js +2 -0
- package/src/visual/skeleton/index.js.map +1 -0
- package/src/visual/skeleton/rd-loading-skeleton.d.ts +15 -0
- package/src/visual/skeleton/rd-loading-skeleton.js +20 -0
- package/src/visual/skeleton/rd-loading-skeleton.js.map +1 -0
- package/src/visual/svg/icon/index.d.ts +2 -0
- package/src/visual/svg/icon/index.js +2 -0
- package/src/visual/svg/icon/index.js.map +1 -0
- package/src/visual/svg/icon/rd-svg-icon.d.ts +18 -0
- package/src/visual/svg/icon/rd-svg-icon.js +20 -0
- package/src/visual/svg/icon/rd-svg-icon.js.map +1 -0
- package/src/visual/svg/inline/index.d.ts +2 -0
- package/src/visual/svg/inline/index.js +2 -0
- package/src/visual/svg/inline/index.js.map +1 -0
- package/src/visual/svg/inline/rd-svg-inline.d.ts +17 -0
- package/src/visual/svg/inline/rd-svg-inline.js +20 -0
- package/src/visual/svg/inline/rd-svg-inline.js.map +1 -0
- package/src/visual/table/index.d.ts +2 -0
- package/src/visual/table/index.js +2 -0
- package/src/visual/table/index.js.map +1 -0
- package/src/visual/table/rd-data-table.d.ts +26 -0
- package/src/visual/table/rd-data-table.js +46 -0
- package/src/visual/table/rd-data-table.js.map +1 -0
- package/src/visual/wasm/media/index.d.ts +1 -0
- package/src/visual/wasm/media/index.js +2 -0
- package/src/visual/wasm/media/index.js.map +1 -0
- package/src/visual/wasm/module/index.d.ts +2 -0
- package/src/visual/wasm/module/index.js +2 -0
- package/src/visual/wasm/module/index.js.map +1 -0
- package/src/visual/wasm/module/rd-wasm-module.d.ts +16 -0
- package/src/visual/wasm/module/rd-wasm-module.js +24 -0
- package/src/visual/wasm/module/rd-wasm-module.js.map +1 -0
- package/src/visual/wasm/worker-host/index.d.ts +2 -0
- package/src/visual/wasm/worker-host/index.js +2 -0
- package/src/visual/wasm/worker-host/index.js.map +1 -0
- package/src/visual/wasm/worker-host/rd-wasm-worker-host.d.ts +16 -0
- package/src/visual/wasm/worker-host/rd-wasm-worker-host.js +24 -0
- package/src/visual/wasm/worker-host/rd-wasm-worker-host.js.map +1 -0
- package/src/wasm/wasm-media/rd-wasm-media.d.ts +10 -0
- package/src/wasm/wasm-media/rd-wasm-media.js +182 -41
- package/src/wasm/wasm-media/rd-wasm-media.js.map +1 -1
- package/styles/runtime.css +1609 -0
- package/styles/styles.css +1 -0
- package/styles/tokens.css +9 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { defineRosettaElement } from '../../../lib/element-utils.js';
|
|
2
|
+
import { RosettaAtomElement } from '../../../lib/rosetta-atom-element.js';
|
|
3
|
+
export const RD_TEXTAREA_INPUT_TAG = 'rd-textarea-input';
|
|
4
|
+
/** @rosettadash/web-components/visual/input/textarea — visual.input.textarea */
|
|
5
|
+
export class RdTextareaInputElement extends RosettaAtomElement {
|
|
6
|
+
static tagName = RD_TEXTAREA_INPUT_TAG;
|
|
7
|
+
static get observedAttributes() {
|
|
8
|
+
return ["label", "placeholder", "rows", "value"];
|
|
9
|
+
}
|
|
10
|
+
buildMarkup() {
|
|
11
|
+
const label = this.readAttr('label');
|
|
12
|
+
const placeholder = this.readAttr('placeholder');
|
|
13
|
+
const value = this.readAttr('value');
|
|
14
|
+
const rows = this.readNumAttr('rows', 4);
|
|
15
|
+
return `
|
|
16
|
+
<section class="rd-input-textarea" data-testid="rd-input-textarea">
|
|
17
|
+
${label ? `<span class="rd-field__label">${this.esc(label)}</span>` : ''}
|
|
18
|
+
<textarea class="rd-textarea" data-ref="input" rows="${rows}" placeholder="${this.esc(placeholder)}" aria-label="${this.esc(label || 'Textarea')}">${this.esc(value)}</textarea>
|
|
19
|
+
<div data-ref="slot"></div>
|
|
20
|
+
</section>`;
|
|
21
|
+
}
|
|
22
|
+
wireEvents() {
|
|
23
|
+
this.addEventListener('input', (event) => {
|
|
24
|
+
const target = event.target;
|
|
25
|
+
if (target instanceof HTMLInputElement && target.matches('[data-ref="input"]')) {
|
|
26
|
+
this.dispatchDetail('value-change', { value: target.value });
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function registerRdTextareaInput() {
|
|
32
|
+
defineRosettaElement(RD_TEXTAREA_INPUT_TAG, RdTextareaInputElement);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=rd-textarea-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rd-textarea-input.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/input/textarea/rd-textarea-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAazD,gFAAgF;AAChF,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IAC5D,MAAM,CAAU,OAAO,GAAG,qBAAqB,CAAC;IAEhD,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,OAAO,EAAC,aAAa,EAAC,MAAM,EAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAES,WAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzC,OAAO;;UAED,KAAK,CAAC,CAAC,CAAC,iCAAiC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;+DACjB,IAAI,kBAAkB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;iBAE3J,CAAC;IAChB,CAAC;IAEkB,UAAU;QAC3B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,MAAM,YAAY,gBAAgB,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAC/E,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AAGH,MAAM,UAAU,uBAAuB;IACrC,oBAAoB,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/web-components/src/visual/kpi/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { RosettaAtomElement } from '../../lib/rosetta-atom-element.js';
|
|
2
|
+
export declare const RD_KPI_CARD_TAG = "rd-kpi-card";
|
|
3
|
+
export interface KpiCardProps {
|
|
4
|
+
title?: string;
|
|
5
|
+
value?: string | number;
|
|
6
|
+
delta?: string;
|
|
7
|
+
format?: 'number' | 'currency' | 'percent';
|
|
8
|
+
className?: string;
|
|
9
|
+
style?: Record<string, string>;
|
|
10
|
+
children?: unknown;
|
|
11
|
+
}
|
|
12
|
+
/** @rosettadash/web-components/visual/kpi — visual.kpi */
|
|
13
|
+
export declare class RdKpiCardElement extends RosettaAtomElement {
|
|
14
|
+
static readonly tagName = "rd-kpi-card";
|
|
15
|
+
static get observedAttributes(): string[];
|
|
16
|
+
protected buildMarkup(): string;
|
|
17
|
+
}
|
|
18
|
+
export declare function registerRdKpiCard(): void;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { defineRosettaElement } from '../../lib/element-utils.js';
|
|
2
|
+
import { RosettaAtomElement } from '../../lib/rosetta-atom-element.js';
|
|
3
|
+
export const RD_KPI_CARD_TAG = 'rd-kpi-card';
|
|
4
|
+
/** @rosettadash/web-components/visual/kpi — visual.kpi */
|
|
5
|
+
export class RdKpiCardElement extends RosettaAtomElement {
|
|
6
|
+
static tagName = RD_KPI_CARD_TAG;
|
|
7
|
+
static get observedAttributes() {
|
|
8
|
+
return ["title", "value", "delta", "format"];
|
|
9
|
+
}
|
|
10
|
+
buildMarkup() {
|
|
11
|
+
const title = this.readAttr('title', 'Metric');
|
|
12
|
+
const value = this.readAttr('value', '—');
|
|
13
|
+
const delta = this.readAttr('delta');
|
|
14
|
+
return `
|
|
15
|
+
<article class="rd-kpi" data-testid="rd-kpi">
|
|
16
|
+
<span class="rd-kpi__title">${this.esc(title)}</span>
|
|
17
|
+
<span class="rd-kpi__value">${this.esc(value)}</span>
|
|
18
|
+
${delta ? `<span class="rd-kpi__delta">${this.esc(delta)}</span>` : ''}
|
|
19
|
+
<div data-ref="slot"></div>
|
|
20
|
+
</article>`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function registerRdKpiCard() {
|
|
24
|
+
defineRosettaElement(RD_KPI_CARD_TAG, RdKpiCardElement);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=rd-kpi-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rd-kpi-card.js","sourceRoot":"","sources":["../../../../../../packages/web-components/src/visual/kpi/rd-kpi-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAY7C,0DAA0D;AAC1D,MAAM,OAAO,gBAAiB,SAAQ,kBAAkB;IACtD,MAAM,CAAU,OAAO,GAAG,eAAe,CAAC;IAE1C,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAES,WAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO;;sCAE2B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;sCACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;UAC3C,KAAK,CAAC,CAAC,CAAC,+BAA+B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;;iBAE7D,CAAC;IAChB,CAAC;;AAGH,MAAM,UAAU,iBAAiB;IAC/B,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { RdVideoSourceElement, DB_VIDEO_SOURCE_TAG, registerRdVideoSource } from './video-source/index.js';
|
|
2
2
|
export { RdEquirectViewportElement, DB_EQUIRECT_VIEWPORT_TAG, registerRdEquirectViewport, type EquirectPreviewMode, } from './equirect-viewport/index.js';
|
|
3
|
+
export { RdYoutubeEmbedElement, DB_YOUTUBE_EMBED_TAG, registerRdYoutubeEmbed, type YoutubeEmbedProps, } from './youtube-embed/index.js';
|
|
4
|
+
export { registerRdLiveCapture, RD_LIVE_CAPTURE_TAG, RdLiveCaptureElement } from './live-capture/index.js';
|
|
3
5
|
export declare function registerRosettaDashMediaElements(): void;
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
export { RdVideoSourceElement, DB_VIDEO_SOURCE_TAG, registerRdVideoSource } from './video-source/index.js';
|
|
2
2
|
export { RdEquirectViewportElement, DB_EQUIRECT_VIEWPORT_TAG, registerRdEquirectViewport, } from './equirect-viewport/index.js';
|
|
3
|
+
export { RdYoutubeEmbedElement, DB_YOUTUBE_EMBED_TAG, registerRdYoutubeEmbed, } from './youtube-embed/index.js';
|
|
4
|
+
export { registerRdLiveCapture, RD_LIVE_CAPTURE_TAG, RdLiveCaptureElement } from './live-capture/index.js';
|
|
3
5
|
import { registerRdEquirectViewport } from './equirect-viewport/index.js';
|
|
6
|
+
import { registerRdLiveCapture } from './live-capture/index.js';
|
|
4
7
|
import { registerRdVideoSource } from './video-source/index.js';
|
|
8
|
+
import { registerRdYoutubeEmbed } from './youtube-embed/index.js';
|
|
5
9
|
export function registerRosettaDashMediaElements() {
|
|
6
10
|
registerRdVideoSource();
|
|
7
11
|
registerRdEquirectViewport();
|
|
12
|
+
registerRdYoutubeEmbed();
|
|
13
|
+
registerRdLiveCapture();
|
|
8
14
|
}
|
|
9
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/web-components/src/visual/media/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3G,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,GAE3B,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/web-components/src/visual/media/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3G,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,GAE3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,GAEvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE3G,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,UAAU,gCAAgC;IAC9C,qBAAqB,EAAE,CAAC;IACxB,0BAA0B,EAAE,CAAC;IAC7B,sBAAsB,EAAE,CAAC;IACzB,qBAAqB,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/media/live-capture/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RosettaAtomElement } from '../../../lib/rosetta-atom-element.js';
|
|
2
|
+
export declare const RD_LIVE_CAPTURE_TAG = "rd-live-capture";
|
|
3
|
+
export interface LiveCaptureProps {
|
|
4
|
+
label?: string;
|
|
5
|
+
onStart?: () => void;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: Record<string, string>;
|
|
8
|
+
children?: unknown;
|
|
9
|
+
}
|
|
10
|
+
/** @rosettadash/web-components/visual/media/live-capture — visual.media.live-capture */
|
|
11
|
+
export declare class RdLiveCaptureElement extends RosettaAtomElement {
|
|
12
|
+
static readonly tagName = "rd-live-capture";
|
|
13
|
+
static get observedAttributes(): string[];
|
|
14
|
+
protected buildMarkup(): string;
|
|
15
|
+
}
|
|
16
|
+
export declare function registerRdLiveCapture(): void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { defineRosettaElement } from '../../../lib/element-utils.js';
|
|
2
|
+
import { RosettaAtomElement } from '../../../lib/rosetta-atom-element.js';
|
|
3
|
+
export const RD_LIVE_CAPTURE_TAG = 'rd-live-capture';
|
|
4
|
+
/** @rosettadash/web-components/visual/media/live-capture — visual.media.live-capture */
|
|
5
|
+
export class RdLiveCaptureElement extends RosettaAtomElement {
|
|
6
|
+
static tagName = RD_LIVE_CAPTURE_TAG;
|
|
7
|
+
static get observedAttributes() {
|
|
8
|
+
return ["label"];
|
|
9
|
+
}
|
|
10
|
+
buildMarkup() {
|
|
11
|
+
const label = this.readAttr('label', 'Live capture');
|
|
12
|
+
return `
|
|
13
|
+
<section class="rd-media-live-capture" data-testid="rd-media-live-capture">
|
|
14
|
+
<span class="rd-media__label">${this.esc(label)}</span>
|
|
15
|
+
<button type="button" class="rd-button" data-ref="start">Start camera</button>
|
|
16
|
+
<div data-ref="slot"></div>
|
|
17
|
+
</section>`;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function registerRdLiveCapture() {
|
|
21
|
+
defineRosettaElement(RD_LIVE_CAPTURE_TAG, RdLiveCaptureElement);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=rd-live-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rd-live-capture.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/media/live-capture/rd-live-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAUrD,wFAAwF;AACxF,MAAM,OAAO,oBAAqB,SAAQ,kBAAkB;IAC1D,MAAM,CAAU,OAAO,GAAG,mBAAmB,CAAC;IAE9C,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAES,WAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACrD,OAAO;;wCAE6B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;;iBAGtC,CAAC;IAChB,CAAC;;AAGH,MAAM,UAAU,qBAAqB;IACnC,oBAAoB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
export declare const DB_VIDEO_SOURCE_TAG = "rd-video-source";
|
|
2
2
|
export declare class RdVideoSourceElement extends HTMLElement {
|
|
3
3
|
static readonly tagName = "rd-video-source";
|
|
4
|
+
static get observedAttributes(): string[];
|
|
4
5
|
private inputEl;
|
|
5
6
|
private resourcesReady;
|
|
6
7
|
private changeListener;
|
|
7
8
|
connectedCallback(): void;
|
|
8
9
|
disconnectedCallback(): void;
|
|
10
|
+
attributeChangedCallback(): void;
|
|
9
11
|
setProperty(name: string, value: unknown): void;
|
|
10
12
|
whenReady(): Promise<void>;
|
|
11
13
|
get label(): string;
|
|
12
14
|
get accept(): string;
|
|
13
15
|
get sourceWidth(): number;
|
|
14
16
|
get sourceHeight(): number;
|
|
17
|
+
get presentation(): string;
|
|
18
|
+
get hint(): string;
|
|
15
19
|
private mountShadow;
|
|
16
20
|
private paint;
|
|
17
21
|
private handleFileSelected;
|
|
22
|
+
private probeVideoDimensions;
|
|
18
23
|
}
|
|
19
24
|
export declare function registerRdVideoSource(): void;
|
|
@@ -4,6 +4,9 @@ import { applyShadowMount, ensureShadowBase, loadShadowPairForTag } from '../../
|
|
|
4
4
|
export const DB_VIDEO_SOURCE_TAG = 'rd-video-source';
|
|
5
5
|
export class RdVideoSourceElement extends HTMLElement {
|
|
6
6
|
static tagName = DB_VIDEO_SOURCE_TAG;
|
|
7
|
+
static get observedAttributes() {
|
|
8
|
+
return ['label', 'accept', 'source-width', 'source-height', 'presentation', 'hint'];
|
|
9
|
+
}
|
|
7
10
|
inputEl = null;
|
|
8
11
|
resourcesReady = null;
|
|
9
12
|
changeListener = null;
|
|
@@ -21,6 +24,11 @@ export class RdVideoSourceElement extends HTMLElement {
|
|
|
21
24
|
this.changeListener = null;
|
|
22
25
|
this.inputEl = null;
|
|
23
26
|
}
|
|
27
|
+
attributeChangedCallback() {
|
|
28
|
+
if (this.resourcesReady) {
|
|
29
|
+
void this.resourcesReady.then(() => this.paint());
|
|
30
|
+
}
|
|
31
|
+
}
|
|
24
32
|
setProperty(name, value) {
|
|
25
33
|
this[name] = value;
|
|
26
34
|
if (this.resourcesReady) {
|
|
@@ -42,6 +50,12 @@ export class RdVideoSourceElement extends HTMLElement {
|
|
|
42
50
|
get sourceHeight() {
|
|
43
51
|
return readNumber(this.getAttribute('source-height'), DEFAULT_EQUIRECT_SOURCE.height);
|
|
44
52
|
}
|
|
53
|
+
get presentation() {
|
|
54
|
+
return readString(this.getAttribute('presentation'), 'default');
|
|
55
|
+
}
|
|
56
|
+
get hint() {
|
|
57
|
+
return readString(this.getAttribute('hint'), '');
|
|
58
|
+
}
|
|
45
59
|
async mountShadow() {
|
|
46
60
|
const root = this.shadowRoot;
|
|
47
61
|
if (!root || root.querySelector('.video-source')) {
|
|
@@ -52,6 +66,7 @@ export class RdVideoSourceElement extends HTMLElement {
|
|
|
52
66
|
this.inputEl = root.querySelector('[data-ref="input"]');
|
|
53
67
|
this.changeListener = () => this.handleFileSelected();
|
|
54
68
|
this.inputEl?.addEventListener('change', this.changeListener);
|
|
69
|
+
this.paint();
|
|
55
70
|
}
|
|
56
71
|
paint() {
|
|
57
72
|
const root = this.shadowRoot;
|
|
@@ -60,11 +75,46 @@ export class RdVideoSourceElement extends HTMLElement {
|
|
|
60
75
|
}
|
|
61
76
|
const labelEl = root.querySelector('[data-ref="label"]');
|
|
62
77
|
const metaEl = root.querySelector('[data-ref="meta"]');
|
|
78
|
+
const rootEl = root.querySelector('[data-ref="root"]');
|
|
79
|
+
const headerEl = root.querySelector('[data-ref="header"]');
|
|
80
|
+
const uploadEl = root.querySelector('[data-ref="upload"]');
|
|
81
|
+
const uploadDefaultEl = root.querySelector('[data-ref="upload-default"]');
|
|
82
|
+
const uploadAuthoringEl = root.querySelector('[data-ref="upload-authoring"]');
|
|
83
|
+
const uploadFrameEl = root.querySelector('[data-ref="upload-frame"]');
|
|
84
|
+
const nameEl = root.querySelector('[data-ref="file-name"]');
|
|
85
|
+
const hintEl = root.querySelector('[data-ref="hint"]');
|
|
86
|
+
const isAuthoringSource = this.presentation === 'authoring-source';
|
|
87
|
+
const isAuthoringFrame = this.presentation === 'authoring-frame';
|
|
88
|
+
const isAuthoring = isAuthoringSource || isAuthoringFrame;
|
|
89
|
+
rootEl?.classList.toggle('video-source--authoring', isAuthoringSource);
|
|
90
|
+
rootEl?.classList.toggle('video-source--authoring-frame', isAuthoringFrame);
|
|
91
|
+
if (headerEl instanceof HTMLElement) {
|
|
92
|
+
headerEl.hidden = isAuthoring;
|
|
93
|
+
}
|
|
94
|
+
if (nameEl instanceof HTMLElement) {
|
|
95
|
+
nameEl.hidden = isAuthoringFrame;
|
|
96
|
+
}
|
|
97
|
+
if (uploadEl instanceof HTMLElement) {
|
|
98
|
+
uploadEl.classList.toggle('video-source__upload--authoring', isAuthoringSource);
|
|
99
|
+
uploadEl.classList.toggle('video-source__upload--authoring-frame', isAuthoringFrame);
|
|
100
|
+
}
|
|
101
|
+
if (uploadDefaultEl instanceof HTMLElement) {
|
|
102
|
+
uploadDefaultEl.hidden = isAuthoring;
|
|
103
|
+
}
|
|
104
|
+
if (uploadAuthoringEl instanceof HTMLElement) {
|
|
105
|
+
uploadAuthoringEl.hidden = !isAuthoringSource;
|
|
106
|
+
}
|
|
107
|
+
if (uploadFrameEl instanceof HTMLElement) {
|
|
108
|
+
uploadFrameEl.hidden = !isAuthoringFrame;
|
|
109
|
+
}
|
|
110
|
+
if (hintEl) {
|
|
111
|
+
hintEl.textContent = this.hint;
|
|
112
|
+
}
|
|
63
113
|
if (labelEl) {
|
|
64
114
|
labelEl.textContent = this.label;
|
|
65
115
|
}
|
|
66
116
|
if (metaEl) {
|
|
67
|
-
metaEl.textContent = `${this.sourceWidth}×${this.sourceHeight}`;
|
|
117
|
+
metaEl.textContent = isAuthoring ? '' : `${this.sourceWidth}×${this.sourceHeight}`;
|
|
68
118
|
}
|
|
69
119
|
const input = root.querySelector('[data-ref="input"]');
|
|
70
120
|
if (input) {
|
|
@@ -77,25 +127,58 @@ export class RdVideoSourceElement extends HTMLElement {
|
|
|
77
127
|
return;
|
|
78
128
|
}
|
|
79
129
|
const nameEl = this.shadowRoot?.querySelector('[data-ref="file-name"]');
|
|
80
|
-
if (nameEl) {
|
|
130
|
+
if (nameEl && this.presentation !== 'authoring-frame') {
|
|
81
131
|
nameEl.textContent = file.name;
|
|
82
132
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
133
|
+
void this.probeVideoDimensions(file).then(({ width, height }) => {
|
|
134
|
+
if (width > 0 && height > 0) {
|
|
135
|
+
this.setAttribute('source-width', String(width));
|
|
136
|
+
this.setAttribute('source-height', String(height));
|
|
137
|
+
const metaEl = this.shadowRoot?.querySelector('[data-ref="meta"]');
|
|
138
|
+
const isAuthoring = this.presentation === 'authoring-source' || this.presentation === 'authoring-frame';
|
|
139
|
+
if (metaEl && !isAuthoring) {
|
|
140
|
+
metaEl.textContent = `${width}×${height}`;
|
|
141
|
+
}
|
|
142
|
+
const nameElAfter = this.shadowRoot?.querySelector('[data-ref="file-name"]');
|
|
143
|
+
if (nameElAfter && this.presentation === 'authoring-source') {
|
|
144
|
+
nameElAfter.textContent = `${file.name} (${width}×${height})`;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const metadata = {
|
|
148
|
+
name: file.name,
|
|
149
|
+
sourceWidth: width > 0 ? width : this.sourceWidth,
|
|
150
|
+
sourceHeight: height > 0 ? height : this.sourceHeight,
|
|
151
|
+
size: file.size,
|
|
152
|
+
};
|
|
153
|
+
this.dispatchEvent(new CustomEvent('video-file', {
|
|
154
|
+
detail: { file, metadata },
|
|
155
|
+
bubbles: true,
|
|
156
|
+
composed: true,
|
|
157
|
+
}));
|
|
158
|
+
this.dispatchEvent(new CustomEvent('metadata', {
|
|
159
|
+
detail: metadata,
|
|
160
|
+
bubbles: true,
|
|
161
|
+
composed: true,
|
|
162
|
+
}));
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
probeVideoDimensions(file) {
|
|
166
|
+
return new Promise((resolve) => {
|
|
167
|
+
const url = URL.createObjectURL(file);
|
|
168
|
+
const video = document.createElement('video');
|
|
169
|
+
video.preload = 'metadata';
|
|
170
|
+
video.onloadedmetadata = () => {
|
|
171
|
+
const width = video.videoWidth;
|
|
172
|
+
const height = video.videoHeight;
|
|
173
|
+
URL.revokeObjectURL(url);
|
|
174
|
+
resolve({ width, height });
|
|
175
|
+
};
|
|
176
|
+
video.onerror = () => {
|
|
177
|
+
URL.revokeObjectURL(url);
|
|
178
|
+
resolve({ width: 0, height: 0 });
|
|
179
|
+
};
|
|
180
|
+
video.src = url;
|
|
181
|
+
});
|
|
99
182
|
}
|
|
100
183
|
}
|
|
101
184
|
export function registerRdVideoSource() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rd-video-source.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/media/video-source/rd-video-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAgB,UAAU,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEvG,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IACnD,MAAM,CAAU,OAAO,GAAG,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"rd-video-source.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/media/video-source/rd-video-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/media/youtube-embed/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Extract an 11-char YouTube video id from a raw id or common URL forms. */
|
|
2
|
+
export declare function parseYouTubeVideoId(input: string | null | undefined): string | null;
|
|
3
|
+
export interface YouTubeEmbedParams {
|
|
4
|
+
start?: number;
|
|
5
|
+
autoplay?: boolean;
|
|
6
|
+
mute?: boolean;
|
|
7
|
+
controls?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/** Privacy-enhanced embed URL (youtube-nocookie.com). */
|
|
10
|
+
export declare function buildYouTubeEmbedUrl(videoId: string, params?: YouTubeEmbedParams): string;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** Extract an 11-char YouTube video id from a raw id or common URL forms. */
|
|
2
|
+
export function parseYouTubeVideoId(input) {
|
|
3
|
+
if (!input?.trim()) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
const trimmed = input.trim();
|
|
7
|
+
if (/^[a-zA-Z0-9_-]{11}$/.test(trimmed)) {
|
|
8
|
+
return trimmed;
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
const url = new URL(trimmed);
|
|
12
|
+
const host = url.hostname.replace(/^www\./, '');
|
|
13
|
+
if (host === 'youtu.be') {
|
|
14
|
+
return url.pathname.slice(1).split('/')[0] || null;
|
|
15
|
+
}
|
|
16
|
+
if (host.includes('youtube.com') || host.includes('youtube-nocookie.com')) {
|
|
17
|
+
const fromQuery = url.searchParams.get('v');
|
|
18
|
+
if (fromQuery) {
|
|
19
|
+
return fromQuery;
|
|
20
|
+
}
|
|
21
|
+
const embedMatch = url.pathname.match(/\/embed\/([^/?]+)/);
|
|
22
|
+
if (embedMatch?.[1]) {
|
|
23
|
+
return embedMatch[1];
|
|
24
|
+
}
|
|
25
|
+
const shortsMatch = url.pathname.match(/\/shorts\/([^/?]+)/);
|
|
26
|
+
if (shortsMatch?.[1]) {
|
|
27
|
+
return shortsMatch[1];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
/** Privacy-enhanced embed URL (youtube-nocookie.com). */
|
|
37
|
+
export function buildYouTubeEmbedUrl(videoId, params = {}) {
|
|
38
|
+
const search = new URLSearchParams();
|
|
39
|
+
if (params.start != null && params.start > 0) {
|
|
40
|
+
search.set('start', String(Math.floor(params.start)));
|
|
41
|
+
}
|
|
42
|
+
if (params.autoplay) {
|
|
43
|
+
search.set('autoplay', '1');
|
|
44
|
+
}
|
|
45
|
+
if (params.mute) {
|
|
46
|
+
search.set('mute', '1');
|
|
47
|
+
}
|
|
48
|
+
if (params.controls === false) {
|
|
49
|
+
search.set('controls', '0');
|
|
50
|
+
}
|
|
51
|
+
search.set('rel', '0');
|
|
52
|
+
search.set('modestbranding', '1');
|
|
53
|
+
const query = search.toString();
|
|
54
|
+
return `https://www.youtube-nocookie.com/embed/${encodeURIComponent(videoId)}${query ? `?${query}` : ''}`;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=parse-youtube-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-youtube-id.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/media/youtube-embed/parse-youtube-id.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare const DB_YOUTUBE_EMBED_TAG = "rd-youtube-embed";
|
|
2
|
+
/** Public props contract for visual/media/youtube-embed (all runtimes share this shape). */
|
|
3
|
+
export interface YoutubeEmbedProps {
|
|
4
|
+
videoId?: string;
|
|
5
|
+
url?: string;
|
|
6
|
+
start?: number;
|
|
7
|
+
autoplay?: boolean;
|
|
8
|
+
mute?: boolean;
|
|
9
|
+
controls?: boolean;
|
|
10
|
+
title?: string;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class RdYoutubeEmbedElement extends HTMLElement {
|
|
14
|
+
static readonly tagName = "rd-youtube-embed";
|
|
15
|
+
private resourcesReady;
|
|
16
|
+
static get observedAttributes(): string[];
|
|
17
|
+
connectedCallback(): void;
|
|
18
|
+
attributeChangedCallback(): void;
|
|
19
|
+
setProperty(name: string, value: unknown): void;
|
|
20
|
+
whenReady(): Promise<void>;
|
|
21
|
+
get videoId(): string;
|
|
22
|
+
set videoId(value: string);
|
|
23
|
+
get url(): string;
|
|
24
|
+
set url(value: string);
|
|
25
|
+
get start(): number;
|
|
26
|
+
get autoplay(): boolean;
|
|
27
|
+
get mute(): boolean;
|
|
28
|
+
get controls(): boolean;
|
|
29
|
+
get embedTitle(): string;
|
|
30
|
+
set embedTitle(value: string);
|
|
31
|
+
private mountShadow;
|
|
32
|
+
private resolveVideoId;
|
|
33
|
+
private paint;
|
|
34
|
+
}
|
|
35
|
+
export declare function registerRdYoutubeEmbed(): void;
|