@3ddv/software-division-components 1.0.2 → 1.1.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 (323) hide show
  1. package/dvm/neighbors/neighbors.component.d.ts +41 -0
  2. package/dvm/neighbors/neighbors.component.d.ts.map +1 -0
  3. package/dvm/neighbors/public-api.d.ts +3 -0
  4. package/{dist/dvm → dvm}/neighbors/public-api.d.ts.map +1 -1
  5. package/{dist/dvm → dvm}/neighbors/types.d.ts +6 -0
  6. package/{dist/dvm → dvm}/neighbors/types.d.ts.map +1 -1
  7. package/dvm/popover/base-popover.component.d.ts +28 -0
  8. package/dvm/popover/base-popover.component.d.ts.map +1 -0
  9. package/dvm/popover/popover.component.d.ts +69 -0
  10. package/dvm/popover/popover.component.d.ts.map +1 -0
  11. package/{dist/dvm → dvm}/popover/popover.config.d.ts +7 -2
  12. package/dvm/popover/popover.config.d.ts.map +1 -0
  13. package/{dist/dvm → dvm}/popover/popover.service.d.ts +57 -2
  14. package/dvm/popover/popover.service.d.ts.map +1 -0
  15. package/dvm/popover/public-api.d.ts +11 -0
  16. package/dvm/popover/public-api.d.ts.map +1 -0
  17. package/dvm/popover/seat-popover/seat-popover.component.d.ts +21 -0
  18. package/dvm/popover/seat-popover/seat-popover.component.d.ts.map +1 -0
  19. package/dvm/popover/section-popover/section-popover.component.d.ts +32 -0
  20. package/dvm/popover/section-popover/section-popover.component.d.ts.map +1 -0
  21. package/dvm/popover/services/dvm-popover-positioner.service.d.ts +30 -0
  22. package/dvm/popover/services/dvm-popover-positioner.service.d.ts.map +1 -0
  23. package/dvm/popover/services/popover-manager.service.d.ts +29 -0
  24. package/dvm/popover/services/popover-manager.service.d.ts.map +1 -0
  25. package/dvm/popover/transformers/base-popover-data-transformer.d.ts +29 -0
  26. package/dvm/popover/transformers/base-popover-data-transformer.d.ts.map +1 -0
  27. package/dvm/popover/types.d.ts +79 -0
  28. package/dvm/popover/types.d.ts.map +1 -0
  29. package/{dist/fesm2022 → fesm2022}/3ddv-software-division-components.mjs +1009 -356
  30. package/fesm2022/3ddv-software-division-components.mjs.map +1 -0
  31. package/package.json +180 -130
  32. package/{dist/styles.css → styles.css} +1 -1
  33. package/README.backup.md +0 -575
  34. package/dist/README.md +0 -575
  35. package/dist/dvm/neighbors/neighbors.component.d.ts +0 -45
  36. package/dist/dvm/neighbors/neighbors.component.d.ts.map +0 -1
  37. package/dist/dvm/neighbors/public-api.d.ts +0 -3
  38. package/dist/dvm/popover/popover.component.d.ts +0 -39
  39. package/dist/dvm/popover/popover.component.d.ts.map +0 -1
  40. package/dist/dvm/popover/popover.config.d.ts.map +0 -1
  41. package/dist/dvm/popover/popover.service.d.ts.map +0 -1
  42. package/dist/dvm/popover/public-api.d.ts +0 -5
  43. package/dist/dvm/popover/public-api.d.ts.map +0 -1
  44. package/dist/dvm/popover/types.d.ts +0 -33
  45. package/dist/dvm/popover/types.d.ts.map +0 -1
  46. package/dist/fesm2022/3ddv-software-division-components.mjs.map +0 -1
  47. /package/{dist/3ddv-software-division-components.d.ts.map → 3ddv-software-division-components.d.ts.map} +0 -0
  48. /package/{dist/backoffice → backoffice}/checkbox/checkbox.component.d.ts +0 -0
  49. /package/{dist/backoffice → backoffice}/checkbox/checkbox.component.d.ts.map +0 -0
  50. /package/{dist/backoffice → backoffice}/checkbox/index.d.ts +0 -0
  51. /package/{dist/backoffice → backoffice}/checkbox/index.d.ts.map +0 -0
  52. /package/{dist/backoffice → backoffice}/checkbox/public-api.d.ts +0 -0
  53. /package/{dist/backoffice → backoffice}/checkbox/public-api.d.ts.map +0 -0
  54. /package/{dist/backoffice → backoffice}/datepicker/datepicker.component.d.ts +0 -0
  55. /package/{dist/backoffice → backoffice}/datepicker/datepicker.component.d.ts.map +0 -0
  56. /package/{dist/backoffice → backoffice}/datepicker/index.d.ts +0 -0
  57. /package/{dist/backoffice → backoffice}/datepicker/index.d.ts.map +0 -0
  58. /package/{dist/backoffice → backoffice}/datepicker/public-api.d.ts +0 -0
  59. /package/{dist/backoffice → backoffice}/datepicker/public-api.d.ts.map +0 -0
  60. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-calendar-helm/src/index.d.ts +0 -0
  61. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-calendar-helm/src/index.d.ts.map +0 -0
  62. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar-multi.d.ts +0 -0
  63. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar-multi.d.ts.map +0 -0
  64. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar.d.ts +0 -0
  65. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-calendar-helm/src/lib/hlm-calendar.d.ts.map +0 -0
  66. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-date-picker-helm/src/index.d.ts +0 -0
  67. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-date-picker-helm/src/index.d.ts.map +0 -0
  68. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.d.ts +0 -0
  69. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.d.ts.map +0 -0
  70. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.token.d.ts +0 -0
  71. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker-multi.token.d.ts.map +0 -0
  72. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.d.ts +0 -0
  73. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.d.ts.map +0 -0
  74. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.token.d.ts +0 -0
  75. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-date-picker-helm/src/lib/hlm-date-picker.token.d.ts.map +0 -0
  76. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-icon-helm/src/index.d.ts +0 -0
  77. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-icon-helm/src/index.d.ts.map +0 -0
  78. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.d.ts +0 -0
  79. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.d.ts.map +0 -0
  80. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts +0 -0
  81. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts.map +0 -0
  82. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-popover-helm/src/index.d.ts +0 -0
  83. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-popover-helm/src/index.d.ts.map +0 -0
  84. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-close.d.ts +0 -0
  85. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-close.d.ts.map +0 -0
  86. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-content.d.ts +0 -0
  87. /package/{dist/backoffice → backoffice}/datepicker/ui/ui-popover-helm/src/lib/hlm-popover-content.d.ts.map +0 -0
  88. /package/{dist/backoffice → backoffice}/index.d.ts +0 -0
  89. /package/{dist/backoffice → backoffice}/index.d.ts.map +0 -0
  90. /package/{dist/backoffice → backoffice}/input/index.d.ts +0 -0
  91. /package/{dist/backoffice → backoffice}/input/index.d.ts.map +0 -0
  92. /package/{dist/backoffice → backoffice}/input/input.component.d.ts +0 -0
  93. /package/{dist/backoffice → backoffice}/input/input.component.d.ts.map +0 -0
  94. /package/{dist/backoffice → backoffice}/input/public-api.d.ts +0 -0
  95. /package/{dist/backoffice → backoffice}/input/public-api.d.ts.map +0 -0
  96. /package/{dist/backoffice → backoffice}/public-api.d.ts +0 -0
  97. /package/{dist/backoffice → backoffice}/public-api.d.ts.map +0 -0
  98. /package/{dist/backoffice → backoffice}/radio/index.d.ts +0 -0
  99. /package/{dist/backoffice → backoffice}/radio/index.d.ts.map +0 -0
  100. /package/{dist/backoffice → backoffice}/radio/public-api.d.ts +0 -0
  101. /package/{dist/backoffice → backoffice}/radio/public-api.d.ts.map +0 -0
  102. /package/{dist/backoffice → backoffice}/radio/radio.component.d.ts +0 -0
  103. /package/{dist/backoffice → backoffice}/radio/radio.component.d.ts.map +0 -0
  104. /package/{dist/backoffice → backoffice}/table/_components/pagination/pagination.component.d.ts +0 -0
  105. /package/{dist/backoffice → backoffice}/table/_components/pagination/pagination.component.d.ts.map +0 -0
  106. /package/{dist/backoffice → backoffice}/table/_components/selection-table-head/selection-table-head.component.d.ts +0 -0
  107. /package/{dist/backoffice → backoffice}/table/_components/selection-table-head/selection-table-head.component.d.ts.map +0 -0
  108. /package/{dist/backoffice → backoffice}/table/_components/selection-table-row/selection-table-row.component.d.ts +0 -0
  109. /package/{dist/backoffice → backoffice}/table/_components/selection-table-row/selection-table-row.component.d.ts.map +0 -0
  110. /package/{dist/backoffice → backoffice}/table/_components/sort-header-button/sort-header-button.component.d.ts +0 -0
  111. /package/{dist/backoffice → backoffice}/table/_components/sort-header-button/sort-header-button.component.d.ts.map +0 -0
  112. /package/{dist/backoffice → backoffice}/table/index.d.ts +0 -0
  113. /package/{dist/backoffice → backoffice}/table/index.d.ts.map +0 -0
  114. /package/{dist/backoffice → backoffice}/table/public-api.d.ts +0 -0
  115. /package/{dist/backoffice → backoffice}/table/public-api.d.ts.map +0 -0
  116. /package/{dist/backoffice → backoffice}/table/table.component.d.ts +0 -0
  117. /package/{dist/backoffice → backoffice}/table/table.component.d.ts.map +0 -0
  118. /package/{dist/backoffice → backoffice}/table/ui/ui-icon-helm/src/index.d.ts +0 -0
  119. /package/{dist/backoffice → backoffice}/table/ui/ui-icon-helm/src/index.d.ts.map +0 -0
  120. /package/{dist/backoffice → backoffice}/table/ui/ui-icon-helm/src/lib/hlm-icon.d.ts +0 -0
  121. /package/{dist/backoffice → backoffice}/table/ui/ui-icon-helm/src/lib/hlm-icon.d.ts.map +0 -0
  122. /package/{dist/backoffice → backoffice}/table/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts +0 -0
  123. /package/{dist/backoffice → backoffice}/table/ui/ui-icon-helm/src/lib/hlm-icon.token.d.ts.map +0 -0
  124. /package/{dist/backoffice → backoffice}/table/ui/ui-table-helm/src/index.d.ts +0 -0
  125. /package/{dist/backoffice → backoffice}/table/ui/ui-table-helm/src/index.d.ts.map +0 -0
  126. /package/{dist/backoffice → backoffice}/table/ui/ui-table-helm/src/lib/hlm-table.d.ts +0 -0
  127. /package/{dist/backoffice → backoffice}/table/ui/ui-table-helm/src/lib/hlm-table.d.ts.map +0 -0
  128. /package/{dist/dvm → dvm}/cart/cart.component.d.ts +0 -0
  129. /package/{dist/dvm → dvm}/cart/cart.component.d.ts.map +0 -0
  130. /package/{dist/dvm → dvm}/cart/cart.service.d.ts +0 -0
  131. /package/{dist/dvm → dvm}/cart/cart.service.d.ts.map +0 -0
  132. /package/{dist/dvm → dvm}/cart/index.d.ts +0 -0
  133. /package/{dist/dvm → dvm}/cart/index.d.ts.map +0 -0
  134. /package/{dist/dvm → dvm}/cart/public-api.d.ts +0 -0
  135. /package/{dist/dvm → dvm}/cart/public-api.d.ts.map +0 -0
  136. /package/{dist/dvm → dvm}/cart-item/cart-item.component.d.ts +0 -0
  137. /package/{dist/dvm → dvm}/cart-item/cart-item.component.d.ts.map +0 -0
  138. /package/{dist/dvm → dvm}/cart-item/cart-item.service.d.ts +0 -0
  139. /package/{dist/dvm → dvm}/cart-item/cart-item.service.d.ts.map +0 -0
  140. /package/{dist/dvm → dvm}/cart-item/index.d.ts +0 -0
  141. /package/{dist/dvm → dvm}/cart-item/index.d.ts.map +0 -0
  142. /package/{dist/dvm → dvm}/cart-item/public-api.d.ts +0 -0
  143. /package/{dist/dvm → dvm}/cart-item/public-api.d.ts.map +0 -0
  144. /package/{dist/dvm → dvm}/index.d.ts +0 -0
  145. /package/{dist/dvm → dvm}/index.d.ts.map +0 -0
  146. /package/{dist/dvm → dvm}/legend/index.d.ts +0 -0
  147. /package/{dist/dvm → dvm}/legend/index.d.ts.map +0 -0
  148. /package/{dist/dvm → dvm}/legend/legend.component.d.ts +0 -0
  149. /package/{dist/dvm → dvm}/legend/legend.component.d.ts.map +0 -0
  150. /package/{dist/dvm → dvm}/legend/public-api.d.ts +0 -0
  151. /package/{dist/dvm → dvm}/legend/public-api.d.ts.map +0 -0
  152. /package/{dist/dvm → dvm}/legend/types.d.ts +0 -0
  153. /package/{dist/dvm → dvm}/legend/types.d.ts.map +0 -0
  154. /package/{dist/dvm → dvm}/legend/ui/legend-elements/index.d.ts +0 -0
  155. /package/{dist/dvm → dvm}/legend/ui/legend-elements/index.d.ts.map +0 -0
  156. /package/{dist/dvm → dvm}/legend/ui/legend-elements/legend-elements.component.d.ts +0 -0
  157. /package/{dist/dvm → dvm}/legend/ui/legend-elements/legend-elements.component.d.ts.map +0 -0
  158. /package/{dist/dvm → dvm}/loader/index.d.ts +0 -0
  159. /package/{dist/dvm → dvm}/loader/index.d.ts.map +0 -0
  160. /package/{dist/dvm → dvm}/loader/loader.component.d.ts +0 -0
  161. /package/{dist/dvm → dvm}/loader/loader.component.d.ts.map +0 -0
  162. /package/{dist/dvm → dvm}/loader/loader.service.d.ts +0 -0
  163. /package/{dist/dvm → dvm}/loader/loader.service.d.ts.map +0 -0
  164. /package/{dist/dvm → dvm}/loader/public-api.d.ts +0 -0
  165. /package/{dist/dvm → dvm}/loader/public-api.d.ts.map +0 -0
  166. /package/{dist/dvm → dvm}/map-loader/index.d.ts +0 -0
  167. /package/{dist/dvm → dvm}/map-loader/index.d.ts.map +0 -0
  168. /package/{dist/dvm → dvm}/map-loader/map-loader.component.d.ts +0 -0
  169. /package/{dist/dvm → dvm}/map-loader/map-loader.component.d.ts.map +0 -0
  170. /package/{dist/dvm → dvm}/map-loader/public-api.d.ts +0 -0
  171. /package/{dist/dvm → dvm}/map-loader/public-api.d.ts.map +0 -0
  172. /package/{dist/dvm → dvm}/neighbors/index.d.ts +0 -0
  173. /package/{dist/dvm → dvm}/neighbors/index.d.ts.map +0 -0
  174. /package/{dist/dvm → dvm}/popover/index.d.ts +0 -0
  175. /package/{dist/dvm → dvm}/popover/index.d.ts.map +0 -0
  176. /package/{dist/dvm → dvm}/public-api.d.ts +0 -0
  177. /package/{dist/dvm → dvm}/public-api.d.ts.map +0 -0
  178. /package/{dist/dvm → dvm}/stepper/index.d.ts +0 -0
  179. /package/{dist/dvm → dvm}/stepper/index.d.ts.map +0 -0
  180. /package/{dist/dvm → dvm}/stepper/public-api.d.ts +0 -0
  181. /package/{dist/dvm → dvm}/stepper/public-api.d.ts.map +0 -0
  182. /package/{dist/dvm → dvm}/stepper/stepper.component.d.ts +0 -0
  183. /package/{dist/dvm → dvm}/stepper/stepper.component.d.ts.map +0 -0
  184. /package/{dist/dvm → dvm}/stepper/types.d.ts +0 -0
  185. /package/{dist/dvm → dvm}/stepper/types.d.ts.map +0 -0
  186. /package/{dist/dvm → dvm}/ticket-info-item/index.d.ts +0 -0
  187. /package/{dist/dvm → dvm}/ticket-info-item/index.d.ts.map +0 -0
  188. /package/{dist/dvm → dvm}/ticket-info-item/public-api.d.ts +0 -0
  189. /package/{dist/dvm → dvm}/ticket-info-item/public-api.d.ts.map +0 -0
  190. /package/{dist/dvm → dvm}/ticket-info-item/ticket-info-item.component.d.ts +0 -0
  191. /package/{dist/dvm → dvm}/ticket-info-item/ticket-info-item.component.d.ts.map +0 -0
  192. /package/{dist/dvm → dvm}/ticket-info-item/ticket-info-item.service.d.ts +0 -0
  193. /package/{dist/dvm → dvm}/ticket-info-item/ticket-info-item.service.d.ts.map +0 -0
  194. /package/{dist/generic → generic}/add-digital-wallet/add-digital-wallet.component.d.ts +0 -0
  195. /package/{dist/generic → generic}/add-digital-wallet/add-digital-wallet.component.d.ts.map +0 -0
  196. /package/{dist/generic → generic}/add-digital-wallet/index.d.ts +0 -0
  197. /package/{dist/generic → generic}/add-digital-wallet/index.d.ts.map +0 -0
  198. /package/{dist/generic → generic}/add-digital-wallet/public-api.d.ts +0 -0
  199. /package/{dist/generic → generic}/add-digital-wallet/public-api.d.ts.map +0 -0
  200. /package/{dist/generic → generic}/braintree/braintree.component.d.ts +0 -0
  201. /package/{dist/generic → generic}/braintree/braintree.component.d.ts.map +0 -0
  202. /package/{dist/generic → generic}/braintree/index.d.ts +0 -0
  203. /package/{dist/generic → generic}/braintree/index.d.ts.map +0 -0
  204. /package/{dist/generic → generic}/braintree/public-api.d.ts +0 -0
  205. /package/{dist/generic → generic}/braintree/public-api.d.ts.map +0 -0
  206. /package/{dist/generic → generic}/braintree/types.d.ts +0 -0
  207. /package/{dist/generic → generic}/braintree/types.d.ts.map +0 -0
  208. /package/{dist/generic → generic}/button/button.component.d.ts +0 -0
  209. /package/{dist/generic → generic}/button/button.component.d.ts.map +0 -0
  210. /package/{dist/generic → generic}/button/index.d.ts +0 -0
  211. /package/{dist/generic → generic}/button/index.d.ts.map +0 -0
  212. /package/{dist/generic → generic}/button/public-api.d.ts +0 -0
  213. /package/{dist/generic → generic}/button/public-api.d.ts.map +0 -0
  214. /package/{dist/generic → generic}/button/ui/ui-button-helm/src/index.d.ts +0 -0
  215. /package/{dist/generic → generic}/button/ui/ui-button-helm/src/index.d.ts.map +0 -0
  216. /package/{dist/generic → generic}/button/ui/ui-button-helm/src/lib/hlm-button.d.ts +0 -0
  217. /package/{dist/generic → generic}/button/ui/ui-button-helm/src/lib/hlm-button.d.ts.map +0 -0
  218. /package/{dist/generic → generic}/button/ui/ui-button-helm/src/lib/hlm-button.token.d.ts +0 -0
  219. /package/{dist/generic → generic}/button/ui/ui-button-helm/src/lib/hlm-button.token.d.ts.map +0 -0
  220. /package/{dist/generic → generic}/dialog/dialog.component.d.ts +0 -0
  221. /package/{dist/generic → generic}/dialog/dialog.component.d.ts.map +0 -0
  222. /package/{dist/generic → generic}/dialog/index.d.ts +0 -0
  223. /package/{dist/generic → generic}/dialog/index.d.ts.map +0 -0
  224. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/index.d.ts +0 -0
  225. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/index.d.ts.map +0 -0
  226. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-close.d.ts +0 -0
  227. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-close.d.ts.map +0 -0
  228. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-content.d.ts +0 -0
  229. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-content.d.ts.map +0 -0
  230. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-description.d.ts +0 -0
  231. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-description.d.ts.map +0 -0
  232. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-footer.d.ts +0 -0
  233. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-footer.d.ts.map +0 -0
  234. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-header.d.ts +0 -0
  235. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-header.d.ts.map +0 -0
  236. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-overlay.d.ts +0 -0
  237. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-overlay.d.ts.map +0 -0
  238. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-title.d.ts +0 -0
  239. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog-title.d.ts.map +0 -0
  240. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.d.ts +0 -0
  241. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.d.ts.map +0 -0
  242. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.service.d.ts +0 -0
  243. /package/{dist/generic → generic}/dialog/libs/ui-dialog-helm/src/lib/hlm-dialog.service.d.ts.map +0 -0
  244. /package/{dist/generic → generic}/dialog/public-api.d.ts +0 -0
  245. /package/{dist/generic → generic}/dialog/public-api.d.ts.map +0 -0
  246. /package/{dist/generic → generic}/drawer/drawer.component.d.ts +0 -0
  247. /package/{dist/generic → generic}/drawer/drawer.component.d.ts.map +0 -0
  248. /package/{dist/generic → generic}/drawer/drawer.service.d.ts +0 -0
  249. /package/{dist/generic → generic}/drawer/drawer.service.d.ts.map +0 -0
  250. /package/{dist/generic → generic}/drawer/index.d.ts +0 -0
  251. /package/{dist/generic → generic}/drawer/index.d.ts.map +0 -0
  252. /package/{dist/generic → generic}/drawer/public-api.d.ts +0 -0
  253. /package/{dist/generic → generic}/drawer/public-api.d.ts.map +0 -0
  254. /package/{dist/generic → generic}/icon/icon.component.d.ts +0 -0
  255. /package/{dist/generic → generic}/icon/icon.component.d.ts.map +0 -0
  256. /package/{dist/generic → generic}/icon/index.d.ts +0 -0
  257. /package/{dist/generic → generic}/icon/index.d.ts.map +0 -0
  258. /package/{dist/generic → generic}/icon/lib/ui-icon-helm/src/index.d.ts +0 -0
  259. /package/{dist/generic → generic}/icon/lib/ui-icon-helm/src/index.d.ts.map +0 -0
  260. /package/{dist/generic → generic}/icon/lib/ui-icon-helm/src/lib/hlm-icon.d.ts +0 -0
  261. /package/{dist/generic → generic}/icon/lib/ui-icon-helm/src/lib/hlm-icon.d.ts.map +0 -0
  262. /package/{dist/generic → generic}/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.d.ts +0 -0
  263. /package/{dist/generic → generic}/icon/lib/ui-icon-helm/src/lib/hlm-icon.token.d.ts.map +0 -0
  264. /package/{dist/generic → generic}/icon/public-api.d.ts +0 -0
  265. /package/{dist/generic → generic}/icon/public-api.d.ts.map +0 -0
  266. /package/{dist/generic → generic}/index.d.ts +0 -0
  267. /package/{dist/generic → generic}/index.d.ts.map +0 -0
  268. /package/{dist/generic → generic}/public-api.d.ts +0 -0
  269. /package/{dist/generic → generic}/public-api.d.ts.map +0 -0
  270. /package/{dist/generic → generic}/select/index.d.ts +0 -0
  271. /package/{dist/generic → generic}/select/index.d.ts.map +0 -0
  272. /package/{dist/generic → generic}/select/lib/hlm-select-content.d.ts +0 -0
  273. /package/{dist/generic → generic}/select/lib/hlm-select-content.d.ts.map +0 -0
  274. /package/{dist/generic → generic}/select/lib/hlm-select-group.d.ts +0 -0
  275. /package/{dist/generic → generic}/select/lib/hlm-select-group.d.ts.map +0 -0
  276. /package/{dist/generic → generic}/select/lib/hlm-select-label.d.ts +0 -0
  277. /package/{dist/generic → generic}/select/lib/hlm-select-label.d.ts.map +0 -0
  278. /package/{dist/generic → generic}/select/lib/hlm-select-option.d.ts +0 -0
  279. /package/{dist/generic → generic}/select/lib/hlm-select-option.d.ts.map +0 -0
  280. /package/{dist/generic → generic}/select/lib/hlm-select-scroll-down.d.ts +0 -0
  281. /package/{dist/generic → generic}/select/lib/hlm-select-scroll-down.d.ts.map +0 -0
  282. /package/{dist/generic → generic}/select/lib/hlm-select-scroll-up.d.ts +0 -0
  283. /package/{dist/generic → generic}/select/lib/hlm-select-scroll-up.d.ts.map +0 -0
  284. /package/{dist/generic → generic}/select/lib/hlm-select-trigger.d.ts +0 -0
  285. /package/{dist/generic → generic}/select/lib/hlm-select-trigger.d.ts.map +0 -0
  286. /package/{dist/generic → generic}/select/lib/hlm-select-value.d.ts +0 -0
  287. /package/{dist/generic → generic}/select/lib/hlm-select-value.d.ts.map +0 -0
  288. /package/{dist/generic → generic}/select/lib/hlm-select.d.ts +0 -0
  289. /package/{dist/generic → generic}/select/lib/hlm-select.d.ts.map +0 -0
  290. /package/{dist/generic → generic}/select/lib/index.d.ts +0 -0
  291. /package/{dist/generic → generic}/select/lib/index.d.ts.map +0 -0
  292. /package/{dist/generic → generic}/select/public-api.d.ts +0 -0
  293. /package/{dist/generic → generic}/select/public-api.d.ts.map +0 -0
  294. /package/{dist/generic → generic}/select/select.component.d.ts +0 -0
  295. /package/{dist/generic → generic}/select/select.component.d.ts.map +0 -0
  296. /package/{dist/generic → generic}/select/types.d.ts +0 -0
  297. /package/{dist/generic → generic}/select/types.d.ts.map +0 -0
  298. /package/{dist/index.d.ts → index.d.ts} +0 -0
  299. /package/{dist/public-api.d.ts → public-api.d.ts} +0 -0
  300. /package/{dist/public-api.d.ts.map → public-api.d.ts.map} +0 -0
  301. /package/{dist/shared → shared}/declare-theme-variables/declare-theme-variables.d.ts +0 -0
  302. /package/{dist/shared → shared}/declare-theme-variables/declare-theme-variables.d.ts.map +0 -0
  303. /package/{dist/shared → shared}/declare-theme-variables/index.d.ts +0 -0
  304. /package/{dist/shared → shared}/declare-theme-variables/index.d.ts.map +0 -0
  305. /package/{dist/shared → shared}/lib-provider/config-token.d.ts +0 -0
  306. /package/{dist/shared → shared}/lib-provider/config-token.d.ts.map +0 -0
  307. /package/{dist/shared → shared}/lib-provider/index.d.ts +0 -0
  308. /package/{dist/shared → shared}/lib-provider/index.d.ts.map +0 -0
  309. /package/{dist/shared → shared}/lib-provider/provide-sdc.d.ts +0 -0
  310. /package/{dist/shared → shared}/lib-provider/provide-sdc.d.ts.map +0 -0
  311. /package/{dist/shared → shared}/lib-provider/public-api.d.ts +0 -0
  312. /package/{dist/shared → shared}/lib-provider/public-api.d.ts.map +0 -0
  313. /package/{dist/shared → shared}/screen-observer/index.d.ts +0 -0
  314. /package/{dist/shared → shared}/screen-observer/index.d.ts.map +0 -0
  315. /package/{dist/shared → shared}/screen-observer/provide-screen-observer.d.ts +0 -0
  316. /package/{dist/shared → shared}/screen-observer/provide-screen-observer.d.ts.map +0 -0
  317. /package/{dist/shared → shared}/screen-observer/screen-observer.d.ts +0 -0
  318. /package/{dist/shared → shared}/screen-observer/screen-observer.d.ts.map +0 -0
  319. /package/{dist/shared → shared}/types.d.ts +0 -0
  320. /package/{dist/shared → shared}/types.d.ts.map +0 -0
  321. /package/{dist/tailwind.config.js → tailwind.config.js} +0 -0
  322. /package/{dist/types → types}/sizes.type.d.ts +0 -0
  323. /package/{dist/types → types}/sizes.type.d.ts.map +0 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, computed, signal, Component, InjectionToken, inject, Directive, NgModule, booleanAttribute, model, numberAttribute, viewChild, ChangeDetectionStrategy, Renderer2, ElementRef, effect, forwardRef, output, Injectable, ChangeDetectorRef, ViewChild, ApplicationRef, EnvironmentInjector, createComponent, Input, DestroyRef, untracked, ViewEncapsulation, contentChild } from '@angular/core';
