@3ddv/software-division-components 1.5.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (704) hide show
  1. package/.postcssrc.json +5 -0
  2. package/.storybook/main.ts +78 -0
  3. package/.storybook/manager-head.html +1 -0
  4. package/.storybook/preview.ts +30 -0
  5. package/.storybook/tsconfig.json +25 -0
  6. package/.storybook/typings.d.ts +4 -0
  7. package/CHANGELOG.md +8 -0
  8. package/LICENSE.md +21 -0
  9. package/backoffice/checkbox/checkbox.component.css +193 -0
  10. package/backoffice/checkbox/checkbox.component.html +23 -0
  11. package/backoffice/checkbox/checkbox.component.ts +252 -0
  12. package/backoffice/checkbox/index.ts +1 -0
  13. package/backoffice/checkbox/ng-package.json +1 -0
  14. package/backoffice/checkbox/public-api.ts +1 -0
  15. package/backoffice/checkbox/story/checkbox.stories.ts +304 -0
  16. package/backoffice/datepicker/datepicker.component.css +262 -0
  17. package/backoffice/datepicker/datepicker.component.html +40 -0
  18. package/backoffice/datepicker/datepicker.component.ts +366 -0
  19. package/backoffice/datepicker/index.ts +1 -0
  20. package/backoffice/datepicker/ng-package.json +1 -0
  21. package/backoffice/datepicker/{public-api.d.ts → public-api.ts} +1 -1
  22. package/backoffice/datepicker/story/datepicker.stories.ts +32 -0
  23. package/backoffice/datepicker/ui/ui-calendar-helm/src/index.ts +14 -0
  24. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar-multi.ts +183 -0
  25. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar.ts +171 -0
  26. package/backoffice/datepicker/ui/ui-date-picker-helm/src/index.ts +16 -0
  27. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.token.ts +43 -0
  28. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.ts +177 -0
  29. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.token.ts +43 -0
  30. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.ts +167 -0
  31. package/backoffice/datepicker/ui/ui-icon-helm/src/index.ts +11 -0
  32. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.token.ts +20 -0
  33. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.ts +35 -0
  34. package/backoffice/datepicker/ui/ui-popover-helm/src/index.ts +15 -0
  35. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-close.ts +19 -0
  36. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-content.ts +30 -0
  37. package/backoffice/index.ts +1 -0
  38. package/backoffice/input/index.ts +1 -0
  39. package/backoffice/input/input.component.css +319 -0
  40. package/backoffice/input/input.component.html +51 -0
  41. package/backoffice/input/input.component.ts +497 -0
  42. package/backoffice/input/ng-package.json +1 -0
  43. package/backoffice/input/public-api.ts +2 -0
  44. package/backoffice/input/story/input.stories.ts +243 -0
  45. package/backoffice/radio/index.ts +1 -0
  46. package/backoffice/radio/ng-package.json +1 -0
  47. package/backoffice/radio/public-api.ts +1 -0
  48. package/backoffice/radio/radio.component.css +143 -0
  49. package/backoffice/radio/radio.component.html +15 -0
  50. package/backoffice/radio/radio.component.ts +154 -0
  51. package/backoffice/radio/story/radio.stories.ts +287 -0
  52. package/backoffice/table/_components/pagination/pagination.component.css +117 -0
  53. package/backoffice/table/_components/pagination/pagination.component.html +55 -0
  54. package/backoffice/table/_components/pagination/pagination.component.ts +79 -0
  55. package/backoffice/table/_components/selection-table-head/selection-table-head.component.css +0 -0
  56. package/backoffice/table/_components/selection-table-head/selection-table-head.component.html +6 -0
  57. package/backoffice/table/_components/selection-table-head/selection-table-head.component.ts +36 -0
  58. package/backoffice/table/_components/selection-table-row/selection-table-row.component.css +0 -0
  59. package/backoffice/table/_components/selection-table-row/selection-table-row.component.html +5 -0
  60. package/backoffice/table/_components/selection-table-row/selection-table-row.component.ts +12 -0
  61. package/backoffice/table/_components/sort-header-button/sort-header-button.component.css +14 -0
  62. package/backoffice/table/_components/sort-header-button/sort-header-button.component.html +11 -0
  63. package/backoffice/table/_components/sort-header-button/sort-header-button.component.ts +55 -0
  64. package/backoffice/table/index.ts +1 -0
  65. package/backoffice/table/ng-package.json +1 -0
  66. package/backoffice/table/public-api.ts +6 -0
  67. package/backoffice/table/story/table.stories.ts +364 -0
  68. package/backoffice/table/table.component.css +172 -0
  69. package/backoffice/table/table.component.html +53 -0
  70. package/backoffice/table/table.component.ts +347 -0
  71. package/backoffice/table/ui/ui-icon-helm/src/index.ts +11 -0
  72. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.token.ts +20 -0
  73. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.ts +35 -0
  74. package/backoffice/table/ui/ui-table-helm/src/index.ts +13 -0
  75. package/backoffice/table/ui/ui-table-helm/src/lib/hlm-table.ts +220 -0
  76. package/components.json +3 -0
  77. package/{README.md → dist/README.md} +11 -7
  78. package/dist/fesm2022/3ddv-software-division-components-backoffice-checkbox.mjs +208 -0
  79. package/dist/fesm2022/3ddv-software-division-components-backoffice-checkbox.mjs.map +1 -0
  80. package/dist/fesm2022/3ddv-software-division-components-backoffice-datepicker.mjs +1061 -0
  81. package/dist/fesm2022/3ddv-software-division-components-backoffice-datepicker.mjs.map +1 -0
  82. package/dist/fesm2022/3ddv-software-division-components-backoffice-input.mjs +411 -0
  83. package/dist/fesm2022/3ddv-software-division-components-backoffice-input.mjs.map +1 -0
  84. package/dist/fesm2022/3ddv-software-division-components-backoffice-radio.mjs +128 -0
  85. package/dist/fesm2022/3ddv-software-division-components-backoffice-radio.mjs.map +1 -0
  86. package/dist/fesm2022/3ddv-software-division-components-backoffice-table.mjs +658 -0
  87. package/dist/fesm2022/3ddv-software-division-components-backoffice-table.mjs.map +1 -0
  88. package/dist/fesm2022/3ddv-software-division-components-dvm-cart-item.mjs +34 -0
  89. package/dist/fesm2022/3ddv-software-division-components-dvm-cart-item.mjs.map +1 -0
  90. package/dist/fesm2022/3ddv-software-division-components-dvm-cart.mjs +101 -0
  91. package/dist/fesm2022/3ddv-software-division-components-dvm-cart.mjs.map +1 -0
  92. package/dist/fesm2022/3ddv-software-division-components-dvm-legend.mjs +77 -0
  93. package/dist/fesm2022/3ddv-software-division-components-dvm-legend.mjs.map +1 -0
  94. package/dist/fesm2022/3ddv-software-division-components-dvm-loader.mjs +34 -0
  95. package/dist/fesm2022/3ddv-software-division-components-dvm-loader.mjs.map +1 -0
  96. package/dist/fesm2022/3ddv-software-division-components-dvm-map-loader.mjs +161 -0
  97. package/dist/fesm2022/3ddv-software-division-components-dvm-map-loader.mjs.map +1 -0
  98. package/dist/fesm2022/3ddv-software-division-components-dvm-neighbors.mjs +204 -0
  99. package/dist/fesm2022/3ddv-software-division-components-dvm-neighbors.mjs.map +1 -0
  100. package/dist/fesm2022/3ddv-software-division-components-dvm-popover.mjs +1080 -0
  101. package/dist/fesm2022/3ddv-software-division-components-dvm-popover.mjs.map +1 -0
  102. package/dist/fesm2022/3ddv-software-division-components-dvm-stepper.mjs +94 -0
  103. package/dist/fesm2022/3ddv-software-division-components-dvm-stepper.mjs.map +1 -0
  104. package/dist/fesm2022/3ddv-software-division-components-dvm-ticket-info-item.mjs +34 -0
  105. package/dist/fesm2022/3ddv-software-division-components-dvm-ticket-info-item.mjs.map +1 -0
  106. package/dist/fesm2022/3ddv-software-division-components-generic-add-digital-wallet.mjs +46 -0
  107. package/dist/fesm2022/3ddv-software-division-components-generic-add-digital-wallet.mjs.map +1 -0
  108. package/dist/fesm2022/3ddv-software-division-components-generic-braintree.mjs +127 -0
  109. package/dist/fesm2022/3ddv-software-division-components-generic-braintree.mjs.map +1 -0
  110. package/dist/fesm2022/3ddv-software-division-components-generic-button.mjs +373 -0
  111. package/dist/fesm2022/3ddv-software-division-components-generic-button.mjs.map +1 -0
  112. package/dist/fesm2022/3ddv-software-division-components-generic-dialog.mjs +309 -0
  113. package/dist/fesm2022/3ddv-software-division-components-generic-dialog.mjs.map +1 -0
  114. package/dist/fesm2022/3ddv-software-division-components-generic-drawer.mjs +34 -0
  115. package/dist/fesm2022/3ddv-software-division-components-generic-drawer.mjs.map +1 -0
  116. package/dist/fesm2022/3ddv-software-division-components-generic-icon.mjs +130 -0
  117. package/dist/fesm2022/3ddv-software-division-components-generic-icon.mjs.map +1 -0
  118. package/dist/fesm2022/3ddv-software-division-components-generic-select.mjs +295 -0
  119. package/dist/fesm2022/3ddv-software-division-components-generic-select.mjs.map +1 -0
  120. package/dist/fesm2022/3ddv-software-division-components-shared.mjs +171 -0
  121. package/dist/fesm2022/3ddv-software-division-components-shared.mjs.map +1 -0
  122. package/dist/fesm2022/3ddv-software-division-components-utils.mjs +39 -0
  123. package/dist/fesm2022/3ddv-software-division-components-utils.mjs.map +1 -0
  124. package/dist/fesm2022/3ddv-software-division-components.mjs +18 -0
  125. package/dist/fesm2022/3ddv-software-division-components.mjs.map +1 -0
  126. package/dist/styles.css +2 -0
  127. package/dist/types/3ddv-software-division-components-backoffice-checkbox.d.ts +106 -0
  128. package/dist/types/3ddv-software-division-components-backoffice-datepicker.d.ts +153 -0
  129. package/dist/types/3ddv-software-division-components-backoffice-input.d.ts +203 -0
  130. package/dist/types/3ddv-software-division-components-backoffice-radio.d.ts +76 -0
  131. package/dist/types/3ddv-software-division-components-backoffice-table.d.ts +130 -0
  132. package/dist/types/3ddv-software-division-components-dvm-cart-item.d.ts +14 -0
  133. package/dist/types/3ddv-software-division-components-dvm-cart.d.ts +76 -0
  134. package/dist/types/3ddv-software-division-components-dvm-legend.d.ts +38 -0
  135. package/dist/types/3ddv-software-division-components-dvm-loader.d.ts +14 -0
  136. package/{dvm/map-loader/map-loader.component.d.ts → dist/types/3ddv-software-division-components-dvm-map-loader.d.ts} +16 -14
  137. package/dist/types/3ddv-software-division-components-dvm-neighbors.d.ts +57 -0
  138. package/dist/types/3ddv-software-division-components-dvm-popover.d.ts +456 -0
  139. package/dist/types/3ddv-software-division-components-dvm-stepper.d.ts +34 -0
  140. package/dist/types/3ddv-software-division-components-dvm-ticket-info-item.d.ts +14 -0
  141. package/dist/types/3ddv-software-division-components-generic-add-digital-wallet.d.ts +23 -0
  142. package/dist/types/3ddv-software-division-components-generic-braintree.d.ts +62 -0
  143. package/dist/types/3ddv-software-division-components-generic-button.d.ts +186 -0
  144. package/dist/types/3ddv-software-division-components-generic-dialog.d.ts +104 -0
  145. package/dist/types/3ddv-software-division-components-generic-drawer.d.ts +14 -0
  146. package/dist/types/3ddv-software-division-components-generic-icon.d.ts +38 -0
  147. package/dist/types/3ddv-software-division-components-generic-select.d.ts +110 -0
  148. package/dist/types/3ddv-software-division-components-shared.d.ts +69 -0
  149. package/dist/types/3ddv-software-division-components-utils.d.ts +3 -0
  150. package/dist/types/3ddv-software-division-components.d.ts +2 -0
  151. package/documentation.json +30473 -0
  152. package/dvm/cart/cart.component.css +103 -0
  153. package/dvm/cart/cart.component.html +31 -0
  154. package/dvm/cart/cart.component.ts +49 -0
  155. package/dvm/cart/cart.stories.ts +370 -0
  156. package/dvm/cart/cart.types.ts +8 -0
  157. package/dvm/cart/index.ts +2 -0
  158. package/dvm/cart/ng-package.json +1 -0
  159. package/dvm/cart/{public-api.d.ts → public-api.ts} +5 -1
  160. package/dvm/cart/seat-list.component.css +281 -0
  161. package/dvm/cart/seat-list.component.html +85 -0
  162. package/dvm/cart/seat-list.component.ts +76 -0
  163. package/dvm/cart/seat-list.stories.ts +337 -0
  164. package/dvm/cart-item/cart-item.component.html +1 -0
  165. package/dvm/cart-item/cart-item.component.ts +8 -0
  166. package/dvm/cart-item/cart-item.service.ts +8 -0
  167. package/dvm/cart-item/cart.stories.ts +31 -0
  168. package/dvm/cart-item/index.ts +1 -0
  169. package/dvm/cart-item/ng-package.json +1 -0
  170. package/dvm/cart-item/{public-api.d.ts → public-api.ts} +4 -1
  171. package/dvm/index.ts +1 -0
  172. package/dvm/legend/index.ts +1 -0
  173. package/dvm/legend/legend.component.css +49 -0
  174. package/dvm/legend/legend.component.html +8 -0
  175. package/dvm/legend/legend.component.ts +41 -0
  176. package/dvm/legend/legend.stories.ts +16 -0
  177. package/dvm/legend/ng-package.json +1 -0
  178. package/dvm/legend/{public-api.d.ts → public-api.ts} +4 -1
  179. package/dvm/legend/{types.d.ts → types.ts} +3 -3
  180. package/dvm/legend/ui/legend-elements/{index.d.ts → index.ts} +0 -1
  181. package/dvm/legend/ui/legend-elements/legend-elements.component.css +49 -0
  182. package/dvm/legend/ui/legend-elements/legend-elements.component.html +8 -0
  183. package/dvm/legend/ui/legend-elements/legend-elements.component.ts +41 -0
  184. package/dvm/loader/index.ts +1 -0
  185. package/dvm/loader/loader.component.html +1 -0
  186. package/dvm/loader/loader.component.ts +8 -0
  187. package/dvm/loader/loader.service.ts +8 -0
  188. package/dvm/loader/loader.stories.ts +31 -0
  189. package/dvm/loader/ng-package.json +1 -0
  190. package/dvm/loader/{public-api.d.ts → public-api.ts} +4 -1
  191. package/dvm/map-loader/index.ts +1 -0
  192. package/dvm/map-loader/map-loader.component.css +91 -0
  193. package/dvm/map-loader/map-loader.component.html +23 -0
  194. package/dvm/map-loader/map-loader.component.ts +187 -0
  195. package/dvm/map-loader/map-loader.stories.ts +16 -0
  196. package/dvm/map-loader/ng-package.json +1 -0
  197. package/dvm/map-loader/public-api.ts +5 -0
  198. package/dvm/neighbors/index.ts +1 -0
  199. package/dvm/neighbors/neighbors.component.css +158 -0
  200. package/dvm/neighbors/neighbors.component.html +45 -0
  201. package/dvm/neighbors/neighbors.component.ts +218 -0
  202. package/dvm/neighbors/ng-package.json +1 -0
  203. package/dvm/neighbors/public-api.ts +2 -0
  204. package/dvm/neighbors/story/arrow-left-black-icon.svg +3 -0
  205. package/dvm/neighbors/story/mock-data.ts +15 -0
  206. package/dvm/neighbors/story/neighbours.stories.css +12 -0
  207. package/dvm/neighbors/story/neighbours.stories.ts +117 -0
  208. package/dvm/neighbors/{types.d.ts → types.ts} +7 -7
  209. package/dvm/popover/base-popover.component.ts +70 -0
  210. package/dvm/popover/index.ts +1 -0
  211. package/dvm/popover/ng-package.json +1 -0
  212. package/dvm/popover/popover.component.css +227 -0
  213. package/dvm/popover/popover.component.html +27 -0
  214. package/dvm/popover/popover.component.ts +236 -0
  215. package/dvm/popover/popover.config.ts +30 -0
  216. package/dvm/popover/popover.service.ts +627 -0
  217. package/dvm/popover/popover.stories.ts +873 -0
  218. package/dvm/popover/{public-api.d.ts → public-api.ts} +4 -1
  219. package/dvm/popover/seat-popover/seat-popover.component.css +89 -0
  220. package/dvm/popover/seat-popover/seat-popover.component.html +40 -0
  221. package/dvm/popover/seat-popover/seat-popover.component.ts +74 -0
  222. package/dvm/popover/section-popover/section-popover.component.css +157 -0
  223. package/dvm/popover/section-popover/section-popover.component.html +58 -0
  224. package/dvm/popover/section-popover/section-popover.component.ts +106 -0
  225. package/dvm/popover/services/dvm-popover-positioner.service.ts +73 -0
  226. package/dvm/popover/services/popover-manager.service.ts +88 -0
  227. package/dvm/popover/transformers/base-popover-data-transformer.ts +36 -0
  228. package/dvm/popover/types.ts +104 -0
  229. package/dvm/stepper/index.ts +1 -0
  230. package/dvm/stepper/ng-package.json +1 -0
  231. package/dvm/stepper/public-api.ts +5 -0
  232. package/dvm/stepper/stepper.component.css +142 -0
  233. package/dvm/stepper/stepper.component.html +9 -0
  234. package/dvm/stepper/stepper.component.ts +101 -0
  235. package/dvm/stepper/{types.d.ts → types.ts} +3 -6
  236. package/dvm/ticket-info-item/index.ts +1 -0
  237. package/dvm/ticket-info-item/ng-package.json +1 -0
  238. package/dvm/ticket-info-item/{public-api.d.ts → public-api.ts} +4 -1
  239. package/dvm/ticket-info-item/ticket-info-item.component.html +1 -0
  240. package/dvm/ticket-info-item/ticket-info-item.component.ts +8 -0
  241. package/dvm/ticket-info-item/ticket-info-item.service.ts +8 -0
  242. package/dvm/ticket-info-item/ticket-info-item.stories.ts +31 -0
  243. package/generic/add-digital-wallet/add-digital-wallet.component.css +76 -0
  244. package/generic/add-digital-wallet/add-digital-wallet.component.html +46 -0
  245. package/generic/add-digital-wallet/add-digital-wallet.component.ts +44 -0
  246. package/generic/add-digital-wallet/index.ts +1 -0
  247. package/generic/add-digital-wallet/ng-package.json +1 -0
  248. package/generic/add-digital-wallet/{public-api.d.ts → public-api.ts} +0 -1
  249. package/generic/braintree/braintree.component.css +7 -0
  250. package/generic/braintree/braintree.component.ts +134 -0
  251. package/generic/braintree/index.ts +1 -0
  252. package/generic/braintree/ng-package.json +1 -0
  253. package/generic/braintree/{public-api.d.ts → public-api.ts} +4 -1
  254. package/generic/braintree/story/braintree.stories.css +3 -0
  255. package/generic/braintree/story/braintree.stories.ts +27 -0
  256. package/generic/braintree/types.ts +28 -0
  257. package/generic/button/button.component.css +305 -0
  258. package/generic/button/button.component.html +10 -0
  259. package/generic/button/button.component.ts +353 -0
  260. package/generic/button/index.ts +1 -0
  261. package/generic/button/ng-package.json +1 -0
  262. package/generic/button/public-api.ts +6 -0
  263. package/generic/button/story/button.stories.ts +384 -0
  264. package/generic/button/ui/ui-button-helm/src/index.ts +10 -0
  265. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.token.ts +22 -0
  266. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.ts +62 -0
  267. package/generic/carousel/carousel-item.component.ts +15 -0
  268. package/generic/carousel/carousel-item.directive.ts +14 -0
  269. package/generic/carousel/carousel.component.css +90 -0
  270. package/generic/carousel/carousel.component.html +13 -0
  271. package/generic/carousel/carousel.component.ts +44 -0
  272. package/generic/carousel/index.ts +1 -0
  273. package/generic/carousel/{public-api.d.ts → public-api.ts} +0 -1
  274. package/generic/carousel/ui/ui-carousel-helm/src/index.ts +29 -0
  275. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-content.ts +23 -0
  276. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-item.ts +25 -0
  277. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-next.ts +58 -0
  278. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.ts +61 -0
  279. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-slide-display.ts +36 -0
  280. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel.ts +105 -0
  281. package/generic/dialog/dialog.component.css +5 -0
  282. package/generic/dialog/dialog.component.html +3 -0
  283. package/generic/dialog/dialog.component.ts +20 -0
  284. package/generic/dialog/dialog.stories.ts +14 -0
  285. package/generic/dialog/index.ts +1 -0
  286. package/generic/dialog/libs/ui-dialog-helm/src/{index.d.ts → index.ts} +20 -8
  287. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-close.ts +20 -0
  288. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-content.ts +56 -0
  289. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-description.ts +17 -0
  290. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-footer.ts +19 -0
  291. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-header.ts +19 -0
  292. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-overlay.ts +23 -0
  293. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-title.ts +19 -0
  294. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.service.ts +59 -0
  295. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.ts +31 -0
  296. package/generic/dialog/ng-package.json +1 -0
  297. package/generic/dialog/{public-api.d.ts → public-api.ts} +5 -1
  298. package/generic/dialog/tsconfig.json +7 -0
  299. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.css +0 -0
  300. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.html +1 -0
  301. package/generic/dialog/ui/dialog-close-button/dialog-close-button.component.ts +17 -0
  302. package/generic/dialog/ui/dialog-footer/dialog-footer.component.css +0 -0
  303. package/generic/dialog/ui/dialog-footer/dialog-footer.component.html +3 -0
  304. package/generic/dialog/ui/dialog-footer/dialog-footer.component.ts +11 -0
  305. package/generic/dialog/ui/dialog-header/dialog-header.component.css +0 -0
  306. package/generic/dialog/ui/dialog-header/dialog-header.component.html +8 -0
  307. package/generic/dialog/ui/dialog-header/dialog-header.component.ts +18 -0
  308. package/generic/drawer/drawer.component.html +1 -0
  309. package/generic/drawer/drawer.component.ts +8 -0
  310. package/generic/drawer/drawer.service.ts +8 -0
  311. package/generic/drawer/drawer.stories.ts +31 -0
  312. package/generic/drawer/index.ts +1 -0
  313. package/generic/drawer/ng-package.json +1 -0
  314. package/generic/drawer/{public-api.d.ts → public-api.ts} +4 -1
  315. package/generic/icon/icon.component.css +7 -0
  316. package/generic/icon/icon.component.html +3 -0
  317. package/generic/icon/icon.component.ts +86 -0
  318. package/generic/icon/icon.stories.ts +16 -0
  319. package/generic/icon/index.ts +1 -0
  320. package/generic/icon/lib/ui-icon-helm/src/index.ts +11 -0
  321. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.ts +20 -0
  322. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.ts +36 -0
  323. package/generic/icon/ng-package.json +1 -0
  324. package/generic/icon/public-api.ts +6 -0
  325. package/generic/icon/tsconfig.json +7 -0
  326. package/generic/index.ts +1 -0
  327. package/generic/select/index.ts +1 -0
  328. package/generic/select/lib/hlm-select-content.ts +29 -0
  329. package/generic/select/lib/hlm-select-group.ts +17 -0
  330. package/generic/select/lib/hlm-select-label.ts +26 -0
  331. package/generic/select/lib/hlm-select-option.ts +37 -0
  332. package/generic/select/lib/hlm-select-scroll-down.ts +24 -0
  333. package/generic/select/lib/hlm-select-scroll-up.ts +23 -0
  334. package/generic/select/lib/hlm-select-trigger.ts +53 -0
  335. package/generic/select/lib/hlm-select-value.ts +17 -0
  336. package/generic/select/lib/hlm-select.ts +15 -0
  337. package/generic/select/lib/index.ts +38 -0
  338. package/generic/select/ng-package.json +1 -0
  339. package/generic/select/{public-api.d.ts → public-api.ts} +1 -1
  340. package/generic/select/select.component.css +65 -0
  341. package/generic/select/select.component.html +19 -0
  342. package/generic/select/select.component.ts +25 -0
  343. package/generic/select/types.ts +4 -0
  344. package/ng-package.json +10 -0
  345. package/package.json +114 -100
  346. package/public/3ddv-logo.jpg +0 -0
  347. package/public/neighbours-after.png +0 -0
  348. package/public/neighbours-before.png +0 -0
  349. package/shared/apply-theme-variables/apply-theme-variables.ts +35 -0
  350. package/shared/apply-theme-variables/{index.d.ts → index.ts} +0 -1
  351. package/shared/format-value.pipe.ts +23 -0
  352. package/shared/index.ts +1 -0
  353. package/shared/lib-provider/config-token.ts +4 -0
  354. package/shared/lib-provider/index.ts +1 -0
  355. package/shared/lib-provider/provide-sdc.ts +24 -0
  356. package/shared/lib-provider/{public-api.d.ts → public-api.ts} +0 -1
  357. package/shared/ng-package.json +1 -0
  358. package/shared/public-api.ts +6 -0
  359. package/shared/screen-observer/{index.d.ts → index.ts} +0 -1
  360. package/shared/screen-observer/provide-screen-observer.ts +17 -0
  361. package/shared/screen-observer/screen-observer.ts +56 -0
  362. package/shared/screen-observer/sizable-base.ts +70 -0
  363. package/shared/theme-provider/generic-theme.ts +1 -0
  364. package/shared/theme-provider/index.ts +1 -0
  365. package/shared/theme-provider/public-api.ts +1 -0
  366. package/shared/theme-provider/theme-provider.directive.ts +17 -0
  367. package/shared/themes/sdc.css +153 -0
  368. package/shared/types.ts +18 -0
  369. package/src/private-exports.ts +1 -0
  370. package/src/public-api.ts +20 -0
  371. package/styles.css +46 -2
  372. package/tsconfig.json +50 -0
  373. package/tsconfig.lib.prod.json +6 -0
  374. package/tsconfig.spec.json +15 -0
  375. package/tsconfig.temp.json +1 -0
  376. package/utils/index.ts +1 -0
  377. package/utils/ng-package.json +1 -0
  378. package/utils/public-api.ts +1 -0
  379. package/utils/validate-styles-for-component.ts +39 -0
  380. package/3ddv-software-division-components.d.ts.map +0 -1
  381. package/backoffice/checkbox/checkbox.component.d.ts +0 -103
  382. package/backoffice/checkbox/checkbox.component.d.ts.map +0 -1
  383. package/backoffice/checkbox/index.d.ts +0 -2
  384. package/backoffice/checkbox/index.d.ts.map +0 -1
  385. package/backoffice/checkbox/public-api.d.ts +0 -2
  386. package/backoffice/checkbox/public-api.d.ts.map +0 -1
  387. package/backoffice/datepicker/datepicker.component.d.ts +0 -150
  388. package/backoffice/datepicker/datepicker.component.d.ts.map +0 -1
  389. package/backoffice/datepicker/index.d.ts +0 -2
  390. package/backoffice/datepicker/index.d.ts.map +0 -1
  391. package/backoffice/datepicker/public-api.d.ts.map +0 -1
  392. package/backoffice/datepicker/ui/ui-calendar-helm/src/index.d.ts +0 -14
  393. package/backoffice/datepicker/ui/ui-calendar-helm/src/index.d.ts.map +0 -1
  394. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar-multi.d.ts +0 -38
  395. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar-multi.d.ts.map +0 -1
  396. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar.d.ts +0 -34
  397. package/backoffice/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar.d.ts.map +0 -1
  398. package/backoffice/datepicker/ui/ui-date-picker-helm/src/index.d.ts +0 -15
  399. package/backoffice/datepicker/ui/ui-date-picker-helm/src/index.d.ts.map +0 -1
  400. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.d.ts +0 -53
  401. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.d.ts.map +0 -1
  402. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.token.d.ts +0 -24
  403. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.token.d.ts.map +0 -1
  404. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.d.ts +0 -53
  405. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.d.ts.map +0 -1
  406. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.token.d.ts +0 -24
  407. package/backoffice/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.token.d.ts.map +0 -1
  408. package/backoffice/datepicker/ui/ui-icon-helm/src/index.d.ts +0 -10
  409. package/backoffice/datepicker/ui/ui-icon-helm/src/index.d.ts.map +0 -1
  410. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.d.ts +0 -10
  411. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.d.ts.map +0 -1
  412. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts +0 -8
  413. package/backoffice/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts.map +0 -1
  414. package/backoffice/datepicker/ui/ui-popover-helm/src/index.d.ts +0 -14
  415. package/backoffice/datepicker/ui/ui-popover-helm/src/index.d.ts.map +0 -1
  416. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-close.d.ts +0 -9
  417. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-close.d.ts.map +0 -1
  418. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-content.d.ts +0 -14
  419. package/backoffice/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-content.d.ts.map +0 -1
  420. package/backoffice/index.d.ts +0 -2
  421. package/backoffice/index.d.ts.map +0 -1
  422. package/backoffice/input/index.d.ts +0 -2
  423. package/backoffice/input/index.d.ts.map +0 -1
  424. package/backoffice/input/input.component.d.ts +0 -200
  425. package/backoffice/input/input.component.d.ts.map +0 -1
  426. package/backoffice/input/public-api.d.ts +0 -2
  427. package/backoffice/input/public-api.d.ts.map +0 -1
  428. package/backoffice/public-api.d.ts +0 -6
  429. package/backoffice/public-api.d.ts.map +0 -1
  430. package/backoffice/radio/index.d.ts +0 -2
  431. package/backoffice/radio/index.d.ts.map +0 -1
  432. package/backoffice/radio/public-api.d.ts +0 -2
  433. package/backoffice/radio/public-api.d.ts.map +0 -1
  434. package/backoffice/radio/radio.component.d.ts +0 -73
  435. package/backoffice/radio/radio.component.d.ts.map +0 -1
  436. package/backoffice/table/_components/pagination/pagination.component.d.ts +0 -18
  437. package/backoffice/table/_components/pagination/pagination.component.d.ts.map +0 -1
  438. package/backoffice/table/_components/selection-table-head/selection-table-head.component.d.ts +0 -11
  439. package/backoffice/table/_components/selection-table-head/selection-table-head.component.d.ts.map +0 -1
  440. package/backoffice/table/_components/selection-table-row/selection-table-row.component.d.ts +0 -8
  441. package/backoffice/table/_components/selection-table-row/selection-table-row.component.d.ts.map +0 -1
  442. package/backoffice/table/_components/sort-header-button/sort-header-button.component.d.ts +0 -16
  443. package/backoffice/table/_components/sort-header-button/sort-header-button.component.d.ts.map +0 -1
  444. package/backoffice/table/index.d.ts +0 -2
  445. package/backoffice/table/index.d.ts.map +0 -1
  446. package/backoffice/table/public-api.d.ts +0 -3
  447. package/backoffice/table/public-api.d.ts.map +0 -1
  448. package/backoffice/table/table.component.d.ts +0 -111
  449. package/backoffice/table/table.component.d.ts.map +0 -1
  450. package/backoffice/table/ui/ui-icon-helm/src/index.d.ts +0 -10
  451. package/backoffice/table/ui/ui-icon-helm/src/index.d.ts.map +0 -1
  452. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.d.ts +0 -10
  453. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.d.ts.map +0 -1
  454. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts +0 -8
  455. package/backoffice/table/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts.map +0 -1
  456. package/backoffice/table/ui/ui-table-helm/src/index.d.ts +0 -11
  457. package/backoffice/table/ui/ui-table-helm/src/index.d.ts.map +0 -1
  458. package/backoffice/table/ui/ui-table-helm/src/lib/hlm-table.d.ts +0 -112
  459. package/backoffice/table/ui/ui-table-helm/src/lib/hlm-table.d.ts.map +0 -1
  460. package/dvm/cart/cart.component.d.ts +0 -31
  461. package/dvm/cart/cart.component.d.ts.map +0 -1
  462. package/dvm/cart/cart.types.d.ts +0 -8
  463. package/dvm/cart/cart.types.d.ts.map +0 -1
  464. package/dvm/cart/index.d.ts +0 -2
  465. package/dvm/cart/index.d.ts.map +0 -1
  466. package/dvm/cart/public-api.d.ts.map +0 -1
  467. package/dvm/cart/seat-list.component.d.ts +0 -38
  468. package/dvm/cart/seat-list.component.d.ts.map +0 -1
  469. package/dvm/cart-item/cart-item.component.d.ts +0 -6
  470. package/dvm/cart-item/cart-item.component.d.ts.map +0 -1
  471. package/dvm/cart-item/cart-item.service.d.ts +0 -7
  472. package/dvm/cart-item/cart-item.service.d.ts.map +0 -1
  473. package/dvm/cart-item/index.d.ts +0 -2
  474. package/dvm/cart-item/index.d.ts.map +0 -1
  475. package/dvm/cart-item/public-api.d.ts.map +0 -1
  476. package/dvm/index.d.ts +0 -2
  477. package/dvm/index.d.ts.map +0 -1
  478. package/dvm/legend/index.d.ts +0 -2
  479. package/dvm/legend/index.d.ts.map +0 -1
  480. package/dvm/legend/legend.component.d.ts +0 -17
  481. package/dvm/legend/legend.component.d.ts.map +0 -1
  482. package/dvm/legend/public-api.d.ts.map +0 -1
  483. package/dvm/legend/types.d.ts.map +0 -1
  484. package/dvm/legend/ui/legend-elements/index.d.ts.map +0 -1
  485. package/dvm/legend/ui/legend-elements/legend-elements.component.d.ts +0 -16
  486. package/dvm/legend/ui/legend-elements/legend-elements.component.d.ts.map +0 -1
  487. package/dvm/loader/index.d.ts +0 -2
  488. package/dvm/loader/index.d.ts.map +0 -1
  489. package/dvm/loader/loader.component.d.ts +0 -6
  490. package/dvm/loader/loader.component.d.ts.map +0 -1
  491. package/dvm/loader/loader.service.d.ts +0 -7
  492. package/dvm/loader/loader.service.d.ts.map +0 -1
  493. package/dvm/loader/public-api.d.ts.map +0 -1
  494. package/dvm/map-loader/index.d.ts +0 -2
  495. package/dvm/map-loader/index.d.ts.map +0 -1
  496. package/dvm/map-loader/map-loader.component.d.ts.map +0 -1
  497. package/dvm/map-loader/public-api.d.ts +0 -2
  498. package/dvm/map-loader/public-api.d.ts.map +0 -1
  499. package/dvm/neighbors/index.d.ts +0 -2
  500. package/dvm/neighbors/index.d.ts.map +0 -1
  501. package/dvm/neighbors/neighbors.component.d.ts +0 -41
  502. package/dvm/neighbors/neighbors.component.d.ts.map +0 -1
  503. package/dvm/neighbors/public-api.d.ts +0 -3
  504. package/dvm/neighbors/public-api.d.ts.map +0 -1
  505. package/dvm/neighbors/types.d.ts.map +0 -1
  506. package/dvm/popover/base-popover.component.d.ts +0 -28
  507. package/dvm/popover/base-popover.component.d.ts.map +0 -1
  508. package/dvm/popover/index.d.ts +0 -2
  509. package/dvm/popover/index.d.ts.map +0 -1
  510. package/dvm/popover/popover.component.d.ts +0 -69
  511. package/dvm/popover/popover.component.d.ts.map +0 -1
  512. package/dvm/popover/popover.config.d.ts +0 -25
  513. package/dvm/popover/popover.config.d.ts.map +0 -1
  514. package/dvm/popover/popover.service.d.ts +0 -140
  515. package/dvm/popover/popover.service.d.ts.map +0 -1
  516. package/dvm/popover/public-api.d.ts.map +0 -1
  517. package/dvm/popover/seat-popover/seat-popover.component.d.ts +0 -21
  518. package/dvm/popover/seat-popover/seat-popover.component.d.ts.map +0 -1
  519. package/dvm/popover/section-popover/section-popover.component.d.ts +0 -32
  520. package/dvm/popover/section-popover/section-popover.component.d.ts.map +0 -1
  521. package/dvm/popover/services/dvm-popover-positioner.service.d.ts +0 -30
  522. package/dvm/popover/services/dvm-popover-positioner.service.d.ts.map +0 -1
  523. package/dvm/popover/services/popover-manager.service.d.ts +0 -29
  524. package/dvm/popover/services/popover-manager.service.d.ts.map +0 -1
  525. package/dvm/popover/transformers/base-popover-data-transformer.d.ts +0 -29
  526. package/dvm/popover/transformers/base-popover-data-transformer.d.ts.map +0 -1
  527. package/dvm/popover/types.d.ts +0 -79
  528. package/dvm/popover/types.d.ts.map +0 -1
  529. package/dvm/public-api.d.ts +0 -10
  530. package/dvm/public-api.d.ts.map +0 -1
  531. package/dvm/stepper/index.d.ts +0 -2
  532. package/dvm/stepper/index.d.ts.map +0 -1
  533. package/dvm/stepper/public-api.d.ts +0 -2
  534. package/dvm/stepper/public-api.d.ts.map +0 -1
  535. package/dvm/stepper/stepper.component.d.ts +0 -27
  536. package/dvm/stepper/stepper.component.d.ts.map +0 -1
  537. package/dvm/stepper/types.d.ts.map +0 -1
  538. package/dvm/ticket-info-item/index.d.ts +0 -2
  539. package/dvm/ticket-info-item/index.d.ts.map +0 -1
  540. package/dvm/ticket-info-item/public-api.d.ts.map +0 -1
  541. package/dvm/ticket-info-item/ticket-info-item.component.d.ts +0 -6
  542. package/dvm/ticket-info-item/ticket-info-item.component.d.ts.map +0 -1
  543. package/dvm/ticket-info-item/ticket-info-item.service.d.ts +0 -7
  544. package/dvm/ticket-info-item/ticket-info-item.service.d.ts.map +0 -1
  545. package/fesm2022/3ddv-software-division-components.mjs +0 -6568
  546. package/fesm2022/3ddv-software-division-components.mjs.map +0 -1
  547. package/generic/add-digital-wallet/add-digital-wallet.component.d.ts +0 -21
  548. package/generic/add-digital-wallet/add-digital-wallet.component.d.ts.map +0 -1
  549. package/generic/add-digital-wallet/index.d.ts +0 -2
  550. package/generic/add-digital-wallet/index.d.ts.map +0 -1
  551. package/generic/add-digital-wallet/public-api.d.ts.map +0 -1
  552. package/generic/braintree/braintree.component.d.ts +0 -33
  553. package/generic/braintree/braintree.component.d.ts.map +0 -1
  554. package/generic/braintree/index.d.ts +0 -2
  555. package/generic/braintree/index.d.ts.map +0 -1
  556. package/generic/braintree/public-api.d.ts.map +0 -1
  557. package/generic/braintree/types.d.ts +0 -27
  558. package/generic/braintree/types.d.ts.map +0 -1
  559. package/generic/button/button.component.d.ts +0 -152
  560. package/generic/button/button.component.d.ts.map +0 -1
  561. package/generic/button/index.d.ts +0 -2
  562. package/generic/button/index.d.ts.map +0 -1
  563. package/generic/button/public-api.d.ts +0 -2
  564. package/generic/button/public-api.d.ts.map +0 -1
  565. package/generic/button/ui/ui-button-helm/src/index.d.ts +0 -10
  566. package/generic/button/ui/ui-button-helm/src/index.d.ts.map +0 -1
  567. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.d.ts +0 -20
  568. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.d.ts.map +0 -1
  569. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.token.d.ts +0 -9
  570. package/generic/button/ui/ui-button-helm/src/lib/hlm-button.token.d.ts.map +0 -1
  571. package/generic/carousel/carousel-item.component.d.ts +0 -8
  572. package/generic/carousel/carousel-item.component.d.ts.map +0 -1
  573. package/generic/carousel/carousel.component.d.ts +0 -20
  574. package/generic/carousel/carousel.component.d.ts.map +0 -1
  575. package/generic/carousel/index.d.ts +0 -2
  576. package/generic/carousel/index.d.ts.map +0 -1
  577. package/generic/carousel/public-api.d.ts.map +0 -1
  578. package/generic/carousel/ui/ui-carousel-helm/src/index.d.ts +0 -26
  579. package/generic/carousel/ui/ui-carousel-helm/src/index.d.ts.map +0 -1
  580. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-content.d.ts +0 -10
  581. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-content.d.ts.map +0 -1
  582. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-item.d.ts +0 -10
  583. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-item.d.ts.map +0 -1
  584. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-next.d.ts +0 -15
  585. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-next.d.ts.map +0 -1
  586. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.d.ts +0 -15
  587. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-previous.d.ts.map +0 -1
  588. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-slide-display.d.ts +0 -16
  589. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel-slide-display.d.ts.map +0 -1
  590. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel.d.ts +0 -28
  591. package/generic/carousel/ui/ui-carousel-helm/src/lib/hlm-carousel.d.ts.map +0 -1
  592. package/generic/dialog/dialog.component.d.ts +0 -11
  593. package/generic/dialog/dialog.component.d.ts.map +0 -1
  594. package/generic/dialog/index.d.ts +0 -2
  595. package/generic/dialog/index.d.ts.map +0 -1
  596. package/generic/dialog/libs/ui-dialog-helm/src/index.d.ts.map +0 -1
  597. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-close.d.ts +0 -9
  598. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-close.d.ts.map +0 -1
  599. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-content.d.ts +0 -15
  600. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-content.d.ts.map +0 -1
  601. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-description.d.ts +0 -10
  602. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-description.d.ts.map +0 -1
  603. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-footer.d.ts +0 -9
  604. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-footer.d.ts.map +0 -1
  605. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-header.d.ts +0 -9
  606. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-header.d.ts.map +0 -1
  607. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-overlay.d.ts +0 -12
  608. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-overlay.d.ts.map +0 -1
  609. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-title.d.ts +0 -10
  610. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-title.d.ts.map +0 -1
  611. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.d.ts +0 -7
  612. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.d.ts.map +0 -1
  613. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.service.d.ts +0 -21
  614. package/generic/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.service.d.ts.map +0 -1
  615. package/generic/dialog/public-api.d.ts.map +0 -1
  616. package/generic/drawer/drawer.component.d.ts +0 -6
  617. package/generic/drawer/drawer.component.d.ts.map +0 -1
  618. package/generic/drawer/drawer.service.d.ts +0 -7
  619. package/generic/drawer/drawer.service.d.ts.map +0 -1
  620. package/generic/drawer/index.d.ts +0 -2
  621. package/generic/drawer/index.d.ts.map +0 -1
  622. package/generic/drawer/public-api.d.ts.map +0 -1
  623. package/generic/icon/icon.component.d.ts +0 -21
  624. package/generic/icon/icon.component.d.ts.map +0 -1
  625. package/generic/icon/index.d.ts +0 -2
  626. package/generic/icon/index.d.ts.map +0 -1
  627. package/generic/icon/lib/ui-icon-helm/src/index.d.ts +0 -10
  628. package/generic/icon/lib/ui-icon-helm/src/index.d.ts.map +0 -1
  629. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.d.ts +0 -10
  630. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.d.ts.map +0 -1
  631. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.d.ts +0 -8
  632. package/generic/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.d.ts.map +0 -1
  633. package/generic/icon/public-api.d.ts +0 -2
  634. package/generic/icon/public-api.d.ts.map +0 -1
  635. package/generic/index.d.ts +0 -2
  636. package/generic/index.d.ts.map +0 -1
  637. package/generic/public-api.d.ts +0 -10
  638. package/generic/public-api.d.ts.map +0 -1
  639. package/generic/rich-text-editor/components/editor-toolbar/editor-toolbar.component.d.ts +0 -88
  640. package/generic/rich-text-editor/components/editor-toolbar/editor-toolbar.component.d.ts.map +0 -1
  641. package/generic/rich-text-editor/components/link-modal/link-modal.component.d.ts +0 -43
  642. package/generic/rich-text-editor/components/link-modal/link-modal.component.d.ts.map +0 -1
  643. package/generic/rich-text-editor/index.d.ts +0 -2
  644. package/generic/rich-text-editor/index.d.ts.map +0 -1
  645. package/generic/rich-text-editor/models/editor-config.model.d.ts +0 -46
  646. package/generic/rich-text-editor/models/editor-config.model.d.ts.map +0 -1
  647. package/generic/rich-text-editor/models/index.d.ts +0 -3
  648. package/generic/rich-text-editor/models/index.d.ts.map +0 -1
  649. package/generic/rich-text-editor/models/toolbar-config.model.d.ts +0 -63
  650. package/generic/rich-text-editor/models/toolbar-config.model.d.ts.map +0 -1
  651. package/generic/rich-text-editor/public-api.d.ts +0 -5
  652. package/generic/rich-text-editor/public-api.d.ts.map +0 -1
  653. package/generic/rich-text-editor/rich-text-editor.component.d.ts +0 -113
  654. package/generic/rich-text-editor/rich-text-editor.component.d.ts.map +0 -1
  655. package/generic/select/index.d.ts +0 -2
  656. package/generic/select/index.d.ts.map +0 -1
  657. package/generic/select/lib/hlm-select-content.d.ts +0 -13
  658. package/generic/select/lib/hlm-select-content.d.ts.map +0 -1
  659. package/generic/select/lib/hlm-select-group.d.ts +0 -10
  660. package/generic/select/lib/hlm-select-group.d.ts.map +0 -1
  661. package/generic/select/lib/hlm-select-label.d.ts +0 -12
  662. package/generic/select/lib/hlm-select-label.d.ts.map +0 -1
  663. package/generic/select/lib/hlm-select-option.d.ts +0 -12
  664. package/generic/select/lib/hlm-select-option.d.ts.map +0 -1
  665. package/generic/select/lib/hlm-select-scroll-down.d.ts +0 -9
  666. package/generic/select/lib/hlm-select-scroll-down.d.ts.map +0 -1
  667. package/generic/select/lib/hlm-select-scroll-up.d.ts +0 -9
  668. package/generic/select/lib/hlm-select-scroll-up.d.ts.map +0 -1
  669. package/generic/select/lib/hlm-select-trigger.d.ts +0 -17
  670. package/generic/select/lib/hlm-select-trigger.d.ts.map +0 -1
  671. package/generic/select/lib/hlm-select-value.d.ts +0 -9
  672. package/generic/select/lib/hlm-select-value.d.ts.map +0 -1
  673. package/generic/select/lib/hlm-select.d.ts +0 -9
  674. package/generic/select/lib/hlm-select.d.ts.map +0 -1
  675. package/generic/select/lib/index.d.ts +0 -35
  676. package/generic/select/lib/index.d.ts.map +0 -1
  677. package/generic/select/public-api.d.ts.map +0 -1
  678. package/generic/select/select.component.d.ts +0 -14
  679. package/generic/select/select.component.d.ts.map +0 -1
  680. package/generic/select/types.d.ts +0 -5
  681. package/generic/select/types.d.ts.map +0 -1
  682. package/index.d.ts +0 -6
  683. package/public-api.d.ts +0 -8
  684. package/public-api.d.ts.map +0 -1
  685. package/shared/apply-theme-variables/apply-theme-variables.d.ts +0 -4
  686. package/shared/apply-theme-variables/apply-theme-variables.d.ts.map +0 -1
  687. package/shared/apply-theme-variables/index.d.ts.map +0 -1
  688. package/shared/lib-provider/config-token.d.ts +0 -4
  689. package/shared/lib-provider/config-token.d.ts.map +0 -1
  690. package/shared/lib-provider/index.d.ts +0 -2
  691. package/shared/lib-provider/index.d.ts.map +0 -1
  692. package/shared/lib-provider/provide-sdc.d.ts +0 -10
  693. package/shared/lib-provider/provide-sdc.d.ts.map +0 -1
  694. package/shared/lib-provider/public-api.d.ts.map +0 -1
  695. package/shared/screen-observer/index.d.ts.map +0 -1
  696. package/shared/screen-observer/provide-screen-observer.d.ts +0 -5
  697. package/shared/screen-observer/provide-screen-observer.d.ts.map +0 -1
  698. package/shared/screen-observer/screen-observer.d.ts +0 -15
  699. package/shared/screen-observer/screen-observer.d.ts.map +0 -1
  700. package/shared/types.d.ts +0 -19
  701. package/shared/types.d.ts.map +0 -1
  702. package/tailwind.config.js +0 -19
  703. package/types/sizes.type.d.ts +0 -3
  704. package/types/sizes.type.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3ddv-software-division-components-dvm-popover.mjs","sources":["../../dvm/popover/popover.config.ts","../../dvm/popover/popover.service.ts","../../dvm/popover/base-popover.component.ts","../../dvm/popover/seat-popover/seat-popover.component.ts","../../dvm/popover/seat-popover/seat-popover.component.html","../../dvm/popover/section-popover/section-popover.component.ts","../../dvm/popover/section-popover/section-popover.component.html","../../dvm/popover/types.ts","../../dvm/popover/popover.component.ts","../../dvm/popover/popover.component.html","../../dvm/popover/services/popover-manager.service.ts","../../dvm/popover/services/dvm-popover-positioner.service.ts","../../dvm/popover/transformers/base-popover-data-transformer.ts","../../dvm/popover/public-api.ts","../../dvm/popover/3ddv-software-division-components-dvm-popover.ts"],"sourcesContent":["import type { MapViewerService, Viewer3dService } from '@3ddv/ngx-dvm-internal';\nimport { InjectionToken } from '@angular/core';\nimport type { IThumbnailProvider, IPopoverPositioner, IPopoverManager } from './types';\n\n// This is a placeholder based on usage in popover.component.ts\nexport type Configuration = {\n dvmData: {\n venueId: string;\n };\n};\n\nexport type IDvmFormatter = {\n transform(value: string, ...args: unknown[]): string;\n};\n\nexport type IConfigurationService = {\n configuration: Configuration;\n};\n\nexport type IDvmService = {\n readonly viewer3dService: Viewer3dService;\n readonly viewerService: MapViewerService\n};\n\nexport const DVM_FORMATTER = new InjectionToken<IDvmFormatter>('DvmFormatter');\nexport const CONFIGURATION_SERVICE = new InjectionToken<IConfigurationService>('ConfigurationService');\nexport const DVM_SERVICE = new InjectionToken<IDvmService>('DvmService');\nexport const THUMBNAIL_PROVIDER = new InjectionToken<IThumbnailProvider>('ThumbnailProvider');\nexport const POPOVER_POSITIONER = new InjectionToken<IPopoverPositioner>('PopoverPositioner');\nexport const POPOVER_MANAGER = new InjectionToken<IPopoverManager>('PopoverManager');\n","import { DOCUMENT } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentRef,\n createComponent,\n createEnvironmentInjector,\n ElementRef,\n EnvironmentInjector,\n inject,\n Injectable,\n TemplateRef,\n} from '@angular/core';\nimport { of } from 'rxjs';\nimport {\n arrow,\n autoPlacement,\n autoUpdate,\n computePosition,\n ComputePositionConfig,\n detectOverflow,\n flip,\n hide,\n inline,\n Middleware,\n offset,\n shift,\n size,\n VirtualElement,\n} from '@floating-ui/dom';\nimport { MiddlewareOptions, PopoverInstance, PopoverOptions } from './types';\nimport { CONFIGURATION_SERVICE, DVM_FORMATTER, DVM_SERVICE } from './popover.config';\nimport type { IConfigurationService, IDvmFormatter, IDvmService } from './popover.config';\n\nexport interface PopoverContentProjection {\n thumbnail?: TemplateRef<unknown> | string;\n content?: TemplateRef<unknown> | string;\n price?: TemplateRef<unknown> | string;\n}\n\nexport interface PopoverServiceOptions {\n providers?: any[];\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PopoverService {\n // SERVICES\n private readonly appReference: ApplicationRef = inject(ApplicationRef);\n private readonly envInjector: EnvironmentInjector = inject(EnvironmentInjector);\n private readonly document: Document = inject(DOCUMENT);\n\n // POPOVER STATE\n private readonly popoverInstances: Map<string, PopoverInstance> = new Map<string, PopoverInstance>();\n private readonly popoverOptions: Partial<ComputePositionConfig> = {\n placement: 'bottom',\n strategy: 'absolute',\n middleware: [],\n };\n\n private popoverTimerTimeInMs = 300;\n private currentPopoverId = '';\n private popoverTimer: ReturnType<typeof setTimeout> | null = null;\n private popoverInstancesWithTimers: Map<string, PopoverInstance> = new Map();\n\n // Default mock providers for when no custom providers are provided\n private readonly defaultMockProviders = [\n {\n provide: CONFIGURATION_SERVICE,\n useValue: {\n configuration: {\n dvmData: {\n venueId: 'default-venue',\n },\n },\n } as IConfigurationService,\n },\n {\n provide: DVM_FORMATTER,\n useValue: {\n transform: (value: string) => value.replace(/-/g, ' ').toUpperCase(),\n } as IDvmFormatter,\n },\n {\n provide: DVM_SERVICE,\n useValue: {\n viewer3dService: {\n isInitialized: () => true,\n getThumbnail: () => of('https://via.placeholder.com/275x124/1a1a1a/ffffff?text=Default+Thumbnail'),\n },\n } as any,\n },\n ];\n\n // METHODS\n public setTimer(): void {\n const myId = this.currentPopoverId;\n this.clearTimer();\n this.popoverTimer = setTimeout(() => {\n if (this.currentPopoverId !== myId) {\n return;\n }\n this.destroyAllPopovers();\n this.popoverTimer = null;\n }, this.popoverTimerTimeInMs);\n }\n\n public clearTimer(): void {\n if (this.popoverTimer !== null) {\n clearTimeout(this.popoverTimer);\n this.popoverTimer = null;\n }\n }\n\n /**\n * Sets a timer for a specific popover instance to auto-hide it after the specified delay.\n * @param popoverId - The ID of the popover to set timer for\n * @param delayMs - Delay in milliseconds (optional, defaults to configured delay)\n */\n public setPopoverTimer(popoverId: string, delayMs?: number): void {\n this.clearPopoverTimer(popoverId);\n const delay = delayMs ?? this.popoverTimerTimeInMs;\n\n this.popoverTimer = setTimeout(() => {\n this.destroyPopover(popoverId);\n }, delay);\n }\n\n /**\n * Clears the timer for a specific popover instance.\n * @param popoverId - The ID of the popover to clear timer for\n */\n public clearPopoverTimer(popoverId: string): void {\n if (this.popoverTimer !== null) {\n clearTimeout(this.popoverTimer);\n this.popoverTimer = null;\n }\n }\n\n /**\n * Configures the default timer delay for popovers.\n * @param delayMs - Delay in milliseconds\n */\n public setTimerDelay(delayMs: number): void {\n this.popoverTimerTimeInMs = delayMs;\n }\n\n /**\n * Crea un popover y lo añade al DOM, usando un elemento de referencia y contenido HTML o string.\n * Si ya existe un popover con el mismo ID, lo destruye antes de crear uno nuevo.\n *\n * @param popoverId Identificador único del popover.\n * @param reference Elemento de referencia para posicionar el popover (HTMLElement, Element, VirtualElement o ElementRef).\n * @param content Contenido del popover (HTMLElement o string HTML).\n * @param options Opciones de configuración para el posicionamiento (placement, strategy, middleware, etc).\n * @returns Instancia del popover creado.\n */\n public createPopover(\n popoverId: string,\n reference: HTMLElement | Element | VirtualElement | (ElementRef & VirtualElement),\n content: HTMLElement | string,\n options: Partial<PopoverOptions> = {}\n ): PopoverInstance<unknown> {\n this.clearTimer();\n // Comprobamos si ya existe una instancia de Popover con el mismo ID\n this.checkPopoverInstance(popoverId ?? '');\n this.currentPopoverId = popoverId;\n\n const id: string = popoverId ?? `popover-${Date.now()}`; // ID unico del popover, proporcionado o auto\n const referenceElement: unknown = reference instanceof ElementRef ? reference.nativeElement : reference; // Elemento de referencia\n const popoverElement: HTMLElement = this.createPopoverElement(content); // Elemento Popover\n const finalOptions: Partial<ComputePositionConfig> = {\n // Opciones finales de posicionamiento\n placement: options.placement || this.popoverOptions.placement,\n strategy: options.strategy || this.popoverOptions.strategy,\n middleware: options.middleware ? this.setMiddlewares(options.middleware) : this.popoverOptions.middleware,\n };\n\n // Añadimos el Popover al DOM\n this.document.body.append(popoverElement);\n\n // Creamos la instancia del Popover\n const instance: PopoverInstance = {\n id,\n element: popoverElement,\n reference: referenceElement as HTMLElement | Element | VirtualElement,\n update: async () => this.calculatePosition(instance, finalOptions),\n };\n\n // Calculamos la posicion del Popover\n void this.calculatePosition(instance, finalOptions);\n\n // Añadimos la función de autoUpdate en la propiedad cleanup del Popover ( se llama al destruir el Popover )\n instance.cleanup = autoUpdate(referenceElement as HTMLElement, popoverElement, () => instance.update!());\n\n // Añadimos la instancia del Popover al mapa de instancias\n this.popoverInstances.set(id, instance);\n\n return instance;\n }\n\n /**\n * Crea un popover que contiene un componente Angular con soporte para proyección de contenido.\n * Si ya existe un popover con el mismo ID, lo destruye antes de crear uno nuevo.\n *\n * @param popoverId Identificador único del popover.\n * @param reference Elemento de referencia para posicionar el popover (HTMLElement, Element, VirtualElement o ElementRef).\n * @param component Clase del componente Angular a renderizar dentro del popover.\n * @param inputs Propiedades de entrada para el componente.\n * @param contentProjection Contenido proyectado para los slots del popover.\n * @param options Opciones de configuración para el posicionamiento (placement, strategy, middleware, etc).\n * @returns Instancia del popover creado, incluyendo la referencia al componente.\n */\n public createPopoverComponentWithContent<T>(\n popoverId: string,\n reference: HTMLElement | Element | VirtualElement | (ElementRef & VirtualElement),\n component: new (...arguments_: unknown[]) => T,\n inputs?: Partial<T>,\n contentProjection?: PopoverContentProjection,\n options: Partial<PopoverOptions> = {},\n serviceOptions: PopoverServiceOptions = {}\n ): PopoverInstance {\n this.clearTimer();\n // Comprobamos si ya existe una instancia de Popover con el mismo ID\n this.checkPopoverInstance(popoverId ?? '');\n this.currentPopoverId = popoverId;\n\n const referenceElement: unknown = reference instanceof ElementRef ? reference.nativeElement : reference;\n const popoverElement: HTMLElement = this.createPopoverElement();\n\n // Create a custom environment injector with the required providers\n const providers = serviceOptions.providers || this.defaultMockProviders;\n const customInjector = createEnvironmentInjector(providers, this.envInjector);\n\n const componentReference: ComponentRef<T> = createComponent(component, {\n environmentInjector: customInjector,\n hostElement: popoverElement,\n });\n\n const finalOptions: Partial<ComputePositionConfig> = {\n placement: options.placement || this.popoverOptions.placement,\n strategy: options.strategy || this.popoverOptions.strategy,\n middleware: options.middleware ? this.setMiddlewares(options.middleware) : this.popoverOptions.middleware,\n };\n\n // Añadimos el Popover al DOM\n this.document.body.append(popoverElement);\n\n // Si tiene inputs, los asignamos al componente\n if (inputs) {\n for (const [key, value] of Object.entries(inputs)) {\n componentReference.setInput(key, value);\n }\n }\n\n // Procesamos la proyección de contenido\n if (contentProjection) {\n this.processContentProjection(componentReference, contentProjection);\n }\n\n // Encendemos el detectChanges del componente para que se renderice\n componentReference.changeDetectorRef.detectChanges();\n\n // Añadimos el componente al DOM\n this.appReference.attachView(componentReference.hostView);\n\n // Creamos la instancia del Popover\n const instance: PopoverInstance = {\n id: popoverId,\n element: popoverElement,\n reference: referenceElement as HTMLElement | Element | VirtualElement,\n componentRef: componentReference as ComponentRef<unknown>,\n update: async () => this.calculatePosition(instance, finalOptions),\n };\n\n const arrowElement = document.querySelector('#arrow')!;\n finalOptions.middleware?.push(arrow({ element: arrowElement }));\n\n // Calculamos la posicion del Popover\n void this.calculatePosition(instance, finalOptions);\n\n // Proporcionamos la función de autoUpdate en la propiedad cleanup del Popover\n instance.cleanup = autoUpdate(referenceElement as HTMLElement, popoverElement, () => instance.update!());\n\n // Añadimos la instancia del Popover al mapa de instancias\n this.popoverInstances.set(popoverId, instance);\n\n return instance;\n }\n\n /**\n * Crea un popover que contiene un componente Angular, lo añade al DOM y lo posiciona.\n * Si ya existe un popover con el mismo ID, lo destruye antes de crear uno nuevo.\n *\n * @param popoverId Identificador único del popover.\n * @param reference Elemento de referencia para posicionar el popover (HTMLElement, Element, VirtualElement o ElementRef).\n * @param component Clase del componente Angular a renderizar dentro del popover.\n * @param inputs Propiedades de entrada para el componente.\n * @param options Opciones de configuración para el posicionamiento (placement, strategy, middleware, etc).\n * @returns Instancia del popover creado, incluyendo la referencia al componente.\n */\n public createPopoverComponent<T>(\n popoverId: string,\n reference: HTMLElement | Element | VirtualElement | (ElementRef & VirtualElement),\n component: new (...arguments_: unknown[]) => T,\n inputs?: Partial<T>,\n options: Partial<PopoverOptions> = {},\n serviceOptions: PopoverServiceOptions = {}\n ): PopoverInstance {\n this.clearTimer();\n // Comprobamos si ya existe una instancia de Popover con el mismo ID\n this.checkPopoverInstance(popoverId ?? '');\n this.currentPopoverId = popoverId;\n\n const referenceElement: unknown = reference instanceof ElementRef ? reference.nativeElement : reference; // Elemento de referencia\n const popoverElement: HTMLElement = this.createPopoverElement(); // Elemento Popover\n\n // Create a custom environment injector with the required providers\n const providers = serviceOptions.providers || this.defaultMockProviders;\n const customInjector = createEnvironmentInjector(providers, this.envInjector);\n\n const componentReference: ComponentRef<T> = createComponent(component, {\n environmentInjector: customInjector,\n hostElement: popoverElement,\n }); // Instancia del componente Popover\n const finalOptions: Partial<ComputePositionConfig> = {\n // Opciones de posicionamiento\n placement: options.placement || this.popoverOptions.placement,\n strategy: options.strategy || this.popoverOptions.strategy,\n middleware: options.middleware ? this.setMiddlewares(options.middleware) : this.popoverOptions.middleware,\n };\n\n // Añadimos el Popover al DOM\n this.document.body.append(popoverElement);\n\n // Si tiene inputs, los asignamos al componente\n if (inputs) {\n for (const [key, value] of Object.entries(inputs)) {\n componentReference.setInput(key, value);\n }\n }\n\n // Encendemos el detectChanges del componente para que se renderice\n componentReference.changeDetectorRef.detectChanges();\n\n // Añadimos el componente al DOM\n this.appReference.attachView(componentReference.hostView);\n\n // Creamos la instancia del Popover\n const instance: PopoverInstance = {\n id: popoverId,\n element: popoverElement,\n reference: referenceElement as HTMLElement | Element | VirtualElement,\n componentRef: componentReference as ComponentRef<unknown>,\n update: async () => this.calculatePosition(instance, finalOptions),\n };\n\n const arrowElement = document.querySelector('#arrow')!;\n finalOptions.middleware?.push(arrow({ element: arrowElement }));\n\n // Calculamos la posicion del Popover\n void this.calculatePosition(instance, finalOptions);\n\n // Proporcionamos la función de autoUpdate en la propiedad cleanup del Popover ( se llama al destruir el Popover )\n instance.cleanup = autoUpdate(referenceElement as HTMLElement, popoverElement, () => instance.update!());\n\n // Añadimos la instancia del Popover al mapa de instancias\n this.popoverInstances.set(popoverId, instance);\n\n return instance;\n }\n\n /**\n * Destruye un popover existente por su ID, eliminando su elemento del DOM y limpiando recursos.\n *\n * @param id Identificador del popover a destruir.\n */\n public destroyPopover(id: string): void {\n // Comprobamos si existe la instancia del Popover\n const instance: PopoverInstance | undefined = this.popoverInstances.get(id);\n\n if (!instance) {\n return;\n }\n\n // Llamamos a la función de cleanup para eliminar el autoUpdate\n instance.cleanup?.();\n\n // Si hay comoponente, lo eliminamos del DOM\n if (instance.componentRef) {\n this.appReference.detachView(instance.componentRef.hostView);\n instance.componentRef.destroy();\n }\n\n // Si hay elemento, lo eliminamos del DOM\n if (instance.element && instance.element.parentNode) {\n instance.element.remove();\n }\n\n // Eliminamos instancia del mapa\n this.popoverInstances.delete(id);\n }\n\n /**\n * Destruye todos los popovers existentes, eliminando sus elementos del DOM y limpiando recursos.\n */\n public destroyAllPopovers(): void {\n for (const id of this.popoverInstances.keys()) {\n this.destroyPopover(id);\n }\n }\n /**\n * Crea el elemento HTML base del popover, opcionalmente con contenido.\n *\n * @param content Contenido a insertar en el popover (string, HTMLElement o ElementRef).\n * @returns Elemento HTML del popover.\n */\n private createPopoverElement(content?: string | HTMLElement | ElementRef): HTMLElement {\n // Creamos el elemento Popover\n const popoverElement: HTMLElement = this.document.createElement('div');\n\n // Añadimos la clase Popover al elemento\n popoverElement.classList.add('popover');\n\n // Si se proporciona contenido, lo añadimos al Popover, si no, lo dejamos vacío\n if (!content) {\n return popoverElement;\n }\n\n if (typeof content === 'string') {\n popoverElement.innerHTML = content;\n } else {\n const element = content instanceof ElementRef ? content.nativeElement : content;\n\n popoverElement.append(element as HTMLElement);\n }\n\n return popoverElement;\n }\n\n /**\n * Verifica si existe una instancia de popover con el ID dado y la destruye si es así.\n *\n * @param id Identificador del popover a comprobar.\n */\n private checkPopoverInstance(id: string): void {\n if (this.popoverInstances.has(id)) {\n this.destroyPopover(id);\n }\n }\n\n /**\n * Calcula y aplica la posición del popover respecto a su elemento de referencia,\n * usando las opciones de Floating UI.\n *\n * @param instance Instancia del popover a posicionar.\n * @param options Opciones de configuración para el posicionamiento.\n */\n private async calculatePosition(\n instance: PopoverInstance,\n options: Partial<ComputePositionConfig> = {}\n ): Promise<void> {\n // Desestructuramos las opciones\n const { placement, strategy, middleware } = options;\n\n try {\n // Calculamos la posicion del Popover en base a la referencia y el elemento Popover y las opciones proporcionadas\n const { x, y } = await computePosition(instance.reference, instance.element, {\n placement,\n strategy,\n middleware,\n });\n\n // Asignamos la posicion al elemento Popover\n Object.assign(instance.element.style, {\n position: strategy,\n top: `${y}px`,\n left: `${x}px`,\n });\n } catch (error) {\n console.error('Error positioning popover', error);\n }\n }\n\n /**\n * Procesa la proyección de contenido para el componente popover.\n *\n * @param componentRef Referencia al componente creado\n * @param contentProjection Contenido a proyectar en los slots\n */\n private processContentProjection<T>(\n componentRef: ComponentRef<T>,\n contentProjection: PopoverContentProjection\n ): void {\n const componentInstance = componentRef.instance as any;\n\n // Procesamos cada slot de contenido\n if (contentProjection.thumbnail) {\n this.setContentProjection(componentInstance, 'hasThumbnailProjection', contentProjection.thumbnail);\n }\n\n if (contentProjection.content) {\n this.setContentProjection(componentInstance, 'hasContentProjection', contentProjection.content);\n }\n\n if (contentProjection.price) {\n this.setContentProjection(componentInstance, 'hasPriceProjection', contentProjection.price);\n }\n }\n\n /**\n * Establece la proyección de contenido para un slot específico.\n *\n * @param componentInstance Instancia del componente\n * @param projectionFlag Flag que indica si hay proyección\n * @param content Contenido a proyectar\n */\n private setContentProjection(\n componentInstance: any,\n projectionFlag: string,\n content: TemplateRef<unknown> | string\n ): void {\n // Marcamos que hay proyección de contenido\n componentInstance[projectionFlag] = true;\n\n // Si es un TemplateRef, lo almacenamos para uso posterior\n if (content instanceof TemplateRef) {\n componentInstance[`${projectionFlag}Template`] = content;\n } else if (typeof content === 'string') {\n // Si es string, lo almacenamos como HTML\n componentInstance[`${projectionFlag}Html`] = content;\n }\n }\n\n /**\n * Set Middlewares\n * Método que recibe un objeto de opciones de middleware y devuelve un array de middlewares cargados con sus opciones.\n *\n * Para ello, necesitamos establecer un orden de aplicación de los middlewares, ya que la computación de la posición\n * depende del estado de los middlewares aplicados anteriormente. Además, como son funciones, hacemos switch para\n * cargar el middleware correspondiente en cada caso a excepción de detectOverflow, que es un middleware especial\n * que no se aplica directamente, sino que se ejecuta como una función asíncrona sobre el estado devuelto de los middlewares (si los hay).\n *\n * @param middleware\n * @returns {Middleware[]}\n */\n private setMiddlewares(middleware: MiddlewareOptions): Middleware[] {\n // Array de Middlewares y orden de aplicación de los mismos\n // https://floating-ui.com/docs/middleware#ordering\n\n const middlewares: Middleware[] = [];\n const order: (keyof MiddlewareOptions)[] = [\n 'offset',\n 'shift',\n 'flip',\n 'arrow',\n 'size',\n 'autoPlacement',\n 'inline',\n 'hide',\n 'detectOverflow',\n ];\n\n // Recorremos el array de orden y aplicamos los middlewares en el orden indicado\n for (const key of order as (keyof MiddlewareOptions)[]) {\n if (!middleware[key]) {\n continue;\n }\n\n switch (key) {\n case 'offset': {\n middlewares.push(offset(middleware.offset));\n break;\n }\n\n case 'shift': {\n middlewares.push(shift(middleware.shift));\n break;\n }\n\n case 'flip': {\n middlewares.push(flip(middleware.flip));\n break;\n }\n\n case 'arrow': {\n middlewares.push(arrow(middleware.arrow!));\n break;\n }\n\n case 'size': {\n middlewares.push(size(middleware.size));\n break;\n }\n\n case 'autoPlacement': {\n middlewares.push(autoPlacement(middleware.autoPlacement));\n break;\n }\n\n case 'hide': {\n middlewares.push(hide(middleware.hide));\n break;\n }\n\n case 'inline': {\n middlewares.push(inline(middleware.inline));\n break;\n }\n\n case 'detectOverflow': {\n const overflowMiddleware: Middleware = {\n name: 'detectOverflow',\n async fn(state) {\n await detectOverflow(state, middleware.detectOverflow);\n return {};\n },\n };\n middlewares.push(overflowMiddleware);\n break;\n }\n }\n }\n\n return middlewares;\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { PopoverService } from './popover.service';\n\n/**\n * Base component for popovers that provides timer functionality.\n * Extend this component to create timer-aware popovers.\n */\n@Component({\n template: '', // Abstract component\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport abstract class BasePopoverComponent implements OnInit, OnDestroy {\n @Input() popoverId: string = '';\n @Input() autoHideDelay: number = 300; // milliseconds\n @Input() enableAutoHide: boolean = true;\n\n @Output() mouseEnter = new EventEmitter<MouseEvent>();\n @Output() mouseLeave = new EventEmitter<MouseEvent>();\n @Output() popoverHidden = new EventEmitter<void>();\n\n protected readonly popoverService = inject(PopoverService);\n protected readonly cdr = inject(ChangeDetectorRef);\n\n private isMouseOver = false;\n\n ngOnInit(): void {\n if (this.enableAutoHide && this.popoverId) {\n this.startAutoHideTimer();\n }\n }\n\n ngOnDestroy(): void {\n if (this.popoverId) {\n this.popoverService.clearPopoverTimer(this.popoverId);\n }\n }\n\n protected onMouseEnter(event: MouseEvent): void {\n this.isMouseOver = true;\n this.clearAutoHideTimer();\n this.mouseEnter.emit(event);\n }\n\n protected onMouseLeave(event: MouseEvent): void {\n this.isMouseOver = false;\n if (this.enableAutoHide) {\n this.startAutoHideTimer();\n }\n this.mouseLeave.emit(event);\n }\n\n protected hidePopover(): void {\n if (this.popoverId) {\n this.popoverService.destroyPopover(this.popoverId);\n this.popoverHidden.emit();\n }\n }\n\n private startAutoHideTimer(): void {\n if (this.popoverId && !this.isMouseOver) {\n this.popoverService.setPopoverTimer(this.popoverId, this.autoHideDelay);\n }\n }\n\n private clearAutoHideTimer(): void {\n if (this.popoverId) {\n this.popoverService.clearPopoverTimer(this.popoverId);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { CommonModule, CurrencyPipe } from '@angular/common';\nimport { type SeatPopoverData } from '../types';\nimport { THUMBNAIL_PROVIDER } from '../popover.config';\nimport { BasePopoverComponent } from '../base-popover.component';\n\n@Component({\n selector: 'sdc-seat-popover',\n templateUrl: './seat-popover.component.html',\n styleUrl: './seat-popover.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, CurrencyPipe],\n})\nexport class SeatPopoverComponent extends BasePopoverComponent implements OnInit {\n @Input() data!: SeatPopoverData;\n @Input() showLoader: boolean = true;\n\n private readonly thumbnailProvider = inject(THUMBNAIL_PROVIDER, { optional: true });\n protected override readonly cdr = inject(ChangeDetectorRef);\n\n protected thumbnail?: string;\n protected isLoadingThumbnail = true;\n\n override ngOnInit(): void {\n super.ngOnInit(); // Initialize base component timer logic\n\n if (this.data.thumbnail) {\n this.thumbnail = this.data.thumbnail;\n this.isLoadingThumbnail = false;\n } else if (this.thumbnailProvider && this.showLoader) {\n this.loadThumbnail();\n }\n }\n\n private loadThumbnail(): void {\n this.thumbnailProvider!.getThumbnail(this.data.id).subscribe({\n next: url => {\n this.thumbnail = url;\n this.isLoadingThumbnail = false;\n this.cdr.markForCheck();\n },\n error: () => {\n this.isLoadingThumbnail = false;\n this.cdr.markForCheck();\n },\n });\n }\n\n protected get formattedSection(): string {\n return this.data.section.includes('_') ? this.data.section.split('_')[1].split('-')[0] : this.data.section;\n }\n\n protected get formattedSeat(): string {\n return this.data.seat.split('-')[2] || this.data.seat;\n }\n\n protected onEnter(event: MouseEvent): void {\n this.onMouseEnter(event);\n }\n\n protected onLeave(event: MouseEvent): void {\n this.onMouseLeave(event);\n }\n}\n","<div\n (mouseenter)=\"onEnter($event)\"\n (mouseleave)=\"onLeave($event)\"\n class=\"sdc-seat-popover\">\n <div class=\"sdc-popover-thumbnail\">\n @if (isLoadingThumbnail && showLoader) {\n <div class=\"sdc-popover-loader\">\n <div class=\"sdc-spinner\"></div>\n </div>\n }\n @if (thumbnail && !isLoadingThumbnail) {\n <div class=\"sdc-thumbnail-image\" [style.background-image]=\"'url(' + thumbnail + ')'\"></div>\n }\n </div>\n\n <div class=\"sdc-popover-content\">\n <div class=\"sdc-popover-grid\">\n <div class=\"sdc-popover-col-left\">\n <h5 class=\"sdc-popover-label\">\n <span class=\"sdc-popover-label-text\">Section:</span>\n {{ formattedSection }}\n </h5>\n <h5 class=\"sdc-popover-label\">\n <span class=\"sdc-popover-label-text\">Row:</span>\n {{ data.row }}\n </h5>\n </div>\n <div class=\"sdc-popover-col-right\">\n <h5 class=\"sdc-popover-label\">\n <span class=\"sdc-popover-label-text\">Seat:</span>\n {{ formattedSeat }}\n </h5>\n <h5 class=\"sdc-popover-label\">\n <span class=\"sdc-popover-label-text\">Price:</span>\n {{ data.price | currency: 'USD' }}\n </h5>\n </div>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { type SectionPopoverData } from '../types';\nimport { THUMBNAIL_PROVIDER } from '../popover.config';\nimport { BasePopoverComponent } from '../base-popover.component';\n\n@Component({\n selector: 'sdc-section-popover',\n templateUrl: './section-popover.component.html',\n styleUrl: './section-popover.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule],\n})\nexport class SectionPopoverComponent extends BasePopoverComponent implements OnInit {\n @Input() data!: SectionPopoverData;\n @Input() showLoader: boolean = true;\n @Input() showBestAvailable: boolean = false;\n @Input() showOpenSeatMap: boolean = true;\n @Input() excludeSeatMapSections: string[] = ['S_BLCHADA', 'S_Bleacher'];\n @Input() isTicketFeeEnabled: boolean = false;\n\n @Output() load3dView = new EventEmitter<void>();\n @Output() selectForBA = new EventEmitter<boolean>();\n @Output() openSeatMap = new EventEmitter<void>();\n\n private readonly thumbnailProvider = inject(THUMBNAIL_PROVIDER, { optional: true });\n protected override readonly cdr = inject(ChangeDetectorRef);\n\n protected thumbnail?: string;\n protected isLoadingThumbnail = true;\n\n override ngOnInit(): void {\n super.ngOnInit(); // Initialize base component timer logic\n\n if (this.data.thumbnail) {\n this.thumbnail = this.data.thumbnail;\n this.isLoadingThumbnail = false;\n } else if (this.thumbnailProvider && this.showLoader) {\n this.loadThumbnail();\n }\n }\n\n private loadThumbnail(): void {\n this.thumbnailProvider!.getThumbnail(this.data.id).subscribe({\n next: url => {\n this.thumbnail = url;\n this.isLoadingThumbnail = false;\n this.cdr.markForCheck();\n },\n error: () => {\n this.isLoadingThumbnail = false;\n this.cdr.markForCheck();\n },\n });\n }\n\n protected get priceRangeDisplay(): string {\n const { min, max } = this.data.priceRange;\n return min === max ? min.toString() : `${min} - ${max}`;\n }\n\n protected get priceRangeWithFees(): string | undefined {\n if (this.isTicketFeeEnabled && this.data.priceRangeWithFees) {\n return this.data.priceRangeWithFees;\n }\n return undefined;\n }\n\n protected get shouldShowSeatMapButton(): boolean {\n return (\n this.showOpenSeatMap &&\n !this.excludeSeatMapSections.includes(this.data.section) &&\n this.data.type !== 'general_admission'\n );\n }\n\n protected onEnter(event: MouseEvent): void {\n this.onMouseEnter(event);\n }\n\n protected onLeave(event: MouseEvent): void {\n this.onMouseLeave(event);\n }\n\n protected onLoad3dView(): void {\n this.load3dView.emit();\n }\n\n protected onSelectForBA(): void {\n this.selectForBA.emit(!this.data.isSelectedForBA);\n }\n\n protected onOpenSeatMap(): void {\n this.openSeatMap.emit();\n }\n}\n","<div (mouseenter)=\"onEnter($event)\" (mouseleave)=\"onLeave($event)\" class=\"sdc-section-popover\">\n <div class=\"sdc-popover-thumbnail\">\n @if (isLoadingThumbnail && showLoader) {\n <div class=\"sdc-popover-loader\">\n <div class=\"sdc-spinner\"></div>\n </div>\n }\n @if (thumbnail && !isLoadingThumbnail) {\n <div\n class=\"sdc-thumbnail-image sdc-thumbnail-clickable\"\n [style.background-image]=\"'url(' + thumbnail + ')'\"\n (click)=\"onLoad3dView()\">\n <span class=\"sdc-thumbnail-overlay-text\">Click to open view</span>\n </div>\n }\n </div>\n\n <div class=\"sdc-popover-content\">\n <div class=\"sdc-popover-grid\">\n <div class=\"sdc-popover-col-left\">\n <h5 class=\"sdc-popover-label\">\n <span class=\"sdc-popover-label-text\">Section:</span>\n {{ data.section }}\n </h5>\n @if (isTicketFeeEnabled && priceRangeWithFees) {\n <h5 class=\"sdc-popover-label\">\n <span class=\"sdc-popover-label-text\">Price:</span> $ {{ priceRangeWithFees }}\n </h5>\n } @else {\n <h5 class=\"sdc-popover-label\">\n <span class=\"sdc-popover-label-text\">Price:</span> $ {{ priceRangeDisplay }}\n </h5>\n }\n </div>\n <div class=\"sdc-popover-col-right\">\n <h5 class=\"sdc-popover-label\">\n <span class=\"sdc-popover-label-text\">Available Seats:</span>\n {{ data.availableQuantity }}\n </h5>\n <h5 class=\"sdc-popover-label\">\n <span class=\"sdc-popover-label-text\">Available ADA Seats:</span>\n {{ data.adaQuantity }}\n </h5>\n </div>\n </div>\n\n <div class=\"sdc-popover-actions\">\n @if (showBestAvailable) {\n <button class=\"sdc-popover-btn sdc-popover-btn-primary sdc-popover-btn-mobile-only\" (click)=\"onSelectForBA()\">\n {{ data.isSelectedForBA ? 'Deselect' : 'Select' }}\n </button>\n }\n @if (shouldShowSeatMapButton) {\n <button class=\"sdc-popover-btn sdc-popover-btn-secondary\" (click)=\"onOpenSeatMap()\">Open Seat Map</button>\n }\n </div>\n </div>\n</div>\n","import { ComponentRef, ElementRef, Type, ViewContainerRef } from '@angular/core';\nimport {\n ArrowOptions,\n AutoPlacementOptions,\n ComputePositionConfig,\n DetectOverflowOptions,\n FlipOptions,\n HideOptions,\n InlineOptions,\n OffsetOptions,\n Placement,\n ShiftOptions,\n SizeOptions,\n VirtualElement,\n} from '@floating-ui/dom';\nimport { Observable } from 'rxjs';\nimport type { MapViewerNode } from '@3ddv/dvm-internal';\n\nexport type PopoverPlacement = Placement;\n\nexport interface PopoverInstance<T = unknown> {\n id: string;\n element: HTMLElement;\n reference: HTMLElement | Element | VirtualElement | (ElementRef & VirtualElement);\n componentRef?: ComponentRef<T>;\n update?: () => void;\n cleanup?: () => void;\n}\n\nexport interface PopoverOptions extends Omit<ComputePositionConfig, 'middleware'> {\n middleware?: MiddlewareOptions;\n}\n\nexport interface MiddlewareOptions {\n offset?: OffsetOptions;\n shift?: ShiftOptions;\n flip?: FlipOptions;\n arrow?: ArrowOptions;\n size?: SizeOptions;\n autoPlacement?: AutoPlacementOptions;\n hide?: HideOptions;\n inline?: InlineOptions;\n detectOverflow?: DetectOverflowOptions;\n}\n\nexport enum AppNodes {\n Section = 'section',\n Row = 'row',\n Seat = 'seat',\n Ga = 'general_admission',\n Vip = 'vip',\n}\n\n// Seat popover data interface\nexport interface SeatPopoverData {\n id: string;\n section: string;\n row: string;\n seat: string;\n price: number;\n thumbnail?: string;\n}\n\n// Section popover data interface\nexport interface SectionPopoverData {\n id: string;\n section: string;\n priceRange: { min: number; max: number };\n availableQuantity: number;\n adaQuantity: number;\n thumbnail?: string;\n type?: 'section' | 'general_admission';\n isSelectedForBA?: boolean;\n priceRangeWithFees?: string;\n}\n\n// Thumbnail provider interface\nexport interface IThumbnailProvider {\n getThumbnail(nodeId: string): Observable<string>;\n}\n\n// Popover positioning interface\nexport interface IPopoverPositioner {\n calculatePlacement(node: MapViewerNode, container: HTMLElement): Placement;\n calculateOffset(node: MapViewerNode): number[];\n}\n\n// Popover manager interfaces\nexport interface IPopoverManager {\n showPopover<T>(config: PopoverConfig<T>): void;\n hidePopover(nodeId: string): void;\n clearAll(): void;\n}\n\nexport interface PopoverConfig<T> {\n nodeId: string;\n node: MapViewerNode;\n container: ViewContainerRef;\n tooltip: HTMLElement;\n containerElement: HTMLElement;\n component: Type<T>;\n componentInputs?: Partial<T>;\n eventHandlers?: Record<string, (...args: any[]) => void>;\n}\n","import type { MapViewerNode, Viewer3dLoadView3dOptions } from '@3ddv/dvm-internal';\nimport type { Viewer3dService } from '@3ddv/ngx-dvm-internal';\nimport { ThemeClass } from '@3ddv/software-division-components/shared';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n inject,\n input,\n output,\n} from '@angular/core';\nimport {\n CONFIGURATION_SERVICE,\n DVM_FORMATTER,\n DVM_SERVICE,\n IConfigurationService,\n IDvmFormatter,\n IDvmService,\n} from './popover.config';\nimport { PopoverService } from './popover.service';\nimport { SeatPopoverComponent } from './seat-popover/seat-popover.component';\nimport { SectionPopoverComponent } from './section-popover/section-popover.component';\nimport { AppNodes, SeatPopoverData, SectionPopoverData } from './types';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'sdc-map-popover',\n standalone: true,\n imports: [CommonModule, SeatPopoverComponent, SectionPopoverComponent],\n templateUrl: './popover.component.html',\n styleUrl: './popover.component.css',\n})\nexport class PopoverComponent implements OnInit {\n // INPUTS\n /**\n * The node to attach the popover to.\n */\n @Input()\n public readonly node!: MapViewerNode;\n\n /**\n * The current theme applied to the component.\n */\n public readonly theme = input<ThemeClass>('theme-sdc');\n\n // OUTPUTS\n /**\n * Emitted when the 3D view should be loaded.\n */\n public readonly load3dView = output<{ node: MapViewerNode; section: string | undefined }>();\n\n /**\n * Emitted when a section should be selected/deselected for best available.\n */\n public readonly selectSectionForBA = output<{\n node: MapViewerNode;\n section: string | undefined;\n selected: boolean;\n }>();\n\n /**\n * Emitted when the seat map should be opened.\n */\n public readonly openSeatMap = output<{ node: MapViewerNode; section: string | undefined }>();\n\n // SERVICES\n private readonly dvm: IDvmService = inject(DVM_SERVICE);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly format: IDvmFormatter = inject(DVM_FORMATTER);\n private readonly configurationService: IConfigurationService = inject(CONFIGURATION_SERVICE);\n protected readonly popoverService = inject(PopoverService);\n\n // COMPONENT STATE\n protected readonly Nodes: typeof AppNodes = AppNodes;\n protected thumbnail!: string | undefined;\n protected section!: string | undefined;\n protected row!: string | undefined;\n protected seat!: string | undefined;\n protected prices!: string[] | undefined;\n\n // Section popover specific properties\n protected availableQuantity: number = 0;\n protected adaQuantity: number = 0;\n protected includedSectionForBA: boolean = false;\n\n // Transformed data for new components\n protected get seatData(): SeatPopoverData | null {\n if (this.node?.type === AppNodes.Seat) {\n return this.transformToSeatData();\n }\n return null;\n }\n\n protected get sectionData(): SectionPopoverData | null {\n if (this.node?.type === AppNodes.Section || this.node?.type === AppNodes.Ga) {\n return this.transformToSectionData();\n }\n return null;\n }\n\n // LC METHODS\n public ngOnInit(): void {\n this.initComponent();\n }\n\n protected onEnter(_: MouseEvent): void {\n this.popoverService.clearTimer();\n }\n\n protected onLeave(_: MouseEvent): void {\n this.popoverService.setTimer();\n }\n\n // GETTERS\n protected get price(): string | undefined {\n return this.prices // Existen precios?\n ? this.prices.length > 1 // Existen precios, pero más de uno?\n ? Math.min(...this.prices.map(price => Number.parseInt(price))).toString()\n : this.prices[0] // Si lo hay, sacamos el minimo, si no seteamos el primero ( y unico xd )\n : undefined; // No existen precios\n }\n\n protected get priceRange(): string {\n if (!this.prices || this.prices.length === 0) {\n return '';\n }\n\n let priceRange = this.prices[0];\n if (this.prices.length > 1 && this.prices[0] !== this.prices[1]) {\n priceRange = `${this.prices[0]} - ${this.prices[1]}`;\n }\n return priceRange;\n }\n\n // METHODS\n private initComponent(): void {\n this.setTexts();\n this.getThumbnail();\n // this.getPrice();\n }\n\n private setTexts(): void {\n const nodeId: string[] = this.format.transform(this.node?.id).split(' ');\n // const translated = this.translationData()[this.node().id.split('-')[0]];\n this.section = nodeId[0];\n this.row = nodeId[1] ?? null;\n this.seat = nodeId[2] ?? null;\n }\n\n private getThumbnail(): void {\n const viewer3dService: Viewer3dService = this.dvm.viewer3dService;\n const options: Viewer3dLoadView3dOptions = {\n // eslint-disable-next-line camelcase\n venue_id: this.configurationService.configuration.dvmData.venueId,\n // eslint-disable-next-line camelcase\n view_id: this.node?.id,\n };\n\n if (!viewer3dService?.isInitialized()) {\n return;\n }\n\n viewer3dService.getThumbnail(options, true).subscribe((thumbnailUrl: string): void => {\n this.thumbnail = thumbnailUrl;\n this.cdr.markForCheck();\n });\n }\n\n // Section popover methods\n protected onLoad3dView(): void {\n this.load3dView.emit({\n node: this.node,\n section: this.section,\n });\n }\n\n protected onSelectSectionForBA(selected: boolean): void {\n this.includedSectionForBA = selected;\n this.selectSectionForBA.emit({\n node: this.node,\n section: this.section,\n selected: this.includedSectionForBA,\n });\n }\n\n protected onOpenSeatMap(): void {\n this.openSeatMap.emit({\n node: this.node,\n section: this.section,\n });\n }\n\n // Data transformation methods\n private transformToSeatData(): SeatPopoverData {\n const nodeId: string[] = this.format.transform(this.node?.id).split(' ');\n const section = nodeId[0];\n const row = nodeId[1] ?? '';\n const seat = nodeId[2] ?? '';\n\n return {\n id: this.node.id,\n section: section,\n row: row,\n seat: seat,\n price: this.price ? Number.parseFloat(this.price) : 0,\n thumbnail: this.thumbnail,\n };\n }\n\n private transformToSectionData(): SectionPopoverData {\n const nodeId: string[] = this.format.transform(this.node?.id).split(' ');\n const section = nodeId[0];\n\n // Parse price range from existing prices array\n let priceRange = { min: 0, max: 0 };\n if (this.prices && this.prices.length > 0) {\n const minPrice = Number.parseFloat(this.prices[0]);\n const maxPrice = this.prices.length > 1 ? Number.parseFloat(this.prices[1]) : minPrice;\n priceRange = { min: minPrice, max: maxPrice };\n }\n\n return {\n id: this.node.id,\n section: section,\n priceRange: priceRange,\n availableQuantity: this.availableQuantity,\n adaQuantity: this.adaQuantity,\n thumbnail: this.thumbnail,\n type: this.node.type === AppNodes.Ga ? 'general_admission' : 'section',\n isSelectedForBA: this.includedSectionForBA,\n };\n }\n}\n","<!-- SECTION POPOVER -->\n@if (sectionData) {\n <sdc-section-popover\n [data]=\"sectionData\"\n id=\"pano-view\"\n [popoverId]=\"'popover-' + node.id\"\n [showBestAvailable]=\"true\"\n [showOpenSeatMap]=\"true\"\n [excludeSeatMapSections]=\"['S_BLCHADA', 'S_Bleacher']\"\n (mouseEnter)=\"onEnter($event)\"\n (mouseLeave)=\"onLeave($event)\"\n (load3dView)=\"onLoad3dView()\"\n (selectForBA)=\"onSelectSectionForBA($event)\"\n (openSeatMap)=\"onOpenSeatMap()\">\n </sdc-section-popover>\n}\n\n<!-- SEAT POPOVER -->\n@if (seatData) {\n <sdc-seat-popover\n id=\"pano-view\"\n [data]=\"seatData\"\n [popoverId]=\"'popover-' + node.id\"\n (mouseEnter)=\"onEnter($event)\"\n (mouseLeave)=\"onLeave($event)\">\n </sdc-seat-popover>\n}\n","import { inject, Injectable, Inject } from '@angular/core';\nimport { createPopper } from '@popperjs/core';\nimport type { IPopoverManager, IPopoverPositioner, PopoverConfig } from '../types';\nimport { POPOVER_POSITIONER } from '../popover.config';\n\n/**\n * Generic popover manager service that handles popover lifecycle and positioning.\n * This service is DVM-agnostic and delegates positioning logic to IPopoverPositioner.\n */\n@Injectable()\nexport class PopoverManagerService implements IPopoverManager {\n private currentPopoverId: string = '';\n private tooltip?: HTMLElement;\n private readonly positioner: IPopoverPositioner;\n\n constructor(@Inject(POPOVER_POSITIONER) positioner: IPopoverPositioner) {\n this.positioner = positioner;\n }\n\n /**\n * Shows a popover with the specified configuration.\n * @param config - Configuration for the popover including component, data, and positioning\n */\n showPopover<T>(config: PopoverConfig<T>): void {\n config.container.clear();\n this.currentPopoverId = config.nodeId;\n this.tooltip = config.tooltip;\n\n const componentRef = config.container.createComponent(config.component);\n\n if (config.componentInputs) {\n Object.entries(config.componentInputs).forEach(([key, value]) => {\n (componentRef.instance as any)[key] = value;\n });\n }\n\n if (config.eventHandlers) {\n Object.entries(config.eventHandlers).forEach(([key, handler]) => {\n const instance = componentRef.instance as any;\n if (instance[key] && typeof instance[key].subscribe === 'function') {\n instance[key].subscribe(handler);\n }\n });\n }\n\n const placement = this.positioner.calculatePlacement(config.node, config.containerElement);\n const offset = this.positioner.calculateOffset(config.node);\n\n createPopper(config.node, this.tooltip, {\n placement,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset,\n },\n },\n {\n name: 'flip',\n options: {\n fallbackPlacements: [],\n },\n },\n ],\n });\n\n this.tooltip.setAttribute('data-show', '');\n }\n\n /**\n * Hides the popover for the specified node ID.\n * @param nodeId - The node ID of the popover to hide\n */\n hidePopover(nodeId: string): void {\n if (this.currentPopoverId === nodeId) {\n this.tooltip?.removeAttribute('data-show');\n }\n }\n\n /**\n * Clears all popovers.\n */\n clearAll(): void {\n this.tooltip?.removeAttribute('data-show');\n this.currentPopoverId = '';\n }\n}\n\n","import { inject, Injectable, Inject } from '@angular/core';\nimport type { MapViewerNode, V2 } from '@3ddv/dvm-internal';\nimport { Placement } from '@floating-ui/dom';\nimport { IPopoverPositioner } from '../types';\nimport { DVM_SERVICE, CONFIGURATION_SERVICE } from '../popover.config';\nimport type { IDvmService, IConfigurationService } from '../popover.config';\n\n/**\n * DVM-specific positioning service for popovers.\n * Handles calculation of popover placement and offset based on DVM node properties.\n */\n@Injectable()\nexport class DvmPopoverPositionerService implements IPopoverPositioner {\n private readonly dvmService: IDvmService;\n private readonly configService: IConfigurationService;\n\n constructor(\n @Inject(DVM_SERVICE) dvmService: IDvmService,\n @Inject(CONFIGURATION_SERVICE) configService: IConfigurationService\n ) {\n this.dvmService = dvmService;\n this.configService = configService;\n }\n\n /**\n * Calculates the optimal placement for a popover based on node position.\n * @param node - The MapViewerNode to position relative to\n * @param container - The container element for positioning reference\n * @returns The calculated placement ('top' or 'bottom')\n */\n calculatePlacement(node: MapViewerNode, container: HTMLElement): Placement {\n if (!node.aabb) {\n throw new Error('Node AABB is not defined');\n }\n\n const nodeSceneCenter: [number, number] = [\n node.aabb[0] + node.aabb[2] / 2,\n node.aabb[1] + node.aabb[3] / 2,\n ];\n\n const nodeDomCenter: V2 = this.dvmService.viewerService.fromSceneToDom(nodeSceneCenter)!;\n\n if (nodeDomCenter[1] > container.offsetHeight / 2) {\n return 'top';\n } else {\n return 'bottom';\n }\n }\n\n /**\n * Calculates the offset for popover positioning based on node type and configuration.\n * @param node - The MapViewerNode to calculate offset for\n * @returns An array of [x, y] offset values\n */\n calculateOffset(node: MapViewerNode): number[] {\n if (node.type === 'seat') {\n return [0, 6];\n }\n\n if (node.type === 'section' || node.type === 'general_admission') {\n const dvmData = this.configService.configuration.dvmData as any;\n const sectionOffsets = dvmData?.sectionOffsets || {};\n const nodeId = node.id as keyof typeof sectionOffsets;\n const nodeOriginalId = node.original_id as keyof typeof sectionOffsets;\n const dvmOffset = sectionOffsets[nodeId] ?? sectionOffsets[nodeOriginalId];\n\n return dvmOffset ?? [0, 0];\n }\n\n return [0, 0];\n }\n}\n\n","import { SeatPopoverData, SectionPopoverData } from '../types';\n\n/**\n * Abstract base class for transforming data from source format to target popover format.\n * Apps can extend this class to implement their own data transformation logic.\n */\nexport abstract class BasePopoverDataTransformer<TSource, TTarget> {\n /**\n * Transforms source data to target popover data format.\n * @param source - The source data to transform\n * @param context - Optional context for additional transformation logic\n * @returns The transformed data in target format\n */\n abstract transform(source: TSource, context?: any): TTarget;\n}\n\n/**\n * Abstract base class for transforming seat data to SeatPopoverData format.\n * Apps should extend this class and implement the transform method with their\n * specific seat data models.\n */\nexport abstract class BaseSeatDataTransformer<TSource> extends BasePopoverDataTransformer<\n TSource,\n SeatPopoverData\n> {}\n\n/**\n * Abstract base class for transforming section data to SectionPopoverData format.\n * Apps should extend this class and implement the transform method with their\n * specific section data models.\n */\nexport abstract class BaseSectionDataTransformer<TSource> extends BasePopoverDataTransformer<\n TSource,\n SectionPopoverData\n> {}\n\n","/*\n * Public API Surface of software-division-components\n */\n\nexport * from './popover.component';\nexport * from './popover.config';\nexport * from './popover.service';\nexport type * from './types';\nexport * from './base-popover.component';\nexport * from './seat-popover/seat-popover.component';\nexport * from './section-popover/section-popover.component';\nexport * from './services/popover-manager.service';\nexport * from './services/dvm-popover-positioner.service';\nexport * from './transformers/base-popover-data-transformer';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import { SIZE_ORDER } from '@3ddv/software-division-components/shared';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
