@duetds/components 7.1.0 → 7.1.2

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 (875) hide show
  1. package/hydrate/index.d.ts +6 -6
  2. package/hydrate/index.js +404 -243
  3. package/lib/cjs/duet-action-button.cjs.entry.js +29 -13
  4. package/lib/cjs/duet-alert.cjs.entry.js +6 -6
  5. package/lib/cjs/duet-badge.cjs.entry.js +3 -3
  6. package/lib/cjs/duet-banner.cjs.entry.js +4 -4
  7. package/lib/cjs/duet-breadcrumb.cjs.entry.js +5 -5
  8. package/lib/cjs/duet-breadcrumbs.cjs.entry.js +4 -4
  9. package/lib/cjs/duet-button_2.cjs.entry.js +7 -7
  10. package/lib/cjs/duet-callout.cjs.entry.js +3 -3
  11. package/lib/cjs/duet-caption_4.cjs.entry.js +26 -9
  12. package/lib/cjs/duet-card.cjs.entry.js +7 -7
  13. package/lib/cjs/duet-checkbox.cjs.entry.js +4 -4
  14. package/lib/cjs/duet-checkmark.cjs.entry.js +2 -2
  15. package/lib/cjs/duet-chip.cjs.entry.js +4 -4
  16. package/lib/cjs/duet-choice_2.cjs.entry.js +11 -11
  17. package/lib/cjs/duet-collapsible.cjs.entry.js +7 -7
  18. package/lib/cjs/duet-combobox.cjs.entry.js +6 -6
  19. package/lib/cjs/duet-contact-card.cjs.entry.js +5 -5
  20. package/lib/cjs/duet-cookie-consent.cjs.entry.js +3 -3
  21. package/lib/cjs/duet-date-picker.cjs.entry.js +7 -7
  22. package/lib/cjs/duet-divider_2.cjs.entry.js +3 -3
  23. package/lib/cjs/duet-editable-table_3.cjs.entry.js +10 -10
  24. package/lib/cjs/duet-empty-state.cjs.entry.js +3 -3
  25. package/lib/cjs/duet-fieldset.cjs.entry.js +5 -5
  26. package/lib/cjs/duet-footer.cjs.entry.js +6 -6
  27. package/lib/cjs/duet-grid_2.cjs.entry.js +3 -3
  28. package/lib/cjs/duet-header_2.cjs.entry.js +9 -9
  29. package/lib/cjs/duet-hero.cjs.entry.js +14 -8
  30. package/lib/cjs/duet-icon.cjs.entry.js +4 -4
  31. package/lib/cjs/duet-input_2.cjs.entry.js +8 -8
  32. package/lib/cjs/duet-layout.cjs.entry.js +2 -2
  33. package/lib/cjs/duet-list_2.cjs.entry.js +3 -3
  34. package/lib/cjs/duet-menu-bar-button.cjs.entry.js +3 -3
  35. package/lib/cjs/duet-menu-bar-dropdown-link.cjs.entry.js +4 -4
  36. package/lib/cjs/duet-menu-bar-dropdown.cjs.entry.js +4 -4
  37. package/lib/cjs/duet-menu-bar-link.cjs.entry.js +3 -3
  38. package/lib/cjs/duet-menu-bar.cjs.entry.js +3 -3
  39. package/lib/cjs/duet-modal.cjs.entry.js +10 -10
  40. package/lib/cjs/duet-multiselect.cjs.entry.js +7 -7
  41. package/lib/cjs/duet-nav.cjs.entry.js +2 -2
  42. package/lib/cjs/duet-notification_2.cjs.entry.js +5 -5
  43. package/lib/cjs/duet-number-input.cjs.entry.js +7 -7
  44. package/lib/cjs/duet-page-heading.cjs.entry.js +3 -3
  45. package/lib/cjs/duet-pagination_2.cjs.entry.js +79 -45
  46. package/lib/cjs/duet-popup-menu-item.cjs.entry.js +3 -3
  47. package/lib/cjs/duet-popup-menu.cjs.entry.js +5 -5
  48. package/lib/cjs/duet-progress.cjs.entry.js +6 -6
  49. package/lib/cjs/duet-promo-card.cjs.entry.js +4 -4
  50. package/lib/cjs/duet-radio_2.cjs.entry.js +5 -5
  51. package/lib/cjs/duet-range-slider.cjs.entry.js +5 -5
  52. package/lib/cjs/duet-scrollable_3.cjs.entry.js +7 -7
  53. package/lib/cjs/duet-section-layout.cjs.entry.js +2 -2
  54. package/lib/cjs/duet-select.cjs.entry.js +5 -5
  55. package/lib/cjs/duet-shaped-image.cjs.entry.js +2 -2
  56. package/lib/cjs/duet-show-more.cjs.entry.js +7 -7
  57. package/lib/cjs/duet-slideout-lang.cjs.entry.js +5 -5
  58. package/lib/cjs/duet-slideout-link.cjs.entry.js +3 -3
  59. package/lib/cjs/duet-slideout-panel-dropdown.cjs.entry.js +3 -3
  60. package/lib/cjs/duet-slideout-panel.cjs.entry.js +7 -7
  61. package/lib/cjs/duet-slideout.cjs.entry.js +9 -9
  62. package/lib/cjs/duet-step_2.cjs.entry.js +5 -5
  63. package/lib/cjs/duet-submenu-bar-dropdown-link.cjs.entry.js +4 -4
  64. package/lib/cjs/duet-submenu-bar-dropdown.cjs.entry.js +4 -4
  65. package/lib/cjs/duet-submenu-bar-link.cjs.entry.js +4 -4
  66. package/lib/cjs/duet-submenu-bar.cjs.entry.js +4 -4
  67. package/lib/cjs/duet-textarea.cjs.entry.js +5 -5
  68. package/lib/cjs/duet-toggle.cjs.entry.js +4 -4
  69. package/lib/cjs/duet-toolbar-dropdown-link.cjs.entry.js +4 -4
  70. package/lib/cjs/duet-toolbar-dropdown.cjs.entry.js +4 -4
  71. package/lib/cjs/duet-toolbar-link.cjs.entry.js +3 -3
  72. package/lib/cjs/duet-toolbar.cjs.entry.js +2 -2
  73. package/lib/cjs/duet-tooltip-button_2.cjs.entry.js +5 -5
  74. package/lib/cjs/duet-tooltip.cjs.entry.js +8 -8
  75. package/lib/cjs/duet-tray.cjs.entry.js +6 -6
  76. package/lib/cjs/duet-upload-aria-status.cjs.entry.js +2 -2
  77. package/lib/cjs/duet-upload-item.cjs.entry.js +6 -6
  78. package/lib/cjs/duet-visually-hidden.cjs.entry.js +2 -2
  79. package/lib/cjs/duet.cjs.js +4 -11
  80. package/lib/cjs/{errorcodes.utils-c85ef728.js → errorcodes.utils-8e928de5.js} +2 -2
  81. package/lib/cjs/{focus-utils-09463cf4.js → focus-utils-c58cda6e.js} +1 -1
  82. package/lib/cjs/{index-e43540c9.js → index-690ed579.js} +505 -183
  83. package/lib/cjs/{language-utils-6f1ce5d7.js → language-utils-dc19e8b6.js} +1 -1
  84. package/lib/cjs/loader.cjs.js +3 -12
  85. package/lib/collection/collection-manifest.json +98 -98
  86. package/lib/collection/components/duet-action-button/duet-action-button.css +12 -12
  87. package/lib/collection/components/duet-action-button/duet-action-button.js +54 -12
  88. package/lib/collection/components/duet-alert/duet-alert.e2e.js +53 -0
  89. package/lib/collection/components/duet-alert/duet-alert.js +23 -12
  90. package/lib/collection/components/duet-badge/duet-badge.e2e.js +28 -0
  91. package/lib/collection/components/duet-badge/duet-badge.js +6 -3
  92. package/lib/collection/components/duet-banner/duet-banner.e2e.js +23 -0
  93. package/lib/collection/components/duet-banner/duet-banner.js +16 -8
  94. package/lib/collection/components/duet-breadcrumbs/duet-breadcrumb.js +4 -2
  95. package/lib/collection/components/duet-breadcrumbs/duet-breadcrumbs.e2e.js +18 -0
  96. package/lib/collection/components/duet-breadcrumbs/duet-breadcrumbs.js +2 -1
  97. package/lib/collection/components/duet-button/duet-button.e2e.js +210 -0
  98. package/lib/collection/components/duet-button/duet-button.js +29 -15
  99. package/lib/collection/components/duet-callout/duet-callout.e2e.js +21 -0
  100. package/lib/collection/components/duet-callout/duet-callout.js +4 -2
  101. package/lib/collection/components/duet-caption/duet-caption.e2e.js +26 -0
  102. package/lib/collection/components/duet-caption/duet-caption.js +6 -3
  103. package/lib/collection/components/duet-card/duet-card.e2e.js +91 -0
  104. package/lib/collection/components/duet-card/duet-card.js +24 -12
  105. package/lib/collection/components/duet-checkbox/duet-checkbox.e2e.js +112 -0
  106. package/lib/collection/components/duet-checkbox/duet-checkbox.js +14 -7
  107. package/lib/collection/components/duet-chip/duet-chip.e2e.js +46 -0
  108. package/lib/collection/components/duet-chip/duet-chip.js +16 -8
  109. package/lib/collection/components/duet-choice/duet-checkmark.js +4 -2
  110. package/lib/collection/components/duet-choice/duet-choice.e2e.js +181 -0
  111. package/lib/collection/components/duet-choice/duet-choice.js +27 -14
  112. package/lib/collection/components/duet-choice-group/duet-choice-group.e2e.js +88 -0
  113. package/lib/collection/components/duet-choice-group/duet-choice-group.js +10 -5
  114. package/lib/collection/components/duet-collapsible/duet-collapsible.e2e.js +125 -0
  115. package/lib/collection/components/duet-collapsible/duet-collapsible.js +16 -8
  116. package/lib/collection/components/duet-combobox/duet-combobox.e2e.js +110 -0
  117. package/lib/collection/components/duet-combobox/duet-combobox.js +14 -7
  118. package/lib/collection/components/duet-contact-card/duet-contact-card.js +6 -3
  119. package/lib/collection/components/duet-cookie-consent/duet-cookie-consent.e2e.js +31 -0
  120. package/lib/collection/components/duet-cookie-consent/duet-cookie-consent.js +4 -2
  121. package/lib/collection/components/duet-date-picker/date-utils.spec.js +330 -0
  122. package/lib/collection/components/duet-date-picker/duet-date-picker.e2e.js +694 -0
  123. package/lib/collection/components/duet-date-picker/duet-date-picker.js +28 -14
  124. package/lib/collection/components/duet-divider/duet-divider.e2e.js +32 -0
  125. package/lib/collection/components/duet-divider/duet-divider.js +6 -3
  126. package/lib/collection/components/duet-editable-table/duet-editable-table.e2e.js +29 -0
  127. package/lib/collection/components/duet-editable-table/duet-editable-table.js +20 -10
  128. package/lib/collection/components/duet-empty-state/duet-empty-state.e2e.js +16 -0
  129. package/lib/collection/components/duet-empty-state/duet-empty-state.js +6 -3
  130. package/lib/collection/components/duet-fieldset/duet-fieldset.e2e.js +13 -0
  131. package/lib/collection/components/duet-fieldset/duet-fieldset.js +6 -3
  132. package/lib/collection/components/duet-footer/duet-footer.e2e.js +186 -0
  133. package/lib/collection/components/duet-footer/duet-footer.js +23 -12
  134. package/lib/collection/components/duet-grid/duet-grid.e2e.js +42 -0
  135. package/lib/collection/components/duet-grid/duet-grid.js +10 -5
  136. package/lib/collection/components/duet-grid-item/duet-grid-item.js +8 -4
  137. package/lib/collection/components/duet-header/duet-header.e2e.js +468 -0
  138. package/lib/collection/components/duet-header/duet-header.js +50 -26
  139. package/lib/collection/components/duet-heading/duet-heading.e2e.js +27 -0
  140. package/lib/collection/components/duet-heading/duet-heading.js +12 -6
  141. package/lib/collection/components/duet-hero/duet-hero.css +6 -0
  142. package/lib/collection/components/duet-hero/duet-hero.e2e.js +172 -0
  143. package/lib/collection/components/duet-hero/duet-hero.js +69 -14
  144. package/lib/collection/components/duet-icon/duet-icon.e2e.js +32 -0
  145. package/lib/collection/components/duet-icon/duet-icon.js +14 -7
  146. package/lib/collection/components/duet-icon/icon-utils.spec.js +84 -0
  147. package/lib/collection/components/duet-input/duet-input.e2e.js +201 -0
  148. package/lib/collection/components/duet-input/duet-input.js +32 -16
  149. package/lib/collection/components/duet-label/duet-label.e2e.js +32 -0
  150. package/lib/collection/components/duet-label/duet-label.js +6 -3
  151. package/lib/collection/components/duet-layout/duet-layout.e2e.js +32 -0
  152. package/lib/collection/components/duet-layout/duet-layout.js +6 -3
  153. package/lib/collection/components/duet-link/duet-link.css +4 -1
  154. package/lib/collection/components/duet-link/duet-link.e2e.js +53 -0
  155. package/lib/collection/components/duet-link/duet-link.js +90 -11
  156. package/lib/collection/components/duet-list/duet-list.e2e.js +105 -0
  157. package/lib/collection/components/duet-list/duet-list.js +14 -7
  158. package/lib/collection/components/duet-list-item/duet-list-item.js +2 -1
  159. package/lib/collection/components/duet-logo/duet-logo.e2e.js +42 -0
  160. package/lib/collection/components/duet-logo/duet-logo.js +14 -7
  161. package/lib/collection/components/duet-menu-bar/duet-menu-bar.js +4 -2
  162. package/lib/collection/components/duet-menu-bar-button/duet-menu-bar-button.js +6 -3
  163. package/lib/collection/components/duet-menu-bar-dropdown/duet-menu-bar-dropdown.js +6 -3
  164. package/lib/collection/components/duet-menu-bar-dropdown-link/duet-menu-bar-dropdown-link.js +2 -1
  165. package/lib/collection/components/duet-menu-bar-link/duet-menu-bar-link.js +2 -1
  166. package/lib/collection/components/duet-modal/duet-modal.e2e.js +125 -0
  167. package/lib/collection/components/duet-modal/duet-modal.js +24 -12
  168. package/lib/collection/components/duet-multiselect/duet-multiselect.e2e.js +96 -0
  169. package/lib/collection/components/duet-multiselect/duet-multiselect.js +20 -10
  170. package/lib/collection/components/duet-nav/duet-nav.js +2 -1
  171. package/lib/collection/components/duet-notification/duet-notification.e2e.js +12 -0
  172. package/lib/collection/components/duet-notification/duet-notification.js +11 -6
  173. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.e2e.js +177 -0
  174. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.js +18 -9
  175. package/lib/collection/components/duet-number-input/duet-number-input-negative.e2e.js +32 -0
  176. package/lib/collection/components/duet-number-input/duet-number-input.e2e.js +242 -0
  177. package/lib/collection/components/duet-number-input/duet-number-input.js +30 -15
  178. package/lib/collection/components/duet-page-heading/duet-page-heading.js +4 -2
  179. package/lib/collection/components/duet-pagination/duet-pagination.e2e.js +101 -0
  180. package/lib/collection/components/duet-pagination/duet-pagination.js +102 -41
  181. package/lib/collection/components/duet-paragraph/duet-paragraph.e2e.js +27 -0
  182. package/lib/collection/components/duet-paragraph/duet-paragraph.js +12 -6
  183. package/lib/collection/components/duet-popup-menu/duet-popup-menu.js +14 -7
  184. package/lib/collection/components/duet-popup-menu-item/duet-popup-menu-item.js +16 -8
  185. package/lib/collection/components/duet-progress/duet-progress.e2e.js +12 -0
  186. package/lib/collection/components/duet-progress/duet-progress.js +4 -2
  187. package/lib/collection/components/duet-promo-card/duet-promo-card.e2e.js +23 -0
  188. package/lib/collection/components/duet-promo-card/duet-promo-card.js +10 -5
  189. package/lib/collection/components/duet-radio/duet-radio.e2e.js +135 -0
  190. package/lib/collection/components/duet-radio/duet-radio.js +16 -8
  191. package/lib/collection/components/duet-radio-group/duet-radio-group.e2e.js +57 -0
  192. package/lib/collection/components/duet-radio-group/duet-radio-group.js +8 -4
  193. package/lib/collection/components/duet-range-slider/duet-range-slider.e2e.js +57 -0
  194. package/lib/collection/components/duet-range-slider/duet-range-slider.js +14 -7
  195. package/lib/collection/components/duet-range-stepper/duet-range-stepper.e2e.js +51 -0
  196. package/lib/collection/components/duet-range-stepper/duet-range-stepper.js +8 -4
  197. package/lib/collection/components/duet-range-stepper/duet-range-stepper.spec.js +23 -0
  198. package/lib/collection/components/duet-scrollable/duet-scrollable.e2e.js +12 -0
  199. package/lib/collection/components/duet-scrollable/duet-scrollable.js +2 -1
  200. package/lib/collection/components/duet-section-layout/duet-section-layout.e2e.js +22 -0
  201. package/lib/collection/components/duet-section-layout/duet-section-layout.js +2 -1
  202. package/lib/collection/components/duet-select/duet-select.e2e.js +211 -0
  203. package/lib/collection/components/duet-select/duet-select.js +20 -10
  204. package/lib/collection/components/duet-shaped-image/duet-shaped-image.js +4 -2
  205. package/lib/collection/components/duet-show-more/duet-show-more.js +16 -8
  206. package/lib/collection/components/duet-slideout/duet-slideout.js +12 -6
  207. package/lib/collection/components/duet-slideout-lang/duet-slideout-lang.js +2 -1
  208. package/lib/collection/components/duet-slideout-link/duet-slideout-link.js +2 -1
  209. package/lib/collection/components/duet-slideout-panel/duet-slideout-panel.js +8 -4
  210. package/lib/collection/components/duet-slideout-panel-dropdown/duet-slideout-panel-dropdown.js +6 -3
  211. package/lib/collection/components/duet-spacer/duet-spacer.e2e.js +27 -0
  212. package/lib/collection/components/duet-spacer/duet-spacer.js +6 -3
  213. package/lib/collection/components/duet-spinner/duet-spinner.e2e.js +30 -0
  214. package/lib/collection/components/duet-spinner/duet-spinner.js +6 -3
  215. package/lib/collection/components/duet-step/duet-step.e2e.js +92 -0
  216. package/lib/collection/components/duet-step/duet-step.js +12 -6
  217. package/lib/collection/components/duet-stepper/duet-stepper.e2e.js +85 -0
  218. package/lib/collection/components/duet-stepper/duet-stepper.js +6 -3
  219. package/lib/collection/components/duet-submenu-bar/duet-submenu-bar.js +6 -3
  220. package/lib/collection/components/duet-submenu-bar-dropdown/duet-submenu-bar-dropdown.js +6 -3
  221. package/lib/collection/components/duet-submenu-bar-dropdown-link/duet-submenu-bar-dropdown-link.js +2 -1
  222. package/lib/collection/components/duet-submenu-bar-link/duet-submenu-bar-link.js +2 -1
  223. package/lib/collection/components/duet-tab/duet-tab.e2e.js +16 -0
  224. package/lib/collection/components/duet-tab/duet-tab.js +2 -1
  225. package/lib/collection/components/duet-tab-group/duet-tab-group.e2e.js +108 -0
  226. package/lib/collection/components/duet-tab-group/duet-tab-group.js +24 -12
  227. package/lib/collection/components/duet-table/duet-table.e2e.js +95 -0
  228. package/lib/collection/components/duet-table/duet-table.js +10 -5
  229. package/lib/collection/components/duet-textarea/duet-textarea.e2e.js +199 -0
  230. package/lib/collection/components/duet-textarea/duet-textarea.js +18 -9
  231. package/lib/collection/components/duet-toggle/duet-toggle.e2e.js +73 -0
  232. package/lib/collection/components/duet-toggle/duet-toggle.js +10 -5
  233. package/lib/collection/components/duet-toolbar/duet-toolbar.js +2 -1
  234. package/lib/collection/components/duet-toolbar-dropdown/duet-toolbar-dropdown.js +6 -3
  235. package/lib/collection/components/duet-toolbar-dropdown-link/duet-toolbar-dropdown-link.js +2 -1
  236. package/lib/collection/components/duet-toolbar-link/duet-toolbar-link.js +2 -1
  237. package/lib/collection/components/duet-tooltip/duet-tooltip-button.js +6 -3
  238. package/lib/collection/components/duet-tooltip/duet-tooltip-popup.js +14 -7
  239. package/lib/collection/components/duet-tooltip/duet-tooltip.e2e.js +99 -0
  240. package/lib/collection/components/duet-tooltip/duet-tooltip.js +12 -6
  241. package/lib/collection/components/duet-tray/duet-tray.e2e.js +103 -0
  242. package/lib/collection/components/duet-tray/duet-tray.js +8 -4
  243. package/lib/collection/components/duet-upload/duet-upload.e2e.js +49 -0
  244. package/lib/collection/components/duet-upload/duet-upload.js +69 -35
  245. package/lib/collection/components/duet-upload/upload-validators.spec.js +41 -0
  246. package/lib/collection/components/duet-upload-aria-status/duet-upload-aria-status.js +2 -1
  247. package/lib/collection/components/duet-upload-item/duet-upload-item.js +18 -9
  248. package/lib/collection/components/duet-visually-hidden/duet-visually-hidden.e2e.js +12 -0
  249. package/lib/collection/utils/create-id.spec.js +12 -0
  250. package/lib/collection/utils/js-utils.spec.js +22 -0
  251. package/lib/collection/utils/language-utils.spec.js +159 -0
  252. package/lib/collection/utils/math.utils.spec.js +140 -0
  253. package/lib/collection/utils/string-utils.spec.js +39 -0
  254. package/lib/collection/utils/template-utils.spec.js +39 -0
  255. package/lib/collection/utils/token-utils.spec.js +178 -0
  256. package/lib/dist-custom-elements/duet-action-button.js +1 -1
  257. package/lib/dist-custom-elements/duet-alert.js +1 -1
  258. package/lib/dist-custom-elements/duet-badge.js +1 -1
  259. package/lib/dist-custom-elements/duet-banner.js +8 -8
  260. package/lib/dist-custom-elements/duet-breadcrumb.js +6 -6
  261. package/lib/dist-custom-elements/duet-breadcrumbs.js +4 -4
  262. package/lib/dist-custom-elements/duet-button.js +1 -1
  263. package/lib/dist-custom-elements/duet-callout.js +6 -6
  264. package/lib/dist-custom-elements/duet-caption.js +1 -1
  265. package/lib/dist-custom-elements/duet-card.js +10 -10
  266. package/lib/dist-custom-elements/duet-checkbox.js +1 -1
  267. package/lib/dist-custom-elements/duet-checkmark.js +1 -1
  268. package/lib/dist-custom-elements/duet-chip.js +8 -6
  269. package/lib/dist-custom-elements/duet-choice-group.js +18 -12
  270. package/lib/dist-custom-elements/duet-choice.js +14 -14
  271. package/lib/dist-custom-elements/duet-collapsible.js +9 -9
  272. package/lib/dist-custom-elements/duet-combobox.js +15 -10
  273. package/lib/dist-custom-elements/duet-contact-card.js +12 -12
  274. package/lib/dist-custom-elements/duet-cookie-consent.js +9 -9
  275. package/lib/dist-custom-elements/duet-date-picker.js +25 -20
  276. package/lib/dist-custom-elements/duet-divider.js +1 -1
  277. package/lib/dist-custom-elements/duet-editable-table.js +14 -14
  278. package/lib/dist-custom-elements/duet-empty-state.js +1 -1
  279. package/lib/dist-custom-elements/duet-fieldset.js +1 -1
  280. package/lib/dist-custom-elements/duet-footer.js +13 -10
  281. package/lib/dist-custom-elements/duet-grid-item.js +1 -1
  282. package/lib/dist-custom-elements/duet-grid.js +1 -1
  283. package/lib/dist-custom-elements/duet-header.js +25 -18
  284. package/lib/dist-custom-elements/duet-heading.js +1 -1
  285. package/lib/dist-custom-elements/duet-hero.js +29 -17
  286. package/lib/dist-custom-elements/duet-icon.js +1 -1
  287. package/lib/dist-custom-elements/duet-input.js +1 -1
  288. package/lib/dist-custom-elements/duet-label.js +1 -1
  289. package/lib/dist-custom-elements/duet-layout.js +3 -3
  290. package/lib/dist-custom-elements/duet-link.js +1 -1
  291. package/lib/dist-custom-elements/duet-list-item.js +1 -1
  292. package/lib/dist-custom-elements/duet-list.js +1 -1
  293. package/lib/dist-custom-elements/duet-logo.js +1 -1
  294. package/lib/dist-custom-elements/duet-menu-bar-button.js +5 -5
  295. package/lib/dist-custom-elements/duet-menu-bar-dropdown-link.js +6 -6
  296. package/lib/dist-custom-elements/duet-menu-bar-dropdown.js +6 -6
  297. package/lib/dist-custom-elements/duet-menu-bar-link.js +5 -5
  298. package/lib/dist-custom-elements/duet-menu-bar.js +5 -5
  299. package/lib/dist-custom-elements/duet-modal.js +20 -17
  300. package/lib/dist-custom-elements/duet-multiselect.js +20 -18
  301. package/lib/dist-custom-elements/duet-nav.js +3 -3
  302. package/lib/dist-custom-elements/duet-notification-drawer.js +8 -8
  303. package/lib/dist-custom-elements/duet-notification.js +6 -6
  304. package/lib/dist-custom-elements/duet-number-input.js +17 -17
  305. package/lib/dist-custom-elements/duet-page-heading.js +5 -5
  306. package/lib/dist-custom-elements/duet-pagination.js +98 -57
  307. package/lib/dist-custom-elements/duet-paragraph.js +1 -1
  308. package/lib/dist-custom-elements/duet-popup-menu-item.js +5 -5
  309. package/lib/dist-custom-elements/duet-popup-menu.js +6 -6
  310. package/lib/dist-custom-elements/duet-progress.js +1 -1
  311. package/lib/dist-custom-elements/duet-promo-card.js +7 -7
  312. package/lib/dist-custom-elements/duet-radio-group.js +18 -12
  313. package/lib/dist-custom-elements/duet-radio.js +4 -4
  314. package/lib/dist-custom-elements/duet-range-slider.js +7 -7
  315. package/lib/dist-custom-elements/duet-range-stepper.js +13 -10
  316. package/lib/dist-custom-elements/duet-scrollable.js +1 -1
  317. package/lib/dist-custom-elements/duet-section-layout.js +3 -3
  318. package/lib/dist-custom-elements/duet-select.js +1 -1
  319. package/lib/dist-custom-elements/duet-shaped-image.js +3 -3
  320. package/lib/dist-custom-elements/duet-show-more.js +11 -11
  321. package/lib/dist-custom-elements/duet-slideout-lang.js +6 -6
  322. package/lib/dist-custom-elements/duet-slideout-link.js +5 -5
  323. package/lib/dist-custom-elements/duet-slideout-panel-dropdown.js +5 -5
  324. package/lib/dist-custom-elements/duet-slideout-panel.js +8 -8
  325. package/lib/dist-custom-elements/duet-slideout.js +10 -10
  326. package/lib/dist-custom-elements/duet-spacer.js +1 -1
  327. package/lib/dist-custom-elements/duet-spinner.js +1 -1
  328. package/lib/dist-custom-elements/duet-step.js +9 -9
  329. package/lib/dist-custom-elements/duet-stepper.js +9 -6
  330. package/lib/dist-custom-elements/duet-submenu-bar-dropdown-link.js +6 -6
  331. package/lib/dist-custom-elements/duet-submenu-bar-dropdown.js +6 -6
  332. package/lib/dist-custom-elements/duet-submenu-bar-link.js +6 -6
  333. package/lib/dist-custom-elements/duet-submenu-bar.js +8 -6
  334. package/lib/dist-custom-elements/duet-tab-group.js +19 -19
  335. package/lib/dist-custom-elements/duet-tab.js +4 -4
  336. package/lib/dist-custom-elements/duet-table.js +1 -1
  337. package/lib/dist-custom-elements/duet-textarea.js +17 -15
  338. package/lib/dist-custom-elements/duet-toggle.js +8 -6
  339. package/lib/dist-custom-elements/duet-toolbar-dropdown-link.js +6 -6
  340. package/lib/dist-custom-elements/duet-toolbar-dropdown.js +6 -6
  341. package/lib/dist-custom-elements/duet-toolbar-link.js +5 -5
  342. package/lib/dist-custom-elements/duet-toolbar.js +3 -3
  343. package/lib/dist-custom-elements/duet-tooltip-button.js +1 -1
  344. package/lib/dist-custom-elements/duet-tooltip-popup.js +1 -1
  345. package/lib/dist-custom-elements/duet-tooltip.js +1 -1
  346. package/lib/dist-custom-elements/duet-tray.js +8 -8
  347. package/lib/dist-custom-elements/duet-upload-aria-status.js +1 -1
  348. package/lib/dist-custom-elements/duet-upload-item.js +1 -1
  349. package/lib/dist-custom-elements/duet-upload.js +27 -25
  350. package/lib/dist-custom-elements/duet-visually-hidden.js +1 -1
  351. package/lib/dist-custom-elements/index.d.ts +6 -0
  352. package/lib/dist-custom-elements/index.js +1 -1
  353. package/lib/dist-custom-elements/{p-fcc738df.js → p-0b57c524.js} +3 -3
  354. package/lib/dist-custom-elements/{p-53148470.js → p-0ba124b9.js} +5 -5
  355. package/lib/dist-custom-elements/{p-4d9d4c43.js → p-1486b0c1.js} +9 -4
  356. package/lib/dist-custom-elements/{p-67b279fa.js → p-1e4076af.js} +5 -5
  357. package/lib/dist-custom-elements/{p-a5b5343b.js → p-2641fc0a.js} +16 -13
  358. package/lib/dist-custom-elements/{p-fc3ae836.js → p-2c71a27f.js} +7 -3
  359. package/lib/dist-custom-elements/{p-99ec82e5.js → p-35de375b.js} +6 -6
  360. package/lib/dist-custom-elements/{p-03baceb5.js → p-4883df66.js} +1 -1
  361. package/lib/dist-custom-elements/{p-6958bba3.js → p-493cc4fa.js} +15 -15
  362. package/lib/dist-custom-elements/{p-1a8cb0ad.js → p-58de13d4.js} +8 -6
  363. package/lib/dist-custom-elements/{p-ec4d603d.js → p-62c7d9d4.js} +1 -1
  364. package/lib/dist-custom-elements/{p-d8859df9.js → p-630ecbb3.js} +4 -4
  365. package/lib/dist-custom-elements/{p-479fa83d.js → p-67c36e47.js} +32 -15
  366. package/lib/dist-custom-elements/{p-87cf7266.js → p-6d492269.js} +10 -8
  367. package/lib/dist-custom-elements/{p-77c93063.js → p-88eed3e1.js} +4 -4
  368. package/lib/dist-custom-elements/{p-d6e49c93.js → p-8ad6dca9.js} +7 -7
  369. package/lib/dist-custom-elements/{p-c2533c03.js → p-8bf1f4a8.js} +3 -3
  370. package/lib/dist-custom-elements/{p-cedaa97e.js → p-912094d4.js} +2 -2
  371. package/lib/dist-custom-elements/{p-6a66573f.js → p-948bdce9.js} +15 -10
  372. package/lib/dist-custom-elements/{p-d8c53f43.js → p-9c86efb4.js} +2 -2
  373. package/lib/dist-custom-elements/{p-6816fd1b.js → p-9f8e1aca.js} +10 -10
  374. package/lib/dist-custom-elements/{p-ad704699.js → p-a1becc63.js} +10 -8
  375. package/lib/dist-custom-elements/{p-f7337164.js → p-a25a0c57.js} +4 -4
  376. package/lib/dist-custom-elements/{p-dd33aa4e.js → p-a83ac481.js} +5 -5
  377. package/lib/dist-custom-elements/{p-decdd69c.js → p-acba25ec.js} +5 -5
  378. package/lib/dist-custom-elements/{p-72c9e944.js → p-b0e6db65.js} +4 -4
  379. package/lib/dist-custom-elements/{p-85087518.js → p-b3d7f37b.js} +5 -5
  380. package/lib/dist-custom-elements/{p-21dd956e.js → p-c0599d67.js} +31 -10
  381. package/lib/dist-custom-elements/{p-e611a3df.js → p-c4dd0df2.js} +9 -5
  382. package/lib/dist-custom-elements/{p-061830ef.js → p-c5032d3a.js} +1 -1
  383. package/lib/dist-custom-elements/{p-7c6ee265.js → p-c9e95a9c.js} +15 -13
  384. package/lib/dist-custom-elements/{p-53fba128.js → p-d10ecec6.js} +4 -4
  385. package/lib/dist-custom-elements/{p-89dec98e.js → p-d9120001.js} +7 -7
  386. package/lib/dist-custom-elements/{p-12a46182.js → p-dca02738.js} +12 -4
  387. package/lib/dist-custom-elements/{p-03e72a70.js → p-e19d1e27.js} +1 -1
  388. package/lib/dist-custom-elements/{p-e90b70ac.js → p-e81b7043.js} +3 -3
  389. package/lib/dist-custom-elements/{p-954d4096.js → p-f99ec481.js} +20 -17
  390. package/lib/dist-custom-elements/{p-1d90b10e.js → p-ff199982.js} +507 -166
  391. package/lib/duet/duet.esm.js +1 -1
  392. package/lib/duet/duet.js +2 -6
  393. package/lib/duet/{p-0c203d28.entry.js → p-002b8f41.entry.js} +1 -1
  394. package/lib/duet/{p-1c8634b1.entry.js → p-02baa949.entry.js} +1 -1
  395. package/lib/duet/{p-0f2664ed.entry.js → p-0528e2a7.entry.js} +1 -1
  396. package/lib/duet/p-053b71e6.system.js +1 -1
  397. package/lib/duet/{p-cc48a8a0.system.entry.js → p-06352a34.system.entry.js} +2 -2
  398. package/lib/duet/{p-b42b2676.entry.js → p-09bade4b.entry.js} +1 -1
  399. package/lib/duet/{p-e52631b1.entry.js → p-0a33ef8e.entry.js} +1 -1
  400. package/lib/duet/p-0c4bbd65.system.js +1 -1
  401. package/lib/duet/{p-acfae908.system.entry.js → p-0eb0c8c0.system.entry.js} +2 -2
  402. package/lib/duet/p-0ee95a64.entry.js +4 -0
  403. package/lib/duet/{p-84ebe175.entry.js → p-11bd9a89.entry.js} +1 -1
  404. package/lib/duet/p-11e2303e.system.entry.js +4 -0
  405. package/lib/duet/{p-250745c0.system.entry.js → p-16d4371a.system.entry.js} +2 -2
  406. package/lib/duet/{p-469892f4.system.entry.js → p-17e15242.system.entry.js} +1 -1
  407. package/lib/duet/{p-5ab4d5d4.entry.js → p-18a31510.entry.js} +1 -1
  408. package/lib/duet/p-1a91e22a.system.js +4 -0
  409. package/lib/duet/{p-9b992ce9.entry.js → p-1b6fb905.entry.js} +1 -1
  410. package/lib/duet/{p-9f65b014.system.entry.js → p-1bdc4a34.system.entry.js} +1 -1
  411. package/lib/duet/{p-c655b7d1.system.entry.js → p-1d053237.system.entry.js} +1 -1
  412. package/lib/duet/p-1f65b60f.entry.js +4 -0
  413. package/lib/duet/{p-7ee29cc1.system.entry.js → p-1fcbfb23.system.entry.js} +2 -2
  414. package/lib/duet/p-215eda28.system.entry.js +4 -0
  415. package/lib/duet/p-21f3a17a.system.js +1 -1
  416. package/lib/duet/{p-84390ead.entry.js → p-23134d90.entry.js} +1 -1
  417. package/lib/duet/p-232940fa.system.js +4 -0
  418. package/lib/duet/{p-d79fa6a4.system.entry.js → p-245fb629.system.entry.js} +2 -2
  419. package/lib/duet/p-26095a08.system.js +4 -0
  420. package/lib/duet/{p-3878572f.entry.js → p-2748aa50.entry.js} +1 -1
  421. package/lib/duet/{p-b41ed3c4.entry.js → p-28960e09.entry.js} +1 -1
  422. package/lib/duet/{p-f7793f52.entry.js → p-2906fe6c.entry.js} +1 -1
  423. package/lib/duet/{p-fb238069.entry.js → p-2a830ee9.entry.js} +1 -1
  424. package/lib/duet/{p-5fb428c8.system.entry.js → p-2cacedde.system.entry.js} +2 -2
  425. package/lib/duet/{p-5f2fc4bd.entry.js → p-2d4c6724.entry.js} +1 -1
  426. package/lib/duet/p-2da624a5.system.entry.js +4 -0
  427. package/lib/duet/{p-b6c212f5.system.entry.js → p-2eab12b7.system.entry.js} +1 -1
  428. package/lib/duet/{p-a322b729.entry.js → p-2fb0a3de.entry.js} +1 -1
  429. package/lib/duet/{p-e62f72a3.entry.js → p-32d74eb9.entry.js} +1 -1
  430. package/lib/duet/{p-0bb83776.system.entry.js → p-334112ab.system.entry.js} +2 -2
  431. package/lib/duet/{p-6d71214f.entry.js → p-34249a02.entry.js} +1 -1
  432. package/lib/duet/{p-42c64bb8.system.entry.js → p-34b3855f.system.entry.js} +2 -2
  433. package/lib/duet/{p-3768dda7.system.entry.js → p-35a932ab.system.entry.js} +2 -2
  434. package/lib/duet/{p-70c7a137.system.entry.js → p-35c6f8ce.system.entry.js} +1 -1
  435. package/lib/duet/{p-3092d696.system.entry.js → p-3b82aa9e.system.entry.js} +2 -2
  436. package/lib/duet/p-3cd4a72e.system.entry.js +4 -0
  437. package/lib/duet/{p-73c9436a.entry.js → p-3e39b66d.entry.js} +1 -1
  438. package/lib/duet/{p-e4fd145a.entry.js → p-43587827.entry.js} +1 -1
  439. package/lib/duet/p-43f99432.entry.js +4 -0
  440. package/lib/duet/{p-e91385fb.js → p-4669b0af.js} +1 -1
  441. package/lib/duet/{p-79266582.system.entry.js → p-46b4ef6c.system.entry.js} +1 -1
  442. package/lib/duet/{p-15a77012.system.entry.js → p-48361f6f.system.entry.js} +1 -1
  443. package/lib/duet/{p-03baceb5.js → p-4883df66.js} +1 -1
  444. package/lib/duet/{p-9f975819.system.entry.js → p-48da4668.system.entry.js} +2 -2
  445. package/lib/duet/{p-7be35e53.system.entry.js → p-4a497c15.system.entry.js} +2 -2
  446. package/lib/duet/{p-729f35d8.system.entry.js → p-4a4dbe4e.system.entry.js} +2 -2
  447. package/lib/duet/{p-529dc6fe.entry.js → p-4b79c0dc.entry.js} +1 -1
  448. package/lib/duet/{p-86b83b73.system.entry.js → p-4c3b19ec.system.entry.js} +2 -2
  449. package/lib/duet/p-4f1c6cc0.system.entry.js +4 -0
  450. package/lib/duet/p-52b57add.system.entry.js +4 -0
  451. package/lib/duet/p-54e6e82f.system.js +5 -0
  452. package/lib/duet/{p-a276bfbd.entry.js → p-55759777.entry.js} +1 -1
  453. package/lib/duet/{p-014edbda.system.entry.js → p-5664dbfc.system.entry.js} +2 -2
  454. package/lib/duet/p-58dc5c7f.entry.js +4 -0
  455. package/lib/duet/{p-f702fd53.entry.js → p-5bdc3d08.entry.js} +1 -1
  456. package/lib/duet/{p-c8836a67.system.entry.js → p-5e56ebad.system.entry.js} +1 -1
  457. package/lib/duet/{p-73242991.entry.js → p-5eb72773.entry.js} +1 -1
  458. package/lib/duet/p-63707d67.system.entry.js +4 -0
  459. package/lib/duet/{p-30d1b2b5.entry.js → p-65d39961.entry.js} +1 -1
  460. package/lib/duet/{p-7a7da6cf.system.entry.js → p-6779c17b.system.entry.js} +2 -2
  461. package/lib/duet/{p-0dfe14d3.entry.js → p-67819e2b.entry.js} +1 -1
  462. package/lib/duet/{p-dde971f6.system.entry.js → p-6a26a5c9.system.entry.js} +2 -2
  463. package/lib/duet/{p-b529eb0c.system.entry.js → p-6a8c7ad8.system.entry.js} +2 -2
  464. package/lib/duet/{p-2d7d1ff7.entry.js → p-6b02135b.entry.js} +1 -1
  465. package/lib/duet/{p-fc26d56a.entry.js → p-6b9bcd66.entry.js} +1 -1
  466. package/lib/duet/{p-baef301c.system.entry.js → p-6c1bb847.system.entry.js} +2 -2
  467. package/lib/duet/{p-6b2c127a.entry.js → p-6cca1a56.entry.js} +1 -1
  468. package/lib/duet/{p-c8536d3f.entry.js → p-6cf633e0.entry.js} +1 -1
  469. package/lib/duet/{p-bb5d22df.entry.js → p-6f399f72.entry.js} +1 -1
  470. package/lib/duet/{p-e2daed97.entry.js → p-701d90ff.entry.js} +1 -1
  471. package/lib/duet/{p-a620d583.system.entry.js → p-70dcc782.system.entry.js} +1 -1
  472. package/lib/duet/p-719b38fe.system.js +4 -0
  473. package/lib/duet/p-72887f8e.system.entry.js +4 -0
  474. package/lib/duet/p-75daef16.system.js +4 -0
  475. package/lib/duet/p-7671b7b7.system.js +4 -0
  476. package/lib/duet/{p-33b3aba4.system.js → p-77b6e4ba.system.js} +1 -1
  477. package/lib/duet/{p-37ee4ceb.system.entry.js → p-78f8e483.system.entry.js} +2 -2
  478. package/lib/duet/{p-3344fca3.entry.js → p-7becefd3.entry.js} +1 -1
  479. package/lib/duet/{p-85605193.system.entry.js → p-7bfb912d.system.entry.js} +2 -2
  480. package/lib/duet/p-7c29d36a.system.js +4 -0
  481. package/lib/duet/{p-bdb50607.system.entry.js → p-7c672283.system.entry.js} +2 -2
  482. package/lib/duet/p-7cd149d5.system.entry.js +4 -0
  483. package/lib/duet/{p-edbc2774.entry.js → p-7cefb9c8.entry.js} +1 -1
  484. package/lib/duet/{p-90f97748.entry.js → p-7d5d6371.entry.js} +1 -1
  485. package/lib/duet/{p-792cbd42.system.entry.js → p-80157d8f.system.entry.js} +2 -2
  486. package/lib/duet/{p-1e3f0d63.system.entry.js → p-824841b9.system.entry.js} +1 -1
  487. package/lib/duet/{p-f5c2ccce.entry.js → p-82ed0c1e.entry.js} +1 -1
  488. package/lib/duet/{p-fc1fee5c.system.js → p-83c33ce1.system.js} +1 -1
  489. package/lib/duet/{p-9601bad5.entry.js → p-852393bd.entry.js} +1 -1
  490. package/lib/duet/{p-9bdf6ce2.entry.js → p-861e2ba5.entry.js} +1 -1
  491. package/lib/duet/p-87dd7bf3.system.js +4 -0
  492. package/lib/duet/{p-51328149.entry.js → p-893682f2.entry.js} +1 -1
  493. package/lib/duet/p-8972381a.system.js +4 -0
  494. package/lib/duet/{p-a922b309.system.entry.js → p-8c2eb2f4.system.entry.js} +2 -2
  495. package/lib/duet/p-8d0d6e06.system.js +4 -0
  496. package/lib/duet/p-8e1da663.system.js +4 -0
  497. package/lib/duet/{p-2bec5be2.entry.js → p-8e2ddb69.entry.js} +1 -1
  498. package/lib/duet/{p-285b2d7b.system.entry.js → p-8f2a8dfd.system.entry.js} +1 -1
  499. package/lib/duet/p-8f477bd6.system.js +1 -1
  500. package/lib/duet/{p-5ac682b3.system.entry.js → p-90133074.system.entry.js} +1 -1
  501. package/lib/duet/{p-0b38374b.system.entry.js → p-9170537f.system.entry.js} +1 -1
  502. package/lib/duet/{p-da7cc3d1.entry.js → p-921c430e.entry.js} +1 -1
  503. package/lib/duet/{p-b6e50064.entry.js → p-9281ad1f.entry.js} +1 -1
  504. package/lib/duet/{p-34aa54e1.entry.js → p-929f96e6.entry.js} +1 -1
  505. package/lib/duet/p-94a9fe8f.system.entry.js +4 -0
  506. package/lib/duet/{p-4903f5c4.system.entry.js → p-959c412f.system.entry.js} +1 -1
  507. package/lib/duet/{p-b3a1ea89.system.entry.js → p-97af94e6.system.entry.js} +2 -2
  508. package/lib/duet/{p-1853e4e5.system.entry.js → p-983ffcca.system.entry.js} +2 -2
  509. package/lib/duet/{p-92c7c0ba.entry.js → p-9a5b6324.entry.js} +1 -1
  510. package/lib/duet/p-9d033a04.system.js +1 -1
  511. package/lib/duet/{p-ee0ca0fd.entry.js → p-9e2fc97b.entry.js} +1 -1
  512. package/lib/duet/p-a1dadf5f.entry.js +4 -0
  513. package/lib/duet/{p-8ac518e1.system.entry.js → p-a27749fc.system.entry.js} +1 -1
  514. package/lib/duet/{p-ad70248d.entry.js → p-a4262e9e.entry.js} +1 -1
  515. package/lib/duet/p-a44381d5.js +5 -0
  516. package/lib/duet/{p-ab2d8091.entry.js → p-a77d6daa.entry.js} +1 -1
  517. package/lib/duet/{p-4b71c8e9.entry.js → p-a8c0eab5.entry.js} +1 -1
  518. package/lib/duet/{p-97076e02.entry.js → p-ad97d7c8.entry.js} +1 -1
  519. package/lib/duet/{p-c52e0917.entry.js → p-af9efdf9.entry.js} +1 -1
  520. package/lib/duet/{p-f5e12c14.system.entry.js → p-b0552213.system.entry.js} +1 -1
  521. package/lib/duet/{p-e96bed1e.system.entry.js → p-b177abe2.system.entry.js} +1 -1
  522. package/lib/duet/p-b1db3006.js +1 -1
  523. package/lib/duet/{p-64710156.entry.js → p-b43c3844.entry.js} +1 -1
  524. package/lib/duet/{p-8156e5a5.system.entry.js → p-b4da4477.system.entry.js} +1 -1
  525. package/lib/duet/{p-cfe09501.system.entry.js → p-b4f0714b.system.entry.js} +1 -1
  526. package/lib/duet/{p-d86480ea.system.entry.js → p-b6969c2e.system.entry.js} +1 -1
  527. package/lib/duet/{p-54c07ffa.system.entry.js → p-b7746ffa.system.entry.js} +1 -1
  528. package/lib/duet/{p-9d317471.entry.js → p-b8e1051f.entry.js} +1 -1
  529. package/lib/duet/{p-f9f1c707.system.entry.js → p-b9743891.system.entry.js} +2 -2
  530. package/lib/duet/p-b99c00fa.system.js +4 -0
  531. package/lib/duet/{p-0414004a.entry.js → p-ba7e2b46.entry.js} +1 -1
  532. package/lib/duet/{p-c135039c.entry.js → p-bb197ad9.entry.js} +1 -1
  533. package/lib/duet/{p-2556c6f0.system.entry.js → p-c0cd5815.system.entry.js} +2 -2
  534. package/lib/duet/p-c30a5f7c.system.js +4 -0
  535. package/lib/duet/p-c3148fb5.entry.js +4 -0
  536. package/lib/duet/{p-a64cf9f8.system.entry.js → p-c45cca40.system.entry.js} +1 -1
  537. package/lib/duet/{p-22acfa83.entry.js → p-c486b82a.entry.js} +1 -1
  538. package/lib/duet/{p-b52f8ce1.entry.js → p-c689a5a2.entry.js} +1 -1
  539. package/lib/duet/{p-fc6d2bf4.entry.js → p-c69dd504.entry.js} +1 -1
  540. package/lib/duet/{p-0ea3453c.system.entry.js → p-c8153914.system.entry.js} +1 -1
  541. package/lib/duet/{p-3a9779ee.entry.js → p-c9302dda.entry.js} +1 -1
  542. package/lib/duet/p-c97109b5.system.js +4 -0
  543. package/lib/duet/{p-29a6d3b3.entry.js → p-c9d0296f.entry.js} +1 -1
  544. package/lib/duet/{p-24bc0b8c.entry.js → p-ccd1c1da.entry.js} +1 -1
  545. package/lib/duet/{p-9c5860a3.entry.js → p-ce0dbe46.entry.js} +1 -1
  546. package/lib/duet/p-ce60ea36.entry.js +4 -0
  547. package/lib/duet/{p-39c72a24.system.entry.js → p-cf78c0e7.system.entry.js} +2 -2
  548. package/lib/duet/{p-2e54c214.entry.js → p-d3b8295e.entry.js} +1 -1
  549. package/lib/duet/p-d79067a9.entry.js +4 -0
  550. package/lib/duet/{p-2e54c1f8.system.entry.js → p-db932add.system.entry.js} +2 -2
  551. package/lib/duet/{p-20767b15.system.entry.js → p-de466d61.system.entry.js} +1 -1
  552. package/lib/duet/{p-3c2f1fd0.entry.js → p-dfaea3f3.entry.js} +1 -1
  553. package/lib/duet/{p-ea4f5d13.system.entry.js → p-e00b3992.system.entry.js} +1 -1
  554. package/lib/duet/{p-bc7c47f4.system.entry.js → p-e04bf7e7.system.entry.js} +2 -2
  555. package/lib/duet/{p-ebf4a629.entry.js → p-e6d1abab.entry.js} +1 -1
  556. package/lib/duet/{p-3b85f649.system.entry.js → p-e72b91d4.system.entry.js} +1 -1
  557. package/lib/duet/{p-f30d3b09.system.entry.js → p-e7389f0d.system.entry.js} +1 -1
  558. package/lib/duet/{p-457ae87b.system.entry.js → p-e81603e4.system.entry.js} +1 -1
  559. package/lib/duet/{p-651d430e.system.entry.js → p-e86a0e7f.system.entry.js} +2 -2
  560. package/lib/duet/{p-1e88edec.entry.js → p-e888b133.entry.js} +1 -1
  561. package/lib/duet/{p-5f46f02e.system.entry.js → p-e949b01f.system.entry.js} +1 -1
  562. package/lib/duet/{p-fb7d7222.entry.js → p-ea17a879.entry.js} +1 -1
  563. package/lib/duet/{p-ca112a3f.system.entry.js → p-eaa27d39.system.entry.js} +2 -2
  564. package/lib/duet/{p-00a893c1.js → p-ec99ae64.js} +1 -1
  565. package/lib/duet/p-ecf1f6cd.system.js +4 -0
  566. package/lib/duet/{p-a095c36f.system.entry.js → p-ecff7157.system.entry.js} +2 -2
  567. package/lib/duet/p-ed5a5071.system.js +4 -0
  568. package/lib/duet/{p-b6cf05c0.system.entry.js → p-f07e9544.system.entry.js} +1 -1
  569. package/lib/duet/{p-00743d6c.system.entry.js → p-f45d7795.system.entry.js} +1 -1
  570. package/lib/duet/{p-096d7724.entry.js → p-f46d2985.entry.js} +1 -1
  571. package/lib/duet/{p-db2865b5.entry.js → p-fbeab44b.entry.js} +1 -1
  572. package/lib/duet/{p-88c01d1c.entry.js → p-fe21ca0a.entry.js} +1 -1
  573. package/lib/duet/{p-31d63beb.system.entry.js → p-feece078.system.entry.js} +1 -1
  574. package/lib/esm/duet-action-button.entry.js +29 -13
  575. package/lib/esm/duet-alert.entry.js +6 -6
  576. package/lib/esm/duet-badge.entry.js +3 -3
  577. package/lib/esm/duet-banner.entry.js +4 -4
  578. package/lib/esm/duet-breadcrumb.entry.js +5 -5
  579. package/lib/esm/duet-breadcrumbs.entry.js +4 -4
  580. package/lib/esm/duet-button_2.entry.js +7 -7
  581. package/lib/esm/duet-callout.entry.js +3 -3
  582. package/lib/esm/duet-caption_4.entry.js +26 -9
  583. package/lib/esm/duet-card.entry.js +7 -7
  584. package/lib/esm/duet-checkbox.entry.js +4 -4
  585. package/lib/esm/duet-checkmark.entry.js +2 -2
  586. package/lib/esm/duet-chip.entry.js +4 -4
  587. package/lib/esm/duet-choice_2.entry.js +11 -11
  588. package/lib/esm/duet-collapsible.entry.js +7 -7
  589. package/lib/esm/duet-combobox.entry.js +6 -6
  590. package/lib/esm/duet-contact-card.entry.js +5 -5
  591. package/lib/esm/duet-cookie-consent.entry.js +3 -3
  592. package/lib/esm/duet-date-picker.entry.js +7 -7
  593. package/lib/esm/duet-divider_2.entry.js +3 -3
  594. package/lib/esm/duet-editable-table_3.entry.js +10 -10
  595. package/lib/esm/duet-empty-state.entry.js +3 -3
  596. package/lib/esm/duet-fieldset.entry.js +5 -5
  597. package/lib/esm/duet-footer.entry.js +6 -6
  598. package/lib/esm/duet-grid_2.entry.js +3 -3
  599. package/lib/esm/duet-header_2.entry.js +9 -9
  600. package/lib/esm/duet-hero.entry.js +14 -8
  601. package/lib/esm/duet-icon.entry.js +4 -4
  602. package/lib/esm/duet-input_2.entry.js +8 -8
  603. package/lib/esm/duet-layout.entry.js +2 -2
  604. package/lib/esm/duet-list_2.entry.js +3 -3
  605. package/lib/esm/duet-menu-bar-button.entry.js +3 -3
  606. package/lib/esm/duet-menu-bar-dropdown-link.entry.js +4 -4
  607. package/lib/esm/duet-menu-bar-dropdown.entry.js +4 -4
  608. package/lib/esm/duet-menu-bar-link.entry.js +3 -3
  609. package/lib/esm/duet-menu-bar.entry.js +3 -3
  610. package/lib/esm/duet-modal.entry.js +10 -10
  611. package/lib/esm/duet-multiselect.entry.js +7 -7
  612. package/lib/esm/duet-nav.entry.js +2 -2
  613. package/lib/esm/duet-notification_2.entry.js +5 -5
  614. package/lib/esm/duet-number-input.entry.js +7 -7
  615. package/lib/esm/duet-page-heading.entry.js +3 -3
  616. package/lib/esm/duet-pagination_2.entry.js +79 -45
  617. package/lib/esm/duet-popup-menu-item.entry.js +3 -3
  618. package/lib/esm/duet-popup-menu.entry.js +5 -5
  619. package/lib/esm/duet-progress.entry.js +6 -6
  620. package/lib/esm/duet-promo-card.entry.js +4 -4
  621. package/lib/esm/duet-radio_2.entry.js +5 -5
  622. package/lib/esm/duet-range-slider.entry.js +5 -5
  623. package/lib/esm/duet-scrollable_3.entry.js +7 -7
  624. package/lib/esm/duet-section-layout.entry.js +2 -2
  625. package/lib/esm/duet-select.entry.js +5 -5
  626. package/lib/esm/duet-shaped-image.entry.js +2 -2
  627. package/lib/esm/duet-show-more.entry.js +7 -7
  628. package/lib/esm/duet-slideout-lang.entry.js +5 -5
  629. package/lib/esm/duet-slideout-link.entry.js +3 -3
  630. package/lib/esm/duet-slideout-panel-dropdown.entry.js +3 -3
  631. package/lib/esm/duet-slideout-panel.entry.js +7 -7
  632. package/lib/esm/duet-slideout.entry.js +9 -9
  633. package/lib/esm/duet-step_2.entry.js +5 -5
  634. package/lib/esm/duet-submenu-bar-dropdown-link.entry.js +4 -4
  635. package/lib/esm/duet-submenu-bar-dropdown.entry.js +4 -4
  636. package/lib/esm/duet-submenu-bar-link.entry.js +4 -4
  637. package/lib/esm/duet-submenu-bar.entry.js +4 -4
  638. package/lib/esm/duet-textarea.entry.js +5 -5
  639. package/lib/esm/duet-toggle.entry.js +4 -4
  640. package/lib/esm/duet-toolbar-dropdown-link.entry.js +4 -4
  641. package/lib/esm/duet-toolbar-dropdown.entry.js +4 -4
  642. package/lib/esm/duet-toolbar-link.entry.js +3 -3
  643. package/lib/esm/duet-toolbar.entry.js +2 -2
  644. package/lib/esm/duet-tooltip-button_2.entry.js +5 -5
  645. package/lib/esm/duet-tooltip.entry.js +8 -8
  646. package/lib/esm/duet-tray.entry.js +6 -6
  647. package/lib/esm/duet-upload-aria-status.entry.js +2 -2
  648. package/lib/esm/duet-upload-item.entry.js +6 -6
  649. package/lib/esm/duet-visually-hidden.entry.js +2 -2
  650. package/lib/esm/duet.js +5 -12
  651. package/lib/esm/{errorcodes.utils-47fc5d49.js → errorcodes.utils-424b1197.js} +2 -2
  652. package/lib/esm/{focus-utils-8fc4feb5.js → focus-utils-a669bad3.js} +1 -1
  653. package/lib/esm/{index-b1b085ac.js → index-4b92be25.js} +505 -183
  654. package/lib/esm/{language-utils-9d850f6c.js → language-utils-9ff76444.js} +1 -1
  655. package/lib/esm/loader.js +4 -13
  656. package/lib/esm-es5/app-globals-de2a5510.js +1 -1
  657. package/lib/esm-es5/{bodyScrollLock.es6-61b5e9a4.js → bodyScrollLock.es6-8dc7cca7.js} +1 -1
  658. package/lib/esm-es5/{create-id-981107da.js → create-id-2b0cd46d.js} +1 -1
  659. package/lib/esm-es5/duet-action-button.entry.js +2 -2
  660. package/lib/esm-es5/duet-alert.entry.js +2 -2
  661. package/lib/esm-es5/duet-badge.entry.js +1 -1
  662. package/lib/esm-es5/duet-banner.entry.js +1 -1
  663. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  664. package/lib/esm-es5/duet-breadcrumbs.entry.js +2 -2
  665. package/lib/esm-es5/duet-button_2.entry.js +2 -2
  666. package/lib/esm-es5/duet-callout.entry.js +1 -1
  667. package/lib/esm-es5/duet-caption_4.entry.js +2 -2
  668. package/lib/esm-es5/duet-card.entry.js +1 -1
  669. package/lib/esm-es5/duet-checkbox.entry.js +2 -2
  670. package/lib/esm-es5/duet-checkmark.entry.js +1 -1
  671. package/lib/esm-es5/duet-chip.entry.js +2 -2
  672. package/lib/esm-es5/duet-choice_2.entry.js +2 -2
  673. package/lib/esm-es5/duet-collapsible.entry.js +2 -2
  674. package/lib/esm-es5/duet-combobox.entry.js +2 -2
  675. package/lib/esm-es5/duet-contact-card.entry.js +1 -1
  676. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  677. package/lib/esm-es5/duet-date-picker.entry.js +2 -2
  678. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  679. package/lib/esm-es5/duet-editable-table_3.entry.js +2 -2
  680. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  681. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  682. package/lib/esm-es5/duet-footer.entry.js +2 -2
  683. package/lib/esm-es5/duet-grid_2.entry.js +2 -2
  684. package/lib/esm-es5/duet-header_2.entry.js +2 -2
  685. package/lib/esm-es5/duet-hero.entry.js +2 -2
  686. package/lib/esm-es5/duet-icon.entry.js +2 -2
  687. package/lib/esm-es5/duet-input_2.entry.js +2 -2
  688. package/lib/esm-es5/duet-layout.entry.js +1 -1
  689. package/lib/esm-es5/duet-list_2.entry.js +2 -2
  690. package/lib/esm-es5/duet-menu-bar-button.entry.js +2 -2
  691. package/lib/esm-es5/duet-menu-bar-dropdown-link.entry.js +1 -1
  692. package/lib/esm-es5/duet-menu-bar-dropdown.entry.js +2 -2
  693. package/lib/esm-es5/duet-menu-bar-link.entry.js +1 -1
  694. package/lib/esm-es5/duet-menu-bar.entry.js +1 -1
  695. package/lib/esm-es5/duet-modal.entry.js +2 -2
  696. package/lib/esm-es5/duet-multiselect.entry.js +2 -2
  697. package/lib/esm-es5/duet-nav.entry.js +1 -1
  698. package/lib/esm-es5/duet-notification_2.entry.js +2 -2
  699. package/lib/esm-es5/duet-number-input.entry.js +2 -2
  700. package/lib/esm-es5/duet-page-heading.entry.js +1 -1
  701. package/lib/esm-es5/duet-pagination_2.entry.js +2 -2
  702. package/lib/esm-es5/duet-popup-menu-item.entry.js +2 -2
  703. package/lib/esm-es5/duet-popup-menu.entry.js +2 -2
  704. package/lib/esm-es5/duet-progress.entry.js +1 -1
  705. package/lib/esm-es5/duet-promo-card.entry.js +1 -1
  706. package/lib/esm-es5/duet-radio_2.entry.js +2 -2
  707. package/lib/esm-es5/duet-range-slider.entry.js +2 -2
  708. package/lib/esm-es5/duet-scrollable_3.entry.js +2 -2
  709. package/lib/esm-es5/duet-section-layout.entry.js +1 -1
  710. package/lib/esm-es5/duet-select.entry.js +2 -2
  711. package/lib/esm-es5/duet-shaped-image.entry.js +1 -1
  712. package/lib/esm-es5/duet-show-more.entry.js +1 -1
  713. package/lib/esm-es5/duet-slideout-lang.entry.js +1 -1
  714. package/lib/esm-es5/duet-slideout-link.entry.js +1 -1
  715. package/lib/esm-es5/duet-slideout-panel-dropdown.entry.js +2 -2
  716. package/lib/esm-es5/duet-slideout-panel.entry.js +2 -2
  717. package/lib/esm-es5/duet-slideout.entry.js +2 -2
  718. package/lib/esm-es5/duet-step_2.entry.js +2 -2
  719. package/lib/esm-es5/duet-submenu-bar-dropdown-link.entry.js +1 -1
  720. package/lib/esm-es5/duet-submenu-bar-dropdown.entry.js +1 -1
  721. package/lib/esm-es5/duet-submenu-bar-link.entry.js +1 -1
  722. package/lib/esm-es5/duet-submenu-bar.entry.js +2 -2
  723. package/lib/esm-es5/duet-textarea.entry.js +2 -2
  724. package/lib/esm-es5/duet-toggle.entry.js +2 -2
  725. package/lib/esm-es5/duet-toolbar-dropdown-link.entry.js +1 -1
  726. package/lib/esm-es5/duet-toolbar-dropdown.entry.js +2 -2
  727. package/lib/esm-es5/duet-toolbar-link.entry.js +1 -1
  728. package/lib/esm-es5/duet-toolbar.entry.js +1 -1
  729. package/lib/esm-es5/duet-tooltip-button_2.entry.js +2 -2
  730. package/lib/esm-es5/duet-tooltip.entry.js +2 -2
  731. package/lib/esm-es5/duet-tray.entry.js +1 -1
  732. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  733. package/lib/esm-es5/duet-upload-item.entry.js +2 -2
  734. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  735. package/lib/esm-es5/duet.js +1 -1
  736. package/lib/esm-es5/errorcodes.utils-424b1197.js +4 -0
  737. package/lib/esm-es5/{floating-ui.dom.esm-6025c98f.js → floating-ui.dom.esm-efad5c89.js} +2 -2
  738. package/lib/esm-es5/focus-utils-a669bad3.js +4 -0
  739. package/lib/esm-es5/index-4b92be25.js +5 -0
  740. package/lib/esm-es5/input-utils-a0225b92.js +4 -0
  741. package/lib/esm-es5/keyboard-utils-5746e126.js +4 -0
  742. package/lib/esm-es5/{language-utils-9d850f6c.js → language-utils-9ff76444.js} +1 -1
  743. package/lib/esm-es5/loader.js +1 -1
  744. package/lib/esm-es5/string-utils-59ad4cb2.js +4 -0
  745. package/lib/esm-es5/teleport-15747328.js +4 -0
  746. package/lib/esm-es5/token-utils-46c8fe31.js +4 -0
  747. package/lib/esm-es5/watch-options-f189118b.js +4 -0
  748. package/lib/loader/index.d.ts +2 -2
  749. package/lib/types/common-types.d.ts +1 -0
  750. package/lib/types/components/duet-action-button/duet-action-button.d.ts +4 -0
  751. package/lib/types/components/duet-alert/duet-alert.d.ts +1 -1
  752. package/lib/types/components/duet-button/duet-button.d.ts +1 -1
  753. package/lib/types/components/duet-choice/duet-choice.d.ts +1 -1
  754. package/lib/types/components/duet-footer/duet-footer.d.ts +1 -1
  755. package/lib/types/components/duet-header/duet-header.d.ts +2 -2
  756. package/lib/types/components/duet-hero/duet-hero.d.ts +8 -0
  757. package/lib/types/components/duet-link/duet-link.d.ts +20 -3
  758. package/lib/types/components/duet-notification/duet-notification.d.ts +1 -1
  759. package/lib/types/components/duet-pagination/duet-pagination.d.ts +8 -1
  760. package/lib/types/components/duet-upload/duet-upload.d.ts +1 -1
  761. package/lib/types/components.d.ts +526 -22
  762. package/lib/types/stencil-public-runtime.d.ts +41 -5
  763. package/package.json +6 -6
  764. package/lib/duet/p-0762d0ce.system.entry.js +0 -4
  765. package/lib/duet/p-1e709927.system.entry.js +0 -4
  766. package/lib/duet/p-34ea0849.system.js +0 -4
  767. package/lib/duet/p-3538b0af.entry.js +0 -4
  768. package/lib/duet/p-43660fa9.system.js +0 -4
  769. package/lib/duet/p-4c04b1c6.entry.js +0 -4
  770. package/lib/duet/p-51721695.system.js +0 -4
  771. package/lib/duet/p-5c8e5f29.system.js +0 -4
  772. package/lib/duet/p-5f6bd5db.system.js +0 -4
  773. package/lib/duet/p-60b4b7c1.system.js +0 -4
  774. package/lib/duet/p-673a726a.entry.js +0 -4
  775. package/lib/duet/p-6aa821df.system.js +0 -4
  776. package/lib/duet/p-6d09651a.entry.js +0 -4
  777. package/lib/duet/p-6d620156.system.entry.js +0 -4
  778. package/lib/duet/p-703c3662.system.entry.js +0 -4
  779. package/lib/duet/p-733bb740.js +0 -5
  780. package/lib/duet/p-737167be.system.js +0 -4
  781. package/lib/duet/p-7966dc5b.system.entry.js +0 -4
  782. package/lib/duet/p-8304e300.system.entry.js +0 -4
  783. package/lib/duet/p-962a83ef.entry.js +0 -4
  784. package/lib/duet/p-9f97eb07.system.js +0 -5
  785. package/lib/duet/p-a659351d.system.js +0 -4
  786. package/lib/duet/p-a6f6f073.system.entry.js +0 -4
  787. package/lib/duet/p-a7915b7d.entry.js +0 -4
  788. package/lib/duet/p-aa634481.entry.js +0 -4
  789. package/lib/duet/p-acb9ba1b.system.entry.js +0 -4
  790. package/lib/duet/p-b6d51921.system.js +0 -4
  791. package/lib/duet/p-b760c72b.system.js +0 -4
  792. package/lib/duet/p-c466bad9.system.js +0 -4
  793. package/lib/duet/p-d863e150.system.js +0 -4
  794. package/lib/duet/p-e30d6bee.system.entry.js +0 -4
  795. package/lib/duet/p-e566ff11.system.js +0 -4
  796. package/lib/duet/p-e58f4a37.entry.js +0 -4
  797. package/lib/duet/p-eb55ccd2.system.js +0 -4
  798. package/lib/duet/p-fa5bcc42.system.js +0 -4
  799. package/lib/duet/p-ff9ef21e.system.entry.js +0 -4
  800. package/lib/esm/polyfills/css-shim.js +0 -1
  801. package/lib/esm-es5/errorcodes.utils-47fc5d49.js +0 -4
  802. package/lib/esm-es5/focus-utils-8fc4feb5.js +0 -4
  803. package/lib/esm-es5/index-b1b085ac.js +0 -5
  804. package/lib/esm-es5/input-utils-de45e099.js +0 -4
  805. package/lib/esm-es5/keyboard-utils-d237bd5a.js +0 -4
  806. package/lib/esm-es5/string-utils-5954f458.js +0 -4
  807. package/lib/esm-es5/teleport-467626fe.js +0 -4
  808. package/lib/esm-es5/token-utils-2d3af0db.js +0 -4
  809. package/lib/esm-es5/watch-options-dd55bce8.js +0 -4
  810. /package/lib/cjs/{bodyScrollLock.es6-6ef1142a.js → bodyScrollLock.es6-83f334d1.js} +0 -0
  811. /package/lib/cjs/{common-strings-de17f887.js → common-strings-17770d7a.js} +0 -0
  812. /package/lib/cjs/{create-id-c3b984b1.js → create-id-167cd350.js} +0 -0
  813. /package/lib/cjs/{floating-ui.dom.esm-d537b048.js → floating-ui.dom.esm-a7d59d53.js} +0 -0
  814. /package/lib/cjs/{input-utils-b5e8f524.js → input-utils-b4615782.js} +0 -0
  815. /package/lib/cjs/{is-internet-explorer-91361c56.js → is-internet-explorer-76c3b538.js} +0 -0
  816. /package/lib/cjs/{js-utils-134e0318.js → js-utils-b20cfc79.js} +0 -0
  817. /package/lib/cjs/{keyboard-utils-bb32119b.js → keyboard-utils-02441bc5.js} +0 -0
  818. /package/lib/cjs/{nudge-82021e4f.js → nudge-ee03ce2e.js} +0 -0
  819. /package/lib/cjs/{slot-query-1624497e.js → slot-query-b7555763.js} +0 -0
  820. /package/lib/cjs/{string-utils-5cadd058.js → string-utils-51a2f59f.js} +0 -0
  821. /package/lib/cjs/{teleport-3166d264.js → teleport-af825e04.js} +0 -0
  822. /package/lib/cjs/{themeable-component-fdeaef9f.js → themeable-component-0be6d1f4.js} +0 -0
  823. /package/lib/cjs/{token-utils-71db4785.js → token-utils-dbfeff2e.js} +0 -0
  824. /package/lib/cjs/{watch-options-d88afac0.js → watch-options-1773d69f.js} +0 -0
  825. /package/lib/dist-custom-elements/{p-8adb9463.js → p-00c8a755.js} +0 -0
  826. /package/lib/dist-custom-elements/{p-3ae39071.js → p-040f8831.js} +0 -0
  827. /package/lib/dist-custom-elements/{p-bd779757.js → p-141e14d0.js} +0 -0
  828. /package/lib/dist-custom-elements/{p-5a9d75e1.js → p-1a395a8d.js} +0 -0
  829. /package/lib/dist-custom-elements/{p-9c1b089a.js → p-24853ebf.js} +0 -0
  830. /package/lib/dist-custom-elements/{p-704245ef.js → p-268171f7.js} +0 -0
  831. /package/lib/dist-custom-elements/{p-0b3f675e.js → p-3d8d557b.js} +0 -0
  832. /package/lib/dist-custom-elements/{p-c1325e35.js → p-45f71a69.js} +0 -0
  833. /package/lib/dist-custom-elements/{p-d8549efe.js → p-56ac3289.js} +0 -0
  834. /package/lib/dist-custom-elements/{p-56118313.js → p-77f2dbee.js} +0 -0
  835. /package/lib/dist-custom-elements/{p-12721178.js → p-a1371eee.js} +0 -0
  836. /package/lib/dist-custom-elements/{p-4ebf1618.js → p-d48735b6.js} +0 -0
  837. /package/lib/dist-custom-elements/{p-76f00bd5.js → p-dade978b.js} +0 -0
  838. /package/lib/dist-custom-elements/{p-9d915d45.js → p-f8c76b25.js} +0 -0
  839. /package/lib/duet/{p-8adb9463.js → p-00c8a755.js} +0 -0
  840. /package/lib/duet/{p-3ae39071.js → p-040f8831.js} +0 -0
  841. /package/lib/duet/{p-2bb34e3d.js → p-0b31864f.js} +0 -0
  842. /package/lib/duet/{p-bd779757.js → p-141e14d0.js} +0 -0
  843. /package/lib/duet/{p-5a9d75e1.js → p-1a395a8d.js} +0 -0
  844. /package/lib/duet/{p-9c1b089a.js → p-24853ebf.js} +0 -0
  845. /package/lib/duet/{p-704245ef.js → p-268171f7.js} +0 -0
  846. /package/lib/duet/{p-c7ae95bd.system.js → p-36b36a8e.system.js} +0 -0
  847. /package/lib/duet/{p-0b3f675e.js → p-3d8d557b.js} +0 -0
  848. /package/lib/duet/{p-c1325e35.js → p-45f71a69.js} +0 -0
  849. /package/lib/duet/{p-56118313.js → p-77f2dbee.js} +0 -0
  850. /package/lib/duet/{p-12721178.js → p-a1371eee.js} +0 -0
  851. /package/lib/duet/{p-f077c646.js → p-cc1909de.js} +0 -0
  852. /package/lib/duet/{p-4ebf1618.js → p-d48735b6.js} +0 -0
  853. /package/lib/duet/{p-76f00bd5.js → p-dade978b.js} +0 -0
  854. /package/lib/duet/{p-9d915d45.js → p-f8c76b25.js} +0 -0
  855. /package/lib/esm/{bodyScrollLock.es6-61b5e9a4.js → bodyScrollLock.es6-8dc7cca7.js} +0 -0
  856. /package/lib/esm/{common-strings-97e04e4b.js → common-strings-71f2aabd.js} +0 -0
  857. /package/lib/esm/{create-id-981107da.js → create-id-2b0cd46d.js} +0 -0
  858. /package/lib/esm/{floating-ui.dom.esm-6025c98f.js → floating-ui.dom.esm-efad5c89.js} +0 -0
  859. /package/lib/esm/{input-utils-de45e099.js → input-utils-a0225b92.js} +0 -0
  860. /package/lib/esm/{is-internet-explorer-62b3bdbd.js → is-internet-explorer-032d4dae.js} +0 -0
  861. /package/lib/esm/{js-utils-fa98b8cd.js → js-utils-a35dcc8c.js} +0 -0
  862. /package/lib/esm/{keyboard-utils-d237bd5a.js → keyboard-utils-5746e126.js} +0 -0
  863. /package/lib/esm/{nudge-a828c525.js → nudge-560904c3.js} +0 -0
  864. /package/lib/esm/{slot-query-8c7dce21.js → slot-query-7877f18f.js} +0 -0
  865. /package/lib/esm/{string-utils-5954f458.js → string-utils-59ad4cb2.js} +0 -0
  866. /package/lib/esm/{teleport-467626fe.js → teleport-15747328.js} +0 -0
  867. /package/lib/esm/{themeable-component-cb76be7c.js → themeable-component-fdce4fd7.js} +0 -0
  868. /package/lib/esm/{token-utils-2d3af0db.js → token-utils-46c8fe31.js} +0 -0
  869. /package/lib/esm/{watch-options-dd55bce8.js → watch-options-f189118b.js} +0 -0
  870. /package/lib/esm-es5/{common-strings-97e04e4b.js → common-strings-71f2aabd.js} +0 -0
  871. /package/lib/esm-es5/{is-internet-explorer-62b3bdbd.js → is-internet-explorer-032d4dae.js} +0 -0
  872. /package/lib/esm-es5/{js-utils-fa98b8cd.js → js-utils-a35dcc8c.js} +0 -0
  873. /package/lib/esm-es5/{nudge-a828c525.js → nudge-560904c3.js} +0 -0
  874. /package/lib/esm-es5/{slot-query-8c7dce21.js → slot-query-7877f18f.js} +0 -0
  875. /package/lib/esm-es5/{themeable-component-cb76be7c.js → themeable-component-fdce4fd7.js} +0 -0