2
+ import { input, computed, signal, Component, InjectionToken, inject, Directive, NgModule, booleanAttribute, model, numberAttribute, viewChild, ChangeDetectionStrategy, Renderer2, ElementRef, effect, forwardRef, output, Injectable, ChangeDetectorRef, EventEmitter, Output, ViewChild, ApplicationRef, EnvironmentInjector, createEnvironmentInjector, createComponent, TemplateRef, Input, Inject, DestroyRef, untracked, ViewEncapsulation, contentChild } from '@angular/core';
3
3
  import * as i1 from '@angular/forms';
4
4
  import { FormSubmittedEvent, ReactiveFormsModule, NG_VALUE_ACCESSOR, TouchedChangeEvent, PristineChangeEvent, FormsModule, FormControl } from '@angular/forms';
5
5
  import { injectDateAdapter, provideDateAdapter, BrnNativeDateAdapter } from '@spartan-ng/brain/date-time';
@@ -9,20 +9,21 @@ import { hlm, injectExposesStateProvider, injectCustomClassSettable, injectExpos
9
9
  import { BrnPopover, BrnPopoverTrigger, BrnPopoverContent } from '@spartan-ng/brain/popover';
10
10
  import { injectBrnCalendarI18n, BrnCalendar, BrnCalendarHeader, BrnCalendarNextButton, BrnCalendarPreviousButton, BrnCalendarWeekday, BrnCalendarWeek, BrnCalendarCellButton, BrnCalendarCell, BrnCalendarGrid, BrnCalendarMulti } from '@spartan-ng/brain/calendar';
11
11
  import { cva } from 'class-variance-authority';
12
- import { Subject, takeUntil as takeUntil$1, mergeMap, skip, tap, merge, catchError, map, shareReplay, fromEvent, startWith } from 'rxjs';
12
+ import { Subject, takeUntil as takeUntil$1, mergeMap, skip, tap, merge, catchError, of, map, shareReplay, fromEvent, startWith } from 'rxjs';
13
13
  import { takeUntil, map as map$1 } from 'rxjs/operators';
14
14
  import { injectFlexRenderContext, FlexRenderDirective, flexRenderComponent, createAngularTable, getPaginationRowModel, getCoreRowModel } from '@tanstack/angular-table';
15
15
  export { FlexRenderDirective, createAngularTable, flexRenderComponent, getCoreRowModel, getExpandedRowModel, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel } from '@tanstack/angular-table';
16
- import * as i1$3 from '@angular/common';
16
+ import * as i1$1 from '@angular/common';
17
17
  import { CommonModule, NgOptimizedImage, DOCUMENT, CurrencyPipe, NgComponentOutlet, DatePipe } from '@angular/common';
18
- import { createTimeline, animate } from 'animejs';
18
+ import { createTimeline } from 'animejs';
19
19
  import { autoUpdate, arrow, computePosition, detectOverflow, inline, hide, autoPlacement, size, flip, shift, offset } from '@floating-ui/dom';
20
+ import { createPopper } from '@popperjs/core';
20
21
  import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
21
- import * as i1$1 from '@spartan-ng/brain/dialog';
22
+ import * as i1$2 from '@spartan-ng/brain/dialog';
22
23
  import { BrnDialog, BrnDialogOverlay, provideBrnDialogDefaultOptions, BrnDialogRef, injectBrnDialogContext, BrnDialogClose, BrnDialogDescription, BrnDialogTitle, BrnDialogService, cssClassesToArray, DEFAULT_BRN_DIALOG_OPTIONS } from '@spartan-ng/brain/dialog';
23
24
  import { HttpClient } from '@angular/common/http';
24
25
  import { DomSanitizer } from '@angular/platform-browser';
25
- import * as i1$2 from '@spartan-ng/brain/select';
26
+ import * as i1$3 from '@spartan-ng/brain/select';
26
27
  import { BrnSelectGroup, BrnSelectLabel, BrnSelectOption, BrnSelect, BrnSelectTrigger, BrnSelectImports } from '@spartan-ng/brain/select';
27
28
  import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
28
29
 
@@ -875,7 +876,7 @@ function injectHlmDatePickerConfig() {
875
876
  return injectedConfig ? injectedConfig : getDefaultConfig$1();
876
877
  }
877
878
 
878
- const _c0$b = ["*"];
879
+ const _c0$c = ["*"];
879
880
  function HlmDatePicker_Conditional_3_Template(rf, ctx) { if (rf & 1) {
880
881
  i0.ɵɵtext(0);
881
882
  } if (rf & 2) {
@@ -971,7 +972,7 @@ class HlmDatePicker {
971
972
  this._popoverState.set('closed');
972
973
  }
973
974
  static ɵfac = function HlmDatePicker_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || HlmDatePicker)(); };
974
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HlmDatePicker, selectors: [["hlm-date-picker"]], hostAttrs: [1, "block"], inputs: { userClass: [1, "class", "userClass"], styleClass: [1, "styleClass"], min: [1, "min"], max: [1, "max"], disabled: [1, "disabled"], date: [1, "date"], autoCloseOnSelect: [1, "autoCloseOnSelect"], formatDate: [1, "formatDate"], transformDate: [1, "transformDate"] }, outputs: { date: "dateChange", changed: "changed" }, features: [i0.ɵɵProvidersFeature([HLM_DATE_PICKER_VALUE_ACCESSOR, provideIcons({ lucideCalendar })])], ngContentSelectors: _c0$b, decls: 7, vars: 5, consts: [["sideOffset", "5", 3, "stateChanged", "state"], ["type", "button", "brnPopoverTrigger", "", 3, "disabled"], [1, "truncate"], ["hlm", "", "size", "sm", "name", "lucideCalendar"], ["hlmPopoverContent", "", "class", "w-auto p-0", 3, "class", 4, "brnPopoverContent"], ["hlmPopoverContent", "", 1, "w-auto", "p-0"], ["calendarClass", "border-0 rounded-none", 3, "dateChange", "date", "min", "max", "disabled"]], template: function HlmDatePicker_Template(rf, ctx) { if (rf & 1) {
975
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HlmDatePicker, selectors: [["hlm-date-picker"]], hostAttrs: [1, "block"], inputs: { userClass: [1, "class", "userClass"], styleClass: [1, "styleClass"], min: [1, "min"], max: [1, "max"], disabled: [1, "disabled"], date: [1, "date"], autoCloseOnSelect: [1, "autoCloseOnSelect"], formatDate: [1, "formatDate"], transformDate: [1, "transformDate"] }, outputs: { date: "dateChange", changed: "changed" }, features: [i0.ɵɵProvidersFeature([HLM_DATE_PICKER_VALUE_ACCESSOR, provideIcons({ lucideCalendar })])], ngContentSelectors: _c0$c, decls: 7, vars: 5, consts: [["sideOffset", "5", 3, "stateChanged", "state"], ["type", "button", "brnPopoverTrigger", "", 3, "disabled"], [1, "truncate"], ["hlm", "", "size", "sm", "name", "lucideCalendar"], ["hlmPopoverContent", "", "class", "w-auto p-0", 3, "class", 4, "brnPopoverContent"], ["hlmPopoverContent", "", 1, "w-auto", "p-0"], ["calendarClass", "border-0 rounded-none", 3, "dateChange", "date", "min", "max", "disabled"]], template: function HlmDatePicker_Template(rf, ctx) { if (rf & 1) {
975
976
  i0.ɵɵprojectionDef();
976
977
  i0.ɵɵelementStart(0, "brn-popover", 0);
977
978
  i0.ɵɵlistener("stateChanged", function HlmDatePicker_Template_brn_popover_stateChanged_0_listener($event) { return ctx._popoverState.set($event); });
@@ -1047,7 +1048,7 @@ function injectHlmDatePickerMultiConfig() {
1047
1048
  return injectedConfig ? injectedConfig : getDefaultConfig();
1048
1049
  }
1049
1050
 
1050
- const _c0$a = ["*"];
1051
+ const _c0$b = ["*"];
1051
1052
  function HlmDatePickerMulti_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1052
1053
  i0.ɵɵtext(0);
1053
1054
  } if (rf & 2) {
@@ -1148,7 +1149,7 @@ class HlmDatePickerMulti {
1148
1149
  this._popoverState.set('closed');
1149
1150
  }
1150
1151
  static ɵfac = function HlmDatePickerMulti_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || HlmDatePickerMulti)(); };
1151
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HlmDatePickerMulti, selectors: [["hlm-date-picker-multi"]], hostAttrs: [1, "block"], inputs: { userClass: [1, "class", "userClass"], min: [1, "min"], max: [1, "max"], minSelection: [1, "minSelection"], maxSelection: [1, "maxSelection"], disabled: [1, "disabled"], date: [1, "date"], autoCloseOnMaxSelection: [1, "autoCloseOnMaxSelection"], formatDates: [1, "formatDates"], transformDates: [1, "transformDates"] }, outputs: { date: "dateChange", changed: "changed" }, features: [i0.ɵɵProvidersFeature([HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR, provideIcons({ lucideCalendar })])], ngContentSelectors: _c0$a, decls: 7, vars: 5, consts: [["sideOffset", "5", 3, "stateChanged", "state"], ["type", "button", "brnPopoverTrigger", "", 3, "disabled"], ["hlm", "", "size", "sm", "name", "lucideCalendar"], [1, "truncate"], ["hlmPopoverContent", "", "class", "w-auto p-0", 4, "brnPopoverContent"], ["hlmPopoverContent", "", 1, "w-auto", "p-0"], ["calendarClass", "border-0 rounded-none", 3, "dateChange", "date", "min", "max", "minSelection", "maxSelection", "disabled"]], template: function HlmDatePickerMulti_Template(rf, ctx) { if (rf & 1) {
1152
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HlmDatePickerMulti, selectors: [["hlm-date-picker-multi"]], hostAttrs: [1, "block"], inputs: { userClass: [1, "class", "userClass"], min: [1, "min"], max: [1, "max"], minSelection: [1, "minSelection"], maxSelection: [1, "maxSelection"], disabled: [1, "disabled"], date: [1, "date"], autoCloseOnMaxSelection: [1, "autoCloseOnMaxSelection"], formatDates: [1, "formatDates"], transformDates: [1, "transformDates"] }, outputs: { date: "dateChange", changed: "changed" }, features: [i0.ɵɵProvidersFeature([HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR, provideIcons({ lucideCalendar })])], ngContentSelectors: _c0$b, decls: 7, vars: 5, consts: [["sideOffset", "5", 3, "stateChanged", "state"], ["type", "button", "brnPopoverTrigger", "", 3, "disabled"], ["hlm", "", "size", "sm", "name", "lucideCalendar"], [1, "truncate"], ["hlmPopoverContent", "", "class", "w-auto p-0", 4, "brnPopoverContent"], ["hlmPopoverContent", "", 1, "w-auto", "p-0"], ["calendarClass", "border-0 rounded-none", 3, "dateChange", "date", "min", "max", "minSelection", "maxSelection", "disabled"]], template: function HlmDatePickerMulti_Template(rf, ctx) { if (rf & 1) {
1152
1153
  i0.ɵɵprojectionDef();
1153
1154
  i0.ɵɵelementStart(0, "brn-popover", 0);
1154
1155
  i0.ɵɵlistener("stateChanged", function HlmDatePickerMulti_Template_brn_popover_stateChanged_0_listener($event) { return ctx._popoverState.set($event); });
@@ -2168,7 +2169,7 @@ class RadioComponent {
2168
2169
 
2169
2170
  const SIZES = { xxs: 'xxs', xs: 'xs', sm: 'sm', md: 'md', lg: 'lg', xl: 'xl', '2xl': '2xl' };
2170
2171
 
2171
- const _c0$9 = ["*"];
2172
+ const _c0$a = ["*"];
2172
2173
  const BUTTON_VARIANTS = {
2173
2174
  primary: 'primary',
2174
2175
  secondary: 'secondary',
@@ -2436,7 +2437,7 @@ class ButtonComponent {
2436
2437
  }, 600);
2437
2438
  }
2438
2439
  static ɵfac = function ButtonComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ButtonComponent)(i0.ɵɵdirectiveInject(i0.ElementRef)); };
2439
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ButtonComponent, selectors: [["sdc-button"]], inputs: { theme: [1, "theme"], styleClass: [1, "styleClass"], className: [1, "className"], variant: [1, "variant"], size: [1, "size"], type: [1, "type"], disabled: [1, "disabled"], ripple: [1, "ripple"], debounce: [1, "debounce"] }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur", isDebounced: "isDebounced" }, ngContentSelectors: _c0$9, decls: 2, vars: 4, consts: [["hlmBtn", "", 3, "click", "focus", "blur", "disabled", "type"]], template: function ButtonComponent_Template(rf, ctx) { if (rf & 1) {
2440
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ButtonComponent, selectors: [["sdc-button"]], inputs: { theme: [1, "theme"], styleClass: [1, "styleClass"], className: [1, "className"], variant: [1, "variant"], size: [1, "size"], type: [1, "type"], disabled: [1, "disabled"], ripple: [1, "ripple"], debounce: [1, "debounce"] }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur", isDebounced: "isDebounced" }, ngContentSelectors: _c0$a, decls: 2, vars: 4, consts: [["hlmBtn", "", 3, "click", "focus", "blur", "disabled", "type"]], template: function ButtonComponent_Template(rf, ctx) { if (rf & 1) {
2440
2441
  i0.ɵɵprojectionDef();
2441
2442
  i0.ɵɵelementStart(0, "button", 0);
2442
2443
  i0.ɵɵlistener("click", function ButtonComponent_Template_button_click_0_listener($event) { ctx.handleClick($event); return ctx.createRipple($event); })("focus", function ButtonComponent_Template_button_focus_0_listener($event) { return ctx.handleFocus($event); })("blur", function ButtonComponent_Template_button_blur_0_listener($event) { return ctx.handleBlur($event); });
@@ -3599,7 +3600,7 @@ class LoaderService {
3599
3600
  * Public API Surface of software-division-components
3600
3601
  */
3601
3602
 
3602
- const _c0$8 = ["pill"];
3603
+ const _c0$9 = ["pill"];
3603
3604
  const _c1$3 = ["pillContainer"];
3604
3605
  const _c2$1 = ["container"];
3605
3606
  class MapLoaderComponent {
@@ -3740,7 +3741,7 @@ class MapLoaderComponent {
3740
3741
  }
3741
3742
  static ɵfac = function MapLoaderComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MapLoaderComponent)(); };
3742
3743
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapLoaderComponent, selectors: [["sdc-map-loader"]], viewQuery: function MapLoaderComponent_Query(rf, ctx) { if (rf & 1) {
3743
- i0.ɵɵviewQuerySignal(ctx.pill, _c0$8, 5);
3744
+ i0.ɵɵviewQuerySignal(ctx.pill, _c0$9, 5);
3744
3745
  i0.ɵɵviewQuerySignal(ctx.pillContainer, _c1$3, 5);
3745
3746
  i0.ɵɵviewQuerySignal(ctx.container, _c2$1, 5);
3746
3747
  } if (rf & 2) {
@@ -3765,113 +3766,53 @@ class MapLoaderComponent {
3765
3766
  * Public API Surface of software-division-components
3766
3767
  */
3767
3768
 
3768
- const _c0$7 = ["neighborsContainer"];
3769
+ const _c0$8 = ["neighborsContainer"];
3769
3770
  const _c1$2 = ["currentSection"];
3770
3771
  const _c2 = ["currentSection3d"];
3771
3772
  const _c3 = ["leftSectionNumber"];
3772
3773
  const _c4 = ["rightSectionNumber"];
3773
- function NeighborsComponent_Conditional_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
3774
- i0.ɵɵelementStart(0, "span", 18, 1);
3775
- i0.ɵɵtext(2);
3776
- i0.ɵɵelementEnd();
3777
- } if (rf & 2) {
3778
- const ctx_r1 = i0.ɵɵnextContext(2);
3779
- i0.ɵɵadvance(2);
3780
- i0.ɵɵtextInterpolate1(" ", ctx_r1.leftSection, " ");
3781
- } }
3782
3774
  function NeighborsComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
3783
3775
  const _r1 = i0.ɵɵgetCurrentView();
3784
- i0.ɵɵelementStart(0, "div", 9);
3785
- i0.ɵɵlistener("click", function NeighborsComponent_Conditional_2_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToSection(ctx_r1.sectionData.l)); })("keypress.enter", function NeighborsComponent_Conditional_2_Template_div_keypress_enter_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToSection(ctx_r1.sectionData.l)); });
3786
- i0.ɵɵelementStart(1, "div", 10)(2, "i", 11);
3776
+ i0.ɵɵelementStart(0, "div", 7);
3777
+ i0.ɵɵlistener("click", function NeighborsComponent_Conditional_2_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToSection(ctx_r1.leftSection)); })("keypress.enter", function NeighborsComponent_Conditional_2_Template_div_keypress_enter_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToSection(ctx_r1.leftSection)); });
3778
+ i0.ɵɵelementStart(1, "i", 8);
3787
3779
  i0.ɵɵnamespaceSVG();
3788
- i0.ɵɵelementStart(3, "svg", 12);
3789
- i0.ɵɵelement(4, "path", 13);
3780
+ i0.ɵɵelementStart(2, "svg", 9);
3781
+ i0.ɵɵelement(3, "path", 10);
3790
3782
  i0.ɵɵelementEnd()()();
3791
- i0.ɵɵnamespaceHTML();
3792
- i0.ɵɵelementStart(5, "div", 14)(6, "p", 15)(7, "span", 16);
3793
- i0.ɵɵtext(8);
3794
- i0.ɵɵelementEnd();
3795
- i0.ɵɵelementStart(9, "span", 17);
3796
- i0.ɵɵtext(10);
3797
- i0.ɵɵelementEnd();
3798
- i0.ɵɵtemplate(11, NeighborsComponent_Conditional_2_Conditional_11_Template, 3, 1, "span", 18);
3799
- i0.ɵɵelementEnd()()();
3800
- } if (rf & 2) {
3801
- const ctx_r1 = i0.ɵɵnextContext();
3802
- i0.ɵɵclassMap(ctx_r1.leftSection === "none" ? "pointer-events-none opacity-0" : "");
3803
- i0.ɵɵadvance(8);
3804
- i0.ɵɵtextInterpolate1(" ", ctx_r1.modeLr() ? "Left Section" : "Section", "\u00A0 ");
3805
- i0.ɵɵadvance(2);
3806
- i0.ɵɵtextInterpolate1(" ", ctx_r1.modeLr() ? "L.Sec" : "Sec", "\u00A0 ");
3807
- i0.ɵɵadvance();
3808
- i0.ɵɵconditional(ctx_r1.leftSection !== "none" && !ctx_r1.modeLr() ? 11 : -1);
3809
3783
  } }
3810
3784
  function NeighborsComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
3811
- i0.ɵɵelementStart(0, "p", 7)(1, "span");
3812
- i0.ɵɵtext(2, " Loading ");
3785
+ i0.ɵɵelementStart(0, "p", 5)(1, "span");
3786
+ i0.ɵɵtext(2, "Loading");
3813
3787
  i0.ɵɵelementEnd()();
3814
3788
  } }
3815
3789
  function NeighborsComponent_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
3816
- i0.ɵɵelementStart(0, "h3", 19)(1, "span", 17);
3817
- i0.ɵɵtext(2, " Section\u00A0 ");
3818
- i0.ɵɵelementEnd();
3819
- i0.ɵɵelementStart(3, "span", 16);
3820
- i0.ɵɵtext(4, " Sec\u00A0 ");
3821
- i0.ɵɵelementEnd();
3822
- i0.ɵɵelement(5, "p", 20, 2);
3790
+ i0.ɵɵelementStart(0, "h3", 11)(1, "span", 12);
3791
+ i0.ɵɵtext(2, "Section ");
3823
3792
  i0.ɵɵelementEnd();
3793
+ i0.ɵɵelementStart(3, "span", 13, 1);
3794
+ i0.ɵɵtext(5);
3795
+ i0.ɵɵelementEnd()();
3824
3796
  } if (rf & 2) {
3825
3797
  const ctx_r1 = i0.ɵɵnextContext(2);
3826
- i0.ɵɵadvance();
3827
- i0.ɵɵclassProp("hidden", ctx_r1.is3d);
3828
- i0.ɵɵadvance(2);
3829
- i0.ɵɵclassProp("hidden", ctx_r1.is3d);
3830
- i0.ɵɵadvance(2);
3831
- i0.ɵɵproperty("innerHTML", ctx_r1.selectedSection, i0.ɵɵsanitizeHtml);
3798
+ i0.ɵɵadvance(5);
3799
+ i0.ɵɵtextInterpolate(ctx_r1.section);
3832
3800
  } }
