@rosettadash/web-components 0.1.0 → 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,330 @@
|
|
|
1
|
+
import { defineRosettaElement } from '../../../lib/element-utils.js';
|
|
2
|
+
import { RosettaAtomElement } from '../../../lib/rosetta-atom-element.js';
|
|
3
|
+
import { cameraPositionFacingLatLng, GLOBE_CAMERA_DISTANCE, GLOBE_FLY_DURATION_MS, GLOBE_HEIGHT_SEGMENTS, GLOBE_RADIUS, GLOBE_WIDTH_SEGMENTS, latLngToGlobePosition, parseGlobeMarkersJson, patchEquirectGlobeMaterial, prepareEquirectGlobeTexture, isGlobePointerClick, resolveGlobePickId, } from './globe-view.js';
|
|
4
|
+
export const RD_THREE_GEO_GLOBE_TAG = 'rd-three-geo-globe';
|
|
5
|
+
/** @rosettadash/web-components/visual/display/3d-geo-globe — visual.display.3d-geo-globe */
|
|
6
|
+
export class RdThreeGeoGlobeElement extends RosettaAtomElement {
|
|
7
|
+
static tagName = RD_THREE_GEO_GLOBE_TAG;
|
|
8
|
+
runtime = null;
|
|
9
|
+
markersValue = [];
|
|
10
|
+
selectedIdValue = '';
|
|
11
|
+
hasFacedSelection = false;
|
|
12
|
+
mountGeneration = 0;
|
|
13
|
+
static get observedAttributes() {
|
|
14
|
+
return ['title', 'texture-url', 'markers', 'selected-id', 'min-height'];
|
|
15
|
+
}
|
|
16
|
+
connectedCallback() {
|
|
17
|
+
super.connectedCallback();
|
|
18
|
+
void this.mountThreeScene();
|
|
19
|
+
}
|
|
20
|
+
disconnectedCallback() {
|
|
21
|
+
this.mountGeneration += 1;
|
|
22
|
+
this.runtime?.dispose();
|
|
23
|
+
this.runtime = null;
|
|
24
|
+
this.hasFacedSelection = false;
|
|
25
|
+
}
|
|
26
|
+
attributeChangedCallback(name) {
|
|
27
|
+
if (name === 'markers') {
|
|
28
|
+
const parsed = parseGlobeMarkersJson(this.getAttribute('markers'));
|
|
29
|
+
if (parsed !== null) {
|
|
30
|
+
this.markersValue = parsed;
|
|
31
|
+
}
|
|
32
|
+
this.syncRuntime();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (name === 'selected-id') {
|
|
36
|
+
this.selectedIdValue = this.readAttr('selected-id');
|
|
37
|
+
this.syncRuntime();
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (name === 'texture-url' || name === 'title' || name === 'min-height') {
|
|
41
|
+
this.runtime?.dispose();
|
|
42
|
+
this.runtime = null;
|
|
43
|
+
}
|
|
44
|
+
super.attributeChangedCallback(name);
|
|
45
|
+
if (this.isConnected && (name === 'texture-url' || name === 'title' || name === 'min-height')) {
|
|
46
|
+
void this.mountThreeScene();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
setProperty(name, value) {
|
|
50
|
+
if (name === 'markers' && Array.isArray(value)) {
|
|
51
|
+
this.markersValue = value;
|
|
52
|
+
this.syncRuntime();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (name === 'selectedId') {
|
|
56
|
+
this.selectedIdValue = String(value ?? '');
|
|
57
|
+
this.setAttribute('selected-id', this.selectedIdValue);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
super.setProperty(name, value);
|
|
61
|
+
if (this.isConnected) {
|
|
62
|
+
void this.mountThreeScene();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
buildMarkup() {
|
|
66
|
+
const title = this.readAttr('title');
|
|
67
|
+
const minHeight = this.readAttr('min-height', '28rem');
|
|
68
|
+
return `
|
|
69
|
+
<section class="rd-display-3d-geo-globe" data-testid="rd-display-3d-geo-globe" style="min-height:${minHeight}" aria-label="${this.esc(title || '3D destination globe')}">
|
|
70
|
+
${title ? `<header class="rd-display-3d-geo-globe__header">${this.esc(title)}</header>` : ''}
|
|
71
|
+
<div class="rd-display-3d-geo-globe__canvas-host" data-ref="canvas-host"></div>
|
|
72
|
+
<div data-ref="slot"></div>
|
|
73
|
+
</section>`;
|
|
74
|
+
}
|
|
75
|
+
currentMarkers() {
|
|
76
|
+
if (this.markersValue.length) {
|
|
77
|
+
return this.markersValue;
|
|
78
|
+
}
|
|
79
|
+
const parsed = parseGlobeMarkersJson(this.getAttribute('markers'));
|
|
80
|
+
return parsed !== null ? parsed : [];
|
|
81
|
+
}
|
|
82
|
+
currentSelectedId() {
|
|
83
|
+
return this.selectedIdValue || this.readAttr('selected-id');
|
|
84
|
+
}
|
|
85
|
+
syncRuntime() {
|
|
86
|
+
if (!this.runtime) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this.runtime.syncMarkers();
|
|
90
|
+
this.runtime.faceSelection(!this.hasFacedSelection);
|
|
91
|
+
}
|
|
92
|
+
async mountThreeScene() {
|
|
93
|
+
const generation = ++this.mountGeneration;
|
|
94
|
+
this.runtime?.dispose();
|
|
95
|
+
this.runtime = null;
|
|
96
|
+
this.hasFacedSelection = false;
|
|
97
|
+
const host = this.querySelector('[data-ref="canvas-host"]');
|
|
98
|
+
if (!host) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
host.innerHTML = '';
|
|
102
|
+
try {
|
|
103
|
+
const THREE = await import('three');
|
|
104
|
+
const { OrbitControls } = await import('three/examples/jsm/controls/OrbitControls.js');
|
|
105
|
+
if (generation !== this.mountGeneration || !this.isConnected) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const scene = new THREE.Scene();
|
|
109
|
+
scene.background = new THREE.Color('#0b1220');
|
|
110
|
+
const camera = new THREE.PerspectiveCamera(45, 1, 0.1, 100);
|
|
111
|
+
camera.position.set(0, 0.4, GLOBE_CAMERA_DISTANCE);
|
|
112
|
+
const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
|
|
113
|
+
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
|
|
114
|
+
renderer.outputColorSpace = THREE.SRGBColorSpace;
|
|
115
|
+
renderer.domElement.style.display = 'block';
|
|
116
|
+
renderer.domElement.style.width = '100%';
|
|
117
|
+
renderer.domElement.style.height = '100%';
|
|
118
|
+
host.appendChild(renderer.domElement);
|
|
119
|
+
scene.add(new THREE.AmbientLight(0xffffff, 0.72));
|
|
120
|
+
const keyLight = new THREE.DirectionalLight(0xffffff, 1.05);
|
|
121
|
+
keyLight.position.set(4, 6, 5);
|
|
122
|
+
scene.add(keyLight);
|
|
123
|
+
const globeMaterial = new THREE.MeshStandardMaterial({ color: '#1d4ed8' });
|
|
124
|
+
patchEquirectGlobeMaterial(globeMaterial);
|
|
125
|
+
const globe = new THREE.Mesh(new THREE.SphereGeometry(GLOBE_RADIUS, GLOBE_WIDTH_SEGMENTS, GLOBE_HEIGHT_SEGMENTS), globeMaterial);
|
|
126
|
+
scene.add(globe);
|
|
127
|
+
const textureUrl = this.readAttr('texture-url');
|
|
128
|
+
if (textureUrl) {
|
|
129
|
+
new THREE.TextureLoader().load(textureUrl, (texture) => {
|
|
130
|
+
if (generation !== this.mountGeneration) {
|
|
131
|
+
texture.dispose();
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
prepareEquirectGlobeTexture(texture, {
|
|
135
|
+
colorSpace: THREE.SRGBColorSpace,
|
|
136
|
+
wrapS: THREE.RepeatWrapping,
|
|
137
|
+
wrapT: THREE.ClampToEdgeWrapping,
|
|
138
|
+
minFilter: THREE.LinearFilter,
|
|
139
|
+
magFilter: THREE.LinearFilter,
|
|
140
|
+
anisotropy: Math.min(16, renderer.capabilities.getMaxAnisotropy()),
|
|
141
|
+
});
|
|
142
|
+
globeMaterial.map = texture;
|
|
143
|
+
globeMaterial.color.set('#ffffff');
|
|
144
|
+
globeMaterial.needsUpdate = true;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
const controls = new OrbitControls(camera, renderer.domElement);
|
|
148
|
+
controls.enableDamping = true;
|
|
149
|
+
controls.dampingFactor = 0.08;
|
|
150
|
+
controls.minDistance = 2.8;
|
|
151
|
+
controls.maxDistance = 8;
|
|
152
|
+
controls.autoRotate = true;
|
|
153
|
+
controls.autoRotateSpeed = 0.6;
|
|
154
|
+
const markerMeshes = new Map();
|
|
155
|
+
const markerGeometry = new THREE.SphereGeometry(0.06, 12, 12);
|
|
156
|
+
const syncMarkers = () => {
|
|
157
|
+
const nextMarkers = this.currentMarkers();
|
|
158
|
+
const nextSelected = this.currentSelectedId();
|
|
159
|
+
for (const id of [...markerMeshes.keys()]) {
|
|
160
|
+
if (!nextMarkers.some((marker) => marker.id === id)) {
|
|
161
|
+
const mesh = markerMeshes.get(id);
|
|
162
|
+
if (mesh) {
|
|
163
|
+
mesh.material.dispose();
|
|
164
|
+
mesh.removeFromParent();
|
|
165
|
+
}
|
|
166
|
+
markerMeshes.delete(id);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
for (const marker of nextMarkers) {
|
|
170
|
+
let mesh = markerMeshes.get(marker.id);
|
|
171
|
+
if (!mesh) {
|
|
172
|
+
mesh = new THREE.Mesh(markerGeometry, new THREE.MeshStandardMaterial({ color: '#f87171' }));
|
|
173
|
+
mesh.userData['id'] = marker.id;
|
|
174
|
+
scene.add(mesh);
|
|
175
|
+
markerMeshes.set(marker.id, mesh);
|
|
176
|
+
}
|
|
177
|
+
const pos = latLngToGlobePosition(marker.lat, marker.lng, GLOBE_RADIUS);
|
|
178
|
+
mesh.position.set(pos.x, pos.y, pos.z);
|
|
179
|
+
const material = mesh.material;
|
|
180
|
+
const selected = marker.id === nextSelected;
|
|
181
|
+
material.color.set(selected ? '#fbbf24' : '#f87171');
|
|
182
|
+
material.emissive.set(selected ? '#92400e' : '#000000');
|
|
183
|
+
material.emissiveIntensity = selected ? 0.35 : 0;
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
let flyFrameId = 0;
|
|
187
|
+
const faceLatLng = (lat, lng, immediate) => {
|
|
188
|
+
cancelAnimationFrame(flyFrameId);
|
|
189
|
+
const distance = camera.position.length() || GLOBE_CAMERA_DISTANCE;
|
|
190
|
+
const end = cameraPositionFacingLatLng(lat, lng, distance);
|
|
191
|
+
if (immediate) {
|
|
192
|
+
camera.position.set(end.x, end.y, end.z);
|
|
193
|
+
controls.update();
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
controls.autoRotate = false;
|
|
197
|
+
const startPos = camera.position.clone();
|
|
198
|
+
const endPos = new THREE.Vector3(end.x, end.y, end.z);
|
|
199
|
+
const flyStart = performance.now();
|
|
200
|
+
const animateFly = (now) => {
|
|
201
|
+
const t = Math.min((now - flyStart) / GLOBE_FLY_DURATION_MS, 1);
|
|
202
|
+
const eased = 1 - (1 - t) ** 3;
|
|
203
|
+
camera.position.lerpVectors(startPos, endPos, eased);
|
|
204
|
+
controls.update();
|
|
205
|
+
if (t < 1) {
|
|
206
|
+
flyFrameId = requestAnimationFrame(animateFly);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
controls.autoRotate = true;
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
flyFrameId = requestAnimationFrame(animateFly);
|
|
213
|
+
};
|
|
214
|
+
const faceSelection = (immediate) => {
|
|
215
|
+
const selectedId = this.currentSelectedId();
|
|
216
|
+
if (!selectedId) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
const marker = this.currentMarkers().find((entry) => entry.id === selectedId);
|
|
220
|
+
if (!marker) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
faceLatLng(marker.lat, marker.lng, immediate);
|
|
224
|
+
this.hasFacedSelection = true;
|
|
225
|
+
};
|
|
226
|
+
const resize = () => {
|
|
227
|
+
const width = host.clientWidth || 1;
|
|
228
|
+
const height = host.clientHeight || 1;
|
|
229
|
+
camera.aspect = width / height;
|
|
230
|
+
camera.updateProjectionMatrix();
|
|
231
|
+
renderer.setSize(width, height, false);
|
|
232
|
+
};
|
|
233
|
+
const resizeObserver = new ResizeObserver(resize);
|
|
234
|
+
resizeObserver.observe(host);
|
|
235
|
+
resize();
|
|
236
|
+
let animationId = 0;
|
|
237
|
+
const tick = () => {
|
|
238
|
+
controls.update();
|
|
239
|
+
renderer.render(scene, camera);
|
|
240
|
+
animationId = requestAnimationFrame(tick);
|
|
241
|
+
};
|
|
242
|
+
tick();
|
|
243
|
+
const raycaster = new THREE.Raycaster();
|
|
244
|
+
const pointer = new THREE.Vector2();
|
|
245
|
+
let pointerDown = null;
|
|
246
|
+
const pickFromPointer = (event) => {
|
|
247
|
+
const rect = renderer.domElement.getBoundingClientRect();
|
|
248
|
+
pointer.x = ((event.clientX - rect.left) / rect.width) * 2 - 1;
|
|
249
|
+
pointer.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;
|
|
250
|
+
raycaster.setFromCamera(pointer, camera);
|
|
251
|
+
const hits = raycaster.intersectObjects([globe, ...markerMeshes.values()]);
|
|
252
|
+
const first = hits[0];
|
|
253
|
+
const firstMesh = first?.object;
|
|
254
|
+
const markerHitId = firstMesh && firstMesh !== globe
|
|
255
|
+
? firstMesh.userData?.['id']
|
|
256
|
+
: undefined;
|
|
257
|
+
const globeHit = firstMesh === globe ? first : undefined;
|
|
258
|
+
const id = resolveGlobePickId(this.currentMarkers(), markerHitId, globeHit
|
|
259
|
+
? { x: globeHit.point.x, y: globeHit.point.y, z: globeHit.point.z }
|
|
260
|
+
: undefined);
|
|
261
|
+
if (id) {
|
|
262
|
+
this.dispatchDetail('marker-select', { id });
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
const onPointerDown = (event) => {
|
|
266
|
+
if (event.button !== 0) {
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
pointerDown = { x: event.clientX, y: event.clientY };
|
|
270
|
+
};
|
|
271
|
+
const onPointerUp = (event) => {
|
|
272
|
+
if (event.button !== 0) {
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
const start = pointerDown;
|
|
276
|
+
pointerDown = null;
|
|
277
|
+
if (!isGlobePointerClick(start, event.clientX, event.clientY)) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
pickFromPointer(event);
|
|
281
|
+
};
|
|
282
|
+
const onPointerCancel = () => {
|
|
283
|
+
pointerDown = null;
|
|
284
|
+
};
|
|
285
|
+
renderer.domElement.addEventListener('pointerdown', onPointerDown);
|
|
286
|
+
renderer.domElement.addEventListener('pointerup', onPointerUp);
|
|
287
|
+
renderer.domElement.addEventListener('pointercancel', onPointerCancel);
|
|
288
|
+
const dispose = () => {
|
|
289
|
+
renderer.domElement.removeEventListener('pointerdown', onPointerDown);
|
|
290
|
+
renderer.domElement.removeEventListener('pointerup', onPointerUp);
|
|
291
|
+
renderer.domElement.removeEventListener('pointercancel', onPointerCancel);
|
|
292
|
+
cancelAnimationFrame(flyFrameId);
|
|
293
|
+
cancelAnimationFrame(animationId);
|
|
294
|
+
resizeObserver.disconnect();
|
|
295
|
+
controls.dispose();
|
|
296
|
+
markerMeshes.forEach((mesh) => {
|
|
297
|
+
mesh.material.dispose();
|
|
298
|
+
mesh.removeFromParent();
|
|
299
|
+
});
|
|
300
|
+
markerMeshes.clear();
|
|
301
|
+
globe.geometry.dispose();
|
|
302
|
+
markerGeometry.dispose();
|
|
303
|
+
if (globeMaterial.map) {
|
|
304
|
+
globeMaterial.map.dispose();
|
|
305
|
+
}
|
|
306
|
+
globeMaterial.dispose();
|
|
307
|
+
renderer.dispose();
|
|
308
|
+
renderer.domElement.remove();
|
|
309
|
+
};
|
|
310
|
+
if (generation !== this.mountGeneration || !this.isConnected) {
|
|
311
|
+
dispose();
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
syncMarkers();
|
|
315
|
+
this.runtime = { syncMarkers, faceSelection, dispose };
|
|
316
|
+
faceSelection(true);
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
if (generation !== this.mountGeneration) {
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
host.innerHTML =
|
|
323
|
+
'<p class="da-note">Three.js unavailable — install <code>three</code> as a peer dependency for the interactive globe.</p>';
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
export function registerRdThreeGeoGlobe() {
|
|
328
|
+
defineRosettaElement(RD_THREE_GEO_GLOBE_TAG, RdThreeGeoGlobeElement);
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=rd-three-geo-globe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rd-three-geo-globe.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/display/3d-geo-globe/rd-three-geo-globe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/display/3d-gltf-model/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RosettaAtomElement } from '../../../lib/rosetta-atom-element.js';
|
|
2
|
+
export declare const RD_THREE_GLTF_MODEL_TAG = "rd-three-gltf-model";
|
|
3
|
+
export interface ThreeGltfModelProps {
|
|
4
|
+
title?: string;
|
|
5
|
+
mode?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: Record<string, string>;
|
|
8
|
+
children?: unknown;
|
|
9
|
+
}
|
|
10
|
+
/** @rosettadash/web-components/visual/display/3d-gltf-model — visual.display.3d-gltf-model */
|
|
11
|
+
export declare class RdThreeGltfModelElement extends RosettaAtomElement {
|
|
12
|
+
static readonly tagName = "rd-three-gltf-model";
|
|
13
|
+
static get observedAttributes(): string[];
|
|
14
|
+
protected buildMarkup(): string;
|
|
15
|
+
}
|
|
16
|
+
export declare function registerRdThreeGltfModel(): void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { defineRosettaElement } from '../../../lib/element-utils.js';
|
|
2
|
+
import { RosettaAtomElement } from '../../../lib/rosetta-atom-element.js';
|
|
3
|
+
export const RD_THREE_GLTF_MODEL_TAG = 'rd-three-gltf-model';
|
|
4
|
+
/** @rosettadash/web-components/visual/display/3d-gltf-model — visual.display.3d-gltf-model */
|
|
5
|
+
export class RdThreeGltfModelElement extends RosettaAtomElement {
|
|
6
|
+
static tagName = RD_THREE_GLTF_MODEL_TAG;
|
|
7
|
+
static get observedAttributes() {
|
|
8
|
+
return ["title", "mode", "texture-url", "markers", "selected-id"];
|
|
9
|
+
}
|
|
10
|
+
buildMarkup() {
|
|
11
|
+
const title = this.readAttr('title', '3D view');
|
|
12
|
+
const mode = this.readAttr('mode', 'preview');
|
|
13
|
+
return `
|
|
14
|
+
<section class="rd-display-3d-gltf-model" data-testid="rd-display-3d-gltf-model" data-three-mode="${this.esc(mode)}" aria-label="${this.esc(title)}">
|
|
15
|
+
<header class="rd-display-3d-gltf-model__header">${this.esc(title)}</header>
|
|
16
|
+
<div class="rd-display-3d-gltf-model__placeholder" aria-hidden="true">3D preview</div>
|
|
17
|
+
<div data-ref="slot"></div>
|
|
18
|
+
</section>`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function registerRdThreeGltfModel() {
|
|
22
|
+
defineRosettaElement(RD_THREE_GLTF_MODEL_TAG, RdThreeGltfModelElement);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=rd-three-gltf-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rd-three-gltf-model.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/display/3d-gltf-model/rd-three-gltf-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAU7D,8FAA8F;AAC9F,MAAM,OAAO,uBAAwB,SAAQ,kBAAkB;IAC7D,MAAM,CAAU,OAAO,GAAG,uBAAuB,CAAC;IAElD,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,OAAO,EAAC,MAAM,EAAC,aAAa,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC;IAChE,CAAC;IAES,WAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO;0GAC+F,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;2DAC7F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;;iBAGzD,CAAC;IAChB,CAAC;;AAGH,MAAM,UAAU,wBAAwB;IACtC,oBAAoB,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/display/3d-scatter/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RosettaAtomElement } from '../../../lib/rosetta-atom-element.js';
|
|
2
|
+
export declare const RD_THREE_SCATTER_PLOT_TAG = "rd-three-scatter";
|
|
3
|
+
export interface ThreeScatterPlotProps {
|
|
4
|
+
title?: string;
|
|
5
|
+
mode?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: Record<string, string>;
|
|
8
|
+
children?: unknown;
|
|
9
|
+
}
|
|
10
|
+
/** @rosettadash/web-components/visual/display/3d-scatter — visual.display.3d-scatter */
|
|
11
|
+
export declare class RdThreeScatterPlotElement extends RosettaAtomElement {
|
|
12
|
+
static readonly tagName = "rd-three-scatter";
|
|
13
|
+
static get observedAttributes(): string[];
|
|
14
|
+
protected buildMarkup(): string;
|
|
15
|
+
}
|
|
16
|
+
export declare function registerRdThreeScatterPlot(): void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { defineRosettaElement } from '../../../lib/element-utils.js';
|
|
2
|
+
import { RosettaAtomElement } from '../../../lib/rosetta-atom-element.js';
|
|
3
|
+
export const RD_THREE_SCATTER_PLOT_TAG = 'rd-three-scatter';
|
|
4
|
+
/** @rosettadash/web-components/visual/display/3d-scatter — visual.display.3d-scatter */
|
|
5
|
+
export class RdThreeScatterPlotElement extends RosettaAtomElement {
|
|
6
|
+
static tagName = RD_THREE_SCATTER_PLOT_TAG;
|
|
7
|
+
static get observedAttributes() {
|
|
8
|
+
return ["title", "mode", "texture-url", "markers", "selected-id"];
|
|
9
|
+
}
|
|
10
|
+
buildMarkup() {
|
|
11
|
+
const title = this.readAttr('title', '3D view');
|
|
12
|
+
const mode = this.readAttr('mode', 'preview');
|
|
13
|
+
return `
|
|
14
|
+
<section class="rd-display-3d-scatter" data-testid="rd-display-3d-scatter" data-three-mode="${this.esc(mode)}" aria-label="${this.esc(title)}">
|
|
15
|
+
<header class="rd-display-3d-scatter__header">${this.esc(title)}</header>
|
|
16
|
+
<div class="rd-display-3d-scatter__placeholder" aria-hidden="true">3D preview</div>
|
|
17
|
+
<div data-ref="slot"></div>
|
|
18
|
+
</section>`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function registerRdThreeScatterPlot() {
|
|
22
|
+
defineRosettaElement(RD_THREE_SCATTER_PLOT_TAG, RdThreeScatterPlotElement);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=rd-three-scatter-plot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rd-three-scatter-plot.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/display/3d-scatter/rd-three-scatter-plot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,kBAAkB,CAAC;AAU5D,wFAAwF;AACxF,MAAM,OAAO,yBAA0B,SAAQ,kBAAkB;IAC/D,MAAM,CAAU,OAAO,GAAG,yBAAyB,CAAC;IAEpD,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,OAAO,EAAC,MAAM,EAAC,aAAa,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC;IAChE,CAAC;IAES,WAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO;oGACyF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;wDAC1F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;;iBAGtD,CAAC;IAChB,CAAC;;AAGH,MAAM,UAAU,0BAA0B;IACxC,oBAAoB,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/display/3d-scene/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RosettaAtomElement } from '../../../lib/rosetta-atom-element.js';
|
|
2
|
+
export declare const RD_THREE_SCENE_POINT_CLOUD_TAG = "rd-three-scene";
|
|
3
|
+
export interface ThreeScenePointCloudProps {
|
|
4
|
+
title?: string;
|
|
5
|
+
mode?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: Record<string, string>;
|
|
8
|
+
children?: unknown;
|
|
9
|
+
}
|
|
10
|
+
/** @rosettadash/web-components/visual/display/3d-scene — visual.display.3d-scene */
|
|
11
|
+
export declare class RdThreeScenePointCloudElement extends RosettaAtomElement {
|
|
12
|
+
static readonly tagName = "rd-three-scene";
|
|
13
|
+
static get observedAttributes(): string[];
|
|
14
|
+
protected buildMarkup(): string;
|
|
15
|
+
}
|
|
16
|
+
export declare function registerRdThreeScenePointCloud(): void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { defineRosettaElement } from '../../../lib/element-utils.js';
|
|
2
|
+
import { RosettaAtomElement } from '../../../lib/rosetta-atom-element.js';
|
|
3
|
+
export const RD_THREE_SCENE_POINT_CLOUD_TAG = 'rd-three-scene';
|
|
4
|
+
/** @rosettadash/web-components/visual/display/3d-scene — visual.display.3d-scene */
|
|
5
|
+
export class RdThreeScenePointCloudElement extends RosettaAtomElement {
|
|
6
|
+
static tagName = RD_THREE_SCENE_POINT_CLOUD_TAG;
|
|
7
|
+
static get observedAttributes() {
|
|
8
|
+
return ["title", "mode", "texture-url", "markers", "selected-id"];
|
|
9
|
+
}
|
|
10
|
+
buildMarkup() {
|
|
11
|
+
const title = this.readAttr('title', '3D view');
|
|
12
|
+
const mode = this.readAttr('mode', 'preview');
|
|
13
|
+
return `
|
|
14
|
+
<section class="rd-display-3d-scene" data-testid="rd-display-3d-scene" data-three-mode="${this.esc(mode)}" aria-label="${this.esc(title)}">
|
|
15
|
+
<header class="rd-display-3d-scene__header">${this.esc(title)}</header>
|
|
16
|
+
<div class="rd-display-3d-scene__placeholder" aria-hidden="true">3D preview</div>
|
|
17
|
+
<div data-ref="slot"></div>
|
|
18
|
+
</section>`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function registerRdThreeScenePointCloud() {
|
|
22
|
+
defineRosettaElement(RD_THREE_SCENE_POINT_CLOUD_TAG, RdThreeScenePointCloudElement);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=rd-three-scene-point-cloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rd-three-scene-point-cloud.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/display/3d-scene/rd-three-scene-point-cloud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,MAAM,CAAC,MAAM,8BAA8B,GAAG,gBAAgB,CAAC;AAU/D,oFAAoF;AACpF,MAAM,OAAO,6BAA8B,SAAQ,kBAAkB;IACnE,MAAM,CAAU,OAAO,GAAG,8BAA8B,CAAC;IAEzD,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,OAAO,EAAC,MAAM,EAAC,aAAa,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC;IAChE,CAAC;IAES,WAAW;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO;gGACqF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;sDACxF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;;iBAGpD,CAAC;IAChB,CAAC;;AAGH,MAAM,UAAU,8BAA8B;IAC5C,oBAAoB,CAAC,8BAA8B,EAAE,6BAA6B,CAAC,CAAC;AACtF,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type GeoMapProvider = 'maplibre' | 'leaflet' | 'google-maps';
|
|
2
|
+
export interface GeoMapMarker {
|
|
3
|
+
id: string;
|
|
4
|
+
lat: number;
|
|
5
|
+
lng: number;
|
|
6
|
+
label?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface GeoMapView {
|
|
9
|
+
lat: number;
|
|
10
|
+
lng: number;
|
|
11
|
+
zoom: number;
|
|
12
|
+
}
|
|
13
|
+
export interface GeoMapAdapterOptions {
|
|
14
|
+
container: HTMLElement;
|
|
15
|
+
provider: GeoMapProvider;
|
|
16
|
+
view: GeoMapView;
|
|
17
|
+
markers: GeoMapMarker[];
|
|
18
|
+
selectedId?: string;
|
|
19
|
+
tileUrl?: string;
|
|
20
|
+
apiKey?: string;
|
|
21
|
+
onMarkerSelect: (marker: GeoMapMarker) => void;
|
|
22
|
+
onError: (message: string) => void;
|
|
23
|
+
}
|
|
24
|
+
export interface GeoMapAdapter {
|
|
25
|
+
destroy(): void;
|
|
26
|
+
setMarkers(markers: GeoMapMarker[], selectedId?: string): void;
|
|
27
|
+
setView(view: GeoMapView): void;
|
|
28
|
+
}
|
|
29
|
+
export declare const DEFAULT_GEO_MAP_VIEW: GeoMapView;
|
|
30
|
+
export declare const DEFAULT_MAPLIBRE_STYLE = "https://demotiles.maplibre.org/style.json";
|
|
31
|
+
export declare const DEFAULT_LEAFLET_TILE_URL = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png";
|
|
32
|
+
export declare function normalizeGeoMapProvider(value: string | null | undefined): GeoMapProvider;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const DEFAULT_GEO_MAP_VIEW = { lat: 20, lng: 0, zoom: 2 };
|
|
2
|
+
export const DEFAULT_MAPLIBRE_STYLE = 'https://demotiles.maplibre.org/style.json';
|
|
3
|
+
export const DEFAULT_LEAFLET_TILE_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
|
|
4
|
+
export function normalizeGeoMapProvider(value) {
|
|
5
|
+
if (value === 'maplibre' || value === 'leaflet' || value === 'google-maps') {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
return 'leaflet';
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=geo-map-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geo-map-types.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/display/geo-map/geo-map-types.ts"],"names":[],"mappings":"AAiCA,MAAM,CAAC,MAAM,oBAAoB,GAAe,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,2CAA2C,CAAC;AAElF,MAAM,CAAC,MAAM,wBAAwB,GAAG,oDAAoD,CAAC;AAE7F,MAAM,UAAU,uBAAuB,CAAC,KAAgC;IACtE,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { GeoMapProps, GeoMapMarker, GeoMapProvider } from './rd-geo-map.js';
|
|
2
|
+
export { DB_GEO_MAP_TAG, RdGeoMapElement, registerRdGeoMap, } from './rd-geo-map.js';
|
|
3
|
+
export { parseGeoMapMarkers } from './parse-markers.js';
|
|
4
|
+
export { parseGeoMapCenter } from './parse-center.js';
|
|
5
|
+
export { DEFAULT_GEO_MAP_VIEW, DEFAULT_LEAFLET_TILE_URL, DEFAULT_MAPLIBRE_STYLE, normalizeGeoMapProvider, } from './geo-map-types.js';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { DB_GEO_MAP_TAG, RdGeoMapElement, registerRdGeoMap, } from './rd-geo-map.js';
|
|
2
|
+
export { parseGeoMapMarkers } from './parse-markers.js';
|
|
3
|
+
export { parseGeoMapCenter } from './parse-center.js';
|
|
4
|
+
export { DEFAULT_GEO_MAP_VIEW, DEFAULT_LEAFLET_TILE_URL, DEFAULT_MAPLIBRE_STYLE, normalizeGeoMapProvider, } from './geo-map-types.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/web-components/src/visual/display/geo-map/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { readNumber } from '../../../lib/element-utils.js';
|
|
2
|
+
import { DEFAULT_GEO_MAP_VIEW } from './geo-map-types.js';
|
|
3
|
+
export function parseGeoMapCenter(raw, fallback = DEFAULT_GEO_MAP_VIEW) {
|
|
4
|
+
if (!raw) {
|
|
5
|
+
return { lat: fallback.lat, lng: fallback.lng };
|
|
6
|
+
}
|
|
7
|
+
try {
|
|
8
|
+
const parsed = JSON.parse(raw);
|
|
9
|
+
if (parsed && typeof parsed === 'object') {
|
|
10
|
+
const record = parsed;
|
|
11
|
+
return {
|
|
12
|
+
lat: readNumber(record['lat'], fallback.lat),
|
|
13
|
+
lng: readNumber(record['lng'], fallback.lng),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
const parts = raw.split(',').map((part) => part.trim());
|
|
19
|
+
if (parts.length >= 2) {
|
|
20
|
+
return {
|
|
21
|
+
lat: readNumber(parts[0], fallback.lat),
|
|
22
|
+
lng: readNumber(parts[1], fallback.lng),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return { lat: fallback.lat, lng: fallback.lng };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=parse-center.js.map
|