@@ -24,7 +24,8 @@ function _interopNamespace(e) {
24
24
  }
25
25
 
26
26
  const NAMESPACE = 'duet';
27
- const Env = /* duet */ {"cdnURILocal":"http://0.0.0.0:3334","cdnURIProd":"https://cdn.duetds.com/api","duetIconVersion":"4.0.13"};
27
+ const BUILD = /* duet */ { allRenderFn: true, appendChildSlotFix: false, asyncLoading: true, asyncQueue: false, attachStyles: true, cloneNodeFix: false, cmpDidLoad: true, cmpDidRender: true, cmpDidUnload: false, cmpDidUpdate: true, cmpShouldUpdate: false, cmpWillLoad: true, cmpWillRender: true, cmpWillUpdate: false, connectedCallback: true, constructableCSS: true, cssAnnotations: true, devTools: false, disconnectedCallback: true, element: false, event: true, experimentalSlotFixes: false, formAssociated: false, hasRenderFn: true, hostListener: true, hostListenerTarget: true, hostListenerTargetBody: true, hostListenerTargetDocument: true, hostListenerTargetParent: false, hostListenerTargetWindow: true, hotModuleReplacement: false, hydrateClientSide: true, hydrateServerSide: false, hydratedAttribute: false, hydratedClass: true, initializeNextTick: true, invisiblePrehydration: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: true, lifecycle: true, lifecycleDOMEvents: false, member: true, method: true, mode: false, observeAttribute: true, profile: false, prop: true, propBoolean: true, propMutable: true, propNumber: true, propString: true, reflect: true, scoped: true, scopedSlotTextContentFix: false, scriptDataOpts: true, shadowDelegatesFocus: true, shadowDom: true, slot: true, slotChildNodesFix: true, slotRelocation: true, state: true, style: true, svg: true, taskQueue: true, transformTagName: false, updatable: true, vdomAttribute: true, vdomClass: true, vdomFunctional: true, vdomKey: true, vdomListener: true, vdomPropOrAttr: true, vdomRef: true, vdomRender: true, vdomStyle: true, vdomText: true, vdomXlink: true, watchCallback: true };
28
+ const Env = /* duet */ {"cdnURILocal":"http://0.0.0.0:3334","cdnURIProd":"https://cdn.duetds.com/api","duetIconVersion":"4.0.15"};
28
29
 