3833
3801
  function NeighborsComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
3834
- i0.ɵɵtemplate(0, NeighborsComponent_Conditional_5_Conditional_0_Template, 7, 5, "h3", 19);
3802
+ i0.ɵɵtemplate(0, NeighborsComponent_Conditional_5_Conditional_0_Template, 6, 1, "h3", 11);
3835
3803
  } if (rf & 2) {
3836
3804
  const ctx_r1 = i0.ɵɵnextContext();
3837
- i0.ɵɵconditional(ctx_r1.selectedSection ? 0 : -1);
3838
- } }
3839
- function NeighborsComponent_Conditional_6_Conditional_11_Template(rf, ctx) { if (rf & 1) {
3840
- i0.ɵɵelementStart(0, "span", 18, 3);
3841
- i0.ɵɵtext(2);
3842
- i0.ɵɵelementEnd();
3843
- } if (rf & 2) {
3844
- const ctx_r1 = i0.ɵɵnextContext(2);
3845
- i0.ɵɵadvance(2);
3846
- i0.ɵɵtextInterpolate1(" ", ctx_r1.rightSection, " ");
3805
+ i0.ɵɵconditional(ctx_r1.section ? 0 : -1);
3847
3806
  } }
3848
3807
  function NeighborsComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
3849
3808
  const _r3 = i0.ɵɵgetCurrentView();
3850
- i0.ɵɵelementStart(0, "div", 21);
3851
- i0.ɵɵlistener("click", function NeighborsComponent_Conditional_6_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToSection(ctx_r1.sectionData.r)); })("keypress.enter", function NeighborsComponent_Conditional_6_Template_div_keypress_enter_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToSection(ctx_r1.sectionData.r)); });
3852
- i0.ɵɵelementStart(1, "div", 10)(2, "i", 11);
3809
+ i0.ɵɵelementStart(0, "div", 14);
3810
+ i0.ɵɵlistener("click", function NeighborsComponent_Conditional_6_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToSection(ctx_r1.rightSection)); })("keypress.enter", function NeighborsComponent_Conditional_6_Template_div_keypress_enter_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigateToSection(ctx_r1.rightSection)); });
3811
+ i0.ɵɵelementStart(1, "i", 8);
3853
3812
  i0.ɵɵnamespaceSVG();
3854
- i0.ɵɵelementStart(3, "svg", 12);
3855
- i0.ɵɵelement(4, "path", 22);
3856
- i0.ɵɵelementEnd()()();
3857
- i0.ɵɵnamespaceHTML();
3858
- i0.ɵɵelementStart(5, "div", 14)(6, "p", 15)(7, "span", 16);
3859
- i0.ɵɵtext(8);
3860
- i0.ɵɵelementEnd();
3861
- i0.ɵɵelementStart(9, "span", 17);
3862
- i0.ɵɵtext(10);
3863
- i0.ɵɵelementEnd();
3864
- i0.ɵɵtemplate(11, NeighborsComponent_Conditional_6_Conditional_11_Template, 3, 1, "span", 18);
3813
+ i0.ɵɵelementStart(2, "svg", 9);
3814
+ i0.ɵɵelement(3, "path", 15);
3865
3815
  i0.ɵɵelementEnd()()();
3866
- } if (rf & 2) {
3867
- const ctx_r1 = i0.ɵɵnextContext();
3868
- i0.ɵɵclassMap(ctx_r1.rightSection === "none" ? "pointer-events-none opacity-0" : "");
3869
- i0.ɵɵadvance(8);
3870
- i0.ɵɵtextInterpolate1(" ", ctx_r1.modeLr() ? "Right Section" : "Section", "\u00A0 ");
3871
- i0.ɵɵadvance(2);
3872
- i0.ɵɵtextInterpolate1(" ", ctx_r1.modeLr() ? "R.Sec" : "Sec", "\u00A0 ");
3873
- i0.ɵɵadvance();
3874
- i0.ɵɵconditional(ctx_r1.rightSection !== "none" && !ctx_r1.modeLr() ? 11 : -1);
3875
3816
  } }
3876
3817
  class NeighborsComponent {
3877
3818
  // VIEWCHILD
@@ -3881,16 +3822,21 @@ class NeighborsComponent {
3881
3822
  leftSectionElement;
3882
3823
  rightSectionElement;
3883
3824
  // SERVICES
3884
- // private readonly uiconfig: Signal<UiConfiguration> = inject(UiService).uiConfig;
3885
3825
  cdr = inject(ChangeDetectorRef);
3886
- /**
3887
- * Additional classes
3888
- */
3826
+ // REQUIRED INPUTS
3827
+ neighborsData = input.required();
3828
+ currentSectionId = input.required();
3829
+ translateTdcToMmc = input.required();
3830
+ translateMmcToTdc = input.required();
3831
+ hasAvailability = input.required();
3832
+ // OPTIONAL INPUTS
3833
+ isLoading = input(false);
3834
+ showElement = input(true);
3835
+ modeLr = input(false);
3889
3836
  className = input('');
3890
- /**
3891
- * The current theme applied to the component.
3892
- */
3893
3837
  theme = input('theme-sdc');
3838
+ // OUTPUTS
3839
+ sectionChange = new EventEmitter();
3894
3840
  /**
3895
3841
  * Computed class string that combines theme and user classes.
3896
3842
  */
@@ -3901,193 +3847,146 @@ class NeighborsComponent {
3901
3847
  .filter(Boolean)
3902
3848
  .join(' ');
3903
3849
  });
3904
- // CONFIGURATION
3905
- // private readonly config: Signal<Neighbor> = computed((): Neighbor => this.uiconfig()['Neighbors']);
3906
- // public readonly data: Signal<any['data']> = computed((): any['data'] => this.config().data);
3907
- // public readonly enabled: Signal<boolean> = computed((): boolean => this.config().enabled);
3908
- // public readonly modeLr: Signal<boolean> = computed((): boolean => this.config().modeLr);
3909
- modeLr = computed(() => false);
3910
- //TRANSLATION CONFIG
3911
- // private readonly translationConfig: Signal<Translation> = computed((): Translation => this.uiconfig()['Translation']);
3912
- // public readonly translationData: Signal<any['data']> = computed(
3913
- // (): Translation['data'] => this.translationConfig().data
3914
- // );
3915
- translationEnabled = computed(() => false);
3916
- // GLOBAL STATE
3917
3850
  // COMPONENT STATE
3918
- isLoading3d = false;
3919
- showElement = true;
3920
3851
  subscriptions = [];
3921
- // SECTION DATA
3922
- selectedSection = '301';
3923
- sectionData = { l: '122', r: '124' };
3924
- // EFFECTS
3925
- onViewChange = effect(() => {
3926
- const view = 'seatmap';
3927
- // const view: any | null = this.view();
3928
- switch (view) {
3929
- // Seteamos sección, si está oculto mostramos elemento y comprobamos si el texto seatmap es false para toglearlo.
3930
- // case AppViews.Seatmap:
3931
- case 'seatmap': {
3932
- this.setCurrentSection();
3933
- if (!this.showElement) {
3934
- this.toggleNeighbors(true);
3935
- }
3936
- break;
3937
- }
3938
- // Seteamos sección en base al viewer3d, si está oculto mostramos elemento y comprobamos si el texto 3d es false para toglearlo.
3939
- // case AppViews.Pano:
3940
- case 'pano': {
3941
- this.setCurrentSection('section');
3942
- // this.setCurrentSection(this.dvmService.viewer3d.getViewId());
3943
- if (!this.showElement) {
3944
- this.toggleNeighbors(true);
3945
- }
3946
- break;
3852
+ // COMPUTED STATE
3853
+ leftSectionId = computed(() => {
3854
+ try {
3855
+ const currentId = this.currentSectionId();
3856
+ if (!currentId)
3857
+ return null;
3858
+ return this.findAvailableNeighbor('prev', currentId);
3859
+ }
3860
+ catch (error) {
3861
+ return null;
3862
+ }
3863
+ });
3864
+ rightSectionId = computed(() => {
3865
+ try {
3866
+ const currentId = this.currentSectionId();
3867
+ if (!currentId)
3868
+ return null;
3869
+ return this.findAvailableNeighbor('next', currentId);
3870
+ }
3871
+ catch (error) {
3872
+ return null;
3873
+ }
3874
+ });
3875
+ currentSectionLabel = computed(() => {
3876
+ try {
3877
+ const currentId = this.currentSectionId();
3878
+ if (!currentId)
3879
+ return 'Loading';
3880
+ // Translate TDC ID to MMC ID for display
3881
+ const mmcId = this.translateTdcToMmc()(currentId);
3882
+ if (!mmcId)
3883
+ return currentId; // Fallback to TDC ID if translation fails
3884
+ // Extract section number from MMC ID (assuming format like "S_31" or similar)
3885
+ return mmcId.replace(/^S_/, '');
3886
+ }
3887
+ catch (error) {
3888
+ return 'Loading';
3889
+ }
3890
+ });
3891
+ leftSectionLabel = computed(() => {
3892
+ try {
3893
+ const leftId = this.leftSectionId();
3894
+ if (!leftId)
3895
+ return null;
3896
+ // Translate TDC ID to MMC ID for display
3897
+ const mmcId = this.translateTdcToMmc()(leftId);
3898
+ if (!mmcId)
3899
+ return leftId; // Fallback to TDC ID if translation fails
3900
+ // Extract section number from MMC ID
3901
+ return mmcId.replace(/^S_/, '');
3902
+ }
3903
+ catch (error) {
3904
+ return null;
3905
+ }
3906
+ });
3907
+ rightSectionLabel = computed(() => {
3908
+ try {
3909
+ const rightId = this.rightSectionId();
3910
+ if (!rightId)
3911
+ return null;
3912
+ // Translate TDC ID to MMC ID for display
3913
+ const mmcId = this.translateTdcToMmc()(rightId);
3914
+ if (!mmcId)
3915
+ return rightId; // Fallback to TDC ID if translation fails
3916
+ // Extract section number from MMC ID
3917
+ return mmcId.replace(/^S_/, '');
3918
+ }
3919
+ catch (error) {
3920
+ return null;
3921
+ }
3922
+ });
3923
+ // NEIGHBOR RESOLUTION ALGORITHM
3924
+ findAvailableNeighbor(type, currentSectionTdcId) {
3925
+ try {
3926
+ const neighborKey = type === 'prev' ? 'l' : 'r';
3927
+ const noNeighborValue = 'none';
3928
+ // 1. Translate TDC → MMC
3929
+ const currentSectionMmcId = this.translateTdcToMmc()(currentSectionTdcId);
3930
+ if (!currentSectionMmcId)
3931
+ return null;
3932
+ // 2. Look up neighbor in data
3933
+ const neighbors = this.neighborsData();
3934
+ const neighbor = neighbors[currentSectionMmcId];
3935
+ const neighborSectionMmcId = neighbor ? neighbor[neighborKey] : noNeighborValue;
3936
+ // 3. Handle 'none' boundary
3937
+ if (neighborSectionMmcId === noNeighborValue) {
3938
+ return null;
3947
3939
  }
3948
- // changesmorechangesmoar
3949
- default: {
3950
- if (this.showElement) {
3951
- this.toggleNeighbors(false);
3952
- setTimeout(() => this.setCurrentSection(null), 300);
3953
- }
3954
- break;
3940
+ // 4. Translate MMC → TDC
3941
+ const neighborSectionTdcId = this.translateMmcToTdc()(neighborSectionMmcId);
3942
+ if (!neighborSectionTdcId)
3943
+ return null;
3944
+ // 5. Check availability
3945
+ if (this.hasAvailability()(neighborSectionTdcId)) {
3946
+ return neighborSectionTdcId;
3955
3947
  }
3948
+ // 6. Recursively find next available (skip unavailable sections)
3949
+ return this.findAvailableNeighbor(type, neighborSectionTdcId);
3956
3950
  }
3957
- });
3951
+ catch (error) {
3952
+ return null;
3953
+ }
3954
+ }
3958
3955
  // GETTERS
3959
3956
  get leftSection() {
3960
- return '300';
3961
- // if (!this.sectionData) return null;
3962
- // return this.translationEnabled() && this.translationData()[this.sectionData.l]
3963
- // ? this.translationData()[this.sectionData.l]
3964
- // : this.sectionData.l;
3957
+ return this.leftSectionId();
3965
3958
  }
3966
3959
  get rightSection() {
3967
- return '302';
3968
- // return this.translationEnabled() && this.translationData()[this.sectionData.r]
3969
- // ? this.translationData()[this.sectionData.r]
3970
- // : this.sectionData.r;
3960
+ return this.rightSectionId();
3971
3961
  }
3972
3962
  get section() {
3973
- return '301';
3974
- // if (this.view() !== AppViews.Pano) {
3975
- // return this.dvmFormatter.transform(this.selectedSection!);
3976
- // }
3977
- // return;
3978
- }
3979
- get is3d() {
3980
- return false;
3981
- // return this.view() === AppViews.Pano;
3982
- }
3983
- ngOnInit() {
3984
- this.initComponent();
3963
+ return this.currentSectionLabel();
3985
3964
  }
3986
3965
  ngOnDestroy() {
3987
3966
  this.subscriptions.forEach((sub) => sub.unsubscribe());
3988
- this.onViewChange.destroy();
3989
3967
  }
3990
3968
  // METHODS
3991
3969
  navigateToSection(section) {
3992
3970
  if (section === 'none' || !section) {
3993
3971
  return;
3994
- } // Si no hay sección, no hacemos nada
3995
- // this.dvmService.loadMap(section).subscribe((): void => {
3996
- // this.setCurrentSection(section);
3997
- // });
3998
- }
3999
- setCurrentSection(sectionId) {
4000
- let section;
4001
- /**
4002
- * El parametro sectionId puede ser null o undefined, si no es null, comprobamos
4003
- * si es undefined. Si es undefined, tomamos el id del mapa actual, si no, lo tomamos del parametro.
4004
- */
4005
- // if (sectionId !== null) {
4006
- // // section = sectionId !== undefined ? sectionId : this.dvmService.currentMap;
4007
- // }
4008
- section = 'section';
4009
- // const sectionData = section ? this.data()[section] : null;
4010
- const sectionData = section ? { seats: ['hello'] } : null;
4011
- // Si ya hay, animamos el cambio de sección
4012
- if (this.selectedSection && section) {
4013
- this.animateSectionNumbers(section, sectionData);
4014
- }
4015
- // Si no hay, seteamos la sección y los datos
3972
+ }
3973
+ const leftId = this.leftSectionId();
3974
+ const rightId = this.rightSectionId();
3975
+ let direction;
3976
+ if (section === leftId) {
3977
+ direction = 'prev';
3978
+ }
3979
+ else if (section === rightId) {
3980
+ direction = 'next';
3981
+ }
4016
3982
  else {
4017
- if (section) {
4018
- const translated = null;
4019
- // const translated = this.translationEnabled() ? this.translationData()[section] : null;
4020
- this.selectedSection = translated ? translated : '<span> section </span>';
4021
- // this.selectedSection = translated ? translated : this.dvmFormatter.transform(section);
4022
- }
4023
- else {
4024
- this.selectedSection = section;
4025
- }
4026
- this.sectionData = sectionData;
4027
- }
4028
- this.cdr.markForCheck();
4029
- }
4030
- setSection(section, is3d = false) {
4031
- // const translated = this.translationEnabled() ? this.translationData()[section] : null;
4032
- // if (translated) {
4033
- // this.selectedSection = this.translationData()[section];
4034
- // } else if (!is3d) {
4035
- // this.selectedSection = this.dvmFormatter.transform(section);
4036
- // }
4037
- this.selectedSection = 'Section';
4038
- this.cdr.detectChanges();
4039
- }
4040
- toggleNeighbors(show) {
4041
- animate(this.neighborsContainer.nativeElement, {
4042
- translateY: show ? 0 : 50,
4043
- opacity: show ? 1 : 0,
4044
- duration: 300,
4045
- easing: 'easeInOutQuad',
4046
- begin: () => {
4047
- if (show && !this.showElement) {
4048
- this.showElement = true;
4049
- }
4050
- },
4051
- complete: () => {
4052
- if (!show) {
4053
- this.showElement = false;
4054
- }
4055
- },
4056
- });
4057
- }
4058
- animateSectionNumbers(section, sectionData) {
4059
- const targets = [
4060
- this.currentSection?.nativeElement ?? null,
4061
- this.currentSection3d?.nativeElement ?? null,
4062
- this.leftSectionElement?.nativeElement ?? null,
4063
- this.rightSectionElement?.nativeElement ?? null,
4064
- ].filter(element => element !== null);
4065
- animate(targets, {
4066
- duration: 500,
4067
- filter: ['blur(0px)', 'blur(2px)', 'blur(0px)'],
4068
- easing: 'easeInOutQuad',
4069
- update: (animation) => {
4070
- if (animation.progress >= 50 && this.selectedSection !== section.split('_')[1]) {
4071
- this.setSection(section, true);
4072
- // this.setSection(section, this.view() === AppViews.Pano);
4073
- this.sectionData = sectionData;
4074
- }
4075
- },
4076
- });
4077
- }
4078
- initComponent() {
4079
- // const viewer3d = this.dvmService.viewer3d;
4080
- // viewer3d.waitInitialize().subscribe((): void => {
4081
- // this.subscriptions.push(
4082
- // viewer3d.getObservable('load_start').subscribe((): boolean => (this.isLoading3d = true)),
4083
- // viewer3d.getObservable('load_success').subscribe((): boolean => (this.isLoading3d = false))
4084
- // );
4085
- // });
4086
- // }
3983
+ return;
3984
+ }
3985
+ this.sectionChange.emit({ direction, sectionId: section });
4087
3986
  }
4088
3987
  static ɵfac = function NeighborsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NeighborsComponent)(); };
