@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.
Files changed (351) hide show
  1. package/browser/media.js +461 -39
  2. package/browser/media.js.map +3 -3
  3. package/package.json +332 -36
  4. package/src/domain/i18n/app-language-select/index.d.ts +3 -0
  5. package/src/domain/i18n/app-language-select/index.js +3 -0
  6. package/src/domain/i18n/app-language-select/index.js.map +1 -0
  7. package/src/domain/i18n/app-language-select/parse-locale-options.d.ts +7 -0
  8. package/src/domain/i18n/app-language-select/parse-locale-options.js +39 -0
  9. package/src/domain/i18n/app-language-select/parse-locale-options.js.map +1 -0
  10. package/src/domain/i18n/app-language-select/rd-app-language-select.d.ts +38 -0
  11. package/src/domain/i18n/app-language-select/rd-app-language-select.js +138 -0
  12. package/src/domain/i18n/app-language-select/rd-app-language-select.js.map +1 -0
  13. package/src/domain/i18n/index.d.ts +2 -0
  14. package/src/domain/i18n/index.js +6 -0
  15. package/src/domain/i18n/index.js.map +1 -0
  16. package/src/domain/index.d.ts +6 -0
  17. package/src/domain/index.js +18 -0
  18. package/src/domain/index.js.map +1 -0
  19. package/src/domain/person-invite/index.d.ts +2 -0
  20. package/src/domain/person-invite/index.js +2 -0
  21. package/src/domain/person-invite/index.js.map +1 -0
  22. package/src/domain/person-invite/rd-person-invite.d.ts +17 -0
  23. package/src/domain/person-invite/rd-person-invite.js +33 -0
  24. package/src/domain/person-invite/rd-person-invite.js.map +1 -0
  25. package/src/domain/role-assign/index.d.ts +2 -0
  26. package/src/domain/role-assign/index.js +2 -0
  27. package/src/domain/role-assign/index.js.map +1 -0
  28. package/src/domain/role-assign/rd-role-assign.d.ts +21 -0
  29. package/src/domain/role-assign/rd-role-assign.js +36 -0
  30. package/src/domain/role-assign/rd-role-assign.js.map +1 -0
  31. package/src/domain/role-gate/index.d.ts +2 -0
  32. package/src/domain/role-gate/index.js +2 -0
  33. package/src/domain/role-gate/index.js.map +1 -0
  34. package/src/domain/role-gate/rd-role-gate.d.ts +19 -0
  35. package/src/domain/role-gate/rd-role-gate.js +31 -0
  36. package/src/domain/role-gate/rd-role-gate.js.map +1 -0
  37. package/src/domain/time-preset/index.d.ts +2 -0
  38. package/src/domain/time-preset/index.js +2 -0
  39. package/src/domain/time-preset/index.js.map +1 -0
  40. package/src/domain/time-preset/rd-time-preset.d.ts +23 -0
  41. package/src/domain/time-preset/rd-time-preset.js +34 -0
  42. package/src/domain/time-preset/rd-time-preset.js.map +1 -0
  43. package/src/index.d.ts +5 -5
  44. package/src/index.js +13 -13
  45. package/src/index.js.map +1 -1
  46. package/src/layout/collapsible/index.d.ts +2 -0
  47. package/src/layout/collapsible/index.js +2 -0
  48. package/src/layout/collapsible/index.js.map +1 -0
  49. package/src/layout/collapsible/rd-collapsible.d.ts +21 -0
  50. package/src/layout/collapsible/rd-collapsible.js +50 -0
  51. package/src/layout/collapsible/rd-collapsible.js.map +1 -0
  52. package/src/layout/flex/index.d.ts +2 -0
  53. package/src/layout/flex/index.js +2 -0
  54. package/src/layout/flex/index.js.map +1 -0
  55. package/src/layout/flex/rd-flex-layout.d.ts +17 -0
  56. package/src/layout/flex/rd-flex-layout.js +24 -0
  57. package/src/layout/flex/rd-flex-layout.js.map +1 -0
  58. package/src/layout/grid/index.d.ts +2 -0
  59. package/src/layout/grid/index.js +2 -0
  60. package/src/layout/grid/index.js.map +1 -0
  61. package/src/layout/grid/rd-grid-layout.d.ts +17 -0
  62. package/src/layout/grid/rd-grid-layout.js +24 -0
  63. package/src/layout/grid/rd-grid-layout.js.map +1 -0
  64. package/src/layout/index.d.ts +9 -0
  65. package/src/layout/index.js +27 -0
  66. package/src/layout/index.js.map +1 -0
  67. package/src/layout/modal/index.d.ts +2 -0
  68. package/src/layout/modal/index.js +2 -0
  69. package/src/layout/modal/index.js.map +1 -0
  70. package/src/layout/modal/rd-modal-layout.d.ts +20 -0
  71. package/src/layout/modal/rd-modal-layout.js +40 -0
  72. package/src/layout/modal/rd-modal-layout.js.map +1 -0
  73. package/src/layout/scroll-region/index.d.ts +2 -0
  74. package/src/layout/scroll-region/index.js +2 -0
  75. package/src/layout/scroll-region/index.js.map +1 -0
  76. package/src/layout/scroll-region/rd-scroll-region.d.ts +17 -0
  77. package/src/layout/scroll-region/rd-scroll-region.js +26 -0
  78. package/src/layout/scroll-region/rd-scroll-region.js.map +1 -0
  79. package/src/layout/tabs/index.d.ts +2 -0
  80. package/src/layout/tabs/index.js +2 -0
  81. package/src/layout/tabs/index.js.map +1 -0
  82. package/src/layout/tabs/rd-tabs-layout.d.ts +23 -0
  83. package/src/layout/tabs/rd-tabs-layout.js +34 -0
  84. package/src/layout/tabs/rd-tabs-layout.js.map +1 -0
  85. package/src/lib/element-utils.js +3 -0
  86. package/src/lib/element-utils.js.map +1 -1
  87. package/src/lib/rosetta-atom-element.d.ts +23 -0
  88. package/src/lib/rosetta-atom-element.js +104 -0
  89. package/src/lib/rosetta-atom-element.js.map +1 -0
  90. package/src/lib/shadow-base.js +3 -0
  91. package/src/lib/shadow-base.js.map +1 -1
  92. package/src/lib/shadow-resources.js +7 -2
  93. package/src/lib/shadow-resources.js.map +1 -1
  94. package/src/logic/index.d.ts +2 -0
  95. package/src/logic/index.js +6 -0
  96. package/src/logic/index.js.map +1 -0
  97. package/src/logic/timer/index.d.ts +2 -0
  98. package/src/logic/timer/index.js +2 -0
  99. package/src/logic/timer/index.js.map +1 -0
  100. package/src/logic/timer/rd-timer.d.ts +18 -0
  101. package/src/logic/timer/rd-timer.js +24 -0
  102. package/src/logic/timer/rd-timer.js.map +1 -0
  103. package/src/visual/chart/bar/index.d.ts +2 -0
  104. package/src/visual/chart/bar/index.js +2 -0
  105. package/src/visual/chart/bar/index.js.map +1 -0
  106. package/src/visual/chart/bar/rd-bar-chart.d.ts +21 -0
  107. package/src/visual/chart/bar/rd-bar-chart.js +83 -0
  108. package/src/visual/chart/bar/rd-bar-chart.js.map +1 -0
  109. package/src/visual/chart/line/index.d.ts +2 -0
  110. package/src/visual/chart/line/index.js +2 -0
  111. package/src/visual/chart/line/index.js.map +1 -0
  112. package/src/visual/chart/line/rd-line-chart.d.ts +22 -0
  113. package/src/visual/chart/line/rd-line-chart.js +105 -0
  114. package/src/visual/chart/line/rd-line-chart.js.map +1 -0
  115. package/src/visual/chart/pie/index.d.ts +2 -0
  116. package/src/visual/chart/pie/index.js +2 -0
  117. package/src/visual/chart/pie/index.js.map +1 -0
  118. package/src/visual/chart/pie/rd-pie-chart.d.ts +15 -0
  119. package/src/visual/chart/pie/rd-pie-chart.js +23 -0
  120. package/src/visual/chart/pie/rd-pie-chart.js.map +1 -0
  121. package/src/visual/detail/index.d.ts +2 -0
  122. package/src/visual/detail/index.js +2 -0
  123. package/src/visual/detail/index.js.map +1 -0
  124. package/src/visual/detail/rd-detail-panel.d.ts +16 -0
  125. package/src/visual/detail/rd-detail-panel.js +24 -0
  126. package/src/visual/detail/rd-detail-panel.js.map +1 -0
  127. package/src/visual/display/3d-bar-chart/index.d.ts +2 -0
  128. package/src/visual/display/3d-bar-chart/index.js +2 -0
  129. package/src/visual/display/3d-bar-chart/index.js.map +1 -0
  130. package/src/visual/display/3d-bar-chart/rd-three-bar-chart.d.ts +16 -0
  131. package/src/visual/display/3d-bar-chart/rd-three-bar-chart.js +24 -0
  132. package/src/visual/display/3d-bar-chart/rd-three-bar-chart.js.map +1 -0
  133. package/src/visual/display/3d-geo-globe/globe-view.d.ts +86 -0
  134. package/src/visual/display/3d-geo-globe/globe-view.js +235 -0
  135. package/src/visual/display/3d-geo-globe/globe-view.js.map +1 -0
  136. package/src/visual/display/3d-geo-globe/index.d.ts +3 -0
  137. package/src/visual/display/3d-geo-globe/index.js +3 -0
  138. package/src/visual/display/3d-geo-globe/index.js.map +1 -0
  139. package/src/visual/display/3d-geo-globe/rd-three-geo-globe.d.ts +36 -0
  140. package/src/visual/display/3d-geo-globe/rd-three-geo-globe.js +330 -0
  141. package/src/visual/display/3d-geo-globe/rd-three-geo-globe.js.map +1 -0
  142. package/src/visual/display/3d-gltf-model/index.d.ts +2 -0
  143. package/src/visual/display/3d-gltf-model/index.js +2 -0
  144. package/src/visual/display/3d-gltf-model/index.js.map +1 -0
  145. package/src/visual/display/3d-gltf-model/rd-three-gltf-model.d.ts +16 -0
  146. package/src/visual/display/3d-gltf-model/rd-three-gltf-model.js +24 -0
  147. package/src/visual/display/3d-gltf-model/rd-three-gltf-model.js.map +1 -0
  148. package/src/visual/display/3d-scatter/index.d.ts +2 -0
  149. package/src/visual/display/3d-scatter/index.js +2 -0
  150. package/src/visual/display/3d-scatter/index.js.map +1 -0
  151. package/src/visual/display/3d-scatter/rd-three-scatter-plot.d.ts +16 -0
  152. package/src/visual/display/3d-scatter/rd-three-scatter-plot.js +24 -0
  153. package/src/visual/display/3d-scatter/rd-three-scatter-plot.js.map +1 -0
  154. package/src/visual/display/3d-scene/index.d.ts +2 -0
  155. package/src/visual/display/3d-scene/index.js +2 -0
  156. package/src/visual/display/3d-scene/index.js.map +1 -0
  157. package/src/visual/display/3d-scene/rd-three-scene-point-cloud.d.ts +16 -0
  158. package/src/visual/display/3d-scene/rd-three-scene-point-cloud.js +24 -0
  159. package/src/visual/display/3d-scene/rd-three-scene-point-cloud.js.map +1 -0
  160. package/src/visual/display/geo-map/geo-map-types.d.ts +32 -0
  161. package/src/visual/display/geo-map/geo-map-types.js +10 -0
  162. package/src/visual/display/geo-map/geo-map-types.js.map +1 -0
  163. package/src/visual/display/geo-map/index.d.ts +5 -0
  164. package/src/visual/display/geo-map/index.js +5 -0
  165. package/src/visual/display/geo-map/index.js.map +1 -0
  166. package/src/visual/display/geo-map/parse-center.d.ts +5 -0
  167. package/src/visual/display/geo-map/parse-center.js +28 -0
  168. package/src/visual/display/geo-map/parse-center.js.map +1 -0
  169. package/src/visual/display/geo-map/parse-markers.d.ts +2 -0
  170. package/src/visual/display/geo-map/parse-markers.js +32 -0
  171. package/src/visual/display/geo-map/parse-markers.js.map +1 -0
  172. package/src/visual/display/geo-map/providers/create-adapter.d.ts +2 -0
  173. package/src/visual/display/geo-map/providers/create-adapter.js +11 -0
  174. package/src/visual/display/geo-map/providers/create-adapter.js.map +1 -0
  175. package/src/visual/display/geo-map/providers/google-maps-adapter.d.ts +2 -0
  176. package/src/visual/display/geo-map/providers/google-maps-adapter.js +63 -0
  177. package/src/visual/display/geo-map/providers/google-maps-adapter.js.map +1 -0
  178. package/src/visual/display/geo-map/providers/leaflet-adapter.d.ts +2 -0
  179. package/src/visual/display/geo-map/providers/leaflet-adapter.js +78 -0
  180. package/src/visual/display/geo-map/providers/leaflet-adapter.js.map +1 -0
  181. package/src/visual/display/geo-map/providers/maplibre-adapter.d.ts +2 -0
  182. package/src/visual/display/geo-map/providers/maplibre-adapter.js +71 -0
  183. package/src/visual/display/geo-map/providers/maplibre-adapter.js.map +1 -0
  184. package/src/visual/display/geo-map/providers/provider-utils.d.ts +8 -0
  185. package/src/visual/display/geo-map/providers/provider-utils.js +28 -0
  186. package/src/visual/display/geo-map/providers/provider-utils.js.map +1 -0
  187. package/src/visual/display/geo-map/rd-geo-map.d.ts +48 -0
  188. package/src/visual/display/geo-map/rd-geo-map.js +219 -0
  189. package/src/visual/display/geo-map/rd-geo-map.js.map +1 -0
  190. package/src/visual/display/index.d.ts +7 -0
  191. package/src/visual/display/index.js +21 -0
  192. package/src/visual/display/index.js.map +1 -0
  193. package/src/visual/index.d.ts +34 -0
  194. package/src/visual/index.js +102 -0
  195. package/src/visual/index.js.map +1 -0
  196. package/src/visual/input/checkbox/index.d.ts +2 -0
  197. package/src/visual/input/checkbox/index.js +2 -0
  198. package/src/visual/input/checkbox/index.js.map +1 -0
  199. package/src/visual/input/checkbox/rd-checkbox-input.d.ts +19 -0
  200. package/src/visual/input/checkbox/rd-checkbox-input.js +32 -0
  201. package/src/visual/input/checkbox/rd-checkbox-input.js.map +1 -0
  202. package/src/visual/input/date-range/index.d.ts +2 -0
  203. package/src/visual/input/date-range/index.js +2 -0
  204. package/src/visual/input/date-range/index.js.map +1 -0
  205. package/src/visual/input/date-range/rd-date-range-filter.d.ts +24 -0
  206. package/src/visual/input/date-range/rd-date-range-filter.js +42 -0
  207. package/src/visual/input/date-range/rd-date-range-filter.js.map +1 -0
  208. package/src/visual/input/number/index.d.ts +2 -0
  209. package/src/visual/input/number/index.js +2 -0
  210. package/src/visual/input/number/index.js.map +1 -0
  211. package/src/visual/input/number/rd-number-input.d.ts +22 -0
  212. package/src/visual/input/number/rd-number-input.js +36 -0
  213. package/src/visual/input/number/rd-number-input.js.map +1 -0
  214. package/src/visual/input/select/index.d.ts +2 -0
  215. package/src/visual/input/select/index.js +2 -0
  216. package/src/visual/input/select/index.js.map +1 -0
  217. package/src/visual/input/select/rd-select-input.d.ts +24 -0
  218. package/src/visual/input/select/rd-select-input.js +37 -0
  219. package/src/visual/input/select/rd-select-input.js.map +1 -0
  220. package/src/visual/input/text/index.d.ts +2 -0
  221. package/src/visual/input/text/index.js +2 -0
  222. package/src/visual/input/text/index.js.map +1 -0
  223. package/src/visual/input/text/rd-text-input.d.ts +21 -0
  224. package/src/visual/input/text/rd-text-input.js +35 -0
  225. package/src/visual/input/text/rd-text-input.js.map +1 -0
  226. package/src/visual/input/textarea/index.d.ts +2 -0
  227. package/src/visual/input/textarea/index.js +2 -0
  228. package/src/visual/input/textarea/index.js.map +1 -0
  229. package/src/visual/input/textarea/rd-textarea-input.d.ts +20 -0
  230. package/src/visual/input/textarea/rd-textarea-input.js +34 -0
  231. package/src/visual/input/textarea/rd-textarea-input.js.map +1 -0
  232. package/src/visual/kpi/index.d.ts +2 -0
  233. package/src/visual/kpi/index.js +2 -0
  234. package/src/visual/kpi/index.js.map +1 -0
  235. package/src/visual/kpi/rd-kpi-card.d.ts +18 -0
  236. package/src/visual/kpi/rd-kpi-card.js +26 -0
  237. package/src/visual/kpi/rd-kpi-card.js.map +1 -0
  238. package/src/visual/media/index.d.ts +2 -0
  239. package/src/visual/media/index.js +6 -0
  240. package/src/visual/media/index.js.map +1 -1
  241. package/src/visual/media/live-capture/index.d.ts +2 -0
  242. package/src/visual/media/live-capture/index.js +2 -0
  243. package/src/visual/media/live-capture/index.js.map +1 -0
  244. package/src/visual/media/live-capture/rd-live-capture.d.ts +16 -0
  245. package/src/visual/media/live-capture/rd-live-capture.js +23 -0
  246. package/src/visual/media/live-capture/rd-live-capture.js.map +1 -0
  247. package/src/visual/media/video-source/rd-video-source.d.ts +5 -0
  248. package/src/visual/media/video-source/rd-video-source.js +101 -18
  249. package/src/visual/media/video-source/rd-video-source.js.map +1 -1
  250. package/src/visual/media/youtube-embed/index.d.ts +3 -0
  251. package/src/visual/media/youtube-embed/index.js +3 -0
  252. package/src/visual/media/youtube-embed/index.js.map +1 -0
  253. package/src/visual/media/youtube-embed/parse-youtube-id.d.ts +10 -0
  254. package/src/visual/media/youtube-embed/parse-youtube-id.js +56 -0
  255. package/src/visual/media/youtube-embed/parse-youtube-id.js.map +1 -0
  256. package/src/visual/media/youtube-embed/rd-youtube-embed.d.ts +35 -0
  257. package/src/visual/media/youtube-embed/rd-youtube-embed.js +121 -0
  258. package/src/visual/media/youtube-embed/rd-youtube-embed.js.map +1 -0
  259. package/src/visual/news/article-detail/index.d.ts +2 -0
  260. package/src/visual/news/article-detail/index.js +2 -0
  261. package/src/visual/news/article-detail/index.js.map +1 -0
  262. package/src/visual/news/article-detail/rd-news-article-detail.d.ts +16 -0
  263. package/src/visual/news/article-detail/rd-news-article-detail.js +24 -0
  264. package/src/visual/news/article-detail/rd-news-article-detail.js.map +1 -0
  265. package/src/visual/news/language-select/index.d.ts +2 -0
  266. package/src/visual/news/language-select/index.js +2 -0
  267. package/src/visual/news/language-select/index.js.map +1 -0
  268. package/src/visual/news/language-select/rd-news-language-select.d.ts +23 -0
  269. package/src/visual/news/language-select/rd-news-language-select.js +37 -0
  270. package/src/visual/news/language-select/rd-news-language-select.js.map +1 -0
  271. package/src/visual/news/region-select/index.d.ts +2 -0
  272. package/src/visual/news/region-select/index.js +2 -0
  273. package/src/visual/news/region-select/index.js.map +1 -0
  274. package/src/visual/news/region-select/rd-news-region-select.d.ts +23 -0
  275. package/src/visual/news/region-select/rd-news-region-select.js +37 -0
  276. package/src/visual/news/region-select/rd-news-region-select.js.map +1 -0
  277. package/src/visual/news/results-table/index.d.ts +2 -0
  278. package/src/visual/news/results-table/index.js +2 -0
  279. package/src/visual/news/results-table/index.js.map +1 -0
  280. package/src/visual/news/results-table/rd-news-results-table.d.ts +16 -0
  281. package/src/visual/news/results-table/rd-news-results-table.js +33 -0
  282. package/src/visual/news/results-table/rd-news-results-table.js.map +1 -0
  283. package/src/visual/news/search-box/index.d.ts +2 -0
  284. package/src/visual/news/search-box/index.js +2 -0
  285. package/src/visual/news/search-box/index.js.map +1 -0
  286. package/src/visual/news/search-box/rd-news-search-box.d.ts +19 -0
  287. package/src/visual/news/search-box/rd-news-search-box.js +42 -0
  288. package/src/visual/news/search-box/rd-news-search-box.js.map +1 -0
  289. package/src/visual/news/type-select/index.d.ts +2 -0
  290. package/src/visual/news/type-select/index.js +2 -0
  291. package/src/visual/news/type-select/index.js.map +1 -0
  292. package/src/visual/news/type-select/rd-news-type-select.d.ts +23 -0
  293. package/src/visual/news/type-select/rd-news-type-select.js +37 -0
  294. package/src/visual/news/type-select/rd-news-type-select.js.map +1 -0
  295. package/src/visual/plugin/metric-chip/index.d.ts +2 -0
  296. package/src/visual/plugin/metric-chip/index.js +2 -0
  297. package/src/visual/plugin/metric-chip/index.js.map +1 -0
  298. package/src/visual/plugin/metric-chip/rd-metric-chip.d.ts +16 -0
  299. package/src/visual/plugin/metric-chip/rd-metric-chip.js +23 -0
  300. package/src/visual/plugin/metric-chip/rd-metric-chip.js.map +1 -0
  301. package/src/visual/plugin/status-badge/index.d.ts +2 -0
  302. package/src/visual/plugin/status-badge/index.js +2 -0
  303. package/src/visual/plugin/status-badge/index.js.map +1 -0
  304. package/src/visual/plugin/status-badge/rd-status-badge.d.ts +16 -0
  305. package/src/visual/plugin/status-badge/rd-status-badge.js +19 -0
  306. package/src/visual/plugin/status-badge/rd-status-badge.js.map +1 -0
  307. package/src/visual/skeleton/index.d.ts +2 -0
  308. package/src/visual/skeleton/index.js +2 -0
  309. package/src/visual/skeleton/index.js.map +1 -0
  310. package/src/visual/skeleton/rd-loading-skeleton.d.ts +15 -0
  311. package/src/visual/skeleton/rd-loading-skeleton.js +20 -0
  312. package/src/visual/skeleton/rd-loading-skeleton.js.map +1 -0
  313. package/src/visual/svg/icon/index.d.ts +2 -0
  314. package/src/visual/svg/icon/index.js +2 -0
  315. package/src/visual/svg/icon/index.js.map +1 -0
  316. package/src/visual/svg/icon/rd-svg-icon.d.ts +18 -0
  317. package/src/visual/svg/icon/rd-svg-icon.js +20 -0
  318. package/src/visual/svg/icon/rd-svg-icon.js.map +1 -0
  319. package/src/visual/svg/inline/index.d.ts +2 -0
  320. package/src/visual/svg/inline/index.js +2 -0
  321. package/src/visual/svg/inline/index.js.map +1 -0
  322. package/src/visual/svg/inline/rd-svg-inline.d.ts +17 -0
  323. package/src/visual/svg/inline/rd-svg-inline.js +20 -0
  324. package/src/visual/svg/inline/rd-svg-inline.js.map +1 -0
  325. package/src/visual/table/index.d.ts +2 -0
  326. package/src/visual/table/index.js +2 -0
  327. package/src/visual/table/index.js.map +1 -0
  328. package/src/visual/table/rd-data-table.d.ts +26 -0
  329. package/src/visual/table/rd-data-table.js +46 -0
  330. package/src/visual/table/rd-data-table.js.map +1 -0
  331. package/src/visual/wasm/media/index.d.ts +1 -0
  332. package/src/visual/wasm/media/index.js +2 -0
  333. package/src/visual/wasm/media/index.js.map +1 -0
  334. package/src/visual/wasm/module/index.d.ts +2 -0
  335. package/src/visual/wasm/module/index.js +2 -0
  336. package/src/visual/wasm/module/index.js.map +1 -0
  337. package/src/visual/wasm/module/rd-wasm-module.d.ts +16 -0
  338. package/src/visual/wasm/module/rd-wasm-module.js +24 -0
  339. package/src/visual/wasm/module/rd-wasm-module.js.map +1 -0
  340. package/src/visual/wasm/worker-host/index.d.ts +2 -0
  341. package/src/visual/wasm/worker-host/index.js +2 -0
  342. package/src/visual/wasm/worker-host/index.js.map +1 -0
  343. package/src/visual/wasm/worker-host/rd-wasm-worker-host.d.ts +16 -0
  344. package/src/visual/wasm/worker-host/rd-wasm-worker-host.js +24 -0
  345. package/src/visual/wasm/worker-host/rd-wasm-worker-host.js.map +1 -0
  346. package/src/wasm/wasm-media/rd-wasm-media.d.ts +10 -0
  347. package/src/wasm/wasm-media/rd-wasm-media.js +182 -41
  348. package/src/wasm/wasm-media/rd-wasm-media.js.map +1 -1
  349. package/styles/runtime.css +1609 -0
  350. package/styles/styles.css +1 -0
  351. package/styles/tokens.css +9 -0