5
+
6
+ class StepperComponent {
7
+ steps = input.required(...(ngDevMode ? [{ debugName: "steps" }] : []));
8
+ size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
9
+ routeName = input(null, ...(ngDevMode ? [{ debugName: "routeName" }] : []));
10
+ theme = input('theme-sdc', ...(ngDevMode ? [{ debugName: "theme" }] : []));
11
+ variant = input('light', ...(ngDevMode ? [{ debugName: "variant" }] : []));
12
+ /** Only these are supported for stepper. */
13
+ supportedSizes = ['xxs', 'xs', 'sm', 'md', 'lg'];
14
+ /** Normalize any Size → StepperSize by flooring to the nearest supported size. */
15
+ normalizeSize = (s) => {
16
+ const wantedIdx = SIZE_ORDER.indexOf(s);
17
+ if (wantedIdx === -1)
18
+ return 'md';
19
+ for (let i = wantedIdx; i >= 0; i--) {
20
+ const candidate = SIZE_ORDER[i];
21
+ if (this.supportedSizes.includes(candidate)) {
22
+ return candidate;
23
+ }
24
+ }
25
+ return 'md';
26
+ };
27
+ allowedAlign = ['align-start', 'align-center', 'align-end'];
28
+ allowedOrientation = ['orientation-horizontal', 'orientation-vertical'];
29
+ allowedSizes = SIZE_ORDER.map(s => `size-${s}`);
30
+ styleClass = input(['orientation-horizontal', 'align-center'], ...(ngDevMode ? [{ debugName: "styleClass" }] : []));
31
+ className = input('', ...(ngDevMode ? [{ debugName: "className" }] : []));
32
+ _validatedStyleClass = computed(() => {
33
+ const classes = this.styleClass() ?? [];
34
+ const valid = classes.filter(c => this.allowedAlign.includes(c) ||
35
+ this.allowedOrientation.includes(c) ||
36
+ this.allowedSizes.includes(c));
37
+ if (valid.length !== classes.length) {
38
+ const invalid = classes.filter(c => !valid.includes(c));
39
+ console.warn(`StepperComponent: Ignored invalid styleClass: ${invalid.join(', ')}`);
40
+ }
41
+ return valid;
42
+ }, ...(ngDevMode ? [{ debugName: "_validatedStyleClass" }] : []));
43
+ _effectiveSize = computed(() => {
44
+ const sc = this._validatedStyleClass();
45
+ const rawOverride = sc
46
+ .filter(c => c.startsWith('size-'))
47
+ .slice(-1)[0]
48
+ ?.replace(/^size-/, '');
49
+ if (rawOverride)
50
+ return this.normalizeSize(rawOverride);
51
+ return this.normalizeSize(this.size());
52
+ }, ...(ngDevMode ? [{ debugName: "_effectiveSize" }] : []));
53
+ computedClass = computed(() => {
54
+ const base = this._validatedStyleClass().filter(c => !c.startsWith('size-'));
55
+ const normalizedSize = this._effectiveSize();
56
+ const variantClass = `variant-${this.variant()}`;
57
+ return ['sdc-stepper', this.theme(), `size-${normalizedSize}`, variantClass, ...base, this.className()]
58
+ .filter(Boolean)
59
+ .join(' ');
60
+ }, ...(ngDevMode ? [{ debugName: "computedClass" }] : []));
61
+ stateForIndex(i) {
62
+ const route = this.routeName();
63
+ if (!route)
64
+ return 'normal';
65
+ const current = this.steps().findIndex(s => s.name === route);
66
+ if (current < 0)
67
+ return 'normal';
68
+ if (current === i)
69
+ return 'active';
70
+ if (current > i)
71
+ return 'completed';
72
+ return 'normal';
73
+ }
74
+ stateClass(i) {
75
+ return `state-${this.stateForIndex(i)}`;
76
+ }
77
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
78
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: StepperComponent, isStandalone: true, selector: "sdc-stepper", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, routeName: { classPropertyName: "routeName", publicName: "routeName", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<nav [attr.aria-label]=\"'progress-stepper'\" [class]=\"computedClass()\">\n <ol class=\"sdc-stepper__list\">\n @for (step of steps(); track step.name; let i = $index) {\n <li class=\"sdc-stepper__item\">\n <span class=\"sdc-stepper__text\" [class]=\"stateClass(i)\"> {{ i + 1 }}. {{ step.action }} </span>\n </li>\n }\n </ol>\n</nav>\n", styles: [".sdc-stepper{--sdc-stepper-text-color: var(--color-neutral-300);--sdc-stepper-normal-color: var(--color-neutral-500);--sdc-stepper-active-color: var(--color-alternative);--sdc-stepper-completed-color: var(--color-alternative);--sdc-stepper-separator-color: var(--color-neutral-500);--sdc-stepper-separator-opacity: 1;--sdc-stepper-gap-x: var(--space-2);--sdc-stepper-gap-y: 0;--sdc-stepper-font-size: var(--text-base);--sdc-stepper-font-weight: var(--font-semibold);--sdc-stepper-separator-content: \"-\";display:block}.sdc-stepper.variant-light{--sdc-stepper-active-color: white;--sdc-stepper-completed-color: white}.sdc-stepper.variant-dark{--sdc-stepper-active-color: var(--color-accent);--sdc-stepper-completed-color: var(--color-accent)}.sdc-stepper .sdc-stepper__list{display:flex;width:100%;text-align:center;align-items:center;font-weight:var(--sdc-stepper-font-weight);color:var(--sdc-stepper-text-color);gap:var(--sdc-stepper-gap-x)}.sdc-stepper.orientation-vertical .sdc-stepper__list{flex-direction:column;align-items:flex-start;gap:var(--sdc-stepper-gap-y)}.sdc-stepper.align-start .sdc-stepper__list{justify-content:flex-start}.sdc-stepper.align-center .sdc-stepper__list{justify-content:center}.sdc-stepper.align-end .sdc-stepper__list{justify-content:flex-end}.sdc-stepper.size-xxs{--sdc-stepper-gap-x: var(--space-1);--sdc-stepper-font-size: var(--text-xxs);--sdc-stepper-separator-content: \"/\"}.sdc-stepper.size-xs{--sdc-stepper-gap-x: var(--space-1);--sdc-stepper-font-size: var(--text-xs);--sdc-stepper-separator-content: \"/\"}.sdc-stepper.size-sm{--sdc-stepper-gap-x: var(--space-1_5);--sdc-stepper-font-size: var(--text-sm);--sdc-stepper-separator-content: \"-\"}.sdc-stepper.size-md{--sdc-stepper-gap-x: var(--space-2);--sdc-stepper-font-size: var(--text-base);--sdc-stepper-separator-content: \"-\"}.sdc-stepper.size-lg{--sdc-stepper-gap-x: var(--space-3);--sdc-stepper-font-size: var(--text-lg);--sdc-stepper-separator-content: \"-\"}.sdc-stepper__item{display:flex;align-items:center;position:relative;color:inherit}.sdc-stepper.orientation-horizontal .sdc-stepper__item:not(:last-child):after{content:var(--sdc-stepper-separator-content);margin:0 var(--space-2);color:var(--sdc-stepper-separator-color);opacity:var(--sdc-stepper-separator-opacity)}.sdc-stepper.orientation-vertical .sdc-stepper__item:not(:last-child):after{content:\"\";display:block;width:1px;height:var(--space-4);margin:var(--space-1) 0;background-color:var(--sdc-stepper-separator-color);opacity:var(--sdc-stepper-separator-opacity)}.sdc-stepper__text{font-size:var(--sdc-stepper-font-size);transition:color .2s ease-in-out}.sdc-stepper__text.state-active{color:var(--sdc-stepper-active-color)}.sdc-stepper__text.state-normal{color:var(--sdc-stepper-normal-color)}.sdc-stepper__text.state-completed{color:var(--sdc-stepper-completed-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
79
+ }
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: StepperComponent, decorators: [{
81
+ type: Component,
82
+ args: [{ selector: 'sdc-stepper', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav [attr.aria-label]=\"'progress-stepper'\" [class]=\"computedClass()\">\n <ol class=\"sdc-stepper__list\">\n @for (step of steps(); track step.name; let i = $index) {\n <li class=\"sdc-stepper__item\">\n <span class=\"sdc-stepper__text\" [class]=\"stateClass(i)\"> {{ i + 1 }}. {{ step.action }} </span>\n </li>\n }\n </ol>\n</nav>\n", styles: [".sdc-stepper{--sdc-stepper-text-color: var(--color-neutral-300);--sdc-stepper-normal-color: var(--color-neutral-500);--sdc-stepper-active-color: var(--color-alternative);--sdc-stepper-completed-color: var(--color-alternative);--sdc-stepper-separator-color: var(--color-neutral-500);--sdc-stepper-separator-opacity: 1;--sdc-stepper-gap-x: var(--space-2);--sdc-stepper-gap-y: 0;--sdc-stepper-font-size: var(--text-base);--sdc-stepper-font-weight: var(--font-semibold);--sdc-stepper-separator-content: \"-\";display:block}.sdc-stepper.variant-light{--sdc-stepper-active-color: white;--sdc-stepper-completed-color: white}.sdc-stepper.variant-dark{--sdc-stepper-active-color: var(--color-accent);--sdc-stepper-completed-color: var(--color-accent)}.sdc-stepper .sdc-stepper__list{display:flex;width:100%;text-align:center;align-items:center;font-weight:var(--sdc-stepper-font-weight);color:var(--sdc-stepper-text-color);gap:var(--sdc-stepper-gap-x)}.sdc-stepper.orientation-vertical .sdc-stepper__list{flex-direction:column;align-items:flex-start;gap:var(--sdc-stepper-gap-y)}.sdc-stepper.align-start .sdc-stepper__list{justify-content:flex-start}.sdc-stepper.align-center .sdc-stepper__list{justify-content:center}.sdc-stepper.align-end .sdc-stepper__list{justify-content:flex-end}.sdc-stepper.size-xxs{--sdc-stepper-gap-x: var(--space-1);--sdc-stepper-font-size: var(--text-xxs);--sdc-stepper-separator-content: \"/\"}.sdc-stepper.size-xs{--sdc-stepper-gap-x: var(--space-1);--sdc-stepper-font-size: var(--text-xs);--sdc-stepper-separator-content: \"/\"}.sdc-stepper.size-sm{--sdc-stepper-gap-x: var(--space-1_5);--sdc-stepper-font-size: var(--text-sm);--sdc-stepper-separator-content: \"-\"}.sdc-stepper.size-md{--sdc-stepper-gap-x: var(--space-2);--sdc-stepper-font-size: var(--text-base);--sdc-stepper-separator-content: \"-\"}.sdc-stepper.size-lg{--sdc-stepper-gap-x: var(--space-3);--sdc-stepper-font-size: var(--text-lg);--sdc-stepper-separator-content: \"-\"}.sdc-stepper__item{display:flex;align-items:center;position:relative;color:inherit}.sdc-stepper.orientation-horizontal .sdc-stepper__item:not(:last-child):after{content:var(--sdc-stepper-separator-content);margin:0 var(--space-2);color:var(--sdc-stepper-separator-color);opacity:var(--sdc-stepper-separator-opacity)}.sdc-stepper.orientation-vertical .sdc-stepper__item:not(:last-child):after{content:\"\";display:block;width:1px;height:var(--space-4);margin:var(--space-1) 0;background-color:var(--sdc-stepper-separator-color);opacity:var(--sdc-stepper-separator-opacity)}.sdc-stepper__text{font-size:var(--sdc-stepper-font-size);transition:color .2s ease-in-out}.sdc-stepper__text.state-active{color:var(--sdc-stepper-active-color)}.sdc-stepper__text.state-normal{color:var(--sdc-stepper-normal-color)}.sdc-stepper__text.state-completed{color:var(--sdc-stepper-completed-color)}\n"] }]
83
+ }], propDecorators: { steps: [{ type: i0.Input, args: [{ isSignal: true, alias: "steps", required: true }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], routeName: [{ type: i0.Input, args: [{ isSignal: true, alias: "routeName", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }] } });
84
+
85
+ /*
86
+ * Public API Surface of software-division-components
87
+ */
88
+
89
+ /**
90
+ * Generated bundle index. Do not edit.
91
+ */
92
+
93
+ export { StepperComponent };
94
+ //# sourceMappingURL=3ddv-software-division-components-dvm-stepper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3ddv-software-division-components-dvm-stepper.mjs","sources":["../../dvm/stepper/stepper.component.ts","../../dvm/stepper/stepper.component.html","../../dvm/stepper/public-api.ts","../../dvm/stepper/3ddv-software-division-components-dvm-stepper.ts"],"sourcesContent":["import { SIZE_ORDER, Size, ThemeClass } from '@3ddv/software-division-components/shared';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Step, StepState, StepperSize } from './types';\n\n@Component({\n selector: 'sdc-stepper',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepperComponent {\n public readonly steps = input.required<Step[]>();\n public readonly size = input<Size>('md');\n public readonly routeName = input<string | null>(null);\n public readonly theme = input<ThemeClass>('theme-sdc');\n public readonly variant = input<'light' | 'dark'>('light');\n\n /** Only these are supported for stepper. */\n private readonly supportedSizes: StepperSize[] = ['xxs', 'xs', 'sm', 'md', 'lg'];\n\n /** Normalize any Size → StepperSize by flooring to the nearest supported size. */\n private normalizeSize = (s: Size): StepperSize => {\n const wantedIdx = SIZE_ORDER.indexOf(s);\n if (wantedIdx === -1) return 'md';\n\n for (let i = wantedIdx; i >= 0; i--) {\n const candidate = SIZE_ORDER[i];\n if (this.supportedSizes.includes(candidate as StepperSize)) {\n return candidate as StepperSize;\n }\n }\n return 'md';\n };\n\n private readonly allowedAlign = ['align-start', 'align-center', 'align-end'] as const;\n private readonly allowedOrientation = ['orientation-horizontal', 'orientation-vertical'] as const;\n private readonly allowedSizes = SIZE_ORDER.map(s => `size-${s}`);\n\n public readonly styleClass = input<\n (\n | (typeof this.allowedAlign)[number]\n | (typeof this.allowedOrientation)[number]\n | (typeof this.allowedSizes)[number]\n )[]\n >(['orientation-horizontal', 'align-center']);\n\n public readonly className = input<string>('');\n\n private readonly _validatedStyleClass = computed(() => {\n const classes = this.styleClass() ?? [];\n const valid = classes.filter(\n c =>\n this.allowedAlign.includes(c as any) ||\n this.allowedOrientation.includes(c as any) ||\n this.allowedSizes.includes(c as any)\n );\n if (valid.length !== classes.length) {\n const invalid = classes.filter(c => !valid.includes(c));\n console.warn(`StepperComponent: Ignored invalid styleClass: ${invalid.join(', ')}`);\n }\n return valid;\n });\n\n private readonly _effectiveSize = computed<StepperSize>(() => {\n const sc = this._validatedStyleClass();\n const rawOverride = sc\n .filter(c => c.startsWith('size-'))\n .slice(-1)[0]\n ?.replace(/^size-/, '') as Size | undefined;\n\n if (rawOverride) return this.normalizeSize(rawOverride);\n return this.normalizeSize(this.size());\n });\n\n protected readonly computedClass = computed(() => {\n const base = this._validatedStyleClass().filter(c => !c.startsWith('size-'));\n const normalizedSize = this._effectiveSize();\n const variantClass = `variant-${this.variant()}`;\n\n return ['sdc-stepper', this.theme(), `size-${normalizedSize}`, variantClass, ...base, this.className()]\n .filter(Boolean)\n .join(' ');\n });\n\n protected stateForIndex(i: number): StepState {\n const route = this.routeName();\n if (!route) return 'normal';\n const current = this.steps().findIndex(s => s.name === route);\n if (current < 0) return 'normal';\n if (current === i) return 'active';\n if (current > i) return 'completed';\n return 'normal';\n }\n\n protected stateClass(i: number): string {\n return `state-${this.stateForIndex(i)}`;\n }\n}\n","<nav [attr.aria-label]=\"'progress-stepper'\" [class]=\"computedClass()\">\n <ol class=\"sdc-stepper__list\">\n @for (step of steps(); track step.name; let i = $index) {\n <li class=\"sdc-stepper__item\">\n <span class=\"sdc-stepper__text\" [class]=\"stateClass(i)\"> {{ i + 1 }}. {{ step.action }} </span>\n </li>\n }\n </ol>\n</nav>\n","/*\n * Public API Surface of software-division-components\n */\n\nexport * from './stepper.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, Injectable } from '@angular/core';
3
+
4
+ class TicketInfoItemComponent {
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TicketInfoItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: TicketInfoItemComponent, isStandalone: true, selector: "sdc-ticket-info-item", ngImport: i0, template: "<div>ticket-info-item component!</div>\n" });
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TicketInfoItemComponent, decorators: [{
9
+ type: Component,
10
+ args: [{ selector: 'sdc-ticket-info-item', standalone: true, template: "<div>ticket-info-item component!</div>\n" }]
11
+ }] });
12
+
13
+ class TicketInfoItemService {
14
+ constructor() { }
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TicketInfoItemService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TicketInfoItemService, providedIn: 'root' });
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TicketInfoItemService, decorators: [{
19
+ type: Injectable,
20
+ args: [{
21
+ providedIn: 'root',
22
+ }]
23
+ }], ctorParameters: () => [] });
24
+
25
+ /*
26
+ * Public API Surface of software-division-components
27
+ */
28
+
29
+ /**
30
+ * Generated bundle index. Do not edit.
31
+ */
32
+
33
+ export { TicketInfoItemComponent, TicketInfoItemService };
34
+ //# sourceMappingURL=3ddv-software-division-components-dvm-ticket-info-item.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3ddv-software-division-components-dvm-ticket-info-item.mjs","sources":["../../dvm/ticket-info-item/ticket-info-item.component.ts","../../dvm/ticket-info-item/ticket-info-item.component.html","../../dvm/ticket-info-item/ticket-info-item.service.ts","../../dvm/ticket-info-item/public-api.ts","../../dvm/ticket-info-item/3ddv-software-division-components-dvm-ticket-info-item.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'sdc-ticket-info-item',\n standalone: true,\n templateUrl: './ticket-info-item.component.html',\n})\nexport class TicketInfoItemComponent {}\n","<div>ticket-info-item component!</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TicketInfoItemService {\n constructor() {}\n}\n","/*\n * Public API Surface of software-division-components\n */\n\nexport * from './ticket-info-item.component';\nexport * from './ticket-info-item.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAOa,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,gFCPpC,0CACA,EAAA,CAAA;;2FDMa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cACpB,IAAI,EAAA,QAAA,EAAA,0CAAA,EAAA;;;MECL,qBAAqB,CAAA;AAChC,IAAA,WAAA,GAAA,EAAe;uGADJ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAArB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACJD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -0,0 +1,46 @@
1
+ import { BraintreeComponent } from '@3ddv/software-division-components/generic/braintree';
2
+ import * as i0 from '@angular/core';
3
+ import { input, output, inject, DestroyRef, ChangeDetectionStrategy, Component } from '@angular/core';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+ import * as i1 from '@angular/forms';
6
+ import { FormControl, ReactiveFormsModule } from '@angular/forms';
7
+
8
+ class AddDigitalWalletComponent {
9
+ // INPUTS
10
+ token = input.required(...(ngDevMode ? [{ debugName: "token" }] : []));
11
+ errorMessage = input(null, ...(ngDevMode ? [{ debugName: "errorMessage" }] : []));
12
+ showCancelButton = input(false, ...(ngDevMode ? [{ debugName: "showCancelButton" }] : []));
13
+ showIsDefaultCardCheckbox = input(false, ...(ngDevMode ? [{ debugName: "showIsDefaultCardCheckbox" }] : []));
14
+ // OUTPUTS
15
+ braintreePayload = output();
16
+ cancelClick = output();
17
+ useDefaultCard = output();
18
+ // STATE
19
+ useDefaultCardCtrl = new FormControl(false);
20
+ destroyRef = inject(DestroyRef);
21
+ ngOnInit() {
22
+ this.useDefaultCardCtrl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {
23
+ this.useDefaultCard.emit(!!value);
24
+ });
25
+ }
26
+ onDigitalWalletSubmitted(data) {
27
+ console.log('EMIT BRAINTREE SUBMIT', data);
28
+ this.braintreePayload.emit(data);
29
+ }
30
+ onCancel() {
31
+ this.cancelClick.emit();
32
+ }
33
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AddDigitalWalletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: AddDigitalWalletComponent, isStandalone: true, selector: "sdc-add-digital-wallet", inputs: { token: { classPropertyName: "token", publicName: "token", isSignal: true, isRequired: true, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, showCancelButton: { classPropertyName: "showCancelButton", publicName: "showCancelButton", isSignal: true, isRequired: false, transformFunction: null }, showIsDefaultCardCheckbox: { classPropertyName: "showIsDefaultCardCheckbox", publicName: "showIsDefaultCardCheckbox", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { braintreePayload: "braintreePayload", cancelClick: "cancelClick", useDefaultCard: "useDefaultCard" }, ngImport: i0, template: "<div class=\"sdc-digital-wallet theme-sdc\" id=\"add-patron-card-modal\">\n <div class=\"sdc-digital-wallet__inner\">\n <h2 class=\"sdc-digital-wallet__title\">ADD YOUR CARD</h2>\n\n <sdc-braintree\n class=\"sdc-digital-wallet__braintree\"\n [isDigitalWalletPayment]=\"true\"\n [token]=\"token()\"\n (onSubmit)=\"onDigitalWalletSubmitted($event)\">\n <div>\n @if (showIsDefaultCardCheckbox()) {\n <label\n id=\"braintree-use-default-card-checkbox\"\n class=\"flex justify-center py-4 sdc-digital-wallet__default-card\">\n <input type=\"checkbox\" [formControl]=\"useDefaultCardCtrl\" />\n Make this my default card\n </label>\n }\n\n @if (errorMessage()) {\n <p class=\"sdc-digital-wallet__error\">\n {{ errorMessage() || 'Something bad happened' }}\n </p>\n }\n\n <div class=\"flex justify-center gap-4 pt-4\">\n @if (showCancelButton()) {\n <button\n class=\"disabled:opacity-30 mr-3 md:mr-6 disabled:hover:transform-none hover:scale-95 transition-transform sdc-digital-wallet__cancel btn-main-reverse\"\n id=\"braintree-cancel-button\"\n type=\"button\"\n (click)=\"onCancel()\">\n Cancel\n </button>\n }\n <button\n class=\"disabled:opacity-30 disabled:hover:transform-none hover:scale-95 transition-transform sdc-digital-wallet__submit btn-main\"\n id=\"braintree-save-button\"\n type=\"button\">\n Save Card\n </button>\n </div>\n </div>\n </sdc-braintree>\n </div>\n</div>\n", styles: [".sdc-digital-wallet{--sdc-digital-wallet-max-width: 32rem;--sdc-digital-wallet-padding: var(--space-2) var(--space-0);--sdc-digital-wallet-title-size: var(--text-lg);--sdc-digital-wallet-title-weight: var(--font-bold);--sdc-digital-wallet-title-leading: var(--leading-tight);--sdc-digital-wallet-braintree-max-h: 24rem;--sdc-digital-wallet-braintree-overflow: auto;--sdc-digital-wallet-submit-radius: var(--radius-3xl);--sdc-digital-wallet-submit-text-size: var(--text-base);--sdc-digital-wallet-submit-text-weight: var(--font-bold);--sdc-digital-wallet-submit-text-color: var(--color-secondary-active);--sdc-digital-wallet-error-size: 1rem;--sdc-digital-wallet-error-color: var(--color-danger);position:relative;overflow:hidden;width:100%;max-width:var(--sdc-digital-wallet-max-width);padding:var(--sdc-digital-wallet-padding);margin:0 auto}.sdc-digital-wallet__inner{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;overflow-y:auto}.sdc-digital-wallet__title{font-size:var(--sdc-digital-wallet-title-size);font-weight:var(--sdc-digital-wallet-title-weight);line-height:var(--sdc-digital-wallet-title-leading)}.sdc-digital-wallet__braintree{max-height:var(--sdc-digital-wallet-braintree-max-h);overflow-y:var(--sdc-digital-wallet-braintree-overflow)}.sdc-digital-wallet__submit{border-radius:var(--sdc-digital-wallet-submit-radius);font-size:var(--sdc-digital-wallet-submit-text-size);font-weight:var(--sdc-digital-wallet-submit-text-weight);color:hsl(var(--sdc-digital-wallet-submit-text-color));white-space:nowrap;cursor:pointer;outline:0}.sdc-digital-wallet__default-card{display:flex;align-items:center;gap:.5rem;margin-top:1rem}.sdc-digital-wallet__error{font-size:var(--sdc-digital-wallet-error-size);color:hsl(var(--sdc-digital-wallet-error-color))}@media(min-width:1024px){.sdc-digital-wallet{--sdc-digital-wallet-padding: var(--space-6) var(--space-6);--sdc-digital-wallet-title-size: var(--text-xl);--sdc-digital-wallet-braintree-max-h: none}}\n"], dependencies: [{ kind: "component", type: BraintreeComponent, selector: "sdc-braintree", inputs: ["token", "isDigitalWalletPayment"], outputs: ["onSubmit"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AddDigitalWalletComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ standalone: true, selector: 'sdc-add-digital-wallet', changeDetection: ChangeDetectionStrategy.OnPush, imports: [BraintreeComponent, ReactiveFormsModule], template: "<div class=\"sdc-digital-wallet theme-sdc\" id=\"add-patron-card-modal\">\n <div class=\"sdc-digital-wallet__inner\">\n <h2 class=\"sdc-digital-wallet__title\">ADD YOUR CARD</h2>\n\n <sdc-braintree\n class=\"sdc-digital-wallet__braintree\"\n [isDigitalWalletPayment]=\"true\"\n [token]=\"token()\"\n (onSubmit)=\"onDigitalWalletSubmitted($event)\">\n <div>\n @if (showIsDefaultCardCheckbox()) {\n <label\n id=\"braintree-use-default-card-checkbox\"\n class=\"flex justify-center py-4 sdc-digital-wallet__default-card\">\n <input type=\"checkbox\" [formControl]=\"useDefaultCardCtrl\" />\n Make this my default card\n </label>\n }\n\n @if (errorMessage()) {\n <p class=\"sdc-digital-wallet__error\">\n {{ errorMessage() || 'Something bad happened' }}\n </p>\n }\n\n <div class=\"flex justify-center gap-4 pt-4\">\n @if (showCancelButton()) {\n <button\n class=\"disabled:opacity-30 mr-3 md:mr-6 disabled:hover:transform-none hover:scale-95 transition-transform sdc-digital-wallet__cancel btn-main-reverse\"\n id=\"braintree-cancel-button\"\n type=\"button\"\n (click)=\"onCancel()\">\n Cancel\n </button>\n }\n <button\n class=\"disabled:opacity-30 disabled:hover:transform-none hover:scale-95 transition-transform sdc-digital-wallet__submit btn-main\"\n id=\"braintree-save-button\"\n type=\"button\">\n Save Card\n </button>\n </div>\n </div>\n </sdc-braintree>\n </div>\n</div>\n", styles: [".sdc-digital-wallet{--sdc-digital-wallet-max-width: 32rem;--sdc-digital-wallet-padding: var(--space-2) var(--space-0);--sdc-digital-wallet-title-size: var(--text-lg);--sdc-digital-wallet-title-weight: var(--font-bold);--sdc-digital-wallet-title-leading: var(--leading-tight);--sdc-digital-wallet-braintree-max-h: 24rem;--sdc-digital-wallet-braintree-overflow: auto;--sdc-digital-wallet-submit-radius: var(--radius-3xl);--sdc-digital-wallet-submit-text-size: var(--text-base);--sdc-digital-wallet-submit-text-weight: var(--font-bold);--sdc-digital-wallet-submit-text-color: var(--color-secondary-active);--sdc-digital-wallet-error-size: 1rem;--sdc-digital-wallet-error-color: var(--color-danger);position:relative;overflow:hidden;width:100%;max-width:var(--sdc-digital-wallet-max-width);padding:var(--sdc-digital-wallet-padding);margin:0 auto}.sdc-digital-wallet__inner{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;overflow-y:auto}.sdc-digital-wallet__title{font-size:var(--sdc-digital-wallet-title-size);font-weight:var(--sdc-digital-wallet-title-weight);line-height:var(--sdc-digital-wallet-title-leading)}.sdc-digital-wallet__braintree{max-height:var(--sdc-digital-wallet-braintree-max-h);overflow-y:var(--sdc-digital-wallet-braintree-overflow)}.sdc-digital-wallet__submit{border-radius:var(--sdc-digital-wallet-submit-radius);font-size:var(--sdc-digital-wallet-submit-text-size);font-weight:var(--sdc-digital-wallet-submit-text-weight);color:hsl(var(--sdc-digital-wallet-submit-text-color));white-space:nowrap;cursor:pointer;outline:0}.sdc-digital-wallet__default-card{display:flex;align-items:center;gap:.5rem;margin-top:1rem}.sdc-digital-wallet__error{font-size:var(--sdc-digital-wallet-error-size);color:hsl(var(--sdc-digital-wallet-error-color))}@media(min-width:1024px){.sdc-digital-wallet{--sdc-digital-wallet-padding: var(--space-6) var(--space-6);--sdc-digital-wallet-title-size: var(--text-xl);--sdc-digital-wallet-braintree-max-h: none}}\n"] }]
39
+ }], propDecorators: { token: [{ type: i0.Input, args: [{ isSignal: true, alias: "token", required: true }] }], errorMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMessage", required: false }] }], showCancelButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCancelButton", required: false }] }], showIsDefaultCardCheckbox: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIsDefaultCardCheckbox", required: false }] }], braintreePayload: [{ type: i0.Output, args: ["braintreePayload"] }], cancelClick: [{ type: i0.Output, args: ["cancelClick"] }], useDefaultCard: [{ type: i0.Output, args: ["useDefaultCard"] }] } });
40
+
41
+ /**
42
+ * Generated bundle index. Do not edit.
43
+ */
44
+
45
+ export { AddDigitalWalletComponent };
46
+ //# sourceMappingURL=3ddv-software-division-components-generic-add-digital-wallet.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3ddv-software-division-components-generic-add-digital-wallet.mjs","sources":["../../generic/add-digital-wallet/add-digital-wallet.component.ts","../../generic/add-digital-wallet/add-digital-wallet.component.html","../../generic/add-digital-wallet/3ddv-software-division-components-generic-add-digital-wallet.ts"],"sourcesContent":["import { BraintreeComponent, BraintreePayload } from '@3ddv/software-division-components/generic/braintree';\nimport { ChangeDetectionStrategy, Component, DestroyRef, OnInit, inject, input, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n standalone: true,\n selector: 'sdc-add-digital-wallet',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [BraintreeComponent, ReactiveFormsModule],\n templateUrl: './add-digital-wallet.component.html',\n styleUrls: ['./add-digital-wallet.component.css'],\n})\nexport class AddDigitalWalletComponent implements OnInit {\n // INPUTS\n public token = input.required<string>();\n public errorMessage = input<string | null>(null);\n public showCancelButton = input<boolean>(false);\n public showIsDefaultCardCheckbox = input<boolean>(false);\n\n // OUTPUTS\n public readonly braintreePayload = output<BraintreePayload>();\n public readonly cancelClick = output<void>();\n public readonly useDefaultCard = output<boolean>();\n\n // STATE\n public useDefaultCardCtrl = new FormControl(false);\n private readonly destroyRef = inject(DestroyRef);\n\n public ngOnInit(): void {\n this.useDefaultCardCtrl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {\n this.useDefaultCard.emit(!!value);\n });\n }\n\n public onDigitalWalletSubmitted(data: BraintreePayload): void {\n console.log('EMIT BRAINTREE SUBMIT', data);\n this.braintreePayload.emit(data);\n }\n\n public onCancel() {\n this.cancelClick.emit();\n }\n}\n","<div class=\"sdc-digital-wallet theme-sdc\" id=\"add-patron-card-modal\">\n <div class=\"sdc-digital-wallet__inner\">\n <h2 class=\"sdc-digital-wallet__title\">ADD YOUR CARD</h2>\n\n <sdc-braintree\n class=\"sdc-digital-wallet__braintree\"\n [isDigitalWalletPayment]=\"true\"\n [token]=\"token()\"\n (onSubmit)=\"onDigitalWalletSubmitted($event)\">\n <div>\n @if (showIsDefaultCardCheckbox()) {\n <label\n id=\"braintree-use-default-card-checkbox\"\n class=\"flex justify-center py-4 sdc-digital-wallet__default-card\">\n <input type=\"checkbox\" [formControl]=\"useDefaultCardCtrl\" />\n Make this my default card\n </label>\n }\n\n @if (errorMessage()) {\n <p class=\"sdc-digital-wallet__error\">\n {{ errorMessage() || 'Something bad happened' }}\n </p>\n }\n\n <div class=\"flex justify-center gap-4 pt-4\">\n @if (showCancelButton()) {\n <button\n class=\"disabled:opacity-30 mr-3 md:mr-6 disabled:hover:transform-none hover:scale-95 transition-transform sdc-digital-wallet__cancel btn-main-reverse\"\n id=\"braintree-cancel-button\"\n type=\"button\"\n (click)=\"onCancel()\">\n Cancel\n </button>\n }\n <button\n class=\"disabled:opacity-30 disabled:hover:transform-none hover:scale-95 transition-transform sdc-digital-wallet__submit btn-main\"\n id=\"braintree-save-button\"\n type=\"button\">\n Save Card\n </button>\n </div>\n </div>\n </sdc-braintree>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { viewChild, ElementRef, input, output, effect, ChangeDetectionStrategy, Component } from '@angular/core';
4
+
5
+ /**
6
+ * Braintree Drop‑in component that auto‑wires clicks
7
+ * on the first projected element and errors if more than one.
8
+ * Recreates the drop‑in UI whenever isDigitalWalletPayment changes,
9
+ * ensuring the container is empty before initialization.
10
+ */
11
+ class BraintreeComponent {
12
+ elRef;
13
+ /** Braintree element reference */
14
+ braintreeContainer = viewChild('braintreeContainer', { ...(ngDevMode ? { debugName: "braintreeContainer" } : {}), read: (ElementRef) });
15
+ /** Braintree client token input */
16
+ token = input.required(...(ngDevMode ? [{ debugName: "token" }] : []));
17
+ /** Toggle to require cardholder name */
18
+ isDigitalWalletPayment = input(false, ...(ngDevMode ? [{ debugName: "isDigitalWalletPayment" }] : []));
19
+ /** Emits when a payment payload is ready */
20
+ onSubmit = output();
21
+ /** Holds the Drop‑in instance */
22
+ dropinInstance;
23
+ constructor(elRef) {
24
+ this.elRef = elRef;
25
+ // Re-initialize drop‑in UI on config change
26
+ effect(() => {
27
+ const requireName = this.isDigitalWalletPayment();
28
+ this.teardownDropin();
29
+ this.initializeDropin(requireName);
30
+ });
31
+ // Attach click handler to the single projected element
32
+ effect(onCleanup => {
33
+ const projectedEls = Array.from(this.elRef.nativeElement.children).filter(el => el.id !== 'braintree-container');
34
+ if (projectedEls.length > 1) {
35
+ throw new Error(`sdc-braintree: only one projected element allowed, found ${projectedEls.length}`);
36
+ }
37
+ if (projectedEls.length === 1) {
38
+ const btn = projectedEls[0];
39
+ const handler = () => this.requestPayment();
40
+ btn.addEventListener('click', handler);
41
+ onCleanup(() => btn.removeEventListener('click', handler));
42
+ }
43
+ });
44
+ }
45
+ ngOnDestroy() {
46
+ this.teardownDropin();
47
+ }
48
+ /** Clears previous drop-in UI and recreates it */
49
+ initializeDropin(requireName) {
50
+ if (this.dropinInstance)
51
+ return;
52
+ const container = this.braintreeContainer()?.nativeElement;
53
+ if (!container) {
54
+ console.error('sdc-braintree: missing container element');
55
+ return;
56
+ }
57
+ const cardOptions = requireName
58
+ ? {
59
+ card: { cardholderName: { required: requireName } },
60
+ number: { supportedCardBrand: ['visa', 'mastercard', 'diners-club', 'discover', 'american-express'] },
61
+ }
62
+ : undefined;
63
+ setTimeout(() => {
64
+ braintree.dropin.create({
65
+ authorization: this.token(),
66
+ container: container,
67
+ ...cardOptions,
68
+ }, (err, instance) => {
69
+ if (err) {
70
+ console.error('Braintree init error:', err);
71
+ return;
72
+ }
73
+ this.dropinInstance = instance;
74
+ });
75
+ }, 0);
76
+ }
77
+ /** Requests payment method and emits payload */
78
+ requestPayment() {
79
+ if (!this.dropinInstance) {
80
+ console.warn('sdc-braintree: drop‑in not ready');
81
+ return;
82
+ }
83
+ this.dropinInstance.requestPaymentMethod((err, payload) => {
84
+ if (err) {
85
+ console.error('sdc-braintree payment error:', err);
86
+ return;
87
+ }
88
+ this.onSubmit.emit(payload);
89
+ });
90
+ }
91
+ /** Tears down the drop-in instance if present */
92
+ teardownDropin() {
93
+ if (this.dropinInstance?.teardown) {
94
+ this.dropinInstance.teardown();
95
+ }
96
+ this.dropinInstance = null;
97
+ }
98
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BraintreeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
99
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.4", type: BraintreeComponent, isStandalone: true, selector: "sdc-braintree", inputs: { token: { classPropertyName: "token", publicName: "token", isSignal: true, isRequired: true, transformFunction: null }, isDigitalWalletPayment: { classPropertyName: "isDigitalWalletPayment", publicName: "isDigitalWalletPayment", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSubmit: "onSubmit" }, viewQueries: [{ propertyName: "braintreeContainer", first: true, predicate: ["braintreeContainer"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
100
+ <div #braintreeContainer id="braintree-container"></div>
101
+ <ng-content></ng-content>
102
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
103
+ }
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BraintreeComponent, decorators: [{
105
+ type: Component,
106
+ args: [{
107
+ standalone: true,
108
+ selector: 'sdc-braintree',
109
+ imports: [CommonModule],
110
+ changeDetection: ChangeDetectionStrategy.OnPush,
111
+ template: `
112
+ <div #braintreeContainer id="braintree-container"></div>
113
+ <ng-content></ng-content>
114
+ `,
115
+ }]
116
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { braintreeContainer: [{ type: i0.ViewChild, args: ['braintreeContainer', { ...{ read: (ElementRef) }, isSignal: true }] }], token: [{ type: i0.Input, args: [{ isSignal: true, alias: "token", required: true }] }], isDigitalWalletPayment: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDigitalWalletPayment", required: false }] }], onSubmit: [{ type: i0.Output, args: ["onSubmit"] }] } });
117
+
118
+ /*
119
+ * Public API Surface of software-division-components
120
+ */
121
+
122
+ /**
123
+ * Generated bundle index. Do not edit.
124
+ */
125
+
126
+ export { BraintreeComponent };
127
+ //# sourceMappingURL=3ddv-software-division-components-generic-braintree.mjs.map