4089
3988
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NeighborsComponent, selectors: [["sdc-neighbors"]], viewQuery: function NeighborsComponent_Query(rf, ctx) { if (rf & 1) {
4090
- i0.ɵɵviewQuery(_c0$7, 5);
3989
+ i0.ɵɵviewQuery(_c0$8, 5);
4091
3990
  i0.ɵɵviewQuery(_c1$2, 5);
4092
3991
  i0.ɵɵviewQuery(_c2, 5);
4093
3992
  i0.ɵɵviewQuery(_c3, 5);
@@ -4099,28 +3998,28 @@ class NeighborsComponent {
4099
3998
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.currentSection3d = _t.first);
4100
3999
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.leftSectionElement = _t.first);
4101
4000
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rightSectionElement = _t.first);
4102
- } }, inputs: { className: [1, "className"], theme: [1, "theme"] }, decls: 7, vars: 7, consts: [["neighborsContainer", ""], ["leftSectionNumber", ""], ["currentSection", ""], ["rightSectionNumber", ""], [1, "neighbors-container"], ["tabindex", "0", 1, "neighbor-button-left", "neighbor-button", 3, "class"], [1, "current-section-wrapper"], [1, "current-section-loading"], ["tabindex", "1", 1, "neighbor-button-right", "neighbor-button", 3, "class"], ["tabindex", "0", 1, "neighbor-button-left", "neighbor-button", 3, "click", "keypress.enter"], [1, "neighbor-button-icon-wrapper"], [1, "neighbor-button-icon"], ["fill", "none", "stroke", "currentColor", "stroke-width", "3", "viewBox", "0 0 24 24", "xmlns", "http://www.w3.org/2000/svg"], ["d", "M15.75 19.5 8.25 12l7.5-7.5", "stroke-linecap", "round", "stroke-linejoin", "round"], [1, "neighbor-button-text-wrapper"], [1, "neighbor-button-text"], [1, "prefix", "xs-prefix"], [1, "prefix", "sm-prefix"], [1, "section-number"], [1, "current-section-text"], [3, "innerHTML"], ["tabindex", "1", 1, "neighbor-button-right", "neighbor-button", 3, "click", "keypress.enter"], ["d", "m8.25 4.5 7.5 7.5-7.5 7.5", "stroke-linecap", "round", "stroke-linejoin", "round"]], template: function NeighborsComponent_Template(rf, ctx) { if (rf & 1) {
4103
- i0.ɵɵelementStart(0, "div", 4, 0);
4104
- i0.ɵɵtemplate(2, NeighborsComponent_Conditional_2_Template, 12, 5, "div", 5);
4105
- i0.ɵɵelementStart(3, "div", 6);
4106
- i0.ɵɵtemplate(4, NeighborsComponent_Conditional_4_Template, 3, 0, "p", 7)(5, NeighborsComponent_Conditional_5_Template, 1, 1);
4001
+ } }, inputs: { neighborsData: [1, "neighborsData"], currentSectionId: [1, "currentSectionId"], translateTdcToMmc: [1, "translateTdcToMmc"], translateMmcToTdc: [1, "translateMmcToTdc"], hasAvailability: [1, "hasAvailability"], isLoading: [1, "isLoading"], showElement: [1, "showElement"], modeLr: [1, "modeLr"], className: [1, "className"], theme: [1, "theme"] }, outputs: { sectionChange: "sectionChange" }, decls: 7, vars: 7, consts: [["neighborsContainer", ""], ["currentSection", ""], [1, "neighbors-container"], ["tabindex", "0", 1, "neighbor-button-left", "neighbor-button"], [1, "current-section-wrapper"], [1, "current-section-loading"], ["tabindex", "1", 1, "neighbor-button-right", "neighbor-button"], ["tabindex", "0", 1, "neighbor-button-left", "neighbor-button", 3, "click", "keypress.enter"], [1, "neighbor-button-icon"], ["fill", "none", "stroke", "currentColor", "stroke-width", "2", "viewBox", "0 0 24 24", "xmlns", "http://www.w3.org/2000/svg"], ["d", "M15.75 19.5 8.25 12l7.5-7.5", "stroke-linecap", "round", "stroke-linejoin", "round"], [1, "current-section-text"], [1, "prefix"], [1, "section-number"], ["tabindex", "1", 1, "neighbor-button-right", "neighbor-button", 3, "click", "keypress.enter"], ["d", "m8.25 4.5 7.5 7.5-7.5 7.5", "stroke-linecap", "round", "stroke-linejoin", "round"]], template: function NeighborsComponent_Template(rf, ctx) { if (rf & 1) {
4002
+ i0.ɵɵelementStart(0, "div", 2, 0);
4003
+ i0.ɵɵtemplate(2, NeighborsComponent_Conditional_2_Template, 4, 0, "div", 3);
4004
+ i0.ɵɵelementStart(3, "div", 4);
4005
+ i0.ɵɵtemplate(4, NeighborsComponent_Conditional_4_Template, 3, 0, "p", 5)(5, NeighborsComponent_Conditional_5_Template, 1, 1);
4107
4006
  i0.ɵɵelementEnd();
4108
- i0.ɵɵtemplate(6, NeighborsComponent_Conditional_6_Template, 12, 5, "div", 8);
4007
+ i0.ɵɵtemplate(6, NeighborsComponent_Conditional_6_Template, 4, 0, "div", 6);
4109
4008
  i0.ɵɵelementEnd();
4110
4009
  } if (rf & 2) {
4111
4010
  i0.ɵɵclassMap(ctx.computedClass());
4112
- i0.ɵɵclassProp("hidden", !ctx.showElement);
4011
+ i0.ɵɵclassProp("hidden", !ctx.showElement());
4113
4012
  i0.ɵɵadvance(2);
4114
4013
  i0.ɵɵconditional(ctx.leftSection ? 2 : -1);
4115
4014
  i0.ɵɵadvance(2);
4116
- i0.ɵɵconditional(ctx.isLoading3d ? 4 : 5);
4015
+ i0.ɵɵconditional(ctx.isLoading() ? 4 : 5);
4117
4016
  i0.ɵɵadvance(2);
4118
4017
  i0.ɵɵconditional(ctx.rightSection ? 6 : -1);
4119
- } }, styles: [".sdc-neighbors[_ngcontent-%COMP%]{--sdc-neighbors-background-color: var(--color-pure-black);--sdc-neighbors-text-color: var(--color-pure-white);--sdc-neighbors-border-radius: var(--radius-full);--sdc-neighbors-padding-x: var(--space-3);--sdc-neighbors-padding-y: var(--space-2_5);--sdc-neighbors-height: var(--space-6);--sdc-neighbors-max-width: 11rem;--sdc-neighbors-button-width: 4rem;--sdc-neighbors-button-height: var(--space-6);--sdc-neighbors-button-icon-color: var(--color-pure-white);--sdc-neighbors-button-hover-background-color: var(--color-pure-black);--sdc-neighbors-button-text-font-weight: var(--font-semibold);--sdc-neighbors-button-text-font-size: var(--text-xxs);--sdc-neighbors-button-text-transform: uppercase;--sdc-neighbors-prefix-opacity: .7;--sdc-neighbors-current-section-min-width: 6rem;--sdc-neighbors-current-section-loading-font-weight: var(--font-semibold);--sdc-neighbors-current-section-loading-font-size: var(--text-sm);--sdc-neighbors-current-section-text-font-weight: var(--font-semibold);--sdc-neighbors-current-section-text-font-size: var(--text-xxs);--sdc-neighbors-current-section-text-transform: uppercase}.neighbors-container[_ngcontent-%COMP%]{position:relative;display:flex;justify-content:center;align-items:center;background-color:var(--sdc-neighbors-background-color);margin-left:auto;margin-right:auto;padding-left:var(--sdc-neighbors-padding-x);padding-right:var(--sdc-neighbors-padding-x);padding-top:var(--sdc-neighbors-padding-y);padding-bottom:var(--sdc-neighbors-padding-y);border-radius:var(--sdc-neighbors-border-radius);height:var(--sdc-neighbors-height);pointer-events:auto}@media (min-width: 1024px){.neighbors-container[_ngcontent-%COMP%]{max-width:var(--sdc-neighbors-max-width)}}@media (min-width: 1280px){.neighbors-container[_ngcontent-%COMP%]{--sdc-neighbors-max-width: 16rem}}@media (min-width: 1536px){.neighbors-container[_ngcontent-%COMP%]{--sdc-neighbors-max-width: 20rem}}@media (min-width: 640px){.neighbors-container[_ngcontent-%COMP%]{--sdc-neighbors-height: var(--space-8)}}.neighbor-button[_ngcontent-%COMP%]{position:absolute;display:flex;align-items:center;width:var(--sdc-neighbors-button-width);height:var(--sdc-neighbors-button-height);transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;cursor:pointer}@media (min-width: 640px){.neighbor-button[_ngcontent-%COMP%]{--sdc-neighbors-button-width: 124px;--sdc-neighbors-button-height: var(--space-8)}}.neighbor-button-left[_ngcontent-%COMP%]{left:-2.75rem;flex-direction:row-reverse;justify-content:space-between}@media (min-width: 640px){.neighbor-button-left[_ngcontent-%COMP%]{left:-6rem}}.neighbor-button-right[_ngcontent-%COMP%]{right:-2.75rem;flex-direction:row;justify-content:space-between}@media (min-width: 640px){.neighbor-button-right[_ngcontent-%COMP%]{right:-6rem}}.neighbor-button-icon-wrapper[_ngcontent-%COMP%]{display:flex;align-items:center;height:100%;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.neighbor-button[_ngcontent-%COMP%]:hover .neighbor-button-icon-wrapper[_ngcontent-%COMP%]{background-color:var(--sdc-neighbors-button-hover-background-color)}.neighbor-button-icon[_ngcontent-%COMP%]{display:block;margin-top:auto;margin-bottom:auto;color:var(--sdc-neighbors-button-icon-color)}.neighbor-button-icon[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:.875rem;height:.875rem}.neighbor-button-text-wrapper[_ngcontent-%COMP%]{display:flex;flex-grow:1;align-items:center;background-color:var(--sdc-neighbors-background-color);opacity:0;height:100%;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.neighbor-button[_ngcontent-%COMP%]:hover .neighbor-button-text-wrapper[_ngcontent-%COMP%]{opacity:1}.neighbor-button-left[_ngcontent-%COMP%] .neighbor-button-text-wrapper[_ngcontent-%COMP%]{padding-right:.5rem;padding-left:1.25rem;border-top-left-radius:var(--sdc-neighbors-border-radius);border-bottom-left-radius:var(--sdc-neighbors-border-radius)}.neighbor-button-right[_ngcontent-%COMP%] .neighbor-button-text-wrapper[_ngcontent-%COMP%]{padding-right:1.25rem;padding-left:.5rem;border-top-right-radius:var(--sdc-neighbors-border-radius);border-bottom-right-radius:var(--sdc-neighbors-border-radius)}.neighbor-button-text[_ngcontent-%COMP%]{font-weight:var(--sdc-neighbors-button-text-font-weight);color:var(--sdc-neighbors-text-color);font-size:var(--sdc-neighbors-button-text-font-size);text-transform:var(--sdc-neighbors-button-text-transform)}.neighbor-button-text[_ngcontent-%COMP%] .prefix[_ngcontent-%COMP%]{opacity:var(--sdc-neighbors-prefix-opacity);white-space:nowrap}.neighbor-button-text[_ngcontent-%COMP%] .xs-prefix[_ngcontent-%COMP%]{display:none}@media (min-width: 640px){.neighbor-button-text[_ngcontent-%COMP%] .xs-prefix[_ngcontent-%COMP%]{display:inline}}.neighbor-button-text[_ngcontent-%COMP%] .sm-prefix[_ngcontent-%COMP%]{display:inline}@media (min-width: 640px){.neighbor-button-text[_ngcontent-%COMP%] .sm-prefix[_ngcontent-%COMP%]{display:none}}.neighbor-button-text[_ngcontent-%COMP%] .section-number[_ngcontent-%COMP%]{white-space:nowrap}.current-section-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;margin-left:auto;margin-right:auto;min-width:var(--sdc-neighbors-current-section-min-width);cursor:default}@media (min-width: 640px){.current-section-wrapper[_ngcontent-%COMP%]{--sdc-neighbors-current-section-min-width: 14rem}}.current-section-loading[_ngcontent-%COMP%]{font-weight:var(--sdc-neighbors-current-section-loading-font-weight);color:var(--sdc-neighbors-text-color);font-size:var(--sdc-neighbors-current-section-loading-font-size)}.current-section-text[_ngcontent-%COMP%]{display:flex;font-weight:var(--sdc-neighbors-current-section-text-font-weight);color:var(--sdc-neighbors-text-color);font-size:var(--sdc-neighbors-current-section-text-font-size);text-transform:var(--sdc-neighbors-current-section-text-transform)}.current-section-text[_ngcontent-%COMP%] .prefix[_ngcontent-%COMP%]{opacity:var(--sdc-neighbors-prefix-opacity)}.current-section-text[_ngcontent-%COMP%] .sm-prefix[_ngcontent-%COMP%]{display:none}@media (min-width: 640px){.current-section-text[_ngcontent-%COMP%] .sm-prefix[_ngcontent-%COMP%]{display:block}}.current-section-text[_ngcontent-%COMP%] .xs-prefix[_ngcontent-%COMP%]{display:block}@media (min-width: 640px){.current-section-text[_ngcontent-%COMP%] .xs-prefix[_ngcontent-%COMP%]{display:none}}"], changeDetection: 0 });
4018
+ } }, styles: [".sdc-neighbors[_ngcontent-%COMP%]{--sdc-neighbors-background-color: transparent;--sdc-neighbors-text-color: var(--color-pure-black);--sdc-neighbors-border-radius: 1rem;--sdc-neighbors-padding-x: var(--space-3);--sdc-neighbors-padding-y: var(--space-2_5);--sdc-neighbors-height: var(--space-6);--sdc-neighbors-max-width: 25rem;--sdc-neighbors-button-width: 8rem;--sdc-neighbors-button-height: var(--space-6);--sdc-neighbors-button-icon-color: var(--color-pure-black);--sdc-neighbors-button-hover-background-color: #f5f5f5;--sdc-neighbors-button-text-font-weight: var(--font-medium);--sdc-neighbors-button-text-font-size: var(--text-sm);--sdc-neighbors-button-text-transform: none;--sdc-neighbors-prefix-opacity: 1;--sdc-neighbors-current-section-min-width: 6rem;--sdc-neighbors-current-section-loading-font-weight: var(--font-semibold);--sdc-neighbors-current-section-loading-font-size: var(--text-sm);--sdc-neighbors-current-section-text-font-weight: var(--font-semibold);--sdc-neighbors-current-section-text-font-size: var(--text-sm);--sdc-neighbors-current-section-text-transform: none}.neighbors-container[_ngcontent-%COMP%]{position:relative;display:flex;justify-content:center;align-items:center;background-color:var(--sdc-neighbors-background-color);margin-left:auto;margin-right:auto;padding-left:var(--sdc-neighbors-padding-x);padding-right:var(--sdc-neighbors-padding-x);padding-top:var(--sdc-neighbors-padding-y);padding-bottom:var(--sdc-neighbors-padding-y);border-radius:var(--sdc-neighbors-border-radius);height:var(--sdc-neighbors-height);max-width:var(--sdc-neighbors-max-width);pointer-events:auto}@media (min-width: 640px){.neighbors-container[_ngcontent-%COMP%]{--sdc-neighbors-height: var(--space-8)}}.neighbor-button[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;background-color:#fff;border-radius:50%;transition-property:opacity,background-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;cursor:pointer;box-shadow:0 1px 3px #0000001a}@media (min-width: 640px){.neighbor-button[_ngcontent-%COMP%]{width:3rem;height:3rem}}.neighbor-button-left[_ngcontent-%COMP%]{margin-right:.75rem}.neighbor-button-right[_ngcontent-%COMP%]{margin-left:.75rem}.neighbor-button[_ngcontent-%COMP%]:hover{background-color:var(--sdc-neighbors-button-hover-background-color)}.neighbor-button-icon[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;color:var(--sdc-neighbors-button-icon-color)}.neighbor-button-icon[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:1rem;height:1rem}.current-section-text[_ngcontent-%COMP%] .section-number[_ngcontent-%COMP%]{font-weight:var(--font-bold);white-space:nowrap}.current-section-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;margin-left:auto;margin-right:auto;min-width:var(--sdc-neighbors-current-section-min-width);background-color:#fff;border-radius:var(--sdc-neighbors-border-radius);padding:.75rem 1rem;cursor:default;box-shadow:0 1px 3px #0000001a}@media (min-width: 640px){.current-section-wrapper[_ngcontent-%COMP%]{--sdc-neighbors-current-section-min-width: 14rem}}.current-section-loading[_ngcontent-%COMP%]{font-weight:var(--sdc-neighbors-current-section-loading-font-weight);color:var(--sdc-neighbors-text-color);font-size:var(--sdc-neighbors-current-section-loading-font-size)}.current-section-text[_ngcontent-%COMP%]{display:flex;font-weight:var(--sdc-neighbors-current-section-text-font-weight);color:var(--sdc-neighbors-text-color);font-size:var(--sdc-neighbors-current-section-text-font-size);text-transform:var(--sdc-neighbors-current-section-text-transform)}.current-section-text[_ngcontent-%COMP%] .prefix[_ngcontent-%COMP%]{opacity:var(--sdc-neighbors-prefix-opacity);margin-right:.35rem}.current-section-text[_ngcontent-%COMP%] .sm-prefix[_ngcontent-%COMP%]{display:none}@media (min-width: 640px){.current-section-text[_ngcontent-%COMP%] .sm-prefix[_ngcontent-%COMP%]{display:block}}.current-section-text[_ngcontent-%COMP%] .xs-prefix[_ngcontent-%COMP%]{display:block}@media (min-width: 640px){.current-section-text[_ngcontent-%COMP%] .xs-prefix[_ngcontent-%COMP%]{display:none}}"], changeDetection: 0 });
4120
4019
  }
4121
4020
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NeighborsComponent, [{
4122
4021
  type: Component,
4123
- args: [{ selector: 'sdc-neighbors', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #neighborsContainer class=\"neighbors-container\" [class]=\"computedClass()\" [class.hidden]=\"!showElement\">\n <!-- LEFT SECTION BUTTON -->\n @if (leftSection) {\n <div\n class=\"neighbor-button-left neighbor-button\"\n tabindex=\"0\"\n [class]=\"leftSection === 'none' ? 'pointer-events-none opacity-0' : ''\"\n (click)=\"navigateToSection(sectionData!.l)\"\n (keypress.enter)=\"navigateToSection(sectionData!.l)\">\n <div class=\"neighbor-button-icon-wrapper\">\n <i class=\"neighbor-button-icon\">\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15.75 19.5 8.25 12l7.5-7.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </i>\n </div>\n\n <div class=\"neighbor-button-text-wrapper\">\n <p class=\"neighbor-button-text\">\n <span class=\"prefix xs-prefix\"> {{ modeLr() ? 'Left Section' : 'Section' }}&nbsp; </span>\n <span class=\"prefix sm-prefix\"> {{ modeLr() ? 'L.Sec' : 'Sec' }}&nbsp; </span>\n\n @if (leftSection !== 'none' && !modeLr()) {\n <span #leftSectionNumber class=\"section-number\">\n {{ leftSection }}\n </span>\n }\n </p>\n </div>\n </div>\n }\n <div class=\"current-section-wrapper\">\n @if (isLoading3d) {\n <p class=\"current-section-loading\">\n <span> Loading </span>\n </p>\n } @else {\n @if (selectedSection) {\n <h3 class=\"current-section-text\">\n <span class=\"prefix sm-prefix\" [class.hidden]=\"is3d\"> Section&nbsp; </span>\n <span class=\"prefix xs-prefix\" [class.hidden]=\"is3d\"> Sec&nbsp; </span>\n <p #currentSection [innerHTML]=\"selectedSection\"></p>\n </h3>\n }\n }\n </div>\n\n <!-- RIGHT SECTION BUTTON -->\n @if (rightSection) {\n <div\n class=\"neighbor-button-right neighbor-button\"\n tabindex=\"1\"\n [class]=\"rightSection === 'none' ? 'pointer-events-none opacity-0' : ''\"\n (click)=\"navigateToSection(sectionData!.r)\"\n (keypress.enter)=\"navigateToSection(sectionData!.r)\">\n <div class=\"neighbor-button-icon-wrapper\">\n <i class=\"neighbor-button-icon\">\n <svg\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m8.25 4.5 7.5 7.5-7.5 7.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </i>\n </div>\n\n <div class=\"neighbor-button-text-wrapper\">\n <p class=\"neighbor-button-text\">\n <span class=\"prefix xs-prefix\"> {{ modeLr() ? 'Right Section' : 'Section' }}&nbsp; </span>\n\n <span class=\"prefix sm-prefix\"> {{ modeLr() ? 'R.Sec' : 'Sec' }}&nbsp; </span>\n\n @if (rightSection !== 'none' && !modeLr()) {\n <span #rightSectionNumber class=\"section-number\">\n {{ rightSection }}\n </span>\n }\n </p>\n </div>\n </div>\n }\n</div>\n", styles: [".sdc-neighbors{--sdc-neighbors-background-color: var(--color-pure-black);--sdc-neighbors-text-color: var(--color-pure-white);--sdc-neighbors-border-radius: var(--radius-full);--sdc-neighbors-padding-x: var(--space-3);--sdc-neighbors-padding-y: var(--space-2_5);--sdc-neighbors-height: var(--space-6);--sdc-neighbors-max-width: 11rem;--sdc-neighbors-button-width: 4rem;--sdc-neighbors-button-height: var(--space-6);--sdc-neighbors-button-icon-color: var(--color-pure-white);--sdc-neighbors-button-hover-background-color: var(--color-pure-black);--sdc-neighbors-button-text-font-weight: var(--font-semibold);--sdc-neighbors-button-text-font-size: var(--text-xxs);--sdc-neighbors-button-text-transform: uppercase;--sdc-neighbors-prefix-opacity: .7;--sdc-neighbors-current-section-min-width: 6rem;--sdc-neighbors-current-section-loading-font-weight: var(--font-semibold);--sdc-neighbors-current-section-loading-font-size: var(--text-sm);--sdc-neighbors-current-section-text-font-weight: var(--font-semibold);--sdc-neighbors-current-section-text-font-size: var(--text-xxs);--sdc-neighbors-current-section-text-transform: uppercase}.neighbors-container{position:relative;display:flex;justify-content:center;align-items:center;background-color:var(--sdc-neighbors-background-color);margin-left:auto;margin-right:auto;padding-left:var(--sdc-neighbors-padding-x);padding-right:var(--sdc-neighbors-padding-x);padding-top:var(--sdc-neighbors-padding-y);padding-bottom:var(--sdc-neighbors-padding-y);border-radius:var(--sdc-neighbors-border-radius);height:var(--sdc-neighbors-height);pointer-events:auto}@media (min-width: 1024px){.neighbors-container{max-width:var(--sdc-neighbors-max-width)}}@media (min-width: 1280px){.neighbors-container{--sdc-neighbors-max-width: 16rem}}@media (min-width: 1536px){.neighbors-container{--sdc-neighbors-max-width: 20rem}}@media (min-width: 640px){.neighbors-container{--sdc-neighbors-height: var(--space-8)}}.neighbor-button{position:absolute;display:flex;align-items:center;width:var(--sdc-neighbors-button-width);height:var(--sdc-neighbors-button-height);transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;cursor:pointer}@media (min-width: 640px){.neighbor-button{--sdc-neighbors-button-width: 124px;--sdc-neighbors-button-height: var(--space-8)}}.neighbor-button-left{left:-2.75rem;flex-direction:row-reverse;justify-content:space-between}@media (min-width: 640px){.neighbor-button-left{left:-6rem}}.neighbor-button-right{right:-2.75rem;flex-direction:row;justify-content:space-between}@media (min-width: 640px){.neighbor-button-right{right:-6rem}}.neighbor-button-icon-wrapper{display:flex;align-items:center;height:100%;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.neighbor-button:hover .neighbor-button-icon-wrapper{background-color:var(--sdc-neighbors-button-hover-background-color)}.neighbor-button-icon{display:block;margin-top:auto;margin-bottom:auto;color:var(--sdc-neighbors-button-icon-color)}.neighbor-button-icon svg{width:.875rem;height:.875rem}.neighbor-button-text-wrapper{display:flex;flex-grow:1;align-items:center;background-color:var(--sdc-neighbors-background-color);opacity:0;height:100%;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.neighbor-button:hover .neighbor-button-text-wrapper{opacity:1}.neighbor-button-left .neighbor-button-text-wrapper{padding-right:.5rem;padding-left:1.25rem;border-top-left-radius:var(--sdc-neighbors-border-radius);border-bottom-left-radius:var(--sdc-neighbors-border-radius)}.neighbor-button-right .neighbor-button-text-wrapper{padding-right:1.25rem;padding-left:.5rem;border-top-right-radius:var(--sdc-neighbors-border-radius);border-bottom-right-radius:var(--sdc-neighbors-border-radius)}.neighbor-button-text{font-weight:var(--sdc-neighbors-button-text-font-weight);color:var(--sdc-neighbors-text-color);font-size:var(--sdc-neighbors-button-text-font-size);text-transform:var(--sdc-neighbors-button-text-transform)}.neighbor-button-text .prefix{opacity:var(--sdc-neighbors-prefix-opacity);white-space:nowrap}.neighbor-button-text .xs-prefix{display:none}@media (min-width: 640px){.neighbor-button-text .xs-prefix{display:inline}}.neighbor-button-text .sm-prefix{display:inline}@media (min-width: 640px){.neighbor-button-text .sm-prefix{display:none}}.neighbor-button-text .section-number{white-space:nowrap}.current-section-wrapper{display:flex;justify-content:center;align-items:center;margin-left:auto;margin-right:auto;min-width:var(--sdc-neighbors-current-section-min-width);cursor:default}@media (min-width: 640px){.current-section-wrapper{--sdc-neighbors-current-section-min-width: 14rem}}.current-section-loading{font-weight:var(--sdc-neighbors-current-section-loading-font-weight);color:var(--sdc-neighbors-text-color);font-size:var(--sdc-neighbors-current-section-loading-font-size)}.current-section-text{display:flex;font-weight:var(--sdc-neighbors-current-section-text-font-weight);color:var(--sdc-neighbors-text-color);font-size:var(--sdc-neighbors-current-section-text-font-size);text-transform:var(--sdc-neighbors-current-section-text-transform)}.current-section-text .prefix{opacity:var(--sdc-neighbors-prefix-opacity)}.current-section-text .sm-prefix{display:none}@media (min-width: 640px){.current-section-text .sm-prefix{display:block}}.current-section-text .xs-prefix{display:block}@media (min-width: 640px){.current-section-text .xs-prefix{display:none}}\n"] }]
4022
+ args: [{ selector: 'sdc-neighbors', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #neighborsContainer class=\"neighbors-container\" [class]=\"computedClass()\" [class.hidden]=\"!showElement()\">\n <!-- LEFT SECTION BUTTON -->\n @if (leftSection) {\n <div\n class=\"neighbor-button-left neighbor-button\"\n tabindex=\"0\"\n (click)=\"navigateToSection(leftSection!)\"\n (keypress.enter)=\"navigateToSection(leftSection!)\">\n <i class=\"neighbor-button-icon\">\n <svg fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15.75 19.5 8.25 12l7.5-7.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </i>\n </div>\n }\n <div class=\"current-section-wrapper\">\n @if (isLoading()) {\n <p class=\"current-section-loading\">\n <span>Loading</span>\n </p>\n } @else {\n @if (section) {\n <h3 class=\"current-section-text\">\n <span class=\"prefix\">Section </span>\n <span #currentSection class=\"section-number\">{{ section }}</span>\n </h3>\n }\n }\n </div>\n\n <!-- RIGHT SECTION BUTTON -->\n @if (rightSection) {\n <div\n class=\"neighbor-button-right neighbor-button\"\n tabindex=\"1\"\n (click)=\"navigateToSection(rightSection!)\"\n (keypress.enter)=\"navigateToSection(rightSection!)\">\n <i class=\"neighbor-button-icon\">\n <svg fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m8.25 4.5 7.5 7.5-7.5 7.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </i>\n </div>\n }\n</div>\n", styles: [".sdc-neighbors{--sdc-neighbors-background-color: transparent;--sdc-neighbors-text-color: var(--color-pure-black);--sdc-neighbors-border-radius: 1rem;--sdc-neighbors-padding-x: var(--space-3);--sdc-neighbors-padding-y: var(--space-2_5);--sdc-neighbors-height: var(--space-6);--sdc-neighbors-max-width: 25rem;--sdc-neighbors-button-width: 8rem;--sdc-neighbors-button-height: var(--space-6);--sdc-neighbors-button-icon-color: var(--color-pure-black);--sdc-neighbors-button-hover-background-color: #f5f5f5;--sdc-neighbors-button-text-font-weight: var(--font-medium);--sdc-neighbors-button-text-font-size: var(--text-sm);--sdc-neighbors-button-text-transform: none;--sdc-neighbors-prefix-opacity: 1;--sdc-neighbors-current-section-min-width: 6rem;--sdc-neighbors-current-section-loading-font-weight: var(--font-semibold);--sdc-neighbors-current-section-loading-font-size: var(--text-sm);--sdc-neighbors-current-section-text-font-weight: var(--font-semibold);--sdc-neighbors-current-section-text-font-size: var(--text-sm);--sdc-neighbors-current-section-text-transform: none}.neighbors-container{position:relative;display:flex;justify-content:center;align-items:center;background-color:var(--sdc-neighbors-background-color);margin-left:auto;margin-right:auto;padding-left:var(--sdc-neighbors-padding-x);padding-right:var(--sdc-neighbors-padding-x);padding-top:var(--sdc-neighbors-padding-y);padding-bottom:var(--sdc-neighbors-padding-y);border-radius:var(--sdc-neighbors-border-radius);height:var(--sdc-neighbors-height);max-width:var(--sdc-neighbors-max-width);pointer-events:auto}@media (min-width: 640px){.neighbors-container{--sdc-neighbors-height: var(--space-8)}}.neighbor-button{position:relative;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;background-color:#fff;border-radius:50%;transition-property:opacity,background-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;cursor:pointer;box-shadow:0 1px 3px #0000001a}@media (min-width: 640px){.neighbor-button{width:3rem;height:3rem}}.neighbor-button-left{margin-right:.75rem}.neighbor-button-right{margin-left:.75rem}.neighbor-button:hover{background-color:var(--sdc-neighbors-button-hover-background-color)}.neighbor-button-icon{display:flex;align-items:center;justify-content:center;color:var(--sdc-neighbors-button-icon-color)}.neighbor-button-icon svg{width:1rem;height:1rem}.current-section-text .section-number{font-weight:var(--font-bold);white-space:nowrap}.current-section-wrapper{display:flex;justify-content:center;align-items:center;margin-left:auto;margin-right:auto;min-width:var(--sdc-neighbors-current-section-min-width);background-color:#fff;border-radius:var(--sdc-neighbors-border-radius);padding:.75rem 1rem;cursor:default;box-shadow:0 1px 3px #0000001a}@media (min-width: 640px){.current-section-wrapper{--sdc-neighbors-current-section-min-width: 14rem}}.current-section-loading{font-weight:var(--sdc-neighbors-current-section-loading-font-weight);color:var(--sdc-neighbors-text-color);font-size:var(--sdc-neighbors-current-section-loading-font-size)}.current-section-text{display:flex;font-weight:var(--sdc-neighbors-current-section-text-font-weight);color:var(--sdc-neighbors-text-color);font-size:var(--sdc-neighbors-current-section-text-font-size);text-transform:var(--sdc-neighbors-current-section-text-transform)}.current-section-text .prefix{opacity:var(--sdc-neighbors-prefix-opacity);margin-right:.35rem}.current-section-text .sm-prefix{display:none}@media (min-width: 640px){.current-section-text .sm-prefix{display:block}}.current-section-text .xs-prefix{display:block}@media (min-width: 640px){.current-section-text .xs-prefix{display:none}}\n"] }]
4124
4023
  }], null, { neighborsContainer: [{
4125
4024
  type: ViewChild,
4126
4025
  args: ['neighborsContainer']
@@ -4136,12 +4035,17 @@ class NeighborsComponent {
4136
4035
  }], rightSectionElement: [{
4137
4036
  type: ViewChild,
4138
4037
  args: ['rightSectionNumber', { static: false }]
4038
+ }], sectionChange: [{
4039
+ type: Output
4139
4040
  }] }); })();
4140
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NeighborsComponent, { className: "NeighborsComponent", filePath: "dvm/neighbors/neighbors.component.ts", lineNumber: 26 }); })();
4041
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NeighborsComponent, { className: "NeighborsComponent", filePath: "dvm/neighbors/neighbors.component.ts", lineNumber: 34 }); })();
4141
4042
 
