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