29
30
  /**
30
31
  * Virtual DOM patching algorithm based on Snabbdom by
@@ -70,6 +71,13 @@ const HYDRATE_ID = 's-id';
70
71
  const HYDRATED_STYLE_ID = 'sty-id';
71
72
  const HYDRATE_CHILD_ID = 'c-id';
72
73
  const HYDRATED_CSS = '{visibility:hidden}.hydrated{visibility:inherit}';
74
+ /**
75
+ * Constant for styles to be globally applied to `slot-fb` elements for pseudo-slot behavior.
76
+ *
77
+ * Two cascading rules must be used instead of a `:not()` selector due to Stencil browser
78
+ * support as of Stencil v4.
79
+ */
80
+ const SLOT_FB_CSS = 'slot-fb{display:contents}slot-fb[hidden]{display:none}';
73
81
  const XLINK_NS = 'http://www.w3.org/1999/xlink';
74
82
  /**
75
83
  * Default style mode id
@@ -150,13 +158,13 @@ const h = (nodeName, vnodeData, ...children) => {
150
158
  };
151
159
  walk(children);
152
160
  if (vnodeData) {
153
- // normalize class / classname attributes
154
161
  if (vnodeData.key) {
155
162
  key = vnodeData.key;
156
163
  }
157
164
  if (vnodeData.name) {
158
165
  slotName = vnodeData.name;
159
166
  }
167
+ // normalize class / className attributes
160
168
  {
161
169
  const classData = vnodeData.className || vnodeData.class;
162
170
  if (classData) {
@@ -402,7 +410,7 @@ const clientHydrate = (parentVNode, childRenderNodes, slotNodes, shadowRootNodes
402
410
  }
403
411
  }
404
412
  else if (childVNode.$hostId$ === hostId) {
405
- // this comment node is specifcally for this host id
413
+ // this comment node is specifically for this host id
406
414
  if (childNodeType === SLOT_NODE_ID) {
407
415
  // `${SLOT_NODE_ID}.${hostId}.${nodeId}.${depth}.${index}.${slotName}`;
408
416
  childVNode.$tag$ = 'slot';
@@ -569,9 +577,9 @@ const registerStyle = (scopeId, cssText, allowCS) => {
569
577
  }
570
578
  styles.set(scopeId, style);
571
579
  };
572
- const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
580
+ const addStyle = (styleContainerNode, cmpMeta, mode) => {
573
581
  var _a;
574
- let scopeId = getScopeId(cmpMeta);
582
+ const scopeId = getScopeId(cmpMeta);
575
583
  const style = styles.get(scopeId);
576
584
  // if an element is NOT connected then getRootNode() will return the wrong root node
577
585
  // so the fallback is to always use the document for the root node in those cases
@@ -591,11 +599,8 @@ const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
591
599
  styleElm.innerHTML = style;
592
600
  }
593
601
  else {
594
- // TODO(STENCIL-659): Remove code implementing the CSS variable shim
595
- {
596
- styleElm = doc.createElement('style');
597
- styleElm.innerHTML = style;
598
- }
602
+ styleElm = doc.createElement('style');
603
+ styleElm.innerHTML = style;
599
604
  // Apply CSP nonce to the style tag if it exists
600
605
  const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
601
606
  if (nonce != null) {
@@ -603,6 +608,10 @@ const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
603
608
  }
604
609
  styleContainerNode.insertBefore(styleElm, styleContainerNode.querySelector('link'));
605
610
  }
611
+ // Add styles for `slot-fb` elements if we're using slots outside the Shadow DOM
612
+ if (cmpMeta.$flags$ & 4 /* CMP_FLAGS.hasSlotRelocation */) {
613
+ styleElm.innerHTML += SLOT_FB_CSS;
614
+ }
606
615
  if (appliedStyles) {
607
616
  appliedStyles.add(scopeId);
608
617
  }