4142
4043
  const DVM_FORMATTER = new InjectionToken('DvmFormatter');
4143
4044
  const CONFIGURATION_SERVICE = new InjectionToken('ConfigurationService');
4144
4045
  const DVM_SERVICE = new InjectionToken('DvmService');
4046
+ const THUMBNAIL_PROVIDER = new InjectionToken('ThumbnailProvider');
4047
+ const POPOVER_POSITIONER = new InjectionToken('PopoverPositioner');
4048
+ const POPOVER_MANAGER = new InjectionToken('PopoverManager');
4145
4049
 
4146
4050
  class PopoverService {
4147
4051
  // SERVICES
@@ -4158,6 +4062,35 @@ class PopoverService {
4158
4062
  popoverTimerTimeInMs = 300;
4159
4063
  currentPopoverId = '';
4160
4064
  popoverTimer = null;
4065
+ popoverInstancesWithTimers = new Map();
4066
+ // Default mock providers for when no custom providers are provided
4067
+ defaultMockProviders = [
4068
+ {
4069
+ provide: CONFIGURATION_SERVICE,
4070
+ useValue: {
4071
+ configuration: {
4072
+ dvmData: {
4073
+ venueId: 'default-venue',
4074
+ },
4075
+ },
4076
+ },
4077
+ },
4078
+ {
4079
+ provide: DVM_FORMATTER,
4080
+ useValue: {
4081
+ transform: (value) => value.replace(/-/g, ' ').toUpperCase(),
4082
+ },
4083
+ },
4084
+ {
4085
+ provide: DVM_SERVICE,
4086
+ useValue: {
4087
+ viewer3dService: {
4088
+ isInitialized: () => true,
4089
+ getThumbnail: () => of('https://via.placeholder.com/275x124/1a1a1a/ffffff?text=Default+Thumbnail'),
4090
+ },
4091
+ },
4092
+ },
4093
+ ];
4161
4094
  // METHODS
4162
4095
  setTimer() {
4163
4096
  const myId = this.currentPopoverId;
@@ -4176,6 +4109,35 @@ class PopoverService {
4176
4109
  this.popoverTimer = null;
4177
4110
  }
4178
4111
  }
4112
+ /**
4113
+ * Sets a timer for a specific popover instance to auto-hide it after the specified delay.
4114
+ * @param popoverId - The ID of the popover to set timer for
4115
+ * @param delayMs - Delay in milliseconds (optional, defaults to configured delay)
4116
+ */
4117
+ setPopoverTimer(popoverId, delayMs) {
4118
+ this.clearPopoverTimer(popoverId);
4119
+ const delay = delayMs ?? this.popoverTimerTimeInMs;
4120
+ this.popoverTimer = setTimeout(() => {
4121
+ this.destroyPopover(popoverId);
4122
+ }, delay);
4123
+ }
4124
+ /**
4125
+ * Clears the timer for a specific popover instance.
4126
+ * @param popoverId - The ID of the popover to clear timer for
4127
+ */
4128
+ clearPopoverTimer(popoverId) {
4129
+ if (this.popoverTimer !== null) {
4130
+ clearTimeout(this.popoverTimer);
4131
+ this.popoverTimer = null;
4132
+ }
4133
+ }
4134
+ /**
4135
+ * Configures the default timer delay for popovers.
4136
+ * @param delayMs - Delay in milliseconds
4137
+ */
4138
+ setTimerDelay(delayMs) {
4139
+ this.popoverTimerTimeInMs = delayMs;
4140
+ }
4179
4141
  /**
4180
4142
  * Crea un popover y lo añade al DOM, usando un elemento de referencia y contenido HTML o string.
4181
4143
  * Si ya existe un popover con el mismo ID, lo destruye antes de crear uno nuevo.
@@ -4217,6 +4179,71 @@ class PopoverService {
4217
4179
  this.popoverInstances.set(id, instance);
4218
4180
  return instance;
4219
4181
  }
4182
+ /**
4183
+ * Crea un popover que contiene un componente Angular con soporte para proyección de contenido.
4184
+ * Si ya existe un popover con el mismo ID, lo destruye antes de crear uno nuevo.
4185
+ *
4186
+ * @param popoverId Identificador único del popover.
4187
+ * @param reference Elemento de referencia para posicionar el popover (HTMLElement, Element, VirtualElement o ElementRef).
4188
+ * @param component Clase del componente Angular a renderizar dentro del popover.
4189
+ * @param inputs Propiedades de entrada para el componente.
4190
+ * @param contentProjection Contenido proyectado para los slots del popover.
4191
+ * @param options Opciones de configuración para el posicionamiento (placement, strategy, middleware, etc).
4192
+ * @returns Instancia del popover creado, incluyendo la referencia al componente.
4193
+ */
4194
+ createPopoverComponentWithContent(popoverId, reference, component, inputs, contentProjection, options = {}, serviceOptions = {}) {
4195
+ this.clearTimer();
4196
+ // Comprobamos si ya existe una instancia de Popover con el mismo ID
4197
+ this.checkPopoverInstance(popoverId ?? '');
4198
+ this.currentPopoverId = popoverId;
4199
+ const referenceElement = reference instanceof ElementRef ? reference.nativeElement : reference;
4200
+ const popoverElement = this.createPopoverElement();
4201
+ // Create a custom environment injector with the required providers
4202
+ const providers = serviceOptions.providers || this.defaultMockProviders;
4203
+ const customInjector = createEnvironmentInjector(providers, this.envInjector);
4204
+ const componentReference = createComponent(component, {
4205
+ environmentInjector: customInjector,
4206
+ hostElement: popoverElement,
4207
+ });
4208
+ const finalOptions = {
4209
+ placement: options.placement || this.popoverOptions.placement,
4210
+ strategy: options.strategy || this.popoverOptions.strategy,
4211
+ middleware: options.middleware ? this.setMiddlewares(options.middleware) : this.popoverOptions.middleware,
4212
+ };
4213
+ // Añadimos el Popover al DOM
4214
+ this.document.body.append(popoverElement);
4215
+ // Si tiene inputs, los asignamos al componente
4216
+ if (inputs) {
4217
+ for (const [key, value] of Object.entries(inputs)) {
4218
+ componentReference.setInput(key, value);
4219
+ }
4220
+ }
4221
+ // Procesamos la proyección de contenido
4222
+ if (contentProjection) {
4223
+ this.processContentProjection(componentReference, contentProjection);
4224
+ }
4225
+ // Encendemos el detectChanges del componente para que se renderice
4226
+ componentReference.changeDetectorRef.detectChanges();
4227
+ // Añadimos el componente al DOM
4228
+ this.appReference.attachView(componentReference.hostView);
4229
+ // Creamos la instancia del Popover
4230
+ const instance = {
4231
+ id: popoverId,
4232
+ element: popoverElement,
4233
+ reference: referenceElement,
4234
+ componentRef: componentReference,
4235
+ update: async () => this.calculatePosition(instance, finalOptions),
4236
+ };
4237
+ const arrowElement = document.querySelector('#arrow');
4238
+ finalOptions.middleware?.push(arrow({ element: arrowElement }));
4239
+ // Calculamos la posicion del Popover
4240
+ void this.calculatePosition(instance, finalOptions);
4241
+ // Proporcionamos la función de autoUpdate en la propiedad cleanup del Popover
4242
+ instance.cleanup = autoUpdate(referenceElement, popoverElement, () => instance.update());
4243
+ // Añadimos la instancia del Popover al mapa de instancias
4244
+ this.popoverInstances.set(popoverId, instance);
4245
+ return instance;
4246
+ }
4220
4247
  /**
4221
4248
  * Crea un popover que contiene un componente Angular, lo añade al DOM y lo posiciona.
4222
4249
  * Si ya existe un popover con el mismo ID, lo destruye antes de crear uno nuevo.
@@ -4224,18 +4251,22 @@ class PopoverService {
4224
4251
  * @param popoverId Identificador único del popover.
4225
4252
  * @param reference Elemento de referencia para posicionar el popover (HTMLElement, Element, VirtualElement o ElementRef).
4226
4253
  * @param component Clase del componente Angular a renderizar dentro del popover.
4254
+ * @param inputs Propiedades de entrada para el componente.
4227
4255
  * @param options Opciones de configuración para el posicionamiento (placement, strategy, middleware, etc).
4228
4256
  * @returns Instancia del popover creado, incluyendo la referencia al componente.
4229
4257
  */
4230
- createPopoverComponent(popoverId, reference, component, inputs, options = {}) {
4258
+ createPopoverComponent(popoverId, reference, component, inputs, options = {}, serviceOptions = {}) {
4231
4259
  this.clearTimer();
4232
4260
  // Comprobamos si ya existe una instancia de Popover con el mismo ID
4233
4261
  this.checkPopoverInstance(popoverId ?? '');
4234
4262
  this.currentPopoverId = popoverId;
4235
4263
  const referenceElement = reference instanceof ElementRef ? reference.nativeElement : reference; // Elemento de referencia
4236
4264
  const popoverElement = this.createPopoverElement(); // Elemento Popover
4265
+ // Create a custom environment injector with the required providers
4266
+ const providers = serviceOptions.providers || this.defaultMockProviders;
4267
+ const customInjector = createEnvironmentInjector(providers, this.envInjector);
4237
4268
  const componentReference = createComponent(component, {
4238
- environmentInjector: this.envInjector,
4269
+ environmentInjector: customInjector,
4239
4270
  hostElement: popoverElement,
4240
4271
  }); // Instancia del componente Popover
4241
4272
  const finalOptions = {
@@ -4369,6 +4400,44 @@ class PopoverService {
4369
4400
  console.error('Error positioning popover', error);
4370
4401
  }
4371
4402
  }
4403
+ /**
4404
+ * Procesa la proyección de contenido para el componente popover.
4405
+ *
4406
+ * @param componentRef Referencia al componente creado
4407
+ * @param contentProjection Contenido a proyectar en los slots
4408
+ */
4409
+ processContentProjection(componentRef, contentProjection) {
4410
+ const componentInstance = componentRef.instance;
4411
+ // Procesamos cada slot de contenido
4412
+ if (contentProjection.thumbnail) {
4413
+ this.setContentProjection(componentInstance, 'hasThumbnailProjection', contentProjection.thumbnail);
4414
+ }
4415
+ if (contentProjection.content) {
4416
+ this.setContentProjection(componentInstance, 'hasContentProjection', contentProjection.content);
4417
+ }
4418
+ if (contentProjection.price) {
4419
+ this.setContentProjection(componentInstance, 'hasPriceProjection', contentProjection.price);
4420
+ }
4421
+ }
4422
+ /**
4423
+ * Establece la proyección de contenido para un slot específico.
4424
+ *
4425
+ * @param componentInstance Instancia del componente
4426
+ * @param projectionFlag Flag que indica si hay proyección
4427
+ * @param content Contenido a proyectar
4428
+ */
4429
+ setContentProjection(componentInstance, projectionFlag, content) {
4430
+ // Marcamos que hay proyección de contenido
4431
+ componentInstance[projectionFlag] = true;
4432
+ // Si es un TemplateRef, lo almacenamos para uso posterior
4433
+ if (content instanceof TemplateRef) {
4434
+ componentInstance[`${projectionFlag}Template`] = content;
4435
+ }
4436
+ else if (typeof content === 'string') {
4437
+ // Si es string, lo almacenamos como HTML
4438
+ componentInstance[`${projectionFlag}Html`] = content;
4439
+ }
4440
+ }
4372
4441
  /**
4373
4442
  * Set Middlewares
4374
4443
  * Método que recibe un objeto de opciones de middleware y devuelve un array de middlewares cargados con sus opciones.
@@ -4468,54 +4537,399 @@ var AppNodes;
4468
4537
  AppNodes["Vip"] = "vip";
4469
4538
  })(AppNodes || (AppNodes = {}));
4470
4539
 
4471
- function PopoverComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
4472
- i0.ɵɵelement(0, "img", 5)(1, "img", 6);
4540
+ /**
4541
+ * Base component for popovers that provides timer functionality.
4542
+ * Extend this component to create timer-aware popovers.
4543
+ */
4544
+ class BasePopoverComponent {
4545
+ popoverId = '';
4546
+ autoHideDelay = 300; // milliseconds
4547
+ enableAutoHide = true;
4548
+ mouseEnter = new EventEmitter();
4549
+ mouseLeave = new EventEmitter();
4550
+ popoverHidden = new EventEmitter();
4551
+ popoverService = inject(PopoverService);
4552
+ cdr = inject(ChangeDetectorRef);
4553
+ isMouseOver = false;
4554
+ ngOnInit() {
4555
+ if (this.enableAutoHide && this.popoverId) {
4556
+ this.startAutoHideTimer();
4557
+ }
4558
+ }
4559
+ ngOnDestroy() {
4560
+ if (this.popoverId) {
4561
+ this.popoverService.clearPopoverTimer(this.popoverId);
4562
+ }
4563
+ }
4564
+ onMouseEnter(event) {
4565
+ this.isMouseOver = true;
4566
+ this.clearAutoHideTimer();
4567
+ this.mouseEnter.emit(event);
4568
+ }
4569
+ onMouseLeave(event) {
4570
+ this.isMouseOver = false;
4571
+ if (this.enableAutoHide) {
4572
+ this.startAutoHideTimer();
4573
+ }
4574
+ this.mouseLeave.emit(event);
4575
+ }
4576
+ hidePopover() {
4577
+ if (this.popoverId) {
4578
+ this.popoverService.destroyPopover(this.popoverId);
4579
+ this.popoverHidden.emit();
4580
+ }
4581
+ }
4582
+ startAutoHideTimer() {
4583
+ if (this.popoverId && !this.isMouseOver) {
4584
+ this.popoverService.setPopoverTimer(this.popoverId, this.autoHideDelay);
4585
+ }
4586
+ }
4587
+ clearAutoHideTimer() {
4588
+ if (this.popoverId) {
4589
+ this.popoverService.clearPopoverTimer(this.popoverId);
4590
+ }
4591
+ }
4592
+ static ɵfac = function BasePopoverComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || BasePopoverComponent)(); };
4593
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: BasePopoverComponent, selectors: [["ng-component"]], inputs: { popoverId: "popoverId", autoHideDelay: "autoHideDelay", enableAutoHide: "enableAutoHide" }, outputs: { mouseEnter: "mouseEnter", mouseLeave: "mouseLeave", popoverHidden: "popoverHidden" }, decls: 0, vars: 0, template: function BasePopoverComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });
4594
+ }
4595
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BasePopoverComponent, [{
4596
+ type: Component,
4597
+ args: [{
4598
+ template: '', // Abstract component
4599
+ changeDetection: ChangeDetectionStrategy.OnPush,
4600
+ }]
4601
+ }], null, { popoverId: [{
4602
+ type: Input
4603
+ }], autoHideDelay: [{
4604
+ type: Input
4605
+ }], enableAutoHide: [{
4606
+ type: Input
4607
+ }], mouseEnter: [{
4608
+ type: Output
4609
+ }], mouseLeave: [{
4610
+ type: Output
4611
+ }], popoverHidden: [{
4612
+ type: Output
4613
+ }] }); })();
4614
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BasePopoverComponent, { className: "BasePopoverComponent", filePath: "dvm/popover/base-popover.component.ts", lineNumber: 12 }); })();
4615
+
4616
+ function SeatPopoverComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
4617
+ i0.ɵɵelementStart(0, "div", 2);
4618
+ i0.ɵɵelement(1, "div", 10);
4619
+ i0.ɵɵelementEnd();
4620
+ } }
4621
+ function SeatPopoverComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
4622
+ i0.ɵɵelement(0, "div", 11);
4473
4623
  } if (rf & 2) {
4474
4624
  const ctx_r0 = i0.ɵɵnextContext();
4475
- i0.ɵɵproperty("alt", "thumbnail-" + ctx_r0.node.id)("ngSrc", ctx_r0.thumbnail);
4476
- i0.ɵɵadvance();
4477
- i0.ɵɵproperty("alt", "thumbnail-" + ctx_r0.node.id)("ngSrc", ctx_r0.thumbnail);
4625
+ i0.ɵɵstyleProp("background-image", "url(" + ctx_r0.thumbnail + ")");
4626
+ } }
4627
+ class SeatPopoverComponent extends BasePopoverComponent {
4628
+ data;
4629
+ showLoader = true;
4630
+ thumbnailProvider = inject(THUMBNAIL_PROVIDER, { optional: true });
4631
+ cdr = inject(ChangeDetectorRef);
4632
+ thumbnail;
4633
+ isLoadingThumbnail = true;
4634
+ ngOnInit() {
4635
+ super.ngOnInit(); // Initialize base component timer logic
4636
+ if (this.data.thumbnail) {
4637
+ this.thumbnail = this.data.thumbnail;
4638
+ this.isLoadingThumbnail = false;
4639
+ }
4640
+ else if (this.thumbnailProvider && this.showLoader) {
4641
+ this.loadThumbnail();
4642
+ }
4643
+ }
4644
+ loadThumbnail() {
4645
+ this.thumbnailProvider.getThumbnail(this.data.id).subscribe({
4646
+ next: url => {
4647
+ this.thumbnail = url;
4648
+ this.isLoadingThumbnail = false;
4649
+ this.cdr.markForCheck();
4650
+ },
4651
+ error: () => {
4652
+ this.isLoadingThumbnail = false;
4653
+ this.cdr.markForCheck();
4654
+ },
4655
+ });
4656
+ }
4657
+ get formattedSection() {
4658
+ return this.data.section.includes('_') ? this.data.section.split('_')[1].split('-')[0] : this.data.section;
4659
+ }
4660
+ get formattedSeat() {
4661
+ return this.data.seat.split('-')[2] || this.data.seat;
4662
+ }
4663
+ onEnter(event) {
4664
+ this.onMouseEnter(event);
4665
+ }
4666
+ onLeave(event) {
4667
+ this.onMouseLeave(event);
4668
+ }
4669
+ static ɵfac = /*@__PURE__*/ (() => { let ɵSeatPopoverComponent_BaseFactory; return function SeatPopoverComponent_Factory(__ngFactoryType__) { return (ɵSeatPopoverComponent_BaseFactory || (ɵSeatPopoverComponent_BaseFactory = i0.ɵɵgetInheritedFactory(SeatPopoverComponent)))(__ngFactoryType__ || SeatPopoverComponent); }; })();
4670
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SeatPopoverComponent, selectors: [["sdc-seat-popover"]], inputs: { data: "data", showLoader: "showLoader" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 25, vars: 9, consts: [[1, "sdc-seat-popover", 3, "mouseenter", "mouseleave"], [1, "sdc-popover-thumbnail"], [1, "sdc-popover-loader"], [1, "sdc-thumbnail-image", 3, "background-image"], [1, "sdc-popover-content"], [1, "sdc-popover-grid"], [1, "sdc-popover-col-left"], [1, "sdc-popover-label"], [1, "sdc-popover-label-text"], [1, "sdc-popover-col-right"], [1, "sdc-spinner"], [1, "sdc-thumbnail-image"]], template: function SeatPopoverComponent_Template(rf, ctx) { if (rf & 1) {
4671
+ i0.ɵɵelementStart(0, "div", 0);
4672
+ i0.ɵɵlistener("mouseenter", function SeatPopoverComponent_Template_div_mouseenter_0_listener($event) { return ctx.onEnter($event); })("mouseleave", function SeatPopoverComponent_Template_div_mouseleave_0_listener($event) { return ctx.onLeave($event); });
4673
+ i0.ɵɵelementStart(1, "div", 1);
4674
+ i0.ɵɵtemplate(2, SeatPopoverComponent_Conditional_2_Template, 2, 0, "div", 2)(3, SeatPopoverComponent_Conditional_3_Template, 1, 2, "div", 3);
4675
+ i0.ɵɵelementEnd();
4676
+ i0.ɵɵelementStart(4, "div", 4)(5, "div", 5)(6, "div", 6)(7, "h5", 7)(8, "span", 8);
4677
+ i0.ɵɵtext(9, "Section:");
4678
+ i0.ɵɵelementEnd();
4679
+ i0.ɵɵtext(10);
4680
+ i0.ɵɵelementEnd();
4681
+ i0.ɵɵelementStart(11, "h5", 7)(12, "span", 8);
4682
+ i0.ɵɵtext(13, "Row:");
4683
+ i0.ɵɵelementEnd();
4684
+ i0.ɵɵtext(14);
4685
+ i0.ɵɵelementEnd()();
4686
+ i0.ɵɵelementStart(15, "div", 9)(16, "h5", 7)(17, "span", 8);
4687
+ i0.ɵɵtext(18, "Seat:");
4688
+ i0.ɵɵelementEnd();
4689
+ i0.ɵɵtext(19);
4690
+ i0.ɵɵelementEnd();
4691
+ i0.ɵɵelementStart(20, "h5", 7)(21, "span", 8);
4692
+ i0.ɵɵtext(22, "Price:");
4693
+ i0.ɵɵelementEnd();
4694
+ i0.ɵɵtext(23);
4695
+ i0.ɵɵpipe(24, "currency");
4696
+ i0.ɵɵelementEnd()()()()();
4697
+ } if (rf & 2) {
4698
+ i0.ɵɵadvance(2);
4699
+ i0.ɵɵconditional(ctx.isLoadingThumbnail && ctx.showLoader ? 2 : -1);
4700
+ i0.ɵɵadvance();
4701
+ i0.ɵɵconditional(ctx.thumbnail && !ctx.isLoadingThumbnail ? 3 : -1);
4702
+ i0.ɵɵadvance(7);
4703
+ i0.ɵɵtextInterpolate1(" ", ctx.formattedSection, " ");
4704
+ i0.ɵɵadvance(4);
4705
+ i0.ɵɵtextInterpolate1(" ", ctx.data.row, " ");
4706
+ i0.ɵɵadvance(5);
4707
+ i0.ɵɵtextInterpolate1(" ", ctx.formattedSeat, " ");
4708
+ i0.ɵɵadvance(4);
4709
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(24, 6, ctx.data.price, "USD"), " ");
4710
+ } }, dependencies: [CommonModule, i1$1.CurrencyPipe], styles: ["[_nghost-%COMP%]{display:block}.sdc-seat-popover[_ngcontent-%COMP%]{width:var(--sdc-popover-width, 20rem);height:auto;color:var(--sdc-popover-text-color, #ffffff);background-color:var(--sdc-popover-bg-color, #000000);border-radius:var(--sdc-popover-border-radius, .75rem);overflow:hidden}.sdc-popover-thumbnail[_ngcontent-%COMP%]{width:100%;height:var(--sdc-popover-thumbnail-height, 12rem);position:relative}.sdc-thumbnail-image[_ngcontent-%COMP%]{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}.sdc-popover-loader[_ngcontent-%COMP%]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.sdc-spinner[_ngcontent-%COMP%]{display:inline-block;width:80px;height:80px}.sdc-spinner[_ngcontent-%COMP%]:after{content:\" \";display:block;width:32px;height:32px;margin:16px 8px 8px 16px;border-radius:50%;border:3px solid var(--sdc-spinner-color, #fff);border-color:var(--sdc-spinner-color, #fff) transparent var(--sdc-spinner-color, #fff) transparent;animation:_ngcontent-%COMP%_sdc-spinner-rotate 1.2s linear infinite}@keyframes _ngcontent-%COMP%_sdc-spinner-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sdc-popover-content[_ngcontent-%COMP%]{padding:.75rem}.sdc-popover-grid[_ngcontent-%COMP%]{display:flex;gap:1.25rem}.sdc-popover-col-left[_ngcontent-%COMP%]{flex:1}.sdc-popover-col-right[_ngcontent-%COMP%]{flex:1;text-align:right;min-width:max-content}.sdc-popover-label[_ngcontent-%COMP%]{margin:.25rem 0;font-size:var(--sdc-popover-label-font-size, .875rem);line-height:1.25rem;font-weight:var(--sdc-popover-label-font-weight, 700)}.sdc-popover-label-text[_ngcontent-%COMP%]{font-weight:var(--sdc-popover-label-text-font-weight, 400)}"], changeDetection: 0 });
4711
+ }
4712
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SeatPopoverComponent, [{
4713
+ type: Component,
4714
+ args: [{ selector: 'sdc-seat-popover', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, CurrencyPipe], template: "<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", styles: [":host{display:block}.sdc-seat-popover{width:var(--sdc-popover-width, 20rem);height:auto;color:var(--sdc-popover-text-color, #ffffff);background-color:var(--sdc-popover-bg-color, #000000);border-radius:var(--sdc-popover-border-radius, .75rem);overflow:hidden}.sdc-popover-thumbnail{width:100%;height:var(--sdc-popover-thumbnail-height, 12rem);position:relative}.sdc-thumbnail-image{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}.sdc-popover-loader{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.sdc-spinner{display:inline-block;width:80px;height:80px}.sdc-spinner:after{content:\" \";display:block;width:32px;height:32px;margin:16px 8px 8px 16px;border-radius:50%;border:3px solid var(--sdc-spinner-color, #fff);border-color:var(--sdc-spinner-color, #fff) transparent var(--sdc-spinner-color, #fff) transparent;animation:sdc-spinner-rotate 1.2s linear infinite}@keyframes sdc-spinner-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sdc-popover-content{padding:.75rem}.sdc-popover-grid{display:flex;gap:1.25rem}.sdc-popover-col-left{flex:1}.sdc-popover-col-right{flex:1;text-align:right;min-width:max-content}.sdc-popover-label{margin:.25rem 0;font-size:var(--sdc-popover-label-font-size, .875rem);line-height:1.25rem;font-weight:var(--sdc-popover-label-font-weight, 700)}.sdc-popover-label-text{font-weight:var(--sdc-popover-label-text-font-weight, 400)}\n"] }]
4715
+ }], null, { data: [{
4716
+ type: Input
4717
+ }], showLoader: [{
4718
+ type: Input
4719
+ }] }); })();
4720
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SeatPopoverComponent, { className: "SeatPopoverComponent", filePath: "dvm/popover/seat-popover/seat-popover.component.ts", lineNumber: 24 }); })();
4721
+
4722
+ function SectionPopoverComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
4723
+ i0.ɵɵelementStart(0, "div", 2);
4724
+ i0.ɵɵelement(1, "div", 13);
4725
+ i0.ɵɵelementEnd();
4478
4726
  } }