package/browser/media.js CHANGED
@@ -1,37 +1,56 @@
1
1
  // packages/core/src/lib/media/equirect-filter.ts
2
- function buildEquirectFlatCropFilter(options) {
2
+ function buildEquirectFlatCropFilter(options, reverse = false) {
3
3
  const cropX = Math.max(0, Math.round(options.cropX));
4
4
  const cropY = Math.max(0, Math.round(options.cropY));
5
5
  const cropWidth = Math.max(2, Math.round(options.cropWidth));
6
6
  const cropHeight = Math.max(2, Math.round(options.cropHeight));
7
7
  const outputWidth = Math.max(2, Math.round(options.outputWidth));
8
8
  const outputHeight = Math.max(2, Math.round(options.outputHeight));
9
- return `crop=${cropWidth}:${cropHeight}:${cropX}:${cropY},scale=${outputWidth}:${outputHeight}`;
9
+ const filter = `crop=${cropWidth}:${cropHeight}:${cropX}:${cropY},scale=${outputWidth}:${outputHeight}`;
10
+ return reverse ? `${filter},reverse` : filter;
10
11
  }
11
- function buildEquirectRectilinearFilter(options) {
12
- const yaw = Number(options.yaw) || 0;
13
- const pitch = Number(options.pitch) || 0;
14
- const roll = Number(options.roll ?? 0) || 0;
12
+ function roundAngle(value) {
13
+ return Math.round(value * 10) / 10;
14
+ }
15
+ function buildEquirectRectilinearFilter(options, reverse = false) {
16
+ const yaw = roundAngle(Number(options.yaw) || 0);
17
+ const pitch = roundAngle(Number(options.pitch) || 0);
18
+ const roll = roundAngle(Number(options.roll ?? 0) || 0);
15
19
  const horizontalFov = Math.max(1, Number(options.horizontalFov) || 90);
16
20
  const outputWidth = Math.max(2, Math.round(options.outputWidth));
17
21
  const outputHeight = Math.max(2, Math.round(options.outputHeight));
18
- return [
22
+ const filter = [
19
23
  `v360=input=equirect:output=rectilinear:yaw=${yaw}:pitch=${pitch}:roll=${roll}:d_fov=${horizontalFov}`,
20
24
  `scale=${outputWidth}:${outputHeight}`
21
25
  ].join(",");
26
+ return reverse ? `${filter},reverse` : filter;
22
27
  }
23
28
  function buildEquirectExtractFilter(mode, options) {
29
+ const reverse = Boolean(options.reverse);
24
30
  if (mode === "rectilinear") {
25
- return buildEquirectRectilinearFilter({
26
- yaw: options.yaw ?? 0,
27
- pitch: options.pitch ?? 0,
28
- roll: options.roll ?? 0,
29
- horizontalFov: options.horizontalFov ?? 90,
31
+ return buildEquirectRectilinearFilter(
32
+ {
33
+ yaw: options.yaw ?? 0,
34
+ pitch: options.pitch ?? 0,
35
+ roll: options.roll ?? 0,
36
+ horizontalFov: options.horizontalFov ?? 90,
37
+ outputWidth: options.outputWidth,
38
+ outputHeight: options.outputHeight
39
+ },
40
+ reverse
41
+ );
42
+ }
43
+ return buildEquirectFlatCropFilter(
44
+ {
45
+ cropX: options.cropX ?? DEFAULT_EQUIRECT_FLAT_CROP.cropX,
46
+ cropY: options.cropY ?? DEFAULT_EQUIRECT_FLAT_CROP.cropY,
47
+ cropWidth: options.cropWidth ?? DEFAULT_EQUIRECT_FLAT_CROP.cropWidth,
48
+ cropHeight: options.cropHeight ?? DEFAULT_EQUIRECT_FLAT_CROP.cropHeight,
30
49
  outputWidth: options.outputWidth,
31
50
  outputHeight: options.outputHeight
32
- });
33
- }
34
- return buildEquirectFlatCropFilter(options);
51
+ },
52
+ reverse
53
+ );
35
54
  }
36
55
  var DEFAULT_EQUIRECT_SOURCE = { width: 4096, height: 2048 };
37
56
  var DEFAULT_EQUIRECT_FLAT_CROP = {
@@ -55,6 +74,9 @@ function defineRosettaElement(tagName, ctor, options) {
55
74
  }
56
75
  }
57
76
  function readNumber(value, fallback) {
77
+ if (value === null || value === void 0 || value === "") {
78
+ return fallback;
79
+ }
58
80
  const next = Number(value);
59
81
  return Number.isFinite(next) ? next : fallback;
60
82
  }
@@ -72,9 +94,13 @@ function loadTextResource(relativePath, baseUrl) {
72
94
  return cached;
73
95
  }
74
96
  const promise = (async () => {
75
- const response = await fetch(url);
97
+ const fetchUrl = new URL(relativePath, baseUrl);
98
+ if (relativePath.endsWith(".css")) {
99
+ fetchUrl.searchParams.set("raw", "");
100
+ }
101
+ const response = await fetch(fetchUrl);
76
102
  if (!response.ok) {
77
- throw new Error(`Failed to load ${url.href}: ${response.status}`);
103
+ throw new Error(`Failed to load ${fetchUrl.href}: ${response.status}`);
78
104
  }
79
105
  return response.text();
80
106
  })();
@@ -98,6 +124,9 @@ var SHADOW_ELEMENT_DIRS = {
98
124
  "rd-link-list": "visual/link-list",
99
125
  "rd-video-source": "visual/media/video-source",
100
126
  "rd-equirect-viewport": "visual/media/equirect-viewport",
127
+ "rd-youtube-embed": "visual/media/youtube-embed",
128
+ "rd-app-language-select": "domain/i18n/app-language-select",
129
+ "rd-geo-map": "visual/display/geo-map",
101
130
  "rd-wasm-media": "wasm/wasm-media",
102
131
  "rd-component-name": "catalog/component-name"
103
132
  };
@@ -157,6 +186,9 @@ var RdVideoSourceElement = class extends HTMLElement {
157
186
  this.resourcesReady = null;
158
187
  this.changeListener = null;
159
188
  }
189
+ static get observedAttributes() {
190
+ return ["label", "accept", "source-width", "source-height", "presentation", "hint"];
191
+ }
160
192
  connectedCallback() {
161
193
  if (!this.shadowRoot) {
162
194
  this.attachShadow({ mode: "open" });
@@ -171,6 +203,11 @@ var RdVideoSourceElement = class extends HTMLElement {
171
203
  this.changeListener = null;
172
204
  this.inputEl = null;
173
205
  }
206
+ attributeChangedCallback() {
207
+ if (this.resourcesReady) {
208
+ void this.resourcesReady.then(() => this.paint());
209
+ }
210
+ }
174
211
  setProperty(name, value) {
175
212
  this[name] = value;
176
213
  if (this.resourcesReady) {
@@ -192,6 +229,12 @@ var RdVideoSourceElement = class extends HTMLElement {
192
229
  get sourceHeight() {
193
230
  return readNumber(this.getAttribute("source-height"), DEFAULT_EQUIRECT_SOURCE.height);
194
231
  }
232
+ get presentation() {
233
+ return readString(this.getAttribute("presentation"), "default");
234
+ }
235
+ get hint() {
236
+ return readString(this.getAttribute("hint"), "");
237
+ }
195
238
  async mountShadow() {
196
239
  const root = this.shadowRoot;
197
240
  if (!root || root.querySelector(".video-source")) {
@@ -206,6 +249,7 @@ var RdVideoSourceElement = class extends HTMLElement {
206
249
  this.inputEl = root.querySelector('[data-ref="input"]');
207
250
  this.changeListener = () => this.handleFileSelected();
208
251
  this.inputEl?.addEventListener("change", this.changeListener);
252
+ this.paint();
209
253
  }
210
254
  paint() {
211
255
  const root = this.shadowRoot;
@@ -214,11 +258,46 @@ var RdVideoSourceElement = class extends HTMLElement {
214
258
  }
215
259
  const labelEl = root.querySelector('[data-ref="label"]');
216
260
  const metaEl = root.querySelector('[data-ref="meta"]');
261
+ const rootEl = root.querySelector('[data-ref="root"]');
262
+ const headerEl = root.querySelector('[data-ref="header"]');
263
+ const uploadEl = root.querySelector('[data-ref="upload"]');
264
+ const uploadDefaultEl = root.querySelector('[data-ref="upload-default"]');
265
+ const uploadAuthoringEl = root.querySelector('[data-ref="upload-authoring"]');
266
+ const uploadFrameEl = root.querySelector('[data-ref="upload-frame"]');
267
+ const nameEl = root.querySelector('[data-ref="file-name"]');
268
+ const hintEl = root.querySelector('[data-ref="hint"]');
269
+ const isAuthoringSource = this.presentation === "authoring-source";
270
+ const isAuthoringFrame = this.presentation === "authoring-frame";
271
+ const isAuthoring = isAuthoringSource || isAuthoringFrame;
272
+ rootEl?.classList.toggle("video-source--authoring", isAuthoringSource);
273
+ rootEl?.classList.toggle("video-source--authoring-frame", isAuthoringFrame);
274
+ if (headerEl instanceof HTMLElement) {
275
+ headerEl.hidden = isAuthoring;
276
+ }
277
+ if (nameEl instanceof HTMLElement) {
278
+ nameEl.hidden = isAuthoringFrame;
279
+ }
280
+ if (uploadEl instanceof HTMLElement) {
281
+ uploadEl.classList.toggle("video-source__upload--authoring", isAuthoringSource);
282
+ uploadEl.classList.toggle("video-source__upload--authoring-frame", isAuthoringFrame);
283
+ }
284
+ if (uploadDefaultEl instanceof HTMLElement) {
285
+ uploadDefaultEl.hidden = isAuthoring;
286
+ }
287
+ if (uploadAuthoringEl instanceof HTMLElement) {
288
+ uploadAuthoringEl.hidden = !isAuthoringSource;
289
+ }
290
+ if (uploadFrameEl instanceof HTMLElement) {
291
+ uploadFrameEl.hidden = !isAuthoringFrame;
292
+ }
293
+ if (hintEl) {
294
+ hintEl.textContent = this.hint;
295
+ }
217
296
  if (labelEl) {
218
297
  labelEl.textContent = this.label;
219
298
  }
220
299
  if (metaEl) {
221
- metaEl.textContent = `${this.sourceWidth}\xD7${this.sourceHeight}`;
300
+ metaEl.textContent = isAuthoring ? "" : `${this.sourceWidth}\xD7${this.sourceHeight}`;
222
301
  }
223
302
  const input = root.querySelector('[data-ref="input"]');
224
303
  if (input) {
@@ -231,29 +310,62 @@ var RdVideoSourceElement = class extends HTMLElement {
231
310
  return;
232
311
  }
233
312
  const nameEl = this.shadowRoot?.querySelector('[data-ref="file-name"]');
234
- if (nameEl) {
313
+ if (nameEl && this.presentation !== "authoring-frame") {
235
314
  nameEl.textContent = file.name;
236
315
  }
237
- const metadata = {
238
- name: file.name,
239
- sourceWidth: this.sourceWidth,
240
- sourceHeight: this.sourceHeight,
241
- size: file.size
242
- };
243
- this.dispatchEvent(
244
- new CustomEvent("video-file", {
245
- detail: { file, metadata },
246
- bubbles: true,
247
- composed: true
248
- })
249
- );
250
- this.dispatchEvent(
251
- new CustomEvent("metadata", {
252
- detail: metadata,
253
- bubbles: true,
254
- composed: true
255
- })
256
- );
316
+ void this.probeVideoDimensions(file).then(({ width, height }) => {
317
+ if (width > 0 && height > 0) {
318
+ this.setAttribute("source-width", String(width));
319
+ this.setAttribute("source-height", String(height));
320
+ const metaEl = this.shadowRoot?.querySelector('[data-ref="meta"]');
321
+ const isAuthoring = this.presentation === "authoring-source" || this.presentation === "authoring-frame";
322
+ if (metaEl && !isAuthoring) {
323
+ metaEl.textContent = `${width}\xD7${height}`;
324
+ }
325
+ const nameElAfter = this.shadowRoot?.querySelector('[data-ref="file-name"]');
326
+ if (nameElAfter && this.presentation === "authoring-source") {
327
+ nameElAfter.textContent = `${file.name} (${width}\xD7${height})`;
328
+ }
329
+ }
330
+ const metadata = {
331
+ name: file.name,
332
+ sourceWidth: width > 0 ? width : this.sourceWidth,
333
+ sourceHeight: height > 0 ? height : this.sourceHeight,
334
+ size: file.size
335
+ };
336
+ this.dispatchEvent(
337
+ new CustomEvent("video-file", {
338
+ detail: { file, metadata },
339
+ bubbles: true,
340
+ composed: true
341
+ })
342
+ );
343
+ this.dispatchEvent(
344
+ new CustomEvent("metadata", {
345
+ detail: metadata,
346
+ bubbles: true,
347
+ composed: true
348
+ })
349
+ );
350
+ });
351
+ }
352
+ probeVideoDimensions(file) {
353
+ return new Promise((resolve) => {
354
+ const url = URL.createObjectURL(file);
355
+ const video = document.createElement("video");
356
+ video.preload = "metadata";
357
+ video.onloadedmetadata = () => {
358
+ const width = video.videoWidth;
359
+ const height = video.videoHeight;
360
+ URL.revokeObjectURL(url);
361
+ resolve({ width, height });
362
+ };
363
+ video.onerror = () => {
364
+ URL.revokeObjectURL(url);
365
+ resolve({ width: 0, height: 0 });
366
+ };
367
+ video.src = url;
368
+ });
257
369
  }
258
370
  };
259
371
  RdVideoSourceElement.tagName = DB_VIDEO_SOURCE_TAG;
@@ -467,18 +579,328 @@ function registerRdEquirectViewport() {
467
579
  defineRosettaElement(RdEquirectViewportElement.tagName, RdEquirectViewportElement);
468
580
  }
469
581
 
582
+ // packages/web-components/src/visual/media/youtube-embed/parse-youtube-id.ts
583
+ function parseYouTubeVideoId(input) {
584
+ if (!input?.trim()) {
585
+ return null;
586
+ }
587
+ const trimmed = input.trim();
588
+ if (/^[a-zA-Z0-9_-]{11}$/.test(trimmed)) {
589
+ return trimmed;
590
+ }
591
+ try {
592
+ const url = new URL(trimmed);
593
+ const host = url.hostname.replace(/^www\./, "");
594
+ if (host === "youtu.be") {
595
+ return url.pathname.slice(1).split("/")[0] || null;
596
+ }
597
+ if (host.includes("youtube.com") || host.includes("youtube-nocookie.com")) {
598
+ const fromQuery = url.searchParams.get("v");
599
+ if (fromQuery) {
600
+ return fromQuery;
601
+ }
602
+ const embedMatch = url.pathname.match(/\/embed\/([^/?]+)/);
603
+ if (embedMatch?.[1]) {
604
+ return embedMatch[1];
605
+ }
606
+ const shortsMatch = url.pathname.match(/\/shorts\/([^/?]+)/);
607
+ if (shortsMatch?.[1]) {
608
+ return shortsMatch[1];
609
+ }
610
+ }
611
+ } catch {
612
+ return null;
613
+ }
614
+ return null;
615
+ }
616
+ function buildYouTubeEmbedUrl(videoId, params = {}) {
617
+ const search = new URLSearchParams();
618
+ if (params.start != null && params.start > 0) {
619
+ search.set("start", String(Math.floor(params.start)));
620
+ }
621
+ if (params.autoplay) {
622
+ search.set("autoplay", "1");
623
+ }
624
+ if (params.mute) {
625
+ search.set("mute", "1");
626
+ }
627
+ if (params.controls === false) {
628
+ search.set("controls", "0");
629
+ }
630
+ search.set("rel", "0");
631
+ search.set("modestbranding", "1");
632
+ const query = search.toString();
633
+ return `https://www.youtube-nocookie.com/embed/${encodeURIComponent(videoId)}${query ? `?${query}` : ""}`;
634
+ }
635
+
636
+ // packages/web-components/src/visual/media/youtube-embed/rd-youtube-embed.ts
637
+ var DB_YOUTUBE_EMBED_TAG = "rd-youtube-embed";
638
+ var RdYoutubeEmbedElement = class extends HTMLElement {
639
+ constructor() {
640
+ super(...arguments);
641
+ this.resourcesReady = null;
642
+ }
643
+ static get observedAttributes() {
644
+ return ["video-id", "url", "start", "autoplay", "mute", "controls", "embed-title"];
645
+ }
646
+ connectedCallback() {
647
+ if (!this.shadowRoot) {
648
+ this.attachShadow({ mode: "open" });
649
+ }
650
+ this.resourcesReady = this.mountShadow();
651
+ void this.resourcesReady.then(() => this.paint());
652
+ }
653
+ attributeChangedCallback() {
654
+ if (this.shadowRoot && this.resourcesReady) {
655
+ void this.resourcesReady.then(() => this.paint());
656
+ }
657
+ }
658
+ setProperty(name, value) {
659
+ this[name] = value;
660
+ if (this.resourcesReady) {
661
+ void this.resourcesReady.then(() => this.paint());
662
+ }
663
+ }
664
+ whenReady() {
665
+ return this.resourcesReady ?? Promise.resolve();
666
+ }
667
+ get videoId() {
668
+ return readString(this.getAttribute("video-id"), "");
669
+ }
670
+ set videoId(value) {
671
+ if (value) {
672
+ this.setAttribute("video-id", value);
673
+ } else {
674
+ this.removeAttribute("video-id");
675
+ }
676
+ }
677
+ get url() {
678
+ return readString(this.getAttribute("url"), "");
679
+ }
680
+ set url(value) {
681
+ if (value) {
682
+ this.setAttribute("url", value);
683
+ } else {
684
+ this.removeAttribute("url");
685
+ }
686
+ }
687
+ get start() {
688
+ return readNumber(this.getAttribute("start"), 0);
689
+ }
690
+ get autoplay() {
691
+ return this.hasAttribute("autoplay");
692
+ }
693
+ get mute() {
694
+ return this.hasAttribute("mute");
695
+ }
696
+ get controls() {
697
+ return !this.hasAttribute("controls") || this.getAttribute("controls") !== "false";
698
+ }
699
+ get embedTitle() {
700
+ return readString(this.getAttribute("embed-title"), "YouTube video");
701
+ }
702
+ set embedTitle(value) {
703
+ if (value) {
704
+ this.setAttribute("embed-title", value);
705
+ } else {
706
+ this.removeAttribute("embed-title");
707
+ }
708
+ }
709
+ async mountShadow() {
710
+ const root = this.shadowRoot;
711
+ if (!root || root.querySelector('[data-ref="root"]')) {
712
+ return;
713
+ }
714
+ const pair = await loadShadowPairForTag(
715
+ DB_YOUTUBE_EMBED_TAG,
716
+ "./rd-youtube-embed.html",
717
+ "./rd-youtube-embed.css"
718
+ );
719
+ applyShadowMount(root, pair);
720
+ }
721
+ resolveVideoId() {
722
+ return parseYouTubeVideoId(this.videoId) ?? parseYouTubeVideoId(this.url);
723
+ }
724
+ paint() {
725
+ const root = this.shadowRoot;
726
+ if (!root) {
727
+ return;
728
+ }
729
+ const iframe = root.querySelector('[data-ref="iframe"]');
730
+ const empty = root.querySelector('[data-ref="empty"]');
731
+ if (!iframe || !empty) {
732
+ return;
733
+ }
734
+ const id = this.resolveVideoId();
735
+ if (!id) {
736
+ iframe.removeAttribute("src");
737
+ iframe.hidden = true;
738
+ empty.hidden = false;
739
+ return;
740
+ }
741
+ iframe.hidden = false;
742
+ empty.hidden = true;
743
+ iframe.title = this.embedTitle;
744
+ iframe.credentialless = true;
745
+ iframe.src = buildYouTubeEmbedUrl(id, {
746
+ start: this.start,
747
+ autoplay: this.autoplay,
748
+ mute: this.mute,
749
+ controls: this.controls
750
+ });
751
+ }
752
+ };
753
+ RdYoutubeEmbedElement.tagName = DB_YOUTUBE_EMBED_TAG;
754
+ function registerRdYoutubeEmbed() {
755
+ ensureShadowBase(DB_YOUTUBE_EMBED_TAG);
756
+ defineRosettaElement(DB_YOUTUBE_EMBED_TAG, RdYoutubeEmbedElement);
757
+ }
758
+
759
+ // packages/web-components/src/lib/parse-link-items.ts
760
+ function escapeHtml(value) {
761
+ return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
762
+ }
763
+
764
+ // packages/web-components/src/lib/rosetta-atom-element.ts
765
+ var RosettaAtomElement = class extends HTMLElement {
766
+ constructor() {
767
+ super(...arguments);
768
+ this.eventsWired = false;
769
+ }
770
+ connectedCallback() {
771
+ this.paint();
772
+ if (!this.eventsWired) {
773
+ this.wireEvents();
774
+ this.eventsWired = true;
775
+ }
776
+ }
777
+ attributeChangedCallback(_name) {
778
+ if (this.isConnected) {
779
+ this.paint();
780
+ }
781
+ }
782
+ /** Complex props (arrays/objects) synced from framework hosts via setProperty. */
783
+ setProperty(name, value) {
784
+ this[name] = value;
785
+ if (value === void 0 || value === null) {
786
+ this.removeAttribute(name);
787
+ } else if (typeof value === "object") {
788
+ this.setAttribute(name, JSON.stringify(value));
789
+ } else {
790
+ this.setAttribute(name, String(value));
791
+ }
792
+ if (this.isConnected) {
793
+ this.paint();
794
+ }
795
+ }
796
+ whenReady() {
797
+ return Promise.resolve();
798
+ }
799
+ paint() {
800
+ const preserved = this.preserveLightDomChildren();
801
+ this.innerHTML = this.buildMarkup();
802
+ this.restoreLightDomChildren(preserved);
803
+ this.afterPaint();
804
+ }
805
+ preserveLightDomChildren() {
806
+ const slot = this.querySelector('[data-ref="slot"]');
807
+ if (slot) {
808
+ return [...slot.childNodes];
809
+ }
810
+ return [...this.childNodes];
811
+ }
812
+ restoreLightDomChildren(nodes) {
813
+ const slot = this.querySelector('[data-ref="slot"]');
814
+ if (!slot) {
815
+ return;
816
+ }
817
+ for (const node of nodes) {
818
+ slot.appendChild(node);
819
+ }
820
+ }
821
+ wireEvents() {
822
+ }
823
+ afterPaint() {
824
+ }
825
+ readAttr(name, fallback = "") {
826
+ return readString(this.getAttribute(name), fallback);
827
+ }
828
+ readBoolAttr(name, fallback = false) {
829
+ if (!this.hasAttribute(name)) {
830
+ return fallback;
831
+ }
832
+ const raw = this.getAttribute(name);
833
+ if (raw === "" || raw === "true") {
834
+ return true;
835
+ }
836
+ if (raw === "false") {
837
+ return false;
838
+ }
839
+ return fallback;
840
+ }
841
+ readNumAttr(name, fallback) {
842
+ return readNumber(this.getAttribute(name), fallback);
843
+ }
844
+ parseJsonAttr(name, fallback) {
845
+ const raw = this.getAttribute(name);
846
+ if (!raw) {
847
+ return fallback;
848
+ }
849
+ try {
850
+ return JSON.parse(raw);
851
+ } catch {
852
+ return fallback;
853
+ }
854
+ }
855
+ esc(value) {
856
+ return escapeHtml(value);
857
+ }
858
+ dispatchDetail(type, detail) {
859
+ this.dispatchEvent(new CustomEvent(type, { detail, bubbles: true, composed: true }));
860
+ }
861
+ };
862
+
863
+ // packages/web-components/src/visual/media/live-capture/rd-live-capture.ts
864
+ var RD_LIVE_CAPTURE_TAG = "rd-live-capture";
865
+ var RdLiveCaptureElement = class extends RosettaAtomElement {
866
+ static get observedAttributes() {
867
+ return ["label"];
868
+ }
869
+ buildMarkup() {
870
+ const label = this.readAttr("label", "Live capture");
871
+ return `
872
+ <section class="rd-media-live-capture" data-testid="rd-media-live-capture">
873
+ <span class="rd-media__label">${this.esc(label)}</span>
874
+ <button type="button" class="rd-button" data-ref="start">Start camera</button>
875
+ <div data-ref="slot"></div>
876
+ </section>`;
877
+ }
878
+ };
879
+ RdLiveCaptureElement.tagName = RD_LIVE_CAPTURE_TAG;
880
+ function registerRdLiveCapture() {
881
+ defineRosettaElement(RD_LIVE_CAPTURE_TAG, RdLiveCaptureElement);
882
+ }
883
+
470
884
  // packages/web-components/src/visual/media/index.ts
471
885
  function registerRosettaDashMediaElements() {
472
886
  registerRdVideoSource();
473
887
  registerRdEquirectViewport();
888
+ registerRdYoutubeEmbed();
889
+ registerRdLiveCapture();
474
890
  }
475
891
  export {
476
892
  DB_EQUIRECT_VIEWPORT_TAG,
477
893
  DB_VIDEO_SOURCE_TAG,
894
+ DB_YOUTUBE_EMBED_TAG,
895
+ RD_LIVE_CAPTURE_TAG,
478
896
  RdEquirectViewportElement,
897
+ RdLiveCaptureElement,
479
898
  RdVideoSourceElement,
899
+ RdYoutubeEmbedElement,
480
900
  registerRdEquirectViewport,
901
+ registerRdLiveCapture,
481
902
  registerRdVideoSource,
903
+ registerRdYoutubeEmbed,
482
904
  registerRosettaDashMediaElements
483
905
  };
484
906
  //# sourceMappingURL=media.js.map