@@ -620,7 +629,6 @@ const attachStyles = (hostRef) => {
620
629
  const flags = cmpMeta.$flags$;
621
630
  const endAttachStyles = createTime('attachStyles', cmpMeta.$tagName$);
622
631
  const scopeId = addStyle(elm.shadowRoot ? elm.shadowRoot : elm.getRootNode(), cmpMeta);
623
- // TODO(STENCIL-662): Remove code related to deprecated shadowDomShim field
624
632
  if (flags & 10 /* CMP_FLAGS.needsScopedEncapsulation */) {
625
633
  // only required when we're NOT using native shadow dom (slot)
626
634
  // or this browser doesn't support native shadow dom
@@ -647,6 +655,21 @@ const convertScopedToShadow = (css) => css.replace(/\/\*!@([^\/]+)\*\/[^\{]+\{/g
647
655
  *
648
656
  * Modified for Stencil's compiler and vdom
649
657
  */
658
+ /**
659
+ * When running a VDom render set properties present on a VDom node onto the
660
+ * corresponding HTML element.
661
+ *
662
+ * Note that this function has special functionality for the `class`,
663
+ * `style`, `key`, and `ref` attributes, as well as event handlers (like
664
+ * `onClick`, etc). All others are just passed through as-is.
665
+ *
666
+ * @param elm the HTMLElement onto which attributes should be set
667
+ * @param memberName the name of the attribute to set
668
+ * @param oldValue the old value for the attribute
669
+ * @param newValue the new value for the attribute
670
+ * @param isSvg whether we're in an svg context or not
671
+ * @param flags bitflags for Vdom variables
672
+ */
650
673
  const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
651
674
  if (oldValue !== newValue) {
652
675
  let isProp = isMemberInElement(elm, memberName);
@@ -723,11 +746,19 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
723
746
  // except for the first character, we keep the event name case
724
747
  memberName = ln[2] + memberName.slice(3);
725
748
  }
726
- if (oldValue) {
727
- plt.rel(elm, memberName, oldValue, false);
728
- }
729
- if (newValue) {
730
- plt.ael(elm, memberName, newValue, false);
749
+ if (oldValue || newValue) {
750
+ // Need to account for "capture" events.
751
+ // If the event name ends with "Capture", we'll update the name to remove
752
+ // the "Capture" suffix and make sure the event listener is setup to handle the capture event.
753
+ const capture = memberName.endsWith(CAPTURE_EVENT_SUFFIX);
754
+ // Make sure we only replace the last instance of "Capture"
755
+ memberName = memberName.replace(CAPTURE_EVENT_REGEX, '');
756
+ if (oldValue) {
757
+ plt.rel(elm, memberName, oldValue, capture);
758
+ }
759
+ if (newValue) {
760
+ plt.ael(elm, memberName, newValue, capture);
761
+ }
731
762
  }
732
763
  }
733
764
  else {
@@ -789,6 +820,8 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
789
820
  };
790
821
  const parseClassListRegex = /\s/;
791
822
  const parseClassList = (value) => (!value ? [] : value.split(parseClassListRegex));
823
+ const CAPTURE_EVENT_SUFFIX = 'Capture';
824
+ const CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + '$');
792
825
  const updateElement = (oldVnode, newVnode, isSvgMode, memberName) => {
793
826
  // if the element passed in is a shadow root, which is a document fragment
794
827
  // then we want to be adding attrs/props to the shadow root's "host" element
@@ -822,6 +855,7 @@ const updateElement = (oldVnode, newVnode, isSvgMode, memberName) => {
822
855
  * @returns the newly created node
823
856
  */
824
857
  const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
858
+ var _a;
825
859
  // tslint:disable-next-line: prefer-const
826
860
  const newVNode = newParentVNode.$children$[childIndex];
827
861
  let i = 0;
@@ -900,6 +934,8 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
900
934
  if (newVNode.$flags$ & (2 /* VNODE_FLAGS.isSlotFallback */ | 1 /* VNODE_FLAGS.isSlotReference */)) {
901
935
  // remember the content reference comment
902
936
  elm['s-sr'] = true;
937
+ // Persist the name of the slot that this slot was going to be projected into.
938
+ elm['s-fs'] = (_a = newVNode.$attrs$) === null || _a === void 0 ? void 0 : _a.slot;
903
939
  // remember the content reference comment
904
940
  elm['s-cr'] = contentRef;
905
941
  // remember the slot name, or empty string for default slot
@@ -916,6 +952,7 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
916
952
  return elm;
917
953
  };
918
954
  const putBackInOriginalLocation = (parentElm, recursive) => {
955
+ var _a;
919
956
  plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
920
957
  const oldSlotChildNodes = parentElm.childNodes;
921
958
  for (let i = oldSlotChildNodes.length - 1; i >= 0; i--) {
@@ -928,9 +965,17 @@ const putBackInOriginalLocation = (parentElm, recursive) => {
928
965
  parentReferenceNode(childNode).insertBefore(childNode, referenceNode(childNode));
929
966
  // remove the old original location comment entirely
930
967
  // later on the patch function will know what to do
931
- // and move this to the correct spot in need be
968
+ // and move this to the correct spot if need be
932
969
  childNode['s-ol'].remove();
933
970
  childNode['s-ol'] = undefined;
971
+ // Reset so we can correctly move the node around again.
972
+ childNode['s-sh'] = undefined;
973
+ // When putting an element node back in its original location,
974
+ // we need to reset the `slot` attribute back to the value it originally had
975
+ // so we can correctly relocate it again in the future
976
+ if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
977
+ childNode.setAttribute('slot', (_a = childNode['s-sn']) !== null && _a !== void 0 ? _a : '');
978
+ }
934
979
  checkSlotRelocate = true;
935
980
  }
936
981
  if (recursive) {
@@ -980,30 +1025,31 @@ const addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) =>
980
1025
  * @param vnodes a list of virtual DOM nodes to remove
981
1026
  * @param startIdx the index at which to start removing nodes (inclusive)
982
1027
  * @param endIdx the index at which to stop removing nodes (inclusive)
983
- * @param vnode a VNode
984
- * @param elm an element
985
1028
  */
986
- const removeVnodes = (vnodes, startIdx, endIdx, vnode, elm) => {
987
- for (; startIdx <= endIdx; ++startIdx) {
988
- if ((vnode = vnodes[startIdx])) {
989
- elm = vnode.$elm$;
990
- callNodeRefs(vnode);
991
- {
992
- // we're removing this element
993
- // so it's possible we need to show slot fallback content now
994
- checkSlotFallbackVisibility = true;
995
- if (elm['s-ol']) {
996
- // remove the original location comment
997
- elm['s-ol'].remove();
998
- }
999
- else {
1000
- // it's possible that child nodes of the node
1001
- // that's being removed are slot nodes
1002
- putBackInOriginalLocation(elm, true);
1029
+ const removeVnodes = (vnodes, startIdx, endIdx) => {
1030
+ for (let index = startIdx; index <= endIdx; ++index) {
1031
+ const vnode = vnodes[index];
1032
+ if (vnode) {
1033
+ const elm = vnode.$elm$;
1034
+ nullifyVNodeRefs(vnode);
1035
+ if (elm) {
1036
+ {
1037
+ // we're removing this element
1038
+ // so it's possible we need to show slot fallback content now
1039
+ checkSlotFallbackVisibility = true;
1040
+ if (elm['s-ol']) {
1041
+ // remove the original location comment
1042
+ elm['s-ol'].remove();
1043
+ }
1044
+ else {
1045
+ // it's possible that child nodes of the node
1046
+ // that's being removed are slot nodes
1047
+ putBackInOriginalLocation(elm, true);
1048
+ }
1003
1049
  }
1050
+ // remove the vnode's element from the dom
1051
+ elm.remove();
1004
1052
  }
1005
- // remove the vnode's element from the dom
1006
- elm.remove();
1007
1053
  }
1008
1054
  }
1009
1055
  };
@@ -1353,42 +1399,53 @@ const patch = (oldVNode, newVNode) => {
1353
1399
  elm.data = text;
1354
1400
  }
1355
1401
  };
1402
+ /**
1403
+ * Adjust the `.hidden` property as-needed on any nodes in a DOM subtree which
1404
+ * are slot fallbacks nodes.
1405
+ *
1406
+ * A slot fallback node should be visible by default. Then, it should be
1407
+ * conditionally hidden if:
1408
+ *
1409
+ * - it has a sibling with a `slot` property set to its slot name or if
1410
+ * - it is a default fallback slot node, in which case we hide if it has any
1411
+ * content
1412
+ *
1413
+ * @param elm the element of interest
1414
+ */
1356
1415
  const updateFallbackSlotVisibility = (elm) => {
1357
- // tslint:disable-next-line: prefer-const
1358
1416
  const childNodes = elm.childNodes;
1359
- let childNode;
1360
- let i;
1361
- let ilen;
1362
- let j;
1363
- let slotNameAttr;
1364
- let nodeType;
1365
- for (i = 0, ilen = childNodes.length; i < ilen; i++) {
1366
- childNode = childNodes[i];
1417
+ for (const childNode of childNodes) {
1367
1418
  if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
1368
1419
  if (childNode['s-sr']) {
1369
1420
  // this is a slot fallback node
1370
1421
  // get the slot name for this slot reference node
1371
- slotNameAttr = childNode['s-sn'];
1422
+ const slotName = childNode['s-sn'];
1372
1423
  // by default always show a fallback slot node
1373
1424
  // then hide it if there are other slots in the light dom
1374
1425
  childNode.hidden = false;
1375
- for (j = 0; j < ilen; j++) {
1376
- nodeType = childNodes[j].nodeType;
1377
- if (childNodes[j]['s-hn'] !== childNode['s-hn'] || slotNameAttr !== '') {
1378
- // this sibling node is from a different component OR is a named fallback slot node
1379
- if (nodeType === 1 /* NODE_TYPE.ElementNode */ && slotNameAttr === childNodes[j].getAttribute('slot')) {
1380
- childNode.hidden = true;
1381
- break;
1426
+ // we need to check all of its sibling nodes in order to see if
1427
+ // `childNode` should be hidden
1428
+ for (const siblingNode of childNodes) {
1429
+ // Don't check the node against itself
1430
+ if (siblingNode !== childNode) {
1431
+ if (siblingNode['s-hn'] !== childNode['s-hn'] || slotName !== '') {
1432
+ // this sibling node is from a different component OR is a named
1433
+ // fallback slot node
1434
+ if (siblingNode.nodeType === 1 /* NODE_TYPE.ElementNode */ &&
1435
+ (slotName === siblingNode.getAttribute('slot') || slotName === siblingNode['s-sn'])) {
1436
+ childNode.hidden = true;
1437
+ break;
1438
+ }
1382
1439
  }
1383
- }
1384
- else {
1385
- // this is a default fallback slot node
1386
- // any element or text node (with content)
1387
- // should hide the default fallback slot node
1388
- if (nodeType === 1 /* NODE_TYPE.ElementNode */ ||
1389
- (nodeType === 3 /* NODE_TYPE.TextNode */ && childNodes[j].textContent.trim() !== '')) {
1390
- childNode.hidden = true;
1391
- break;
1440
+ else {
1441
+ // this is a default fallback slot node
1442
+ // any element or text node (with content)
1443
+ // should hide the default fallback slot node
1444
+ if (siblingNode.nodeType === 1 /* NODE_TYPE.ElementNode */ ||
1445
+ (siblingNode.nodeType === 3 /* NODE_TYPE.TextNode */ && siblingNode.textContent.trim() !== '')) {
1446
+ childNode.hidden = true;
1447
+ break;
1448
+ }
1392
1449
  }
1393
1450
  }
1394
1451
  }
@@ -1398,45 +1455,67 @@ const updateFallbackSlotVisibility = (elm) => {
1398
1455
  }
1399
1456
  }
1400
1457
  };
1458
+ /**
1459
+ * Component-global information about nodes which are either currently being
1460
+ * relocated or will be shortly.
1461
+ */
1401
1462
  const relocateNodes = [];
1402
- const relocateSlotContent = (elm) => {
1463
+ /**
1464
+ * Mark the contents of a slot for relocation via adding references to them to
1465
+ * the {@link relocateNodes} data structure. The actual work of relocating them
1466
+ * will then be handled in {@link renderVdom}.
1467
+ *
1468
+ * @param elm a render node whose child nodes need to be relocated
1469
+ */
1470
+ const markSlotContentForRelocation = (elm) => {
1403
1471
  // tslint:disable-next-line: prefer-const
1404
- let childNode;
1405
1472
  let node;
1406
1473
  let hostContentNodes;
1407
- let slotNameAttr;
1408
- let relocateNodeData;
1409
1474
  let j;
1410
- let i = 0;
1411
- const childNodes = elm.childNodes;
1412
- const ilen = childNodes.length;
1413
- for (; i < ilen; i++) {
1414
- childNode = childNodes[i];
1475
+ for (const childNode of elm.childNodes) {
1476
+ // we need to find child nodes which are slot references so we can then try
1477
+ // to match them up with nodes that need to be relocated
1415
1478
  if (childNode['s-sr'] && (node = childNode['s-cr']) && node.parentNode) {
1416
- // first got the content reference comment node
1417
- // then we got it's parent, which is where all the host content is in now
1479
+ // first get the content reference comment node ('s-cr'), then we get
1480
+ // its parent, which is where all the host content is now
1418
1481
  hostContentNodes = node.parentNode.childNodes;
1419
- slotNameAttr = childNode['s-sn'];
1482
+ const slotName = childNode['s-sn'];
1483
+ // iterate through all the nodes under the location where the host was
1484
+ // originally rendered
1420
1485
  for (j = hostContentNodes.length - 1; j >= 0; j--) {
1421
1486
  node = hostContentNodes[j];
1422
- if (!node['s-cn'] && !node['s-nr'] && node['s-hn'] !== childNode['s-hn']) {
1423
- // let's do some relocating to its new home
1424
- // but never relocate a content reference node
1425
- // that is suppose to always represent the original content location
1426
- if (isNodeLocatedInSlot(node, slotNameAttr)) {
1487
+ // check that the node is not a content reference node or a node
1488
+ // reference and then check that the host name does not match that of
1489
+ // childNode.
1490
+ // In addition, check that the slot either has not already been relocated, or
1491
+ // that its current location's host is not childNode's host. This is essentially
1492
+ // a check so that we don't try to relocate (and then hide) a node that is already
1493
+ // where it should be.
1494
+ if (!node['s-cn'] &&
1495
+ !node['s-nr'] &&
1496
+ node['s-hn'] !== childNode['s-hn'] &&
1497
+ (!BUILD.experimentalSlotFixes )) {
1498
+ // if `node` is located in the slot that `childNode` refers to (via the
1499
+ // `'s-sn'` property) then we need to relocate it from it's current spot
1500
+ // (under the host element parent) to the right slot location
1501
+ if (isNodeLocatedInSlot(node, slotName)) {
1427
1502
  // it's possible we've already decided to relocate this node
1428
- relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);
1503
+ let relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);
1429
1504
  // made some changes to slots
1430
1505
  // let's make sure we also double check
1431
1506
  // fallbacks are correctly hidden or shown
1432
1507
  checkSlotFallbackVisibility = true;
1433
- node['s-sn'] = node['s-sn'] || slotNameAttr;
1508
+ // ensure that the slot-name attr is correct
1509
+ node['s-sn'] = node['s-sn'] || slotName;
1434
1510
  if (relocateNodeData) {
1435
- // previously we never found a slot home for this node
1436
- // but turns out we did, so let's remember it now
1511
+ relocateNodeData.$nodeToRelocate$['s-sh'] = childNode['s-hn'];
1512
+ // we marked this node for relocation previously but didn't find
1513
+ // out the slot reference node to which it needs to be relocated
1514
+ // so write it down now!
1437
1515
  relocateNodeData.$slotRefNode$ = childNode;
1438
1516
  }
1439
1517
  else {
1518
+ node['s-sh'] = childNode['s-hn'];
1440
1519
  // add to our list of nodes to relocate
1441
1520
  relocateNodes.push({
1442
1521
  $slotRefNode$: childNode,
@@ -1455,8 +1534,10 @@ const relocateSlotContent = (elm) => {
1455
1534
  }
1456
1535
  }
1457
1536
  else if (!relocateNodes.some((r) => r.$nodeToRelocate$ === node)) {
1458
- // so far this element does not have a slot home, not setting slotRefNode on purpose
1459
- // if we never find a home for this element then we'll need to hide it
1537
+ // the node is not found within the slot (`childNode`) that we're
1538
+ // currently looking at, so we stick it into `relocateNodes` to
1539
+ // handle later. If we never find a home for this element then
1540
+ // we'll need to hide it
1460
1541
  relocateNodes.push({
1461
1542
  $nodeToRelocate$: node,
1462
1543
  });
@@ -1464,30 +1545,48 @@ const relocateSlotContent = (elm) => {
1464
1545
  }
1465
1546
  }
1466
1547
  }
1548
+ // if we're dealing with any type of element (capable of itself being a
1549
+ // slot reference or containing one) then we recur
1467
1550
  if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
1468
- relocateSlotContent(childNode);
1551
+ markSlotContentForRelocation(childNode);
1469
1552
  }
1470
1553
  }
1471
1554
  };
1472
- const isNodeLocatedInSlot = (nodeToRelocate, slotNameAttr) => {
1555
+ /**
1556
+ * Check whether a node is located in a given named slot.
1557
+ *
1558
+ * @param nodeToRelocate the node of interest
1559
+ * @param slotName the slot name to check
1560
+ * @returns whether the node is located in the slot or not
1561
+ */
1562
+ const isNodeLocatedInSlot = (nodeToRelocate, slotName) => {
1473
1563
  if (nodeToRelocate.nodeType === 1 /* NODE_TYPE.ElementNode */) {
1474
- if (nodeToRelocate.getAttribute('slot') === null && slotNameAttr === '') {
1564
+ if (nodeToRelocate.getAttribute('slot') === null && slotName === '') {
1565
+ // if the node doesn't have a slot attribute, and the slot we're checking
1566
+ // is not a named slot, then we assume the node should be within the slot
1475
1567
  return true;
1476
1568
  }
1477
- if (nodeToRelocate.getAttribute('slot') === slotNameAttr) {
1569
+ if (nodeToRelocate.getAttribute('slot') === slotName) {
1478
1570
  return true;
1479
1571
  }
1480
1572
  return false;
1481
1573
  }
1482
- if (nodeToRelocate['s-sn'] === slotNameAttr) {
1574
+ if (nodeToRelocate['s-sn'] === slotName) {
1483
1575
  return true;
1484
1576
  }
1485
- return slotNameAttr === '';
1577
+ return slotName === '';
1486
1578
  };
1487
- const callNodeRefs = (vNode) => {
1579
+ /**
1580
+ * 'Nullify' any VDom `ref` callbacks on a VDom node or its children by calling
1581
+ * them with `null`. This signals that the DOM element corresponding to the VDom
1582
+ * node has been removed from the DOM.
1583
+ *
1584
+ * @param vNode a virtual DOM node
1585
+ */
1586
+ const nullifyVNodeRefs = (vNode) => {
1488
1587
  {
1489
1588
  vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);
1490
- vNode.$children$ && vNode.$children$.map(callNodeRefs);
1589
+ vNode.$children$ && vNode.$children$.map(nullifyVNodeRefs);
1491
1590
  }
1492
1591
  };
1493
1592
  /**
@@ -1501,17 +1600,45 @@ const callNodeRefs = (vNode) => {
1501
1600
  * @param hostRef data needed to root and render the virtual DOM tree, such as
1502
1601
  * the DOM node into which it should be rendered.
1503
1602
  * @param renderFnResults the virtual DOM nodes to be rendered
1603
+ * @param isInitialLoad whether or not this is the first call after page load
1504
1604
  */
1505
- const renderVdom = (hostRef, renderFnResults) => {
1605
+ const renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
1606
+ var _a, _b;
1506
1607
  const hostElm = hostRef.$hostElement$;
1507
1608
  const cmpMeta = hostRef.$cmpMeta$;
1508
1609
  const oldVNode = hostRef.$vnode$ || newVNode(null, null);
1610
+ // if `renderFnResults` is a Host node then we can use it directly. If not,
1611
+ // we need to call `h` again to wrap the children of our component in a
1612
+ // 'dummy' Host node (well, an empty vnode) since `renderVdom` assumes
1613
+ // implicitly that the top-level vdom node is 1) an only child and 2)
1614
+ // contains attrs that need to be set on the host element.
1509
1615
  const rootVnode = isHost(renderFnResults) ? renderFnResults : h(null, null, renderFnResults);
1510
1616
  hostTagName = hostElm.tagName;
1511
1617
  if (cmpMeta.$attrsToReflect$) {
1512
1618
  rootVnode.$attrs$ = rootVnode.$attrs$ || {};
1513
1619
  cmpMeta.$attrsToReflect$.map(([propName, attribute]) => (rootVnode.$attrs$[attribute] = hostElm[propName]));
1514
1620
  }
1621
+ // On the first render and *only* on the first render we want to check for
1622
+ // any attributes set on the host element which are also set on the vdom
1623
+ // node. If we find them, we override the value on the VDom node attrs with
1624
+ // the value from the host element, which allows developers building apps
1625
+ // with Stencil components to override e.g. the `role` attribute on a
1626
+ // component even if it's already set on the `Host`.
1627
+ if (isInitialLoad && rootVnode.$attrs$) {
1628
+ for (const key of Object.keys(rootVnode.$attrs$)) {
1629
+ // We have a special implementation in `setAccessor` for `style` and
1630
+ // `class` which reconciles values coming from the VDom with values
1631
+ // already present on the DOM element, so we don't want to override those
1632
+ // attributes on the VDom tree with values from the host element if they
1633
+ // are present.
1634
+ //
1635
+ // Likewise, `ref` and `key` are special internal values for the Stencil
1636
+ // runtime and we don't want to override those either.
1637
+ if (hostElm.hasAttribute(key) && !['key', 'ref', 'style', 'class'].includes(key)) {
1638
+ rootVnode.$attrs$[key] = hostElm[key];
1639
+ }
1640
+ }
1641
+ }
1515
1642
  rootVnode.$tag$ = null;
1516
1643
  rootVnode.$flags$ |= 4 /* VNODE_FLAGS.isHost */;
1517
1644
  hostRef.$vnode$ = rootVnode;
@@ -1532,43 +1659,48 @@ const renderVdom = (hostRef, renderFnResults) => {
1532
1659
  // the disconnectCallback from working
1533
1660
  plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
1534
1661
  if (checkSlotRelocate) {
1535
- relocateSlotContent(rootVnode.$elm$);
1536
- let relocateData;
1537
- let nodeToRelocate;
1538
- let orgLocationNode;
1539
- let parentNodeRef;
1540
- let insertBeforeNode;
1541
- let refNode;
1542
- let i = 0;
1543
- for (; i < relocateNodes.length; i++) {
1544
- relocateData = relocateNodes[i];
1545
- nodeToRelocate = relocateData.$nodeToRelocate$;
1662
+ markSlotContentForRelocation(rootVnode.$elm$);
1663
+ for (const relocateData of relocateNodes) {
1664
+ const nodeToRelocate = relocateData.$nodeToRelocate$;
1546
1665
  if (!nodeToRelocate['s-ol']) {
1547
1666
  // add a reference node marking this node's original location
1548
1667
  // keep a reference to this node for later lookups
1549
- orgLocationNode =
1550
- doc.createTextNode('');
1668
+ const orgLocationNode = doc.createTextNode('');
1551
1669
  orgLocationNode['s-nr'] = nodeToRelocate;
1552
1670
  nodeToRelocate.parentNode.insertBefore((nodeToRelocate['s-ol'] = orgLocationNode), nodeToRelocate);
1553
1671
  }
1554
1672
  }
1555
- for (i = 0; i < relocateNodes.length; i++) {
1556
- relocateData = relocateNodes[i];
1557
- nodeToRelocate = relocateData.$nodeToRelocate$;
1558
- if (relocateData.$slotRefNode$) {
1559
- // by default we're just going to insert it directly
1560
- // after the slot reference node
1561
- parentNodeRef = relocateData.$slotRefNode$.parentNode;
1562
- insertBeforeNode = relocateData.$slotRefNode$.nextSibling;
1563
- orgLocationNode = nodeToRelocate['s-ol'];
1564
- while ((orgLocationNode = orgLocationNode.previousSibling)) {
1565
- refNode = orgLocationNode['s-nr'];
1566
- if (refNode && refNode['s-sn'] === nodeToRelocate['s-sn'] && parentNodeRef === refNode.parentNode) {
1567
- refNode = refNode.nextSibling;
1568
- if (!refNode || !refNode['s-nr']) {
1569
- insertBeforeNode = refNode;
1570
- break;
1673
+ for (const relocateData of relocateNodes) {
1674
+ const nodeToRelocate = relocateData.$nodeToRelocate$;
1675
+ const slotRefNode = relocateData.$slotRefNode$;
1676
+ if (slotRefNode) {
1677
+ const parentNodeRef = slotRefNode.parentNode;
1678
+ // When determining where to insert content, the most simple case would be
1679
+ // to relocate the node immediately following the slot reference node. We do this
1680
+ // by getting a reference to the node immediately following the slot reference node
1681
+ // since we will use `insertBefore` to manipulate the DOM.
1682
+ //
1683
+ // If there is no node immediately following the slot reference node, then we will just
1684
+ // end up appending the node as the last child of the parent.
1685
+ let insertBeforeNode = slotRefNode.nextSibling;
1686
+ // If the node we're currently planning on inserting the new node before is an element,
1687
+ // we need to do some additional checks to make sure we're inserting the node in the correct order.
1688
+ // The use case here would be that we have multiple nodes being relocated to the same slot. So, we want
1689
+ // to make sure they get inserted into their new how in the same order they were declared in their original location.
1690
+ //
1691
+ // TODO(STENCIL-914): Remove `experimentalSlotFixes` check
1692
+ {
1693
+ let orgLocationNode = (_a = nodeToRelocate['s-ol']) === null || _a === void 0 ? void 0 : _a.previousSibling;
1694
+ while (orgLocationNode) {
1695
+ let refNode = (_b = orgLocationNode['s-nr']) !== null && _b !== void 0 ? _b : null;
1696
+ if (refNode && refNode['s-sn'] === nodeToRelocate['s-sn'] && parentNodeRef === refNode.parentNode) {
1697
+ refNode = refNode.nextSibling;
1698
+ if (!refNode || !refNode['s-nr']) {
1699
+ insertBeforeNode = refNode;
1700
+ break;
1701
+ }
1571
1702
  }
1703
+ orgLocationNode = orgLocationNode.previousSibling;
1572
1704
  }
1573
1705
  }
1574
1706
  if ((!insertBeforeNode && parentNodeRef !== nodeToRelocate.parentNode) ||
@@ -1578,10 +1710,13 @@ const renderVdom = (hostRef, renderFnResults) => {
1578
1710
  // has a different next sibling or parent relocated
1579
1711
  if (nodeToRelocate !== insertBeforeNode) {
1580
1712
  if (!nodeToRelocate['s-hn'] && nodeToRelocate['s-ol']) {
1581
- // probably a component in the index.html that doesn't have it's hostname set
1713
+ // probably a component in the index.html that doesn't have its hostname set
1582
1714
  nodeToRelocate['s-hn'] = nodeToRelocate['s-ol'].parentNode.nodeName;
1583
1715
  }
1584
- // add it back to the dom but in its new home
1716
+ // Add it back to the dom but in its new home
1717
+ // If we get to this point and `insertBeforeNode` is `null`, that means
1718
+ // we're just going to append the node as the last child of the parent. Passing
1719
+ // `null` as the second arg here will trigger that behavior.
1585
1720
  parentNodeRef.insertBefore(nodeToRelocate, insertBeforeNode);
1586
1721
  }
1587
1722
  }
@@ -1624,30 +1759,96 @@ const scheduleUpdate = (hostRef, isInitialLoad) => {
1624
1759
  const dispatch = () => dispatchHooks(hostRef, isInitialLoad);
1625
1760
  return writeTask(dispatch) ;
1626
1761
  };
1762
+ /**
1763
+ * Dispatch initial-render and update lifecycle hooks, enqueuing calls to
1764
+ * component lifecycle methods like `componentWillLoad` as well as
1765
+ * {@link updateComponent}, which will kick off the virtual DOM re-render.
1766
+ *
1767
+ * @param hostRef a reference to a host DOM node
1768
+ * @param isInitialLoad whether we're on the initial load or not
1769
+ * @returns an empty Promise which is used to enqueue a series of operations for
1770
+ * the component
1771
+ */
1627
1772
  const dispatchHooks = (hostRef, isInitialLoad) => {
1628
1773
  const endSchedule = createTime('scheduleUpdate', hostRef.$cmpMeta$.$tagName$);
1629
1774
  const instance = hostRef.$lazyInstance$ ;
1630
- let promise;
1775
+ // We're going to use this variable together with `enqueue` to implement a
1776
+ // little promise-based queue. We start out with it `undefined`. When we add
1777
+ // the first function to the queue we'll set this variable to be that
1778
+ // function's return value. When we attempt to add subsequent values to the
1779
+ // queue we'll check that value and, if it was a `Promise`, we'll then chain
1780
+ // the new function off of that `Promise` using `.then()`. This will give our
1781
+ // queue two nice properties:
1782
+ //
1783
+ // 1. If all functions added to the queue are synchronous they'll be called
1784
+ // synchronously right away.
1785
+ // 2. If all functions added to the queue are asynchronous they'll all be
1786
+ // called in order after `dispatchHooks` exits.
1787
+ let maybePromise;
1631
1788
  if (isInitialLoad) {
1632
1789
  {
1633
1790
  hostRef.$flags$ |= 256 /* HOST_FLAGS.isListenReady */;
1634
1791
  if (hostRef.$queuedListeners$) {
1635
1792
  hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event));
1636
- hostRef.$queuedListeners$ = null;
1793
+ hostRef.$queuedListeners$ = undefined;
1637
1794
  }
1638
1795
  }
1639
1796
  {
1640
- promise = safeCall(instance, 'componentWillLoad');
1797
+ // If `componentWillLoad` returns a `Promise` then we want to wait on
1798
+ // whatever's going on in that `Promise` before we launch into
1799
+ // rendering the component, doing other lifecycle stuff, etc. So
1800
+ // in that case we assign the returned promise to the variable we
1801
+ // declared above to hold a possible 'queueing' Promise
1802
+ maybePromise = safeCall(instance, 'componentWillLoad');
1641
1803
  }
1642
1804
  }
1643
1805
  {
1644
- promise = then(promise, () => safeCall(instance, 'componentWillRender'));
1806
+ maybePromise = enqueue(maybePromise, () => safeCall(instance, 'componentWillRender'));
1645
1807
  }
1646
1808
  endSchedule();
1647
- return then(promise, () => updateComponent(hostRef, instance, isInitialLoad));
1809
+ return enqueue(maybePromise, () => updateComponent(hostRef, instance, isInitialLoad));
1648
1810
  };
1811
+ /**
1812
+ * This function uses a Promise to implement a simple first-in, first-out queue
1813
+ * of functions to be called.
1814
+ *
1815
+ * The queue is ordered on the basis of the first argument. If it's
1816
+ * `undefined`, then nothing is on the queue yet, so the provided function can
1817
+ * be called synchronously (although note that this function may return a
1818
+ * `Promise`). The idea is that then the return value of that enqueueing
1819
+ * operation is kept around, so that if it was a `Promise` then subsequent
1820
+ * functions can be enqueued by calling this function again with that `Promise`
1821
+ * as the first argument.
1822
+ *
1823
+ * @param maybePromise either a `Promise` which should resolve before the next function is called or an 'empty' sentinel
1824
+ * @param fn a function to enqueue
1825
+ * @returns either a `Promise` or the return value of the provided function
1826
+ */
1827
+ const enqueue = (maybePromise, fn) => isPromisey(maybePromise) ? maybePromise.then(fn) : fn();
1828
+ /**
1829
+ * Check that a value is a `Promise`. To check, we first see if the value is an
1830
+ * instance of the `Promise` global. In a few circumstances, in particular if
1831
+ * the global has been overwritten, this is could be misleading, so we also do
1832
+ * a little 'duck typing' check to see if the `.then` property of the value is
1833
+ * defined and a function.
1834
+ *
1835
+ * @param maybePromise it might be a promise!
1836
+ * @returns whether it is or not
1837
+ */
1838
+ const isPromisey = (maybePromise) => maybePromise instanceof Promise ||
1839
+ (maybePromise && maybePromise.then && typeof maybePromise.then === 'function');
1840
+ /**
1841
+ * Update a component given reference to its host elements and so on.
1842
+ *
1843
+ * @param hostRef an object containing references to the element's host node,
1844
+ * VDom nodes, and other metadata
1845
+ * @param instance a reference to the underlying host element where it will be
1846
+ * rendered
1847
+ * @param isInitialLoad whether or not this function is being called as part of
1848
+ * the first render cycle
1849
+ */
1649
1850
  const updateComponent = async (hostRef, instance, isInitialLoad) => {
1650
- // updateComponent
1851
+ var _a;
1651
1852
  const elm = hostRef.$hostElement$;
1652
1853
  const endUpdate = createTime('update', hostRef.$cmpMeta$.$tagName$);
1653
1854
  const rc = elm['s-rc'];
@@ -1657,7 +1858,7 @@ const updateComponent = async (hostRef, instance, isInitialLoad) => {
1657
1858
  }
1658
1859
  const endRender = createTime('render', hostRef.$cmpMeta$.$tagName$);
1659
1860
  {
1660
- callRender(hostRef, instance);
1861
+ callRender(hostRef, instance, elm, isInitialLoad);
1661
1862
  }
1662
1863
  if (rc) {
1663
1864
  // ok, so turns out there are some child host elements
@@ -1669,7 +1870,7 @@ const updateComponent = async (hostRef, instance, isInitialLoad) => {
1669
1870
  endRender();
1670
1871
  endUpdate();
1671
1872
  {
1672
- const childrenPromises = elm['s-p'];
1873
+ const childrenPromises = (_a = elm['s-p']) !== null && _a !== void 0 ? _a : [];
1673
1874
  const postUpdate = () => postUpdateComponent(hostRef);
1674
1875
  if (childrenPromises.length === 0) {
1675
1876
  postUpdate();
@@ -1681,8 +1882,24 @@ const updateComponent = async (hostRef, instance, isInitialLoad) => {
1681
1882
  }
1682
1883
  }
1683
1884
  };
1684
- const callRender = (hostRef, instance, elm) => {
1885
+ /**
1886
+ * Handle making the call to the VDom renderer with the proper context given
1887
+ * various build variables
1888
+ *
1889
+ * @param hostRef an object containing references to the element's host node,
1890
+ * VDom nodes, and other metadata
1891
+ * @param instance a reference to the underlying host element where it will be
1892
+ * rendered
1893
+ * @param elm the Host element for the component
1894
+ * @param isInitialLoad whether or not this function is being called as part of
1895
+ * @returns an empty promise
1896
+ */
1897
+ const callRender = (hostRef, instance, elm, isInitialLoad) => {
1685
1898
  try {
1899
+ /**
1900
+ * minification optimization: `allRenderFn` is `true` if all components have a `render`
1901
+ * method, so we can call the method immediately. If not, check before calling it.
1902
+ */
1686
1903
  instance = instance.render() ;
1687
1904
  {
1688
1905
  hostRef.$flags$ &= ~16 /* HOST_FLAGS.isQueuedForUpdate */;
@@ -1696,7 +1913,7 @@ const callRender = (hostRef, instance, elm) => {
1696
1913
  // or we need to update the css class/attrs on the host element
1697
1914
  // DOM WRITE!
1698
1915
  {
1699
- renderVdom(hostRef, instance);
1916
+ renderVdom(hostRef, instance, isInitialLoad);
1700
1917
  }
1701
1918
  }
1702
1919
  }
@@ -1765,6 +1982,16 @@ const appDidLoad = (who) => {
1765
1982
  }
1766
1983
  nextTick(() => emitEvent(win, 'appload', { detail: { namespace: NAMESPACE } }));
1767
1984
  };
1985
+ /**
1986
+ * Allows to safely call a method, e.g. `componentDidLoad`, on an instance,
1987
+ * e.g. custom element node. If a build figures out that e.g. no component
1988
+ * has a `componentDidLoad` method, the instance method gets removed from the
1989
+ * output bundle and this function returns `undefined`.
1990
+ * @param instance any object that may or may not contain methods
1991
+ * @param method method name
1992
+ * @param arg single arbitrary argument
1993
+ * @returns result of method call if it exists, otherwise `undefined`
1994
+ */
1768
1995
  const safeCall = (instance, method, arg) => {
1769
1996
  if (instance && instance[method]) {
1770
1997
  try {
@@ -1776,9 +2003,6 @@ const safeCall = (instance, method, arg) => {
1776
2003
  }
1777
2004
  return undefined;
1778
2005
  };
1779
- const then = (promise, thenFn) => {
1780
- return promise && promise.then ? promise.then(thenFn) : thenFn();
1781
- };
1782
2006
  const addHydratedFlag = (elm) => elm.classList.add('hydrated')
1783
2007
  ;
1784
2008
  const getValue = (ref, propName) => getHostRef(ref).$instanceValues$.get(propName);
@@ -1835,6 +2059,7 @@ const setValue = (ref, propName, newVal, cmpMeta) => {
1835
2059
  * @returns a reference to the same constructor passed in (but now mutated)
1836
2060
  */
1837
2061
  const proxyComponent = (Cstr, cmpMeta, flags) => {
2062
+ var _a;
1838
2063
  if (cmpMeta.$members$) {
1839
2064
  if (Cstr.watchers) {
1840
2065
  cmpMeta.$watchers$ = Cstr.watchers;
@@ -1872,7 +2097,7 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1872
2097
  });
1873
2098
  if ((flags & 1 /* PROXY_FLAGS.isElementConstructor */)) {
1874
2099
  const attrNameToPropName = new Map();
1875
- prototype.attributeChangedCallback = function (attrName, _oldValue, newValue) {
2100
+ prototype.attributeChangedCallback = function (attrName, oldValue, newValue) {
1876
2101
  plt.jmp(() => {
1877
2102
  const propName = attrNameToPropName.get(attrName);
1878
2103
  // In a web component lifecycle the attributeChangedCallback runs prior to connectedCallback
@@ -1895,12 +2120,12 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1895
2120
  // customElements.define('my-component', MyComponent);
1896
2121
  // </script>
1897
2122
  // ```
1898
- // In this case if we do not unshadow here and use the value of the shadowing property, attributeChangedCallback
2123
+ // In this case if we do not un-shadow here and use the value of the shadowing property, attributeChangedCallback
1899
2124
  // will be called with `newValue = "some-value"` and will set the shadowed property (this.someAttribute = "another-value")
1900
2125
  // to the value that was set inline i.e. "some-value" from above example. When
1901
- // the connectedCallback attempts to unshadow it will use "some-value" as the initial value rather than "another-value"
2126
+ // the connectedCallback attempts to un-shadow it will use "some-value" as the initial value rather than "another-value"
1902
2127
  //
1903
- // The case where the attribute was NOT set inline but was not set programmatically shall be handled/unshadowed
2128
+ // The case where the attribute was NOT set inline but was not set programmatically shall be handled/un-shadowed
1904
2129
  // by connectedCallback as this attributeChangedCallback will not fire.
1905
2130
  //
1906
2131
  // https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties
@@ -1920,31 +2145,70 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1920
2145
  // `propName` to be converted to a `DOMString`, which may not be what we want for other primitive props.
1921
2146
  return;
1922
2147
  }
2148
+ else if (propName == null) {
2149
+ // At this point we should know this is not a "member", so we can treat it like watching an attribute
2150
+ // on a vanilla web component
2151
+ const hostRef = getHostRef(this);
2152
+ const flags = hostRef === null || hostRef === void 0 ? void 0 : hostRef.$flags$;
2153
+ // We only want to trigger the callback(s) if:
2154
+ // 1. The instance is ready
2155
+ // 2. The watchers are ready
2156
+ // 3. The value has changed
2157
+ if (!(flags & 8 /* HOST_FLAGS.isConstructingInstance */) &&
2158
+ flags & 128 /* HOST_FLAGS.isWatchReady */ &&
2159
+ newValue !== oldValue) {
2160
+ const instance = hostRef.$lazyInstance$ ;
2161
+ const entry = cmpMeta.$watchers$[attrName];
2162
+ entry === null || entry === void 0 ? void 0 : entry.forEach((callbackName) => {
2163
+ if (instance[callbackName] != null) {
2164
+ instance[callbackName].call(instance, newValue, oldValue, attrName);
2165
+ }
2166
+ });
2167
+ }
2168
+ return;
2169
+ }
1923
2170
  this[propName] = newValue === null && typeof this[propName] === 'boolean' ? false : newValue;
1924
2171
  });
1925
2172
  };
1926
- // create an array of attributes to observe
1927
- // and also create a map of html attribute name to js property name
1928
- Cstr.observedAttributes = members
1929
- .filter(([_, m]) => m[0] & 15 /* MEMBER_FLAGS.HasAttribute */) // filter to only keep props that should match attributes
1930
- .map(([propName, m]) => {
1931
- const attrName = m[1] || propName;
1932
- attrNameToPropName.set(attrName, propName);
1933
- if (m[0] & 512 /* MEMBER_FLAGS.ReflectAttr */) {
1934
- cmpMeta.$attrsToReflect$.push([propName, attrName]);
1935
- }
1936
- return attrName;
1937
- });
2173
+ // Create an array of attributes to observe
2174
+ // This list in comprised of all strings used within a `@Watch()` decorator
2175
+ // on a component as well as any Stencil-specific "members" (`@Prop()`s and `@State()`s).
2176
+ // As such, there is no way to guarantee type-safety here that a user hasn't entered
2177
+ // an invalid attribute.
2178
+ Cstr.observedAttributes = Array.from(new Set([
2179
+ ...Object.keys((_a = cmpMeta.$watchers$) !== null && _a !== void 0 ? _a : {}),
2180
+ ...members
2181
+ .filter(([_, m]) => m[0] & 15 /* MEMBER_FLAGS.HasAttribute */)
2182
+ .map(([propName, m]) => {
2183
+ const attrName = m[1] || propName;
2184
+ attrNameToPropName.set(attrName, propName);
2185
+ if (m[0] & 512 /* MEMBER_FLAGS.ReflectAttr */) {
2186
+ cmpMeta.$attrsToReflect$.push([propName, attrName]);
2187
+ }
2188
+ return attrName;
2189
+ }),
2190
+ ]));
1938
2191
  }
1939
2192
  }
1940
2193
  return Cstr;
1941
2194
  };
1942
- const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) => {
2195
+ /**
2196
+ * Initialize a Stencil component given a reference to its host element, its
2197
+ * runtime bookkeeping data structure, runtime metadata about the component,
2198
+ * and (optionally) an HMR version ID.
2199
+ *
2200
+ * @param elm a host element
2201
+ * @param hostRef the element's runtime bookkeeping object
2202
+ * @param cmpMeta runtime metadata for the Stencil component
2203
+ * @param hmrVersionId an (optional) HMR version ID
2204
+ */
2205
+ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
2206
+ let Cstr;
1943
2207
  // initializeComponent
1944
2208
  if ((hostRef.$flags$ & 32 /* HOST_FLAGS.hasInitializedComponent */) === 0) {
2209
+ // Let the runtime know that the component has been initialized
2210
+ hostRef.$flags$ |= 32 /* HOST_FLAGS.hasInitializedComponent */;
1945
2211
  {
1946
- // we haven't initialized this element yet
1947
- hostRef.$flags$ |= 32 /* HOST_FLAGS.hasInitializedComponent */;
1948
2212
  // lazy loaded components
1949
2213
  // request the component's implementation to be
1950
2214
  // wired up with the host element
@@ -2047,7 +2311,7 @@ const connectedCallback = (elm) => {
2047
2311
  // if the slot polyfill is required we'll need to put some nodes
2048
2312
  // in here to act as original content anchors as we move nodes around
2049
2313
  // host element has been connected to the DOM
2050
- if ((// TODO(STENCIL-662): Remove code related to deprecated shadowDomShim field
2314
+ if ((// TODO(STENCIL-854): Remove code related to legacy shadowDomShim field
2051
2315
  cmpMeta.$flags$ & (4 /* CMP_FLAGS.hasSlotRelocation */ | 8 /* CMP_FLAGS.needsShadowDomShim */))) {
2052
2316
  setContentReference(elm);
2053
2317
  }
@@ -2095,7 +2359,12 @@ const connectedCallback = (elm) => {
2095
2359
  // since they would have been removed when disconnected
2096
2360
  addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);
2097
2361
  // fire off connectedCallback() on component instance
2098
- fireConnectedCallback(hostRef.$lazyInstance$);
2362
+ if (hostRef === null || hostRef === void 0 ? void 0 : hostRef.$lazyInstance$) {
2363
+ fireConnectedCallback(hostRef.$lazyInstance$);
2364
+ }
2365
+ else if (hostRef === null || hostRef === void 0 ? void 0 : hostRef.$onReadyPromise$) {
2366
+ hostRef.$onReadyPromise$.then(() => fireConnectedCallback(hostRef.$lazyInstance$));
2367
+ }
2099
2368
  }
2100
2369
  endConnected();
2101
2370
  }
@@ -2111,18 +2380,25 @@ const setContentReference = (elm) => {
2111
2380
  contentRefElm['s-cn'] = true;
2112
2381
  elm.insertBefore(contentRefElm, elm.firstChild);
2113
2382
  };
2114
- const disconnectedCallback = (elm) => {
2383
+ const disconnectInstance = (instance) => {
2384
+ {
2385
+ safeCall(instance, 'disconnectedCallback');
2386
+ }
2387
+ };
2388
+ const disconnectedCallback = async (elm) => {
2115
2389
  if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0) {
2116
2390
  const hostRef = getHostRef(elm);
2117
- const instance = hostRef.$lazyInstance$ ;
2118
2391
  {
2119
2392
  if (hostRef.$rmListeners$) {
2120
2393
  hostRef.$rmListeners$.map((rmListener) => rmListener());
2121
2394
  hostRef.$rmListeners$ = undefined;
2122
2395
  }
2123
2396
  }
2124
- {
2125
- safeCall(instance, 'disconnectedCallback');
2397
+ if (hostRef === null || hostRef === void 0 ? void 0 : hostRef.$lazyInstance$) {
2398
+ disconnectInstance(hostRef.$lazyInstance$);
2399
+ }
2400
+ else if (hostRef === null || hostRef === void 0 ? void 0 : hostRef.$onReadyPromise$) {
2401
+ hostRef.$onReadyPromise$.then(() => disconnectInstance(hostRef.$lazyInstance$));
2126
2402
  }
2127
2403
  }
2128
2404
  };
@@ -2132,7 +2408,7 @@ const patchChildSlotNodes = (elm, cmpMeta) => {
2132
2408
  return this[n];
2133
2409
  }
2134
2410
  }
2135
- // TODO(STENCIL-662): Remove code related to deprecated shadowDomShim field
2411
+ // TODO(STENCIL-854): Remove code related to legacy shadowDomShim field
2136
2412
  if (cmpMeta.$flags$ & 8 /* CMP_FLAGS.needsShadowDomShim */) {
2137
2413
  const childNodesFn = elm.__lookupGetter__('childNodes');
2138
2414
  Object.defineProperty(elm, 'children', {
@@ -2172,7 +2448,7 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2172
2448
  const customElements = win.customElements;
2173
2449
  const head = doc.head;
2174
2450
  const metaCharset = /*@__PURE__*/ head.querySelector('meta[charset]');
2175
- const visibilityStyle = /*@__PURE__*/ doc.createElement('style');
2451
+ const dataStyles = /*@__PURE__*/ doc.createElement('style');
2176
2452
  const deferredConnectedCallbacks = [];
2177
2453
  const styles = /*@__PURE__*/ doc.querySelectorAll(`[${HYDRATED_STYLE_ID}]`);
2178
2454
  let appLoadFallback;
@@ -2190,14 +2466,21 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2190
2466
  registerStyle(styles[i].getAttribute(HYDRATED_STYLE_ID), convertScopedToShadow(styles[i].innerHTML), true);
2191
2467
  }
2192
2468
  }
2469
+ let hasSlotRelocation = false;
2193
2470
  lazyBundles.map((lazyBundle) => {
2194
2471
  lazyBundle[1].map((compactMeta) => {
2472
+ var _a;
2195
2473
  const cmpMeta = {
2196
2474
  $flags$: compactMeta[0],
2197
2475
  $tagName$: compactMeta[1],
2198
2476
  $members$: compactMeta[2],
2199
2477
  $listeners$: compactMeta[3],
2200
2478
  };
2479
+ // Check if we are using slots outside the shadow DOM in this component.
2480
+ // We'll use this information later to add styles for `slot-fb` elements
2481
+ if (cmpMeta.$flags$ & 4 /* CMP_FLAGS.hasSlotRelocation */) {
2482
+ hasSlotRelocation = true;
2483
+ }
2201
2484
  {
2202
2485
  cmpMeta.$members$ = compactMeta[2];
2203
2486
  }
@@ -2208,7 +2491,7 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2208
2491
  cmpMeta.$attrsToReflect$ = [];
2209
2492
  }
2210
2493
  {
2211
- cmpMeta.$watchers$ = {};
2494
+ cmpMeta.$watchers$ = (_a = compactMeta[4]) !== null && _a !== void 0 ? _a : {};
2212
2495
  }
2213
2496
  const tagName = cmpMeta.$tagName$;
2214
2497
  const HostElement = class extends HTMLElement {
@@ -2232,9 +2515,6 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2232
2515
  }
2233
2516
  }
2234
2517
  }
2235
- {
2236
- patchChildSlotNodes(self, cmpMeta);
2237
- }
2238
2518
  }
2239
2519
  connectedCallback() {
2240
2520
  if (appLoadFallback) {
@@ -2256,6 +2536,13 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2256
2536
  return getHostRef(this).$onReadyPromise$;
2257
2537
  }
2258
2538
  };
2539
+ // TODO(STENCIL-914): this check and `else` block can go away and be replaced by just `BUILD.scoped` once we
2540
+ // default our pseudo-slot behavior
2541
+ {
2542
+ {
2543
+ patchChildSlotNodes(HostElement.prototype, cmpMeta);
2544
+ }
2545
+ }
2259
2546
  cmpMeta.$lazyBundleId$ = lazyBundle[0];
2260
2547
  if (!exclude.includes(tagName) && !customElements.get(tagName)) {
2261
2548
  cmpTags.push(tagName);
@@ -2263,15 +2550,23 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
2263
2550
  }
2264
2551
  });
2265
2552
  });
2553
+ // Add styles for `slot-fb` elements if any of our components are using slots outside the Shadow DOM
2554
+ if (hasSlotRelocation) {
2555
+ dataStyles.innerHTML += SLOT_FB_CSS;
2556
+ }
2557
+ // Add hydration styles
2266
2558
  {
2267
- visibilityStyle.innerHTML = cmpTags + HYDRATED_CSS;
2268
- visibilityStyle.setAttribute('data-styles', '');
2559
+ dataStyles.innerHTML += cmpTags + HYDRATED_CSS;
2560
+ }
2561
+ // If we have styles, add them to the DOM
2562
+ if (dataStyles.innerHTML.length) {
2563
+ dataStyles.setAttribute('data-styles', '');
2564
+ head.insertBefore(dataStyles, metaCharset ? metaCharset.nextSibling : head.firstChild);
2269
2565
  // Apply CSP nonce to the style tag if it exists
2270
2566
  const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
2271
2567
  if (nonce != null) {
2272
- visibilityStyle.setAttribute('nonce', nonce);
2568
+ dataStyles.setAttribute('nonce', nonce);
2273
2569
  }
2274
- head.insertBefore(visibilityStyle, metaCharset ? metaCharset.nextSibling : head.firstChild);
2275
2570
  }
2276
2571
  // Process deferred connectedCallbacks now all components have been registered
2277
2572
  isBootstrapping = false;
@@ -2332,13 +2627,40 @@ const hostListenerOpts = (flags) => (flags & 2 /* LISTENER_FLAGS.Capture */) !==
2332
2627
  * @returns void
2333
2628
  */
2334
2629
  const setNonce = (nonce) => (plt.$nonce$ = nonce);
2630
+ /**
2631
+ * A WeakMap mapping runtime component references to their corresponding host reference
2632
+ * instances.
2633
+ */
2335
2634
  const hostRefs = /*@__PURE__*/ new WeakMap();
2635
+ /**
2636
+ * Given a {@link d.RuntimeRef} retrieve the corresponding {@link d.HostRef}
2637
+ *
2638
+ * @param ref the runtime ref of interest
2639
+ * @returns the Host reference (if found) or undefined
2640
+ */
2336
2641
  const getHostRef = (ref) => hostRefs.get(ref);
2642
+ /**
2643
+ * Register a lazy instance with the {@link hostRefs} object so it's
2644
+ * corresponding {@link d.HostRef} can be retrieved later.
2645
+ *
2646
+ * @param lazyInstance the lazy instance of interest
2647
+ * @param hostRef that instances `HostRef` object
2648
+ * @returns a reference to the host ref WeakMap
2649
+ */
2337
2650
  const registerInstance = (lazyInstance, hostRef) => hostRefs.set((hostRef.$lazyInstance$ = lazyInstance), hostRef);
2338
- const registerHost = (elm, cmpMeta) => {
2651
+ /**
2652
+ * Register a host element for a Stencil component, setting up various metadata
2653
+ * and callbacks based on {@link BUILD} flags as well as the component's runtime
2654
+ * metadata.
2655
+ *
2656
+ * @param hostElement the host element to register
2657
+ * @param cmpMeta runtime metadata for that component
2658
+ * @returns a reference to the host ref WeakMap
2659
+ */
2660
+ const registerHost = (hostElement, cmpMeta) => {
2339
2661
  const hostRef = {
2340
2662
  $flags$: 0,
2341
- $hostElement$: elm,
2663
+ $hostElement$: hostElement,
2342
2664
  $cmpMeta$: cmpMeta,
2343
2665
  $instanceValues$: new Map(),
2344
2666
  };
@@ -2347,11 +2669,11 @@ const registerHost = (elm, cmpMeta) => {
2347
2669
  }
2348
2670
  {
2349
2671
  hostRef.$onReadyPromise$ = new Promise((r) => (hostRef.$onReadyResolve$ = r));
2350
- elm['s-p'] = [];
2351
- elm['s-rc'] = [];
2672
+ hostElement['s-p'] = [];
2673
+ hostElement['s-rc'] = [];
2352
2674
  }
2353
- addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);
2354
- return hostRefs.set(elm, hostRef);
2675
+ addHostEventListeners(hostElement, hostRef, cmpMeta.$listeners$);
2676
+ return hostRefs.set(hostElement, hostRef);
2355
2677
  };
2356
2678
  const isMemberInElement = (elm, memberName) => memberName in elm;
2357
2679
  const consoleError = (e, el) => (0, console.error)(e, el);
@@ -2390,7 +2712,7 @@ const plt = {
2390
2712
  ce: (eventName, opts) => new CustomEvent(eventName, opts),
2391
2713
  };
2392
2714
  const supportsShadow =
2393
- // TODO(STENCIL-662): Remove code related to deprecated shadowDomShim field
2715
+ // TODO(STENCIL-854): Remove code related to legacy shadowDomShim field
2394
2716
  true;
2395
2717
  const promiseResolve = (v) => Promise.resolve(v);
2396
2718
  const supportsConstructableStylesheets = /*@__PURE__*/ (() => {
@@ -2442,7 +2764,7 @@ const flush = () => {
2442
2764
  }
2443
2765
  }
2444
2766
  };
2445
- const nextTick = /*@__PURE__*/ (cb) => promiseResolve().then(cb);
2767
+ const nextTick = (cb) => promiseResolve().then(cb);
2446
2768
  const writeTask = /*@__PURE__*/ queueTask(queueDomWrites, true);
2447
2769
 
2448
2770
  exports.Build = Build;