4479
- function PopoverComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
4480
- i0.ɵɵelementStart(0, "div", 2)(1, "div", 7);
4481
- i0.ɵɵelement(2, "div", 8);
4727
+ function SectionPopoverComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
4728
+ const _r1 = i0.ɵɵgetCurrentView();
4729
+ i0.ɵɵelementStart(0, "div", 14);
4730
+ i0.ɵɵlistener("click", function SectionPopoverComponent_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLoad3dView()); });
4731
+ i0.ɵɵelementStart(1, "span", 15);
4732
+ i0.ɵɵtext(2, "Click to open view");
4482
4733
  i0.ɵɵelementEnd()();
4734
+ } if (rf & 2) {
4735
+ const ctx_r1 = i0.ɵɵnextContext();
4736
+ i0.ɵɵstyleProp("background-image", "url(" + ctx_r1.thumbnail + ")");
4483
4737
  } }
4484
- function PopoverComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
4485
- i0.ɵɵelementContainerStart(0);
4486
- i0.ɵɵelementStart(1, "p", 4)(2, "span", 9);
4487
- i0.ɵɵtext(3, " Row");
4738
+ function SectionPopoverComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
4739
+ i0.ɵɵelementStart(0, "h5", 7)(1, "span", 8);
4740
+ i0.ɵɵtext(2, "Price:");
4488
4741
  i0.ɵɵelementEnd();
4489
- i0.ɵɵtext(4);
4490
- i0.ɵɵelementStart(5, "span", 9);
4491
- i0.ɵɵtext(6, "Seat");
4742
+ i0.ɵɵtext(3);
4492
4743
  i0.ɵɵelementEnd();
4493
- i0.ɵɵtext(7);
4744
+ } if (rf & 2) {
4745
+ const ctx_r1 = i0.ɵɵnextContext();
4746
+ i0.ɵɵadvance(3);
4747
+ i0.ɵɵtextInterpolate1(" $ ", ctx_r1.priceRangeWithFees, " ");
4748
+ } }
4749
+ function SectionPopoverComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
4750
+ i0.ɵɵelementStart(0, "h5", 7)(1, "span", 8);
4751
+ i0.ɵɵtext(2, "Price:");
4752
+ i0.ɵɵelementEnd();
4753
+ i0.ɵɵtext(3);
4494
4754
  i0.ɵɵelementEnd();
4495
- i0.ɵɵelementContainerEnd();
4496
4755
  } if (rf & 2) {
4497
- const ctx_r0 = i0.ɵɵnextContext();
4498
- i0.ɵɵadvance(4);
4499
- i0.ɵɵtextInterpolate1(" ", ctx_r0.row, " \u00A0 ");
4756
+ const ctx_r1 = i0.ɵɵnextContext();
4500
4757
  i0.ɵɵadvance(3);
4501
- i0.ɵɵtextInterpolate1(" ", ctx_r0.seat, " ");
4758
+ i0.ɵɵtextInterpolate1(" $ ", ctx_r1.priceRangeDisplay, " ");
4502
4759
  } }
4503
- function PopoverComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
4504
- i0.ɵɵelementContainerStart(0);
4505
- i0.ɵɵelement(1, "div", 10);
4506
- i0.ɵɵelementStart(2, "div", 11)(3, "p", 12)(4, "span", 13);
4507
- i0.ɵɵtext(5);
4760
+ function SectionPopoverComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
4761
+ const _r3 = i0.ɵɵgetCurrentView();
4762
+ i0.ɵɵelementStart(0, "button", 16);
4763
+ i0.ɵɵlistener("click", function SectionPopoverComponent_Conditional_23_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSelectForBA()); });
4764
+ i0.ɵɵtext(1);
4508
4765
  i0.ɵɵelementEnd();
4509
- i0.ɵɵtext(6);
4510
- i0.ɵɵpipe(7, "currency");
4511
- i0.ɵɵelementEnd()();
4512
- i0.ɵɵelementContainerEnd();
4513
4766
  } if (rf & 2) {
4514
- const ctx_r0 = i0.ɵɵnextContext();
4515
- i0.ɵɵadvance(5);
4516
- i0.ɵɵtextInterpolate1(" ", ctx_r0.prices.length > 1 ? "FROM" : "PRICE", " \u00A0 ");
4767
+ const ctx_r1 = i0.ɵɵnextContext();
4517
4768
  i0.ɵɵadvance();
4518
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(7, 2, ctx_r0.price, "USD"), " ");
4769
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.data.isSelectedForBA ? "Deselect" : "Select", " ");
4770
+ } }
4771
+ function SectionPopoverComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
4772
+ const _r4 = i0.ɵɵgetCurrentView();
4773
+ i0.ɵɵelementStart(0, "button", 17);
4774
+ i0.ɵɵlistener("click", function SectionPopoverComponent_Conditional_24_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOpenSeatMap()); });
4775
+ i0.ɵɵtext(1, "Open Seat Map");
4776
+ i0.ɵɵelementEnd();
4777
+ } }
4778
+ class SectionPopoverComponent extends BasePopoverComponent {
4779
+ data;
4780
+ showLoader = true;
4781
+ showBestAvailable = false;
4782
+ showOpenSeatMap = true;
4783
+ excludeSeatMapSections = ['S_BLCHADA', 'S_Bleacher'];
4784
+ isTicketFeeEnabled = false;
4785
+ load3dView = new EventEmitter();
4786
+ selectForBA = new EventEmitter();
4787
+ openSeatMap = new EventEmitter();
4788
+ thumbnailProvider = inject(THUMBNAIL_PROVIDER, { optional: true });
4789
+ cdr = inject(ChangeDetectorRef);
4790
+ thumbnail;
4791
+ isLoadingThumbnail = true;
4792
+ ngOnInit() {
4793
+ super.ngOnInit(); // Initialize base component timer logic
4794
+ if (this.data.thumbnail) {
4795
+ this.thumbnail = this.data.thumbnail;
4796
+ this.isLoadingThumbnail = false;
4797
+ }
4798
+ else if (this.thumbnailProvider && this.showLoader) {
4799
+ this.loadThumbnail();
4800
+ }
4801
+ }
4802
+ loadThumbnail() {
4803
+ this.thumbnailProvider.getThumbnail(this.data.id).subscribe({
4804
+ next: url => {
4805
+ this.thumbnail = url;
4806
+ this.isLoadingThumbnail = false;
4807
+ this.cdr.markForCheck();
4808
+ },
4809
+ error: () => {
4810
+ this.isLoadingThumbnail = false;
4811
+ this.cdr.markForCheck();
4812
+ },
4813
+ });
4814
+ }
4815
+ get priceRangeDisplay() {
4816
+ const { min, max } = this.data.priceRange;
4817
+ return min === max ? min.toString() : `${min} - ${max}`;
4818
+ }
4819
+ get priceRangeWithFees() {
4820
+ if (this.isTicketFeeEnabled && this.data.priceRangeWithFees) {
4821
+ return this.data.priceRangeWithFees;
4822
+ }
4823
+ return undefined;
4824
+ }
4825
+ get shouldShowSeatMapButton() {
4826
+ return (this.showOpenSeatMap &&
4827
+ !this.excludeSeatMapSections.includes(this.data.section) &&
4828
+ this.data.type !== 'general_admission');
4829
+ }
4830
+ onEnter(event) {
4831
+ this.onMouseEnter(event);
4832
+ }
4833
+ onLeave(event) {
4834
+ this.onMouseLeave(event);
4835
+ }
4836
+ onLoad3dView() {
4837
+ this.load3dView.emit();
4838
+ }
4839
+ onSelectForBA() {
4840
+ this.selectForBA.emit(!this.data.isSelectedForBA);
4841
+ }
4842
+ onOpenSeatMap() {
4843
+ this.openSeatMap.emit();
4844
+ }
4845
+ static ɵfac = /*@__PURE__*/ (() => { let ɵSectionPopoverComponent_BaseFactory; return function SectionPopoverComponent_Factory(__ngFactoryType__) { return (ɵSectionPopoverComponent_BaseFactory || (ɵSectionPopoverComponent_BaseFactory = i0.ɵɵgetInheritedFactory(SectionPopoverComponent)))(__ngFactoryType__ || SectionPopoverComponent); }; })();
4846
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SectionPopoverComponent, selectors: [["sdc-section-popover"]], inputs: { data: "data", showLoader: "showLoader", showBestAvailable: "showBestAvailable", showOpenSeatMap: "showOpenSeatMap", excludeSeatMapSections: "excludeSeatMapSections", isTicketFeeEnabled: "isTicketFeeEnabled" }, outputs: { load3dView: "load3dView", selectForBA: "selectForBA", openSeatMap: "openSeatMap" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 25, vars: 8, consts: [[1, "sdc-section-popover", 3, "mouseenter", "mouseleave"], [1, "sdc-popover-thumbnail"], [1, "sdc-popover-loader"], [1, "sdc-thumbnail-image", "sdc-thumbnail-clickable", 3, "background-image"], [1, "sdc-popover-content"], [1, "sdc-popover-grid"], [1, "sdc-popover-col-left"], [1, "sdc-popover-label"], [1, "sdc-popover-label-text"], [1, "sdc-popover-col-right"], [1, "sdc-popover-actions"], [1, "sdc-popover-btn", "sdc-popover-btn-primary", "sdc-popover-btn-mobile-only"], [1, "sdc-popover-btn", "sdc-popover-btn-secondary"], [1, "sdc-spinner"], [1, "sdc-thumbnail-image", "sdc-thumbnail-clickable", 3, "click"], [1, "sdc-thumbnail-overlay-text"], [1, "sdc-popover-btn", "sdc-popover-btn-primary", "sdc-popover-btn-mobile-only", 3, "click"], [1, "sdc-popover-btn", "sdc-popover-btn-secondary", 3, "click"]], template: function SectionPopoverComponent_Template(rf, ctx) { if (rf & 1) {
4847
+ i0.ɵɵelementStart(0, "div", 0);
4848
+ i0.ɵɵlistener("mouseenter", function SectionPopoverComponent_Template_div_mouseenter_0_listener($event) { return ctx.onEnter($event); })("mouseleave", function SectionPopoverComponent_Template_div_mouseleave_0_listener($event) { return ctx.onLeave($event); });
4849
+ i0.ɵɵelementStart(1, "div", 1);
4850
+ i0.ɵɵtemplate(2, SectionPopoverComponent_Conditional_2_Template, 2, 0, "div", 2)(3, SectionPopoverComponent_Conditional_3_Template, 3, 2, "div", 3);
4851
+ i0.ɵɵelementEnd();
4852
+ i0.ɵɵelementStart(4, "div", 4)(5, "div", 5)(6, "div", 6)(7, "h5", 7)(8, "span", 8);
4853
+ i0.ɵɵtext(9, "Section:");
4854
+ i0.ɵɵelementEnd();
4855
+ i0.ɵɵtext(10);
4856
+ i0.ɵɵelementEnd();
4857
+ i0.ɵɵtemplate(11, SectionPopoverComponent_Conditional_11_Template, 4, 1, "h5", 7)(12, SectionPopoverComponent_Conditional_12_Template, 4, 1, "h5", 7);
4858
+ i0.ɵɵelementEnd();
4859
+ i0.ɵɵelementStart(13, "div", 9)(14, "h5", 7)(15, "span", 8);
4860
+ i0.ɵɵtext(16, "Available Seats:");
4861
+ i0.ɵɵelementEnd();
4862
+ i0.ɵɵtext(17);
4863
+ i0.ɵɵelementEnd();
4864
+ i0.ɵɵelementStart(18, "h5", 7)(19, "span", 8);
4865
+ i0.ɵɵtext(20, "Available ADA Seats:");
4866
+ i0.ɵɵelementEnd();
4867
+ i0.ɵɵtext(21);
4868
+ i0.ɵɵelementEnd()()();
4869
+ i0.ɵɵelementStart(22, "div", 10);
4870
+ i0.ɵɵtemplate(23, SectionPopoverComponent_Conditional_23_Template, 2, 1, "button", 11)(24, SectionPopoverComponent_Conditional_24_Template, 2, 0, "button", 12);
4871
+ i0.ɵɵelementEnd()()();
4872
+ } if (rf & 2) {
4873
+ i0.ɵɵadvance(2);
4874
+ i0.ɵɵconditional(ctx.isLoadingThumbnail && ctx.showLoader ? 2 : -1);
4875
+ i0.ɵɵadvance();
4876
+ i0.ɵɵconditional(ctx.thumbnail && !ctx.isLoadingThumbnail ? 3 : -1);
4877
+ i0.ɵɵadvance(7);
4878
+ i0.ɵɵtextInterpolate1(" ", ctx.data.section, " ");
4879
+ i0.ɵɵadvance();
4880
+ i0.ɵɵconditional(ctx.isTicketFeeEnabled && ctx.priceRangeWithFees ? 11 : 12);
4881
+ i0.ɵɵadvance(6);
4882
+ i0.ɵɵtextInterpolate1(" ", ctx.data.availableQuantity, " ");
4883
+ i0.ɵɵadvance(4);
4884
+ i0.ɵɵtextInterpolate1(" ", ctx.data.adaQuantity, " ");
4885
+ i0.ɵɵadvance(2);
4886
+ i0.ɵɵconditional(ctx.showBestAvailable ? 23 : -1);
4887
+ i0.ɵɵadvance();
4888
+ i0.ɵɵconditional(ctx.shouldShowSeatMapButton ? 24 : -1);
4889
+ } }, dependencies: [CommonModule], styles: ["[_nghost-%COMP%]{display:block}.sdc-section-popover[_ngcontent-%COMP%]{width:var(--sdc-popover-width, 20rem);height:auto;color:var(--sdc-popover-text-color, #ffffff);background-color:var(--sdc-popover-bg-color, #000000);border-radius:var(--sdc-popover-border-radius, .75rem);overflow:hidden}.sdc-popover-thumbnail[_ngcontent-%COMP%]{width:100%;height:var(--sdc-popover-thumbnail-height, 12rem);position:relative}.sdc-thumbnail-image[_ngcontent-%COMP%]{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}.sdc-thumbnail-clickable[_ngcontent-%COMP%]{cursor:pointer;display:flex;align-items:flex-end;justify-content:center;padding:8px}.sdc-thumbnail-overlay-text[_ngcontent-%COMP%]{font-size:var(--sdc-thumbnail-overlay-font-size, 12px);color:var(--sdc-thumbnail-overlay-color, #ffffff);background-color:var(--sdc-thumbnail-overlay-bg, rgba(0, 0, 0, .5));padding:4px 8px;border-radius:4px}.sdc-popover-loader[_ngcontent-%COMP%]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.sdc-spinner[_ngcontent-%COMP%]{display:inline-block;width:80px;height:80px}.sdc-spinner[_ngcontent-%COMP%]:after{content:\" \";display:block;width:32px;height:32px;margin:16px 8px 8px 24px;border-radius:50%;border:3px solid var(--sdc-spinner-color, #fff);border-color:var(--sdc-spinner-color, #fff) transparent var(--sdc-spinner-color, #fff) transparent;animation:_ngcontent-%COMP%_sdc-spinner-rotate 1.2s linear infinite}@keyframes _ngcontent-%COMP%_sdc-spinner-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sdc-popover-content[_ngcontent-%COMP%]{padding:.75rem}.sdc-popover-grid[_ngcontent-%COMP%]{display:flex;gap:1.25rem}.sdc-popover-col-left[_ngcontent-%COMP%]{flex:1}.sdc-popover-col-right[_ngcontent-%COMP%]{flex:1;text-align:right;min-width:max-content}.sdc-popover-label[_ngcontent-%COMP%]{margin:.25rem 0;font-size:var(--sdc-popover-label-font-size, .875rem);line-height:1.25rem;font-weight:var(--sdc-popover-label-font-weight, 700)}.sdc-popover-label-text[_ngcontent-%COMP%]{font-weight:var(--sdc-popover-label-text-font-weight, 400)}.sdc-popover-actions[_ngcontent-%COMP%]{padding:.5rem 0;display:flex;justify-content:center;gap:.5rem}.sdc-popover-btn[_ngcontent-%COMP%]{border:none;border-radius:var(--sdc-btn-border-radius, 4px);padding:.5rem 1rem;height:var(--sdc-btn-height, 2.25rem);font-size:var(--sdc-btn-font-size, .75rem);cursor:pointer;transition:transform .15s cubic-bezier(.4,0,.2,1)}.sdc-popover-btn[_ngcontent-%COMP%]:hover:not(:disabled){transform:scale(.95)}.sdc-popover-btn[_ngcontent-%COMP%]:disabled{opacity:.3;cursor:not-allowed}.sdc-popover-btn-primary[_ngcontent-%COMP%]{background-color:var(--sdc-btn-primary-bg, #007bff);color:var(--sdc-btn-primary-color, white);margin-right:.5rem}.sdc-popover-btn-secondary[_ngcontent-%COMP%]{background-color:var(--sdc-btn-secondary-bg, white);color:var(--sdc-btn-secondary-color, #007bff);border:1px solid var(--sdc-btn-secondary-border, #007bff)}.sdc-popover-btn-secondary[_ngcontent-%COMP%]:hover:not(:disabled){color:var(--sdc-btn-secondary-hover-color, #0056b3)}.sdc-popover-btn-mobile-only[_ngcontent-%COMP%]{display:block}@media (min-width: 768px){.sdc-popover-btn-mobile-only[_ngcontent-%COMP%]{display:none}}"], changeDetection: 0 });
4890
+ }
4891
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SectionPopoverComponent, [{
4892
+ type: Component,
4893
+ args: [{ selector: 'sdc-section-popover', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<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", styles: [":host{display:block}.sdc-section-popover{width:var(--sdc-popover-width, 20rem);height:auto;color:var(--sdc-popover-text-color, #ffffff);background-color:var(--sdc-popover-bg-color, #000000);border-radius:var(--sdc-popover-border-radius, .75rem);overflow:hidden}.sdc-popover-thumbnail{width:100%;height:var(--sdc-popover-thumbnail-height, 12rem);position:relative}.sdc-thumbnail-image{width:100%;height:100%;background-position:center;background-size:cover;background-repeat:no-repeat}.sdc-thumbnail-clickable{cursor:pointer;display:flex;align-items:flex-end;justify-content:center;padding:8px}.sdc-thumbnail-overlay-text{font-size:var(--sdc-thumbnail-overlay-font-size, 12px);color:var(--sdc-thumbnail-overlay-color, #ffffff);background-color:var(--sdc-thumbnail-overlay-bg, rgba(0, 0, 0, .5));padding:4px 8px;border-radius:4px}.sdc-popover-loader{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.sdc-spinner{display:inline-block;width:80px;height:80px}.sdc-spinner:after{content:\" \";display:block;width:32px;height:32px;margin:16px 8px 8px 24px;border-radius:50%;border:3px solid var(--sdc-spinner-color, #fff);border-color:var(--sdc-spinner-color, #fff) transparent var(--sdc-spinner-color, #fff) transparent;animation:sdc-spinner-rotate 1.2s linear infinite}@keyframes sdc-spinner-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sdc-popover-content{padding:.75rem}.sdc-popover-grid{display:flex;gap:1.25rem}.sdc-popover-col-left{flex:1}.sdc-popover-col-right{flex:1;text-align:right;min-width:max-content}.sdc-popover-label{margin:.25rem 0;font-size:var(--sdc-popover-label-font-size, .875rem);line-height:1.25rem;font-weight:var(--sdc-popover-label-font-weight, 700)}.sdc-popover-label-text{font-weight:var(--sdc-popover-label-text-font-weight, 400)}.sdc-popover-actions{padding:.5rem 0;display:flex;justify-content:center;gap:.5rem}.sdc-popover-btn{border:none;border-radius:var(--sdc-btn-border-radius, 4px);padding:.5rem 1rem;height:var(--sdc-btn-height, 2.25rem);font-size:var(--sdc-btn-font-size, .75rem);cursor:pointer;transition:transform .15s cubic-bezier(.4,0,.2,1)}.sdc-popover-btn:hover:not(:disabled){transform:scale(.95)}.sdc-popover-btn:disabled{opacity:.3;cursor:not-allowed}.sdc-popover-btn-primary{background-color:var(--sdc-btn-primary-bg, #007bff);color:var(--sdc-btn-primary-color, white);margin-right:.5rem}.sdc-popover-btn-secondary{background-color:var(--sdc-btn-secondary-bg, white);color:var(--sdc-btn-secondary-color, #007bff);border:1px solid var(--sdc-btn-secondary-border, #007bff)}.sdc-popover-btn-secondary:hover:not(:disabled){color:var(--sdc-btn-secondary-hover-color, #0056b3)}.sdc-popover-btn-mobile-only{display:block}@media (min-width: 768px){.sdc-popover-btn-mobile-only{display:none}}\n"] }]
4894
+ }], null, { data: [{
4895
+ type: Input
4896
+ }], showLoader: [{
4897
+ type: Input
4898
+ }], showBestAvailable: [{
4899
+ type: Input
4900
+ }], showOpenSeatMap: [{
4901
+ type: Input
4902
+ }], excludeSeatMapSections: [{
4903
+ type: Input
4904
+ }], isTicketFeeEnabled: [{
4905
+ type: Input
4906
+ }], load3dView: [{
4907
+ type: Output
4908
+ }], selectForBA: [{
4909
+ type: Output
4910
+ }], openSeatMap: [{
4911
+ type: Output
4912
+ }] }); })();
4913
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SectionPopoverComponent, { className: "SectionPopoverComponent", filePath: "dvm/popover/section-popover/section-popover.component.ts", lineNumber: 24 }); })();
4914
+
4915
+ const _c0$7 = () => ["S_BLCHADA", "S_Bleacher"];
4916
+ function PopoverComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
4917
+ const _r1 = i0.ɵɵgetCurrentView();
4918
+ i0.ɵɵelementStart(0, "sdc-section-popover", 2);
4919
+ i0.ɵɵlistener("mouseEnter", function PopoverComponent_Conditional_0_Template_sdc_section_popover_mouseEnter_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onEnter($event)); })("mouseLeave", function PopoverComponent_Conditional_0_Template_sdc_section_popover_mouseLeave_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLeave($event)); })("load3dView", function PopoverComponent_Conditional_0_Template_sdc_section_popover_load3dView_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLoad3dView()); })("selectForBA", function PopoverComponent_Conditional_0_Template_sdc_section_popover_selectForBA_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSelectSectionForBA($event)); })("openSeatMap", function PopoverComponent_Conditional_0_Template_sdc_section_popover_openSeatMap_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOpenSeatMap()); });
4920
+ i0.ɵɵelementEnd();
4921
+ } if (rf & 2) {
4922
+ const ctx_r1 = i0.ɵɵnextContext();
4923
+ i0.ɵɵproperty("data", ctx_r1.sectionData)("popoverId", "popover-" + ctx_r1.node.id)("showBestAvailable", true)("showOpenSeatMap", true)("excludeSeatMapSections", i0.ɵɵpureFunction0(5, _c0$7));
4924
+ } }
4925
+ function PopoverComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
4926
+ const _r3 = i0.ɵɵgetCurrentView();
4927
+ i0.ɵɵelementStart(0, "sdc-seat-popover", 3);
4928
+ i0.ɵɵlistener("mouseEnter", function PopoverComponent_Conditional_1_Template_sdc_seat_popover_mouseEnter_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onEnter($event)); })("mouseLeave", function PopoverComponent_Conditional_1_Template_sdc_seat_popover_mouseLeave_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLeave($event)); });
4929
+ i0.ɵɵelementEnd();
4930
+ } if (rf & 2) {
4931
+ const ctx_r1 = i0.ɵɵnextContext();
4932
+ i0.ɵɵproperty("data", ctx_r1.seatData)("popoverId", "popover-" + ctx_r1.node.id);
4519
4933
  } }
4520
4934
  class PopoverComponent {
4521
4935
  // INPUTS
@@ -4527,19 +4941,25 @@ class PopoverComponent {
4527
4941
  * The current theme applied to the component.
4528
4942
  */
4529
4943
  theme = input('theme-sdc');
4944
+ // OUTPUTS
4530
4945
  /**
4531
- * Computed class string that combines theme and user classes.
4946
+ * Emitted when the 3D view should be loaded.
4532
4947
  */
4533
- computedClass = computed(() => {
4534
- const themeClass = this.theme();
4535
- return ['sdc-map-popover', themeClass].join(' ');
4536
- });
4948
+ load3dView = output();
4949
+ /**
4950
+ * Emitted when a section should be selected/deselected for best available.
4951
+ */
4952
+ selectSectionForBA = output();
4953
+ /**
4954
+ * Emitted when the seat map should be opened.
4955
+ */
4956
+ openSeatMap = output();
4537
4957
  // SERVICES
4538
4958
  dvm = inject(DVM_SERVICE);
4539
4959
  cdr = inject(ChangeDetectorRef);
4540
4960
  format = inject(DVM_FORMATTER);
4541
- popoverService = inject(PopoverService);
4542
4961
  configurationService = inject(CONFIGURATION_SERVICE);
4962
+ popoverService = inject(PopoverService);
4543
4963
  // COMPONENT STATE
4544
4964
  Nodes = AppNodes;
4545
4965
  thumbnail;
@@ -4547,6 +4967,23 @@ class PopoverComponent {
4547
4967
  row;
4548
4968
  seat;
4549
4969
  prices;
4970
+ // Section popover specific properties
4971
+ availableQuantity = 0;
4972
+ adaQuantity = 0;
4973
+ includedSectionForBA = false;
4974
+ // Transformed data for new components
4975
+ get seatData() {
4976
+ if (this.node?.type === AppNodes.Seat) {
4977
+ return this.transformToSeatData();
4978
+ }
4979
+ return null;
4980
+ }
4981
+ get sectionData() {
4982
+ if (this.node?.type === AppNodes.Section || this.node?.type === AppNodes.Ga) {
4983
+ return this.transformToSectionData();
4984
+ }
4985
+ return null;
4986
+ }
4550
4987
  // LC METHODS
4551
4988
  ngOnInit() {
4552
4989
  this.initComponent();
@@ -4565,6 +5002,16 @@ class PopoverComponent {
4565
5002
  : this.prices[0] // Si lo hay, sacamos el minimo, si no seteamos el primero ( y unico xd )
4566
5003
  : undefined; // No existen precios
4567
5004
  }
5005
+ get priceRange() {
5006
+ if (!this.prices || this.prices.length === 0) {
5007
+ return '';
5008
+ }
5009
+ let priceRange = this.prices[0];
5010
+ if (this.prices.length > 1 && this.prices[0] !== this.prices[1]) {
5011
+ priceRange = `${this.prices[0]} - ${this.prices[1]}`;
5012
+ }
5013
+ return priceRange;
5014
+ }
4568
5015
  // METHODS
4569
5016
  initComponent() {
4570
5017
  this.setTexts();
@@ -4572,8 +5019,8 @@ class PopoverComponent {
4572
5019
  // this.getPrice();
4573
5020
  }
4574
5021
  setTexts() {
4575
- const nodeId = this.format.transform(this.node.id).split(' ');
4576
- // const translated = this.translationData()[this.node.id.split('-')[0]];
5022
+ const nodeId = this.format.transform(this.node?.id).split(' ');
5023
+ // const translated = this.translationData()[this.node().id.split('-')[0]];
4577
5024
  this.section = nodeId[0];
4578
5025
  this.row = nodeId[1] ?? null;
4579
5026
  this.seat = nodeId[2] ?? null;
@@ -4582,9 +5029,9 @@ class PopoverComponent {
4582
5029
  const viewer3dService = this.dvm.viewer3dService;
4583
5030
  const options = {
4584
5031
  // eslint-disable-next-line camelcase
4585
- venue_id: this.configurationService.configuration.dvm.venueId,
5032
+ venue_id: this.configurationService.configuration.dvmData.venueId,
4586
5033
  // eslint-disable-next-line camelcase
4587
- view_id: this.node.id,
5034
+ view_id: this.node?.id,
4588
5035
  };
4589
5036
  if (!viewer3dService?.isInitialized()) {
4590
5037
  return;
@@ -4594,39 +5041,245 @@ class PopoverComponent {
4594
5041
  this.cdr.markForCheck();
4595
5042
  });
4596
5043
  }
5044
+ // Section popover methods
5045
+ onLoad3dView() {
5046
+ this.load3dView.emit({
5047
+ node: this.node,
5048
+ section: this.section,
5049
+ });
5050
+ }
5051
+ onSelectSectionForBA(selected) {
5052
+ this.includedSectionForBA = selected;
5053
+ this.selectSectionForBA.emit({
5054
+ node: this.node,
5055
+ section: this.section,
5056
+ selected: this.includedSectionForBA,
5057
+ });
5058
+ }
5059
+ onOpenSeatMap() {
5060
+ this.openSeatMap.emit({
5061
+ node: this.node,
5062
+ section: this.section,
5063
+ });
5064
+ }
5065
+ // Data transformation methods
5066
+ transformToSeatData() {
5067
+ const nodeId = this.format.transform(this.node?.id).split(' ');
5068
+ const section = nodeId[0];
5069
+ const row = nodeId[1] ?? '';
5070
+ const seat = nodeId[2] ?? '';
5071
+ return {
5072
+ id: this.node.id,
5073
+ section: section,
5074
+ row: row,
5075
+ seat: seat,
5076
+ price: this.price ? Number.parseFloat(this.price) : 0,
5077
+ thumbnail: this.thumbnail
5078
+ };
5079
+ }
5080
+ transformToSectionData() {
5081
+ const nodeId = this.format.transform(this.node?.id).split(' ');
5082
+ const section = nodeId[0];
5083
+ // Parse price range from existing prices array
5084
+ let priceRange = { min: 0, max: 0 };
5085
+ if (this.prices && this.prices.length > 0) {
5086
+ const minPrice = Number.parseFloat(this.prices[0]);
5087
+ const maxPrice = this.prices.length > 1 ? Number.parseFloat(this.prices[1]) : minPrice;
5088
+ priceRange = { min: minPrice, max: maxPrice };
5089
+ }
5090
+ return {
5091
+ id: this.node.id,
5092
+ section: section,
5093
+ priceRange: priceRange,
5094
+ availableQuantity: this.availableQuantity,
5095
+ adaQuantity: this.adaQuantity,
5096
+ thumbnail: this.thumbnail,
5097
+ type: this.node.type === AppNodes.Ga ? 'general_admission' : 'section',
5098
+ isSelectedForBA: this.includedSectionForBA
5099
+ };
5100
+ }
4597
5101
  static ɵfac = function PopoverComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PopoverComponent)(); };
4598
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PopoverComponent, selectors: [["sdc-map-popover"]], inputs: { node: "node", theme: [1, "theme"] }, decls: 9, vars: 6, consts: [[3, "mouseenter", "mouseleave"], ["id", "arrow"], [1, "popover-loader-container"], [1, "popover-content"], [1, "popover-text"], ["height", "124", "id", "pano-view", "priority", "", "width", "275", 1, "popover-thumbnail-desktop", 3, "alt", "ngSrc"], ["height", "78", "id", "mobile-pano-view", "priority", "", "width", "160", 1, "popover-thumbnail-mobile", 3, "alt", "ngSrc"], [1, "popover-loader-spinner-container"], [1, "popover-loader-spinner"], [1, "popover-text-light"], [1, "popover-gradient"], [1, "popover-price-container"], [1, "popover-price-text"], [1, "popover-price-text-light"]], template: function PopoverComponent_Template(rf, ctx) { if (rf & 1) {
4599
- i0.ɵɵelementStart(0, "div", 0);
4600
- i0.ɵɵlistener("mouseenter", function PopoverComponent_Template_div_mouseenter_0_listener($event) { return ctx.onEnter($event); })("mouseleave", function PopoverComponent_Template_div_mouseleave_0_listener($event) { return ctx.onLeave($event); });
4601
- i0.ɵɵelement(1, "div", 1);
4602
- i0.ɵɵtemplate(2, PopoverComponent_Conditional_2_Template, 2, 4)(3, PopoverComponent_Conditional_3_Template, 3, 0, "div", 2);
4603
- i0.ɵɵelementStart(4, "div", 3)(5, "p", 4);
4604
- i0.ɵɵtext(6);
4605
- i0.ɵɵelementEnd();
4606
- i0.ɵɵtemplate(7, PopoverComponent_Conditional_7_Template, 8, 2, "ng-container");
4607
- i0.ɵɵelementEnd();
4608
- i0.ɵɵtemplate(8, PopoverComponent_Conditional_8_Template, 8, 5, "ng-container");
4609
- i0.ɵɵelementEnd();
5102
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PopoverComponent, selectors: [["sdc-map-popover"]], inputs: { node: "node", theme: [1, "theme"] }, outputs: { load3dView: "load3dView", selectSectionForBA: "selectSectionForBA", openSeatMap: "openSeatMap" }, decls: 2, vars: 2, consts: [[3, "data", "popoverId", "showBestAvailable", "showOpenSeatMap", "excludeSeatMapSections"], [3, "data", "popoverId"], [3, "mouseEnter", "mouseLeave", "load3dView", "selectForBA", "openSeatMap", "data", "popoverId", "showBestAvailable", "showOpenSeatMap", "excludeSeatMapSections"], [3, "mouseEnter", "mouseLeave", "data", "popoverId"]], template: function PopoverComponent_Template(rf, ctx) { if (rf & 1) {
5103
+ i0.ɵɵtemplate(0, PopoverComponent_Conditional_0_Template, 1, 6, "sdc-section-popover", 0)(1, PopoverComponent_Conditional_1_Template, 1, 2, "sdc-seat-popover", 1);
4610
5104
  } if (rf & 2) {
4611
- i0.ɵɵclassMap(ctx.computedClass());
4612
- i0.ɵɵadvance(2);
4613
- i0.ɵɵconditional(ctx.thumbnail ? 2 : 3);
4614
- i0.ɵɵadvance(4);
4615
- i0.ɵɵtextInterpolate1(" ", ctx.section, " ");
5105
+ i0.ɵɵconditional(ctx.sectionData ? 0 : -1);
4616
5106
  i0.ɵɵadvance();
4617
- i0.ɵɵconditional(ctx.node.type === ctx.Nodes.Seat ? 7 : -1);
4618
- i0.ɵɵadvance();
4619
- i0.ɵɵconditional(ctx.price ? 8 : -1);
4620
- } }, dependencies: [CurrencyPipe, NgOptimizedImage], styles: [".sdc-map-popover[_ngcontent-%COMP%]{--sdc-map-popover-background-color: var(--color-pure-black);--sdc-map-popover-border-radius: var(--radius-xl);--sdc-map-popover-width: 150px;--sdc-map-popover-height: 94px;--sdc-map-popover-lg-width: 270px;--sdc-map-popover-lg-height: auto;--sdc-map-popover-thumbnail-desktop-height: 124px;--sdc-map-popover-thumbnail-mobile-height: 66px;--sdc-map-popover-loader-background-color: var(--color-pure-black);--sdc-map-popover-loader-height: 124px;--sdc-map-popover-loader-spinner-border-color: var(--color-neutral-300);--sdc-map-popover-loader-spinner-border-top-color: var(--color-pure-white);--sdc-map-popover-loader-spinner-size: 2rem;--sdc-map-popover-loader-spinner-text-color: var(--color-neutral-200);--sdc-map-popover-content-background-color: var(--color-neutral-800);--sdc-map-popover-content-padding: var(--space-1_5) var(--space-0);--sdc-map-popover-text-color: var(--color-pure-white);--sdc-map-popover-text-size: var(--text-xs);--sdc-map-popover-text-weight: var(--font-semibold);--sdc-map-popover-text-light-weight: var(--font-light);--sdc-map-popover-text-light-opacity: .5;--sdc-map-popover-gradient-from: var(--color-primary-transparent-30);--sdc-map-popover-gradient-via: var(--color-primary);--sdc-map-popover-gradient-to: var(--color-primary-transparent-30);--sdc-map-popover-gradient-height: 2px;--sdc-map-popover-price-container-padding: var(--space-1_5) var(--space-0);--sdc-map-popover-price-text-color: var(--color-pure-white);--sdc-map-popover-price-text-size: var(--text-sm);--sdc-map-popover-price-text-weight: var(--font-semibold);--sdc-map-popover-price-text-light-color: var(--color-primary);--sdc-map-popover-price-text-light-weight: var(--font-light);display:flex;flex-direction:column;overflow:hidden;background-color:var(--sdc-map-popover-background-color);border-radius:var(--sdc-map-popover-border-radius);width:var(--sdc-map-popover-width);height:var(--sdc-map-popover-height)}.popover-thumbnail-desktop[_ngcontent-%COMP%]{display:none}.popover-thumbnail-mobile[_ngcontent-%COMP%]{display:flex;object-fit:cover;pointer-events:auto;height:var(--sdc-map-popover-thumbnail-mobile-height)}.popover-loader-container[_ngcontent-%COMP%]{display:flex;align-items:center;background-color:var(--sdc-map-popover-loader-background-color);height:var(--sdc-map-popover-loader-height)}@media (min-width: 1024px){.sdc-map-popover[_ngcontent-%COMP%]{width:var(--sdc-map-popover-lg-width);height:var(--sdc-map-popover-lg-height)}.popover-thumbnail-desktop[_ngcontent-%COMP%]{display:flex;object-fit:cover;pointer-events:auto;height:var(--sdc-map-popover-thumbnail-desktop-height)}.popover-thumbnail-mobile[_ngcontent-%COMP%]{display:none}}.popover-loader-spinner-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;width:100%}.popover-loader-spinner[_ngcontent-%COMP%]{position:relative;display:flex;justify-content:center;align-items:center;border:2px solid var(--sdc-map-popover-loader-spinner-border-color);border-top-color:var(--sdc-map-popover-loader-spinner-border-top-color);border-radius:9999px;width:var(--sdc-map-popover-loader-spinner-size);height:var(--sdc-map-popover-loader-spinner-size);color:var(--sdc-map-popover-loader-spinner-text-color);font-size:2.25rem;animation:_ngcontent-%COMP%_spin 1s linear infinite}.popover-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:.25rem;background-color:var(--sdc-map-popover-content-background-color);padding:var(--sdc-map-popover-content-padding)}.popover-text[_ngcontent-%COMP%]{display:block;text-transform:uppercase;color:var(--sdc-map-popover-text-color);font-size:var(--sdc-map-popover-text-size);font-weight:var(--sdc-map-popover-text-weight)}.popover-text-light[_ngcontent-%COMP%]{font-weight:var(--sdc-map-popover-text-light-weight);opacity:var(--sdc-map-popover-text-light-opacity)}.popover-gradient[_ngcontent-%COMP%]{width:100%;background-image:linear-gradient(to right,var(--sdc-map-popover-gradient-from),var(--sdc-map-popover-gradient-via),var(--sdc-map-popover-gradient-to));height:var(--sdc-map-popover-gradient-height)}.popover-price-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:var(--sdc-map-popover-price-container-padding)}.popover-price-text[_ngcontent-%COMP%]{display:block;text-transform:uppercase;color:var(--sdc-map-popover-price-text-color);font-size:var(--sdc-map-popover-price-text-size);font-weight:var(--sdc-map-popover-price-text-weight)}.popover-price-text-light[_ngcontent-%COMP%]{color:var(--sdc-map-popover-price-text-light-color);font-weight:var(--sdc-map-popover-price-text-light-weight)}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"], changeDetection: 0 });
5107
+ i0.ɵɵconditional(ctx.seatData ? 1 : -1);
5108
+ } }, dependencies: [CommonModule, SeatPopoverComponent, SectionPopoverComponent], styles: [".lds-dual-ring[_ngcontent-%COMP%]{display:inline-block;width:80px;height:80px}.lds-dual-ring[_ngcontent-%COMP%]:after{content:\" \";display:block;width:32px;height:32px;margin:16px 8px 8px 16px;border-radius:50%;border:3px solid #fff;border-color:#fff transparent #fff transparent;animation:_ngcontent-%COMP%_lds-dual-ring 1.2s linear infinite}@keyframes _ngcontent-%COMP%_lds-dual-ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}h5[_ngcontent-%COMP%]{margin:.25rem 0;font-size:.875rem;line-height:1.25rem}.font-normal[_ngcontent-%COMP%]{font-weight:400}.w-80[_ngcontent-%COMP%]{width:20rem}.h-48[_ngcontent-%COMP%]{height:12rem}.h-auto[_ngcontent-%COMP%]{height:auto}.text-white[_ngcontent-%COMP%]{color:#fff}.bg-black[_ngcontent-%COMP%]{background-color:#000}.rounded-xl[_ngcontent-%COMP%]{border-radius:.75rem}.overflow-hidden[_ngcontent-%COMP%]{overflow:hidden}.w-full[_ngcontent-%COMP%]{width:100%}.h-full[_ngcontent-%COMP%]{height:100%}.bg-center[_ngcontent-%COMP%]{background-position:center}.bg-cover[_ngcontent-%COMP%]{background-size:cover}.bg-no-repeat[_ngcontent-%COMP%]{background-repeat:no-repeat}.flex[_ngcontent-%COMP%]{display:flex}.justify-center[_ngcontent-%COMP%]{justify-content:center}.items-center[_ngcontent-%COMP%]{align-items:center}.px-3[_ngcontent-%COMP%]{padding-left:.75rem;padding-right:.75rem}.py-2[_ngcontent-%COMP%]{padding-top:.5rem;padding-bottom:.5rem}.w-1\\/2[_ngcontent-%COMP%]{width:50%}.mr-5[_ngcontent-%COMP%]{margin-right:1.25rem}.min-w-max[_ngcontent-%COMP%]{min-width:max-content}.text-right[_ngcontent-%COMP%]{text-align:right}.viewer3d-image[_ngcontent-%COMP%]{cursor:pointer;display:flex;align-items:flex-end;justify-content:center;padding:8px;font-size:12px}.btn-main[_ngcontent-%COMP%]{background-color:#007bff;color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;cursor:pointer}.btn-white[_ngcontent-%COMP%]{background-color:#fff;color:#007bff;border:1px solid #007bff;border-radius:4px;padding:.5rem 1rem;cursor:pointer}.btn-white[_ngcontent-%COMP%]:hover{color:#0056b3}.tooltip-img[_ngcontent-%COMP%]{background-position:center;background-size:cover;background-repeat:no-repeat}.block[_ngcontent-%COMP%]{display:block}.md\\\\[_ngcontent-%COMP%]:hidden{display:none}@media (min-width: 768px){.md\\\\[_ngcontent-%COMP%]:hidden{display:none}}.text-main[_ngcontent-%COMP%]{color:#007bff}.text-main-accent[_ngcontent-%COMP%]{color:#0056b3}.mr-2[_ngcontent-%COMP%]{margin-right:.5rem}.h-9[_ngcontent-%COMP%]{height:2.25rem}.text-xs[_ngcontent-%COMP%]{font-size:.75rem;line-height:1rem}.disabled\\\\[_ngcontent-%COMP%]:opacity-30:disabled{opacity:.3}.transition-transform[_ngcontent-%COMP%]{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.hover\\\\[_ngcontent-%COMP%]:scale-95:hover{transform:scale(.95)}.disabled\\\\[_ngcontent-%COMP%]:hover\\\\:transform-none:disabled:hover{transform:none}.hover\\\\[_ngcontent-%COMP%]:text-main-accent:hover{color:#0056b3}"], changeDetection: 0 });
4621
5109
  }
4622
5110
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PopoverComponent, [{
4623
5111
  type: Component,
4624
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'sdc-map-popover', imports: [CurrencyPipe, NgOptimizedImage], template: "<div [class]=\"computedClass()\" (mouseenter)=\"onEnter($event)\" (mouseleave)=\"onLeave($event)\">\n <div id=\"arrow\"></div>\n <!-- THUMBNAIL -->\n @if (thumbnail) {\n <img\n class=\"popover-thumbnail-desktop\"\n height=\"124\"\n id=\"pano-view\"\n priority\n width=\"275\"\n [alt]=\"'thumbnail-' + node.id\"\n [ngSrc]=\"thumbnail\" />\n <img\n class=\"popover-thumbnail-mobile\"\n height=\"78\"\n id=\"mobile-pano-view\"\n priority\n width=\"160\"\n [alt]=\"'thumbnail-' + node.id\"\n [ngSrc]=\"thumbnail\" />\n } @else {\n <!-- LOADER -->\n <div class=\"popover-loader-container\">\n <div class=\"popover-loader-spinner-container\">\n <div class=\"popover-loader-spinner\"></div>\n </div>\n </div>\n }\n\n <!-- CONTENT -->\n <div class=\"popover-content\">\n <p class=\"popover-text\">\n <!-- <span class=\"popover-text-light\">\n {{ node.id }}\n </span> -->\n\n {{ section }}\n </p>\n\n @if (node.type === Nodes.Seat) {\n <ng-container>\n <p class=\"popover-text\">\n <span class=\"popover-text-light\"> Row</span>\n\n {{ row }}\n\n &nbsp;\n\n <span class=\"popover-text-light\">Seat</span>\n\n {{ seat }}\n </p>\n </ng-container>\n }\n </div>\n\n <!-- PRICE & BENEFITS -->\n @if (price) {\n <ng-container>\n <!-- GRADIENT -->\n <div class=\"popover-gradient\"></div>\n\n <!-- BENEFITS & PRICE -->\n <div class=\"popover-price-container\">\n <!-- PRICE -->\n <p class=\"popover-price-text\">\n <span class=\"popover-price-text-light\"> {{ prices!.length > 1 ? 'FROM' : 'PRICE' }} &nbsp; </span>\n\n {{ price | currency: 'USD' }}\n </p>\n </div>\n </ng-container>\n }\n</div>\n", styles: [".sdc-map-popover{--sdc-map-popover-background-color: var(--color-pure-black);--sdc-map-popover-border-radius: var(--radius-xl);--sdc-map-popover-width: 150px;--sdc-map-popover-height: 94px;--sdc-map-popover-lg-width: 270px;--sdc-map-popover-lg-height: auto;--sdc-map-popover-thumbnail-desktop-height: 124px;--sdc-map-popover-thumbnail-mobile-height: 66px;--sdc-map-popover-loader-background-color: var(--color-pure-black);--sdc-map-popover-loader-height: 124px;--sdc-map-popover-loader-spinner-border-color: var(--color-neutral-300);--sdc-map-popover-loader-spinner-border-top-color: var(--color-pure-white);--sdc-map-popover-loader-spinner-size: 2rem;--sdc-map-popover-loader-spinner-text-color: var(--color-neutral-200);--sdc-map-popover-content-background-color: var(--color-neutral-800);--sdc-map-popover-content-padding: var(--space-1_5) var(--space-0);--sdc-map-popover-text-color: var(--color-pure-white);--sdc-map-popover-text-size: var(--text-xs);--sdc-map-popover-text-weight: var(--font-semibold);--sdc-map-popover-text-light-weight: var(--font-light);--sdc-map-popover-text-light-opacity: .5;--sdc-map-popover-gradient-from: var(--color-primary-transparent-30);--sdc-map-popover-gradient-via: var(--color-primary);--sdc-map-popover-gradient-to: var(--color-primary-transparent-30);--sdc-map-popover-gradient-height: 2px;--sdc-map-popover-price-container-padding: var(--space-1_5) var(--space-0);--sdc-map-popover-price-text-color: var(--color-pure-white);--sdc-map-popover-price-text-size: var(--text-sm);--sdc-map-popover-price-text-weight: var(--font-semibold);--sdc-map-popover-price-text-light-color: var(--color-primary);--sdc-map-popover-price-text-light-weight: var(--font-light);display:flex;flex-direction:column;overflow:hidden;background-color:var(--sdc-map-popover-background-color);border-radius:var(--sdc-map-popover-border-radius);width:var(--sdc-map-popover-width);height:var(--sdc-map-popover-height)}.popover-thumbnail-desktop{display:none}.popover-thumbnail-mobile{display:flex;object-fit:cover;pointer-events:auto;height:var(--sdc-map-popover-thumbnail-mobile-height)}.popover-loader-container{display:flex;align-items:center;background-color:var(--sdc-map-popover-loader-background-color);height:var(--sdc-map-popover-loader-height)}@media (min-width: 1024px){.sdc-map-popover{width:var(--sdc-map-popover-lg-width);height:var(--sdc-map-popover-lg-height)}.popover-thumbnail-desktop{display:flex;object-fit:cover;pointer-events:auto;height:var(--sdc-map-popover-thumbnail-desktop-height)}.popover-thumbnail-mobile{display:none}}.popover-loader-spinner-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;width:100%}.popover-loader-spinner{position:relative;display:flex;justify-content:center;align-items:center;border:2px solid var(--sdc-map-popover-loader-spinner-border-color);border-top-color:var(--sdc-map-popover-loader-spinner-border-top-color);border-radius:9999px;width:var(--sdc-map-popover-loader-spinner-size);height:var(--sdc-map-popover-loader-spinner-size);color:var(--sdc-map-popover-loader-spinner-text-color);font-size:2.25rem;animation:spin 1s linear infinite}.popover-content{display:flex;flex-direction:column;align-items:center;gap:.25rem;background-color:var(--sdc-map-popover-content-background-color);padding:var(--sdc-map-popover-content-padding)}.popover-text{display:block;text-transform:uppercase;color:var(--sdc-map-popover-text-color);font-size:var(--sdc-map-popover-text-size);font-weight:var(--sdc-map-popover-text-weight)}.popover-text-light{font-weight:var(--sdc-map-popover-text-light-weight);opacity:var(--sdc-map-popover-text-light-opacity)}.popover-gradient{width:100%;background-image:linear-gradient(to right,var(--sdc-map-popover-gradient-from),var(--sdc-map-popover-gradient-via),var(--sdc-map-popover-gradient-to));height:var(--sdc-map-popover-gradient-height)}.popover-price-container{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:var(--sdc-map-popover-price-container-padding)}.popover-price-text{display:block;text-transform:uppercase;color:var(--sdc-map-popover-price-text-color);font-size:var(--sdc-map-popover-price-text-size);font-weight:var(--sdc-map-popover-price-text-weight)}.popover-price-text-light{color:var(--sdc-map-popover-price-text-light-color);font-weight:var(--sdc-map-popover-price-text-light-weight)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
5112
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'sdc-map-popover', standalone: true, imports: [CommonModule, SeatPopoverComponent, SectionPopoverComponent], template: "<!-- SECTION POPOVER -->\n@if (sectionData) {\n <sdc-section-popover\n [data]=\"sectionData\"\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 [data]=\"seatData\"\n [popoverId]=\"'popover-' + node.id\"\n (mouseEnter)=\"onEnter($event)\"\n (mouseLeave)=\"onLeave($event)\">\n </sdc-seat-popover>\n}\n", styles: [".lds-dual-ring{display:inline-block;width:80px;height:80px}.lds-dual-ring:after{content:\" \";display:block;width:32px;height:32px;margin:16px 8px 8px 16px;border-radius:50%;border:3px solid #fff;border-color:#fff transparent #fff transparent;animation:lds-dual-ring 1.2s linear infinite}@keyframes lds-dual-ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}h5{margin:.25rem 0;font-size:.875rem;line-height:1.25rem}.font-normal{font-weight:400}.w-80{width:20rem}.h-48{height:12rem}.h-auto{height:auto}.text-white{color:#fff}.bg-black{background-color:#000}.rounded-xl{border-radius:.75rem}.overflow-hidden{overflow:hidden}.w-full{width:100%}.h-full{height:100%}.bg-center{background-position:center}.bg-cover{background-size:cover}.bg-no-repeat{background-repeat:no-repeat}.flex{display:flex}.justify-center{justify-content:center}.items-center{align-items:center}.px-3{padding-left:.75rem;padding-right:.75rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.w-1\\/2{width:50%}.mr-5{margin-right:1.25rem}.min-w-max{min-width:max-content}.text-right{text-align:right}.viewer3d-image{cursor:pointer;display:flex;align-items:flex-end;justify-content:center;padding:8px;font-size:12px}.btn-main{background-color:#007bff;color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;cursor:pointer}.btn-white{background-color:#fff;color:#007bff;border:1px solid #007bff;border-radius:4px;padding:.5rem 1rem;cursor:pointer}.btn-white:hover{color:#0056b3}.tooltip-img{background-position:center;background-size:cover;background-repeat:no-repeat}.block{display:block}.md\\\\:hidden{display:none}@media (min-width: 768px){.md\\\\:hidden{display:none}}.text-main{color:#007bff}.text-main-accent{color:#0056b3}.mr-2{margin-right:.5rem}.h-9{height:2.25rem}.text-xs{font-size:.75rem;line-height:1rem}.disabled\\\\:opacity-30:disabled{opacity:.3}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.hover\\\\:scale-95:hover{transform:scale(.95)}.disabled\\\\:hover\\\\:transform-none:disabled:hover{transform:none}.hover\\\\:text-main-accent:hover{color:#0056b3}\n"] }]
4625
5113
  }], null, { node: [{
4626
- type: Input,
4627
- args: [{ required: true }]
5114
+ type: Input
4628
5115
  }] }); })();
4629
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PopoverComponent, { className: "PopoverComponent", filePath: "dvm/popover/popover.component.ts", lineNumber: 33 }); })();
5116
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PopoverComponent, { className: "PopoverComponent", filePath: "dvm/popover/popover.component.ts", lineNumber: 36 }); })();
5117
+
5118
+ /**
5119
+ * Generic popover manager service that handles popover lifecycle and positioning.
5120
+ * This service is DVM-agnostic and delegates positioning logic to IPopoverPositioner.
5121
+ */
5122
+ class PopoverManagerService {
5123
+ currentPopoverId = '';
5124
+ tooltip;
5125
+ positioner;
5126
+ constructor(positioner) {
5127
+ this.positioner = positioner;
5128
+ }
5129
+ /**
5130
+ * Shows a popover with the specified configuration.
5131
+ * @param config - Configuration for the popover including component, data, and positioning
5132
+ */
5133
+ showPopover(config) {
5134
+ config.container.clear();
5135
+ this.currentPopoverId = config.nodeId;
5136
+ this.tooltip = config.tooltip;
5137
+ const componentRef = config.container.createComponent(config.component);
5138
+ if (config.componentInputs) {
5139
+ Object.entries(config.componentInputs).forEach(([key, value]) => {
5140
+ componentRef.instance[key] = value;
5141
+ });
5142
+ }
5143
+ if (config.eventHandlers) {
5144
+ Object.entries(config.eventHandlers).forEach(([key, handler]) => {
5145
+ const instance = componentRef.instance;
5146
+ if (instance[key] && typeof instance[key].subscribe === 'function') {
5147
+ instance[key].subscribe(handler);
5148
+ }
5149
+ });
5150
+ }
5151
+ const placement = this.positioner.calculatePlacement(config.node, config.containerElement);
5152
+ const offset = this.positioner.calculateOffset(config.node);
5153
+ createPopper(config.node, this.tooltip, {
5154
+ placement,
5155
+ modifiers: [
5156
+ {
5157
+ name: 'offset',
5158
+ options: {
5159
+ offset,
5160
+ },
5161
+ },
5162
+ {
5163
+ name: 'flip',
5164
+ options: {
5165
+ fallbackPlacements: [],
5166
+ },
5167
+ },
5168
+ ],
5169
+ });
5170
+ this.tooltip.setAttribute('data-show', '');
5171
+ }
5172
+ /**
5173
+ * Hides the popover for the specified node ID.
5174
+ * @param nodeId - The node ID of the popover to hide
5175
+ */
5176
+ hidePopover(nodeId) {
5177
+ if (this.currentPopoverId === nodeId) {
5178
+ this.tooltip?.removeAttribute('data-show');
5179
+ }
5180
+ }
5181
+ /**
5182
+ * Clears all popovers.
5183
+ */
5184
+ clearAll() {
5185
+ this.tooltip?.removeAttribute('data-show');
5186
+ this.currentPopoverId = '';
5187
+ }
5188
+ static ɵfac = function PopoverManagerService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PopoverManagerService)(i0.ɵɵinject(POPOVER_POSITIONER)); };
5189
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PopoverManagerService, factory: PopoverManagerService.ɵfac });
5190
+ }
5191
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PopoverManagerService, [{
5192
+ type: Injectable
5193
+ }], () => [{ type: undefined, decorators: [{
5194
+ type: Inject,
5195
+ args: [POPOVER_POSITIONER]
5196
+ }] }], null); })();
5197
+
5198
+ /**
5199
+ * DVM-specific positioning service for popovers.
5200
+ * Handles calculation of popover placement and offset based on DVM node properties.
5201
+ */
5202
+ class DvmPopoverPositionerService {
5203
+ dvmService;
5204
+ configService;
5205
+ constructor(dvmService, configService) {
5206
+ this.dvmService = dvmService;
5207
+ this.configService = configService;
5208
+ }
5209
+ /**
5210
+ * Calculates the optimal placement for a popover based on node position.
5211
+ * @param node - The MapViewerNode to position relative to
5212
+ * @param container - The container element for positioning reference
5213
+ * @returns The calculated placement ('top' or 'bottom')
5214
+ */
5215
+ calculatePlacement(node, container) {
5216
+ if (!node.aabb) {
5217
+ throw new Error('Node AABB is not defined');
5218
+ }
5219
+ const nodeSceneCenter = [
5220
+ node.aabb[0] + node.aabb[2] / 2,
5221
+ node.aabb[1] + node.aabb[3] / 2,
5222
+ ];
5223
+ const nodeDomCenter = this.dvmService.viewerService.fromSceneToDom(nodeSceneCenter);
5224
+ if (nodeDomCenter[1] > container.offsetHeight / 2) {
5225
+ return 'top';
5226
+ }
5227
+ else {
5228
+ return 'bottom';
5229
+ }
5230
+ }
5231
+ /**
5232
+ * Calculates the offset for popover positioning based on node type and configuration.
5233
+ * @param node - The MapViewerNode to calculate offset for
5234
+ * @returns An array of [x, y] offset values
5235
+ */
5236
+ calculateOffset(node) {
5237
+ if (node.type === 'seat') {
5238
+ return [0, 6];
5239
+ }
5240
+ if (node.type === 'section' || node.type === 'general_admission') {
5241
+ const dvmData = this.configService.configuration.dvmData;
5242
+ const sectionOffsets = dvmData?.sectionOffsets || {};
5243
+ const nodeId = node.id;
5244
+ const nodeOriginalId = node.original_id;
5245
+ const dvmOffset = sectionOffsets[nodeId] ?? sectionOffsets[nodeOriginalId];
5246
+ return dvmOffset ?? [0, 0];
5247
+ }
5248
+ return [0, 0];
5249
+ }
5250
+ static ɵfac = function DvmPopoverPositionerService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DvmPopoverPositionerService)(i0.ɵɵinject(DVM_SERVICE), i0.ɵɵinject(CONFIGURATION_SERVICE)); };
5251
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DvmPopoverPositionerService, factory: DvmPopoverPositionerService.ɵfac });
5252
+ }
5253
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DvmPopoverPositionerService, [{
5254
+ type: Injectable
5255
+ }], () => [{ type: undefined, decorators: [{
5256
+ type: Inject,
5257
+ args: [DVM_SERVICE]
5258
+ }] }, { type: undefined, decorators: [{
5259
+ type: Inject,
5260
+ args: [CONFIGURATION_SERVICE]
5261
+ }] }], null); })();
5262
+
5263
+ /**
5264
+ * Abstract base class for transforming data from source format to target popover format.
5265
+ * Apps can extend this class to implement their own data transformation logic.
5266
+ */
5267
+ class BasePopoverDataTransformer {
5268
+ }
5269
+ /**
5270
+ * Abstract base class for transforming seat data to SeatPopoverData format.
5271
+ * Apps should extend this class and implement the transform method with their
5272
+ * specific seat data models.
5273
+ */
5274
+ class BaseSeatDataTransformer extends BasePopoverDataTransformer {
5275
+ }
5276
+ /**
5277
+ * Abstract base class for transforming section data to SectionPopoverData format.
5278
+ * Apps should extend this class and implement the transform method with their
5279
+ * specific section data models.
5280
+ */
5281
+ class BaseSectionDataTransformer extends BasePopoverDataTransformer {
5282
+ }
4630
5283
 
4631
5284
  /*
4632
5285
  * Public API Surface of software-division-components
@@ -5197,7 +5850,7 @@ class HlmDialogDescription {
5197
5850
  static ɵfac = function HlmDialogDescription_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || HlmDialogDescription)(); };
5198
5851
  static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: HlmDialogDescription, selectors: [["", "hlmDialogDescription", ""]], hostVars: 2, hostBindings: function HlmDialogDescription_HostBindings(rf, ctx) { if (rf & 2) {
5199
5852
  i0.ɵɵclassMap(ctx._computedClass());
5200
- } }, inputs: { userClass: [1, "class", "userClass"] }, features: [i0.ɵɵHostDirectivesFeature([i1$1.BrnDialogDescription])] });
5853
+ } }, inputs: { userClass: [1, "class", "userClass"] }, features: [i0.ɵɵHostDirectivesFeature([i1$2.BrnDialogDescription])] });
5201
5854
  }
5202
5855
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HlmDialogDescription, [{
5203
5856
  type: Directive,
@@ -5266,7 +5919,7 @@ class HlmDialogTitle {
5266
5919
  static ɵfac = function HlmDialogTitle_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || HlmDialogTitle)(); };
5267
5920
  static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: HlmDialogTitle, selectors: [["", "hlmDialogTitle", ""]], hostVars: 2, hostBindings: function HlmDialogTitle_HostBindings(rf, ctx) { if (rf & 2) {
5268
5921
  i0.ɵɵclassMap(ctx._computedClass());
5269
- } }, inputs: { userClass: [1, "class", "userClass"] }, features: [i0.ɵɵHostDirectivesFeature([i1$1.BrnDialogTitle])] });
5922
+ } }, inputs: { userClass: [1, "class", "userClass"] }, features: [i0.ɵɵHostDirectivesFeature([i1$2.BrnDialogTitle])] });
5270
5923
  }
5271
5924
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HlmDialogTitle, [{
5272
5925
  type: Directive,
@@ -5529,7 +6182,7 @@ class HlmSelectGroup {
5529
6182
  static ɵfac = function HlmSelectGroup_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || HlmSelectGroup)(); };
5530
6183
  static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: HlmSelectGroup, selectors: [["", "hlmSelectGroup", ""], ["hlm-select-group"]], hostVars: 2, hostBindings: function HlmSelectGroup_HostBindings(rf, ctx) { if (rf & 2) {
5531
6184
  i0.ɵɵclassMap(ctx._computedClass());
5532
- } }, inputs: { userClass: [1, "class", "userClass"] }, features: [i0.ɵɵHostDirectivesFeature([i1$2.BrnSelectGroup])] });
6185
+ } }, inputs: { userClass: [1, "class", "userClass"] }, features: [i0.ɵɵHostDirectivesFeature([i1$3.BrnSelectGroup])] });
5533
6186
  }
5534
6187
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HlmSelectGroup, [{
5535
6188
  type: Directive,
@@ -5550,7 +6203,7 @@ class HlmSelectLabel {
5550
6203
  static ɵfac = function HlmSelectLabel_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || HlmSelectLabel)(); };
5551
6204
  static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: HlmSelectLabel, selectors: [["", "hlmSelectLabel", ""], ["hlm-select-label"]], hostVars: 2, hostBindings: function HlmSelectLabel_HostBindings(rf, ctx) { if (rf & 2) {
5552
6205
  i0.ɵɵclassMap(ctx._computedClass());
5553
- } }, inputs: { userClass: [1, "class", "userClass"] }, features: [i0.ɵɵHostDirectivesFeature([i1$2.BrnSelectLabel])] });
6206
+ } }, inputs: { userClass: [1, "class", "userClass"] }, features: [i0.ɵɵHostDirectivesFeature([i1$3.BrnSelectLabel])] });
5554
6207
  }
5555
6208
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HlmSelectLabel, [{
5556
6209
  type: Directive,
@@ -5574,7 +6227,7 @@ class HlmSelectOption {
5574
6227
  static ɵfac = function HlmSelectOption_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || HlmSelectOption)(); };
5575
6228
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HlmSelectOption, selectors: [["hlm-option"]], hostVars: 2, hostBindings: function HlmSelectOption_HostBindings(rf, ctx) { if (rf & 2) {
5576
6229
  i0.ɵɵclassMap(ctx._computedClass());
5577
- } }, inputs: { userClass: [1, "class", "userClass"] }, features: [i0.ɵɵProvidersFeature([provideIcons({ lucideCheck })]), i0.ɵɵHostDirectivesFeature([{ directive: i1$2.BrnSelectOption, inputs: ["disabled", "disabled", "value", "value"] }])], ngContentSelectors: _c0$1, decls: 3, vars: 1, consts: [[1, "absolute", "right-2", "flex", "size-3.5", "items-center", "justify-center"], ["aria-hidden", "true", "hlm", "", "name", "lucideCheck", "size", "sm"]], template: function HlmSelectOption_Template(rf, ctx) { if (rf & 1) {
6230
+ } }, inputs: { userClass: [1, "class", "userClass"] }, features: [i0.ɵɵProvidersFeature([provideIcons({ lucideCheck })]), i0.ɵɵHostDirectivesFeature([{ directive: i1$3.BrnSelectOption, inputs: ["disabled", "disabled", "value", "value"] }])], ngContentSelectors: _c0$1, decls: 3, vars: 1, consts: [[1, "absolute", "right-2", "flex", "size-3.5", "items-center", "justify-center"], ["aria-hidden", "true", "hlm", "", "name", "lucideCheck", "size", "sm"]], template: function HlmSelectOption_Template(rf, ctx) { if (rf & 1) {
5578
6231
  i0.ɵɵprojectionDef();
5579
6232
  i0.ɵɵelementStart(0, "span", 0);
5580
6233
  i0.ɵɵtemplate(1, HlmSelectOption_Conditional_1_Template, 1, 0, "ng-icon", 1);
@@ -5834,7 +6487,7 @@ class SelectComponent {
5834
6487
  i0.ɵɵproperty("ngClass", ctx.variantClasses);
5835
6488
  i0.ɵɵadvance();
5836
6489
  i0.ɵɵrepeater(ctx.options());
5837
- } }, dependencies: [CommonModule, i1$3.NgClass, i1$2.BrnSelect, i1$2.BrnSelectContent, i1$2.BrnSelectValue, HlmSelectContent, HlmSelectTrigger, HlmSelectOption, HlmSelectValue, HlmSelect], styles: [".select-root[_ngcontent-%COMP%]{display:inline-block;width:100%}.select-trigger[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;border-radius:25px!important;outline:none;width:100%;overflow:hidden;color:#fff;font-size:.75rem;text-align:center;white-space:nowrap;text-overflow:ellipsis}.select-trigger[_ngcontent-%COMP%]:focus, .select-trigger[_ngcontent-%COMP%]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent, var(--ring-accent, #0ea5e9))}.select-trigger--sm[_ngcontent-%COMP%]{display:flex}.select-trigger--lg[_ngcontent-%COMP%]{display:none}@media (min-width: 1024px){.select-trigger--sm[_ngcontent-%COMP%]{display:none;font-weight:500;font-size:.875rem}.select-trigger--lg[_ngcontent-%COMP%]{display:flex;font-weight:500;font-size:.875rem}}.full-width[_ngcontent-%COMP%]{width:100%}"], changeDetection: 0 });
6490
+ } }, dependencies: [CommonModule, i1$1.NgClass, i1$3.BrnSelect, i1$3.BrnSelectContent, i1$3.BrnSelectValue, HlmSelectContent, HlmSelectTrigger, HlmSelectOption, HlmSelectValue, HlmSelect], styles: [".select-root[_ngcontent-%COMP%]{display:inline-block;width:100%}.select-trigger[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;border-radius:25px!important;outline:none;width:100%;overflow:hidden;color:#fff;font-size:.75rem;text-align:center;white-space:nowrap;text-overflow:ellipsis}.select-trigger[_ngcontent-%COMP%]:focus, .select-trigger[_ngcontent-%COMP%]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--accent, var(--ring-accent, #0ea5e9))}.select-trigger--sm[_ngcontent-%COMP%]{display:flex}.select-trigger--lg[_ngcontent-%COMP%]{display:none}@media (min-width: 1024px){.select-trigger--sm[_ngcontent-%COMP%]{display:none;font-weight:500;font-size:.875rem}.select-trigger--lg[_ngcontent-%COMP%]{display:flex;font-weight:500;font-size:.875rem}}.full-width[_ngcontent-%COMP%]{width:100%}"], changeDetection: 0 });
5838
6491
  }
5839
6492
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SelectComponent, [{
5840
6493
  type: Component,
@@ -5941,5 +6594,5 @@ function provideScreenObserver(screens) {
5941
6594
  * Generated bundle index. Do not edit.
5942
6595
  */
5943
6596
 
5944
- export { AddDigitalWalletComponent, BraintreeComponent, ButtonComponent, CONFIGURATION_SERVICE, CartComponent, CartItemComponent, CartItemService, CartService, CheckboxComponent, DVM_FORMATTER, DVM_SERVICE, DatePickerComponent, DialogComponent, HlmDialogService as DialogService, DrawerComponent, DrawerService, InputComponent, LegendComponent, LegendElementsComponent, LoaderComponent, LoaderService, MapLoaderComponent, NeighborsComponent, PopoverComponent, PopoverService, RadioComponent, ScreenObserver, SelectComponent, StepperComponent, SvgIconComponent, TableComponent, TicketInfoItemComponent, TicketInfoItemService, declareGlobalCssVariables, provideScreenObserver, provideSdc };
6597
+ export { AddDigitalWalletComponent, BasePopoverComponent, BasePopoverDataTransformer, BaseSeatDataTransformer, BaseSectionDataTransformer, BraintreeComponent, ButtonComponent, CONFIGURATION_SERVICE, CartComponent, CartItemComponent, CartItemService, CartService, CheckboxComponent, DVM_FORMATTER, DVM_SERVICE, DatePickerComponent, DialogComponent, HlmDialogService as DialogService, DrawerComponent, DrawerService, DvmPopoverPositionerService, InputComponent, LegendComponent, LegendElementsComponent, LoaderComponent, LoaderService, MapLoaderComponent, NeighborsComponent, POPOVER_MANAGER, POPOVER_POSITIONER, PopoverComponent, PopoverManagerService, PopoverService, RadioComponent, ScreenObserver, SeatPopoverComponent, SectionPopoverComponent, SelectComponent, StepperComponent, SvgIconComponent, THUMBNAIL_PROVIDER, TableComponent, TicketInfoItemComponent, TicketInfoItemService, declareGlobalCssVariables, provideScreenObserver, provideSdc };
5945
6598
  //# sourceMappingURL=3ddv-software-division-components.mjs.map