@duetds/components 7.1.0 → 7.1.1

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 (866) hide show
  1. package/hydrate/index.d.ts +6 -6
  2. package/hydrate/index.js +279 -186
  3. package/lib/cjs/duet-action-button.cjs.entry.js +9 -9
  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 +6 -6
  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 +9 -9
  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-135b1e70.js} +1 -1
  82. package/lib/cjs/{index-e43540c9.js → index-8d4b3790.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.js +18 -9
  87. package/lib/collection/components/duet-alert/duet-alert.e2e.js +53 -0
  88. package/lib/collection/components/duet-alert/duet-alert.js +23 -12
  89. package/lib/collection/components/duet-badge/duet-badge.e2e.js +28 -0
  90. package/lib/collection/components/duet-badge/duet-badge.js +6 -3
  91. package/lib/collection/components/duet-banner/duet-banner.e2e.js +23 -0
  92. package/lib/collection/components/duet-banner/duet-banner.js +16 -8
  93. package/lib/collection/components/duet-breadcrumbs/duet-breadcrumb.js +4 -2
  94. package/lib/collection/components/duet-breadcrumbs/duet-breadcrumbs.e2e.js +18 -0
  95. package/lib/collection/components/duet-breadcrumbs/duet-breadcrumbs.js +2 -1
  96. package/lib/collection/components/duet-button/duet-button.e2e.js +210 -0
  97. package/lib/collection/components/duet-button/duet-button.js +29 -15
  98. package/lib/collection/components/duet-callout/duet-callout.e2e.js +21 -0
  99. package/lib/collection/components/duet-callout/duet-callout.js +4 -2
  100. package/lib/collection/components/duet-caption/duet-caption.e2e.js +26 -0
  101. package/lib/collection/components/duet-caption/duet-caption.js +6 -3
  102. package/lib/collection/components/duet-card/duet-card.e2e.js +91 -0
  103. package/lib/collection/components/duet-card/duet-card.js +24 -12
  104. package/lib/collection/components/duet-checkbox/duet-checkbox.e2e.js +112 -0
  105. package/lib/collection/components/duet-checkbox/duet-checkbox.js +14 -7
  106. package/lib/collection/components/duet-chip/duet-chip.e2e.js +46 -0
  107. package/lib/collection/components/duet-chip/duet-chip.js +16 -8
  108. package/lib/collection/components/duet-choice/duet-checkmark.js +4 -2
  109. package/lib/collection/components/duet-choice/duet-choice.e2e.js +181 -0
  110. package/lib/collection/components/duet-choice/duet-choice.js +27 -14
  111. package/lib/collection/components/duet-choice-group/duet-choice-group.e2e.js +88 -0
  112. package/lib/collection/components/duet-choice-group/duet-choice-group.js +10 -5
  113. package/lib/collection/components/duet-collapsible/duet-collapsible.e2e.js +125 -0
  114. package/lib/collection/components/duet-collapsible/duet-collapsible.js +16 -8
  115. package/lib/collection/components/duet-combobox/duet-combobox.e2e.js +110 -0
  116. package/lib/collection/components/duet-combobox/duet-combobox.js +14 -7
  117. package/lib/collection/components/duet-contact-card/duet-contact-card.js +6 -3
  118. package/lib/collection/components/duet-cookie-consent/duet-cookie-consent.e2e.js +31 -0
  119. package/lib/collection/components/duet-cookie-consent/duet-cookie-consent.js +4 -2
  120. package/lib/collection/components/duet-date-picker/date-utils.spec.js +330 -0
  121. package/lib/collection/components/duet-date-picker/duet-date-picker.e2e.js +694 -0
  122. package/lib/collection/components/duet-date-picker/duet-date-picker.js +28 -14
  123. package/lib/collection/components/duet-divider/duet-divider.e2e.js +32 -0
  124. package/lib/collection/components/duet-divider/duet-divider.js +6 -3
  125. package/lib/collection/components/duet-editable-table/duet-editable-table.e2e.js +29 -0
  126. package/lib/collection/components/duet-editable-table/duet-editable-table.js +20 -10
  127. package/lib/collection/components/duet-empty-state/duet-empty-state.e2e.js +16 -0
  128. package/lib/collection/components/duet-empty-state/duet-empty-state.js +6 -3
  129. package/lib/collection/components/duet-fieldset/duet-fieldset.e2e.js +13 -0
  130. package/lib/collection/components/duet-fieldset/duet-fieldset.js +6 -3
  131. package/lib/collection/components/duet-footer/duet-footer.e2e.js +186 -0
  132. package/lib/collection/components/duet-footer/duet-footer.js +23 -12
  133. package/lib/collection/components/duet-grid/duet-grid.e2e.js +42 -0
  134. package/lib/collection/components/duet-grid/duet-grid.js +10 -5
  135. package/lib/collection/components/duet-grid-item/duet-grid-item.js +8 -4
  136. package/lib/collection/components/duet-header/duet-header.e2e.js +468 -0
  137. package/lib/collection/components/duet-header/duet-header.js +50 -26
  138. package/lib/collection/components/duet-heading/duet-heading.e2e.js +27 -0
  139. package/lib/collection/components/duet-heading/duet-heading.js +12 -6
  140. package/lib/collection/components/duet-hero/duet-hero.e2e.js +172 -0
  141. package/lib/collection/components/duet-hero/duet-hero.js +26 -13
  142. package/lib/collection/components/duet-icon/duet-icon.e2e.js +32 -0
  143. package/lib/collection/components/duet-icon/duet-icon.js +14 -7
  144. package/lib/collection/components/duet-icon/icon-utils.spec.js +84 -0
  145. package/lib/collection/components/duet-input/duet-input.e2e.js +201 -0
  146. package/lib/collection/components/duet-input/duet-input.js +32 -16
  147. package/lib/collection/components/duet-label/duet-label.e2e.js +32 -0
  148. package/lib/collection/components/duet-label/duet-label.js +6 -3
  149. package/lib/collection/components/duet-layout/duet-layout.e2e.js +32 -0
  150. package/lib/collection/components/duet-layout/duet-layout.js +6 -3
  151. package/lib/collection/components/duet-link/duet-link.css +4 -1
  152. package/lib/collection/components/duet-link/duet-link.e2e.js +53 -0
  153. package/lib/collection/components/duet-link/duet-link.js +90 -11
  154. package/lib/collection/components/duet-list/duet-list.e2e.js +105 -0
  155. package/lib/collection/components/duet-list/duet-list.js +14 -7
  156. package/lib/collection/components/duet-list-item/duet-list-item.js +2 -1
  157. package/lib/collection/components/duet-logo/duet-logo.e2e.js +42 -0
  158. package/lib/collection/components/duet-logo/duet-logo.js +14 -7
  159. package/lib/collection/components/duet-menu-bar/duet-menu-bar.js +4 -2
  160. package/lib/collection/components/duet-menu-bar-button/duet-menu-bar-button.js +6 -3
  161. package/lib/collection/components/duet-menu-bar-dropdown/duet-menu-bar-dropdown.js +6 -3
  162. package/lib/collection/components/duet-menu-bar-dropdown-link/duet-menu-bar-dropdown-link.js +2 -1
  163. package/lib/collection/components/duet-menu-bar-link/duet-menu-bar-link.js +2 -1
  164. package/lib/collection/components/duet-modal/duet-modal.e2e.js +125 -0
  165. package/lib/collection/components/duet-modal/duet-modal.js +24 -12
  166. package/lib/collection/components/duet-multiselect/duet-multiselect.e2e.js +96 -0
  167. package/lib/collection/components/duet-multiselect/duet-multiselect.js +20 -10
  168. package/lib/collection/components/duet-nav/duet-nav.js +2 -1
  169. package/lib/collection/components/duet-notification/duet-notification.e2e.js +12 -0
  170. package/lib/collection/components/duet-notification/duet-notification.js +11 -6
  171. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.e2e.js +177 -0
  172. package/lib/collection/components/duet-notification-drawer/duet-notification-drawer.js +18 -9
  173. package/lib/collection/components/duet-number-input/duet-number-input-negative.e2e.js +32 -0
  174. package/lib/collection/components/duet-number-input/duet-number-input.e2e.js +242 -0
  175. package/lib/collection/components/duet-number-input/duet-number-input.js +30 -15
  176. package/lib/collection/components/duet-page-heading/duet-page-heading.js +4 -2
  177. package/lib/collection/components/duet-pagination/duet-pagination.e2e.js +101 -0
  178. package/lib/collection/components/duet-pagination/duet-pagination.js +12 -6
  179. package/lib/collection/components/duet-paragraph/duet-paragraph.e2e.js +27 -0
  180. package/lib/collection/components/duet-paragraph/duet-paragraph.js +12 -6
  181. package/lib/collection/components/duet-popup-menu/duet-popup-menu.js +14 -7
  182. package/lib/collection/components/duet-popup-menu-item/duet-popup-menu-item.js +16 -8
  183. package/lib/collection/components/duet-progress/duet-progress.e2e.js +12 -0
  184. package/lib/collection/components/duet-progress/duet-progress.js +4 -2
  185. package/lib/collection/components/duet-promo-card/duet-promo-card.e2e.js +23 -0
  186. package/lib/collection/components/duet-promo-card/duet-promo-card.js +10 -5
  187. package/lib/collection/components/duet-radio/duet-radio.e2e.js +135 -0
  188. package/lib/collection/components/duet-radio/duet-radio.js +16 -8
  189. package/lib/collection/components/duet-radio-group/duet-radio-group.e2e.js +57 -0
  190. package/lib/collection/components/duet-radio-group/duet-radio-group.js +8 -4
  191. package/lib/collection/components/duet-range-slider/duet-range-slider.e2e.js +57 -0
  192. package/lib/collection/components/duet-range-slider/duet-range-slider.js +14 -7
  193. package/lib/collection/components/duet-range-stepper/duet-range-stepper.e2e.js +51 -0
  194. package/lib/collection/components/duet-range-stepper/duet-range-stepper.js +8 -4
  195. package/lib/collection/components/duet-range-stepper/duet-range-stepper.spec.js +23 -0
  196. package/lib/collection/components/duet-scrollable/duet-scrollable.e2e.js +12 -0
  197. package/lib/collection/components/duet-scrollable/duet-scrollable.js +2 -1
  198. package/lib/collection/components/duet-section-layout/duet-section-layout.e2e.js +22 -0
  199. package/lib/collection/components/duet-section-layout/duet-section-layout.js +2 -1
  200. package/lib/collection/components/duet-select/duet-select.e2e.js +211 -0
  201. package/lib/collection/components/duet-select/duet-select.js +20 -10
  202. package/lib/collection/components/duet-shaped-image/duet-shaped-image.js +4 -2
  203. package/lib/collection/components/duet-show-more/duet-show-more.js +16 -8
  204. package/lib/collection/components/duet-slideout/duet-slideout.js +12 -6
  205. package/lib/collection/components/duet-slideout-lang/duet-slideout-lang.js +2 -1
  206. package/lib/collection/components/duet-slideout-link/duet-slideout-link.js +2 -1
  207. package/lib/collection/components/duet-slideout-panel/duet-slideout-panel.js +8 -4
  208. package/lib/collection/components/duet-slideout-panel-dropdown/duet-slideout-panel-dropdown.js +6 -3
  209. package/lib/collection/components/duet-spacer/duet-spacer.e2e.js +27 -0
  210. package/lib/collection/components/duet-spacer/duet-spacer.js +6 -3
  211. package/lib/collection/components/duet-spinner/duet-spinner.e2e.js +30 -0
  212. package/lib/collection/components/duet-spinner/duet-spinner.js +6 -3
  213. package/lib/collection/components/duet-step/duet-step.e2e.js +92 -0
  214. package/lib/collection/components/duet-step/duet-step.js +12 -6
  215. package/lib/collection/components/duet-stepper/duet-stepper.e2e.js +85 -0
  216. package/lib/collection/components/duet-stepper/duet-stepper.js +6 -3
  217. package/lib/collection/components/duet-submenu-bar/duet-submenu-bar.js +6 -3
  218. package/lib/collection/components/duet-submenu-bar-dropdown/duet-submenu-bar-dropdown.js +6 -3
  219. package/lib/collection/components/duet-submenu-bar-dropdown-link/duet-submenu-bar-dropdown-link.js +2 -1
  220. package/lib/collection/components/duet-submenu-bar-link/duet-submenu-bar-link.js +2 -1
  221. package/lib/collection/components/duet-tab/duet-tab.e2e.js +16 -0
  222. package/lib/collection/components/duet-tab/duet-tab.js +2 -1
  223. package/lib/collection/components/duet-tab-group/duet-tab-group.e2e.js +108 -0
  224. package/lib/collection/components/duet-tab-group/duet-tab-group.js +24 -12
  225. package/lib/collection/components/duet-table/duet-table.e2e.js +95 -0
  226. package/lib/collection/components/duet-table/duet-table.js +10 -5
  227. package/lib/collection/components/duet-textarea/duet-textarea.e2e.js +199 -0
  228. package/lib/collection/components/duet-textarea/duet-textarea.js +18 -9
  229. package/lib/collection/components/duet-toggle/duet-toggle.e2e.js +73 -0
  230. package/lib/collection/components/duet-toggle/duet-toggle.js +10 -5
  231. package/lib/collection/components/duet-toolbar/duet-toolbar.js +2 -1
  232. package/lib/collection/components/duet-toolbar-dropdown/duet-toolbar-dropdown.js +6 -3
  233. package/lib/collection/components/duet-toolbar-dropdown-link/duet-toolbar-dropdown-link.js +2 -1
  234. package/lib/collection/components/duet-toolbar-link/duet-toolbar-link.js +2 -1
  235. package/lib/collection/components/duet-tooltip/duet-tooltip-button.js +6 -3
  236. package/lib/collection/components/duet-tooltip/duet-tooltip-popup.js +14 -7
  237. package/lib/collection/components/duet-tooltip/duet-tooltip.e2e.js +99 -0
  238. package/lib/collection/components/duet-tooltip/duet-tooltip.js +12 -6
  239. package/lib/collection/components/duet-tray/duet-tray.e2e.js +103 -0
  240. package/lib/collection/components/duet-tray/duet-tray.js +8 -4
  241. package/lib/collection/components/duet-upload/duet-upload.e2e.js +49 -0
  242. package/lib/collection/components/duet-upload/duet-upload.js +69 -35
  243. package/lib/collection/components/duet-upload/upload-validators.spec.js +41 -0
  244. package/lib/collection/components/duet-upload-aria-status/duet-upload-aria-status.js +2 -1
  245. package/lib/collection/components/duet-upload-item/duet-upload-item.js +18 -9
  246. package/lib/collection/components/duet-visually-hidden/duet-visually-hidden.e2e.js +12 -0
  247. package/lib/collection/utils/create-id.spec.js +12 -0
  248. package/lib/collection/utils/js-utils.spec.js +22 -0
  249. package/lib/collection/utils/language-utils.spec.js +159 -0
  250. package/lib/collection/utils/math.utils.spec.js +140 -0
  251. package/lib/collection/utils/string-utils.spec.js +39 -0
  252. package/lib/collection/utils/template-utils.spec.js +39 -0
  253. package/lib/collection/utils/token-utils.spec.js +178 -0
  254. package/lib/dist-custom-elements/duet-action-button.js +1 -1
  255. package/lib/dist-custom-elements/duet-alert.js +1 -1
  256. package/lib/dist-custom-elements/duet-badge.js +1 -1
  257. package/lib/dist-custom-elements/duet-banner.js +8 -8
  258. package/lib/dist-custom-elements/duet-breadcrumb.js +6 -6
  259. package/lib/dist-custom-elements/duet-breadcrumbs.js +4 -4
  260. package/lib/dist-custom-elements/duet-button.js +1 -1
  261. package/lib/dist-custom-elements/duet-callout.js +6 -6
  262. package/lib/dist-custom-elements/duet-caption.js +1 -1
  263. package/lib/dist-custom-elements/duet-card.js +10 -10
  264. package/lib/dist-custom-elements/duet-checkbox.js +1 -1
  265. package/lib/dist-custom-elements/duet-checkmark.js +1 -1
  266. package/lib/dist-custom-elements/duet-chip.js +8 -6
  267. package/lib/dist-custom-elements/duet-choice-group.js +18 -12
  268. package/lib/dist-custom-elements/duet-choice.js +14 -14
  269. package/lib/dist-custom-elements/duet-collapsible.js +9 -9
  270. package/lib/dist-custom-elements/duet-combobox.js +15 -10
  271. package/lib/dist-custom-elements/duet-contact-card.js +12 -12
  272. package/lib/dist-custom-elements/duet-cookie-consent.js +9 -9
  273. package/lib/dist-custom-elements/duet-date-picker.js +25 -20
  274. package/lib/dist-custom-elements/duet-divider.js +1 -1
  275. package/lib/dist-custom-elements/duet-editable-table.js +14 -14
  276. package/lib/dist-custom-elements/duet-empty-state.js +1 -1
  277. package/lib/dist-custom-elements/duet-fieldset.js +1 -1
  278. package/lib/dist-custom-elements/duet-footer.js +13 -10
  279. package/lib/dist-custom-elements/duet-grid-item.js +1 -1
  280. package/lib/dist-custom-elements/duet-grid.js +1 -1
  281. package/lib/dist-custom-elements/duet-header.js +25 -18
  282. package/lib/dist-custom-elements/duet-heading.js +1 -1
  283. package/lib/dist-custom-elements/duet-hero.js +19 -15
  284. package/lib/dist-custom-elements/duet-icon.js +1 -1
  285. package/lib/dist-custom-elements/duet-input.js +1 -1
  286. package/lib/dist-custom-elements/duet-label.js +1 -1
  287. package/lib/dist-custom-elements/duet-layout.js +3 -3
  288. package/lib/dist-custom-elements/duet-link.js +1 -1
  289. package/lib/dist-custom-elements/duet-list-item.js +1 -1
  290. package/lib/dist-custom-elements/duet-list.js +1 -1
  291. package/lib/dist-custom-elements/duet-logo.js +1 -1
  292. package/lib/dist-custom-elements/duet-menu-bar-button.js +5 -5
  293. package/lib/dist-custom-elements/duet-menu-bar-dropdown-link.js +6 -6
  294. package/lib/dist-custom-elements/duet-menu-bar-dropdown.js +6 -6
  295. package/lib/dist-custom-elements/duet-menu-bar-link.js +5 -5
  296. package/lib/dist-custom-elements/duet-menu-bar.js +5 -5
  297. package/lib/dist-custom-elements/duet-modal.js +20 -17
  298. package/lib/dist-custom-elements/duet-multiselect.js +20 -18
  299. package/lib/dist-custom-elements/duet-nav.js +3 -3
  300. package/lib/dist-custom-elements/duet-notification-drawer.js +8 -8
  301. package/lib/dist-custom-elements/duet-notification.js +6 -6
  302. package/lib/dist-custom-elements/duet-number-input.js +17 -17
  303. package/lib/dist-custom-elements/duet-page-heading.js +5 -5
  304. package/lib/dist-custom-elements/duet-pagination.js +24 -21
  305. package/lib/dist-custom-elements/duet-paragraph.js +1 -1
  306. package/lib/dist-custom-elements/duet-popup-menu-item.js +5 -5
  307. package/lib/dist-custom-elements/duet-popup-menu.js +6 -6
  308. package/lib/dist-custom-elements/duet-progress.js +1 -1
  309. package/lib/dist-custom-elements/duet-promo-card.js +7 -7
  310. package/lib/dist-custom-elements/duet-radio-group.js +18 -12
  311. package/lib/dist-custom-elements/duet-radio.js +4 -4
  312. package/lib/dist-custom-elements/duet-range-slider.js +7 -7
  313. package/lib/dist-custom-elements/duet-range-stepper.js +13 -10
  314. package/lib/dist-custom-elements/duet-scrollable.js +1 -1
  315. package/lib/dist-custom-elements/duet-section-layout.js +3 -3
  316. package/lib/dist-custom-elements/duet-select.js +1 -1
  317. package/lib/dist-custom-elements/duet-shaped-image.js +3 -3
  318. package/lib/dist-custom-elements/duet-show-more.js +11 -11
  319. package/lib/dist-custom-elements/duet-slideout-lang.js +6 -6
  320. package/lib/dist-custom-elements/duet-slideout-link.js +5 -5
  321. package/lib/dist-custom-elements/duet-slideout-panel-dropdown.js +5 -5
  322. package/lib/dist-custom-elements/duet-slideout-panel.js +8 -8
  323. package/lib/dist-custom-elements/duet-slideout.js +10 -10
  324. package/lib/dist-custom-elements/duet-spacer.js +1 -1
  325. package/lib/dist-custom-elements/duet-spinner.js +1 -1
  326. package/lib/dist-custom-elements/duet-step.js +9 -9
  327. package/lib/dist-custom-elements/duet-stepper.js +9 -6
  328. package/lib/dist-custom-elements/duet-submenu-bar-dropdown-link.js +6 -6
  329. package/lib/dist-custom-elements/duet-submenu-bar-dropdown.js +6 -6
  330. package/lib/dist-custom-elements/duet-submenu-bar-link.js +6 -6
  331. package/lib/dist-custom-elements/duet-submenu-bar.js +8 -6
  332. package/lib/dist-custom-elements/duet-tab-group.js +19 -19
  333. package/lib/dist-custom-elements/duet-tab.js +4 -4
  334. package/lib/dist-custom-elements/duet-table.js +1 -1
  335. package/lib/dist-custom-elements/duet-textarea.js +17 -15
  336. package/lib/dist-custom-elements/duet-toggle.js +8 -6
  337. package/lib/dist-custom-elements/duet-toolbar-dropdown-link.js +6 -6
  338. package/lib/dist-custom-elements/duet-toolbar-dropdown.js +6 -6
  339. package/lib/dist-custom-elements/duet-toolbar-link.js +5 -5
  340. package/lib/dist-custom-elements/duet-toolbar.js +3 -3
  341. package/lib/dist-custom-elements/duet-tooltip-button.js +1 -1
  342. package/lib/dist-custom-elements/duet-tooltip-popup.js +1 -1
  343. package/lib/dist-custom-elements/duet-tooltip.js +1 -1
  344. package/lib/dist-custom-elements/duet-tray.js +8 -8
  345. package/lib/dist-custom-elements/duet-upload-aria-status.js +1 -1
  346. package/lib/dist-custom-elements/duet-upload-item.js +1 -1
  347. package/lib/dist-custom-elements/duet-upload.js +27 -25
  348. package/lib/dist-custom-elements/duet-visually-hidden.js +1 -1
  349. package/lib/dist-custom-elements/index.d.ts +6 -0
  350. package/lib/dist-custom-elements/index.js +1 -1
  351. package/lib/dist-custom-elements/{p-7c6ee265.js → p-092ff822.js} +15 -13
  352. package/lib/dist-custom-elements/{p-d6e49c93.js → p-0c7dab94.js} +7 -7
  353. package/lib/dist-custom-elements/{p-e90b70ac.js → p-227dc421.js} +3 -3
  354. package/lib/dist-custom-elements/{p-53148470.js → p-2764b248.js} +5 -5
  355. package/lib/dist-custom-elements/{p-d8859df9.js → p-3c3e91d0.js} +4 -4
  356. package/lib/dist-custom-elements/{p-1a8cb0ad.js → p-461756c5.js} +8 -6
  357. package/lib/dist-custom-elements/{p-03baceb5.js → p-4883df66.js} +1 -1
  358. package/lib/dist-custom-elements/{p-fc3ae836.js → p-51a58715.js} +7 -3
  359. package/lib/dist-custom-elements/{p-decdd69c.js → p-5f06c4ee.js} +5 -5
  360. package/lib/dist-custom-elements/{p-89dec98e.js → p-5fd9c816.js} +7 -7
  361. package/lib/dist-custom-elements/{p-ec4d603d.js → p-62c7d9d4.js} +1 -1
  362. package/lib/dist-custom-elements/{p-53fba128.js → p-6e063bb0.js} +4 -4
  363. package/lib/dist-custom-elements/{p-6a66573f.js → p-720c72c5.js} +15 -10
  364. package/lib/dist-custom-elements/{p-1d90b10e.js → p-7579d4ae.js} +507 -166
  365. package/lib/dist-custom-elements/{p-fcc738df.js → p-7da4aa07.js} +3 -3
  366. package/lib/dist-custom-elements/{p-479fa83d.js → p-8160c830.js} +11 -11
  367. package/lib/dist-custom-elements/{p-21dd956e.js → p-84946626.js} +31 -10
  368. package/lib/dist-custom-elements/{p-f7337164.js → p-8800fa36.js} +4 -4
  369. package/lib/dist-custom-elements/{p-954d4096.js → p-8afda636.js} +20 -17
  370. package/lib/dist-custom-elements/{p-c2533c03.js → p-8f0848ab.js} +3 -3
  371. package/lib/dist-custom-elements/{p-77c93063.js → p-9468d6ea.js} +4 -4
  372. package/lib/dist-custom-elements/{p-cedaa97e.js → p-96f45950.js} +2 -2
  373. package/lib/dist-custom-elements/{p-99ec82e5.js → p-a0669ee9.js} +6 -6
  374. package/lib/dist-custom-elements/{p-72c9e944.js → p-aa2863af.js} +4 -4
  375. package/lib/dist-custom-elements/{p-67b279fa.js → p-bc972b0a.js} +5 -5
  376. package/lib/dist-custom-elements/{p-061830ef.js → p-c5032d3a.js} +1 -1
  377. package/lib/dist-custom-elements/{p-87cf7266.js → p-cfca65c8.js} +10 -8
  378. package/lib/dist-custom-elements/{p-6816fd1b.js → p-d27dc964.js} +10 -10
  379. package/lib/dist-custom-elements/{p-e611a3df.js → p-db1ac527.js} +9 -5
  380. package/lib/dist-custom-elements/{p-6958bba3.js → p-dbe427e1.js} +15 -15
  381. package/lib/dist-custom-elements/{p-03e72a70.js → p-e19d1e27.js} +1 -1
  382. package/lib/dist-custom-elements/{p-4d9d4c43.js → p-eb55b736.js} +9 -4
  383. package/lib/dist-custom-elements/{p-dd33aa4e.js → p-eea6945b.js} +5 -5
  384. package/lib/dist-custom-elements/{p-a5b5343b.js → p-f06ebf0f.js} +16 -13
  385. package/lib/dist-custom-elements/{p-ad704699.js → p-f2263866.js} +10 -8
  386. package/lib/dist-custom-elements/{p-85087518.js → p-f6ae66d9.js} +5 -5
  387. package/lib/dist-custom-elements/{p-12a46182.js → p-fa9cb266.js} +12 -4
  388. package/lib/dist-custom-elements/{p-d8c53f43.js → p-fc5aceac.js} +2 -2
  389. package/lib/duet/duet.esm.js +1 -1
  390. package/lib/duet/duet.js +2 -6
  391. package/lib/duet/{p-529dc6fe.entry.js → p-015c6c0f.entry.js} +1 -1
  392. package/lib/duet/p-053b71e6.system.js +1 -1
  393. package/lib/duet/{p-b6c212f5.system.entry.js → p-05432941.system.entry.js} +1 -1
  394. package/lib/duet/p-07ae2d9c.system.js +5 -0
  395. package/lib/duet/{p-0bb83776.system.entry.js → p-07bf4b25.system.entry.js} +2 -2
  396. package/lib/duet/{p-84ebe175.entry.js → p-09694f22.entry.js} +1 -1
  397. package/lib/duet/p-0c4bbd65.system.js +1 -1
  398. package/lib/duet/{p-3a9779ee.entry.js → p-168f9b1c.entry.js} +1 -1
  399. package/lib/duet/p-1a91e22a.system.js +4 -0
  400. package/lib/duet/{p-d79fa6a4.system.entry.js → p-1b56e37f.system.entry.js} +2 -2
  401. package/lib/duet/{p-70c7a137.system.entry.js → p-1fb54404.system.entry.js} +1 -1
  402. package/lib/duet/p-2043a083.entry.js +4 -0
  403. package/lib/duet/{p-8ac518e1.system.entry.js → p-2118ce4b.system.entry.js} +1 -1
  404. package/lib/duet/p-21f3a17a.system.js +1 -1
  405. package/lib/duet/{p-cfe09501.system.entry.js → p-22a9a885.system.entry.js} +1 -1
  406. package/lib/duet/{p-014edbda.system.entry.js → p-22c45d9c.system.entry.js} +2 -2
  407. package/lib/duet/p-232940fa.system.js +4 -0
  408. package/lib/duet/{p-da7cc3d1.entry.js → p-2622c405.entry.js} +1 -1
  409. package/lib/duet/{p-fc26d56a.entry.js → p-26415995.entry.js} +1 -1
  410. package/lib/duet/{p-792cbd42.system.entry.js → p-26e1dca0.system.entry.js} +2 -2
  411. package/lib/duet/p-28f8fa55.system.entry.js +4 -0
  412. package/lib/duet/{p-e58f4a37.entry.js → p-299e8254.entry.js} +1 -1
  413. package/lib/duet/{p-ebf4a629.entry.js → p-2abe65e5.entry.js} +1 -1
  414. package/lib/duet/{p-3b85f649.system.entry.js → p-31382b41.system.entry.js} +1 -1
  415. package/lib/duet/p-31a0d4f6.system.entry.js +4 -0
  416. package/lib/duet/{p-e52631b1.entry.js → p-3469e15c.entry.js} +1 -1
  417. package/lib/duet/{p-b6cf05c0.system.entry.js → p-35762693.system.entry.js} +1 -1
  418. package/lib/duet/p-38eb6aa3.system.entry.js +4 -0
  419. package/lib/duet/{p-3878572f.entry.js → p-3a0fde44.entry.js} +1 -1
  420. package/lib/duet/{p-34aa54e1.entry.js → p-3e27b126.entry.js} +1 -1
  421. package/lib/duet/{p-b6e50064.entry.js → p-3f78ed00.entry.js} +1 -1
  422. package/lib/duet/{p-9f975819.system.entry.js → p-3f96e6be.system.entry.js} +2 -2
  423. package/lib/duet/{p-8156e5a5.system.entry.js → p-3fbc446a.system.entry.js} +1 -1
  424. package/lib/duet/{p-b52f8ce1.entry.js → p-403df195.entry.js} +1 -1
  425. package/lib/duet/{p-4b71c8e9.entry.js → p-406ec3c8.entry.js} +1 -1
  426. package/lib/duet/{p-4903f5c4.system.entry.js → p-442872df.system.entry.js} +1 -1
  427. package/lib/duet/p-449c2232.system.entry.js +4 -0
  428. package/lib/duet/{p-64710156.entry.js → p-4655fafc.entry.js} +1 -1
  429. package/lib/duet/{p-e91385fb.js → p-4669b0af.js} +1 -1
  430. package/lib/duet/{p-39c72a24.system.entry.js → p-4801f8f8.system.entry.js} +2 -2
  431. package/lib/duet/{p-03baceb5.js → p-4883df66.js} +1 -1
  432. package/lib/duet/{p-dde971f6.system.entry.js → p-4abb665b.system.entry.js} +2 -2
  433. package/lib/duet/{p-a64cf9f8.system.entry.js → p-4ce91f2d.system.entry.js} +1 -1
  434. package/lib/duet/{p-2e54c1f8.system.entry.js → p-4e958a51.system.entry.js} +2 -2
  435. package/lib/duet/{p-f5e12c14.system.entry.js → p-5167068e.system.entry.js} +1 -1
  436. package/lib/duet/{p-edbc2774.entry.js → p-52e15824.entry.js} +1 -1
  437. package/lib/duet/{p-c8536d3f.entry.js → p-53da8993.entry.js} +1 -1
  438. package/lib/duet/{p-ad70248d.entry.js → p-556983df.entry.js} +1 -1
  439. package/lib/duet/{p-a620d583.system.entry.js → p-56b259c4.system.entry.js} +1 -1
  440. package/lib/duet/{p-7966dc5b.system.entry.js → p-57b02e39.system.entry.js} +2 -2
  441. package/lib/duet/{p-bc7c47f4.system.entry.js → p-5aa42e6e.system.entry.js} +2 -2
  442. package/lib/duet/p-5b014c86.system.js +4 -0
  443. package/lib/duet/{p-5ac682b3.system.entry.js → p-5c08947a.system.entry.js} +1 -1
  444. package/lib/duet/{p-f30d3b09.system.entry.js → p-5e25fed6.system.entry.js} +1 -1
  445. package/lib/duet/{p-88c01d1c.entry.js → p-6043a34d.entry.js} +1 -1
  446. package/lib/duet/{p-baef301c.system.entry.js → p-618fae79.system.entry.js} +2 -2
  447. package/lib/duet/{p-ca112a3f.system.entry.js → p-61989371.system.entry.js} +2 -2
  448. package/lib/duet/p-6278bb45.system.entry.js +4 -0
  449. package/lib/duet/{p-096d7724.entry.js → p-62e31f4f.entry.js} +1 -1
  450. package/lib/duet/{p-2bec5be2.entry.js → p-64599d16.entry.js} +1 -1
  451. package/lib/duet/{p-c655b7d1.system.entry.js → p-64c58523.system.entry.js} +1 -1
  452. package/lib/duet/p-6665a293.entry.js +4 -0
  453. package/lib/duet/p-668716b8.system.js +4 -0
  454. package/lib/duet/{p-3c2f1fd0.entry.js → p-678e5dee.entry.js} +1 -1
  455. package/lib/duet/{p-ea4f5d13.system.entry.js → p-6878509c.system.entry.js} +1 -1
  456. package/lib/duet/{p-651d430e.system.entry.js → p-68c41c1e.system.entry.js} +2 -2
  457. package/lib/duet/{p-2d7d1ff7.entry.js → p-68e69fb0.entry.js} +1 -1
  458. package/lib/duet/p-69180c8a.entry.js +4 -0
  459. package/lib/duet/{p-0414004a.entry.js → p-69ed2463.entry.js} +1 -1
  460. package/lib/duet/{p-cc48a8a0.system.entry.js → p-6a11cde0.system.entry.js} +2 -2
  461. package/lib/duet/p-6ac42c0b.system.entry.js +4 -0
  462. package/lib/duet/{p-86b83b73.system.entry.js → p-6cd9e728.system.entry.js} +2 -2
  463. package/lib/duet/{p-9601bad5.entry.js → p-6ff847d2.entry.js} +1 -1
  464. package/lib/duet/{p-ee0ca0fd.entry.js → p-70046a69.entry.js} +1 -1
  465. package/lib/duet/{p-469892f4.system.entry.js → p-7041ce72.system.entry.js} +1 -1
  466. package/lib/duet/{p-3092d696.system.entry.js → p-7047ac99.system.entry.js} +2 -2
  467. package/lib/duet/p-719b38fe.system.js +4 -0
  468. package/lib/duet/{p-0f2664ed.entry.js → p-73e91b76.entry.js} +1 -1
  469. package/lib/duet/p-75daef16.system.js +4 -0
  470. package/lib/duet/p-7671b7b7.system.js +4 -0
  471. package/lib/duet/{p-5f46f02e.system.entry.js → p-76837ecf.system.entry.js} +1 -1
  472. package/lib/duet/{p-33b3aba4.system.js → p-77b6e4ba.system.js} +1 -1
  473. package/lib/duet/p-7862b921.entry.js +4 -0
  474. package/lib/duet/{p-bb5d22df.entry.js → p-79b111a8.entry.js} +1 -1
  475. package/lib/duet/{p-5ab4d5d4.entry.js → p-79f248ef.entry.js} +1 -1
  476. package/lib/duet/{p-c135039c.entry.js → p-7b2e5d7f.entry.js} +1 -1
  477. package/lib/duet/p-7c29d36a.system.js +4 -0
  478. package/lib/duet/{p-c52e0917.entry.js → p-7cc4dfa7.entry.js} +1 -1
  479. package/lib/duet/{p-f5c2ccce.entry.js → p-7d836058.entry.js} +1 -1
  480. package/lib/duet/p-7ff3e582.entry.js +4 -0
  481. package/lib/duet/{p-90f97748.entry.js → p-81107718.entry.js} +1 -1
  482. package/lib/duet/{p-22acfa83.entry.js → p-846ff870.entry.js} +1 -1
  483. package/lib/duet/{p-e62f72a3.entry.js → p-8517c898.entry.js} +1 -1
  484. package/lib/duet/{p-7a7da6cf.system.entry.js → p-867ac9cc.system.entry.js} +2 -2
  485. package/lib/duet/{p-0b38374b.system.entry.js → p-8683ae46.system.entry.js} +1 -1
  486. package/lib/duet/p-87dd7bf3.system.js +4 -0
  487. package/lib/duet/p-8972381a.system.js +4 -0
  488. package/lib/duet/{p-6d71214f.entry.js → p-89f3b845.entry.js} +1 -1
  489. package/lib/duet/{p-00743d6c.system.entry.js → p-8b3ca5ab.system.entry.js} +1 -1
  490. package/lib/duet/{p-fb7d7222.entry.js → p-8b5fcd98.entry.js} +1 -1
  491. package/lib/duet/p-8d0d6e06.system.js +4 -0
  492. package/lib/duet/p-8e1da663.system.js +4 -0
  493. package/lib/duet/p-8f477bd6.system.js +1 -1
  494. package/lib/duet/{p-db2865b5.entry.js → p-90c5eed1.entry.js} +1 -1
  495. package/lib/duet/{p-673a726a.entry.js → p-91aef612.entry.js} +1 -1
  496. package/lib/duet/{p-9f65b014.system.entry.js → p-92978891.system.entry.js} +1 -1
  497. package/lib/duet/{p-729f35d8.system.entry.js → p-930e7709.system.entry.js} +2 -2
  498. package/lib/duet/{p-00a893c1.js → p-9323e964.js} +1 -1
  499. package/lib/duet/{p-5fb428c8.system.entry.js → p-93877e30.system.entry.js} +2 -2
  500. package/lib/duet/{p-97076e02.entry.js → p-93c389a8.entry.js} +1 -1
  501. package/lib/duet/{p-f7793f52.entry.js → p-94f4e0bf.entry.js} +1 -1
  502. package/lib/duet/{p-1e3f0d63.system.entry.js → p-9c7d954f.system.entry.js} +1 -1
  503. package/lib/duet/p-9d033a04.system.js +1 -1
  504. package/lib/duet/{p-9c5860a3.entry.js → p-9f04f069.entry.js} +1 -1
  505. package/lib/duet/{p-92c7c0ba.entry.js → p-a1b259b5.entry.js} +1 -1
  506. package/lib/duet/{p-1e88edec.entry.js → p-a31ec36c.entry.js} +1 -1
  507. package/lib/duet/{p-e2daed97.entry.js → p-a3a93783.entry.js} +1 -1
  508. package/lib/duet/{p-b42b2676.entry.js → p-a42e4e99.entry.js} +1 -1
  509. package/lib/duet/{p-15a77012.system.entry.js → p-a5d3e6fb.system.entry.js} +1 -1
  510. package/lib/duet/{p-f702fd53.entry.js → p-a65edc8c.entry.js} +1 -1
  511. package/lib/duet/{p-1853e4e5.system.entry.js → p-a7c0ac21.system.entry.js} +2 -2
  512. package/lib/duet/{p-5f2fc4bd.entry.js → p-aa326c4e.entry.js} +1 -1
  513. package/lib/duet/{p-b41ed3c4.entry.js → p-ab981ff7.entry.js} +1 -1
  514. package/lib/duet/{p-2e54c214.entry.js → p-ac711c85.entry.js} +1 -1
  515. package/lib/duet/{p-31d63beb.system.entry.js → p-acb44157.system.entry.js} +1 -1
  516. package/lib/duet/{p-bdb50607.system.entry.js → p-ae8732d6.system.entry.js} +2 -2
  517. package/lib/duet/{p-ab2d8091.entry.js → p-aeccbda2.entry.js} +1 -1
  518. package/lib/duet/p-b1db3006.js +1 -1
  519. package/lib/duet/{p-0c203d28.entry.js → p-b223f9f3.entry.js} +1 -1
  520. package/lib/duet/{p-c8836a67.system.entry.js → p-b440e72b.system.entry.js} +1 -1
  521. package/lib/duet/{p-9d317471.entry.js → p-b4d48cd1.entry.js} +1 -1
  522. package/lib/duet/{p-30d1b2b5.entry.js → p-b66ecbb2.entry.js} +1 -1
  523. package/lib/duet/{p-0ea3453c.system.entry.js → p-b8c3530f.system.entry.js} +1 -1
  524. package/lib/duet/{p-d86480ea.system.entry.js → p-b9122050.system.entry.js} +1 -1
  525. package/lib/duet/{p-250745c0.system.entry.js → p-b932a1dc.system.entry.js} +2 -2
  526. package/lib/duet/p-b99c00fa.system.js +4 -0
  527. package/lib/duet/{p-fc6d2bf4.entry.js → p-bd988e8e.entry.js} +1 -1
  528. package/lib/duet/{p-20767b15.system.entry.js → p-c05d40ff.system.entry.js} +1 -1
  529. package/lib/duet/{p-7be35e53.system.entry.js → p-c2884d84.system.entry.js} +2 -2
  530. package/lib/duet/p-c30a5f7c.system.js +4 -0
  531. package/lib/duet/{p-e96bed1e.system.entry.js → p-c4162949.system.entry.js} +1 -1
  532. package/lib/duet/{p-6b2c127a.entry.js → p-c67fb8ae.entry.js} +1 -1
  533. package/lib/duet/{p-457ae87b.system.entry.js → p-c7719838.system.entry.js} +1 -1
  534. package/lib/duet/{p-42c64bb8.system.entry.js → p-c7d985bf.system.entry.js} +2 -2
  535. package/lib/duet/{p-73c9436a.entry.js → p-c94181d2.entry.js} +1 -1
  536. package/lib/duet/p-c97109b5.system.js +4 -0
  537. package/lib/duet/{p-f9f1c707.system.entry.js → p-cb01acfa.system.entry.js} +2 -2
  538. package/lib/duet/{p-aa634481.entry.js → p-cbe9191a.entry.js} +1 -1
  539. package/lib/duet/{p-51328149.entry.js → p-cbf7f63b.entry.js} +1 -1
  540. package/lib/duet/{p-9bdf6ce2.entry.js → p-cefb4bab.entry.js} +1 -1
  541. package/lib/duet/{p-a322b729.entry.js → p-d0dd55f5.entry.js} +1 -1
  542. package/lib/duet/{p-79266582.system.entry.js → p-d1edbad6.system.entry.js} +1 -1
  543. package/lib/duet/{p-0dfe14d3.entry.js → p-d3384a8b.entry.js} +1 -1
  544. package/lib/duet/{p-2556c6f0.system.entry.js → p-d366b0ac.system.entry.js} +2 -2
  545. package/lib/duet/{p-b3a1ea89.system.entry.js → p-d3e74991.system.entry.js} +2 -2
  546. package/lib/duet/{p-b529eb0c.system.entry.js → p-d5ac9c19.system.entry.js} +2 -2
  547. package/lib/duet/{p-24bc0b8c.entry.js → p-d60fc476.entry.js} +1 -1
  548. package/lib/duet/{p-0762d0ce.system.entry.js → p-d97155db.system.entry.js} +2 -2
  549. package/lib/duet/{p-73242991.entry.js → p-da858b14.entry.js} +1 -1
  550. package/lib/duet/p-daea7760.entry.js +4 -0
  551. package/lib/duet/{p-85605193.system.entry.js → p-e0321b18.system.entry.js} +2 -2
  552. package/lib/duet/{p-fb238069.entry.js → p-e1178f0e.entry.js} +1 -1
  553. package/lib/duet/{p-a276bfbd.entry.js → p-e2d5f327.entry.js} +1 -1
  554. package/lib/duet/{p-a922b309.system.entry.js → p-e4a8487e.system.entry.js} +2 -2
  555. package/lib/duet/{p-7ee29cc1.system.entry.js → p-e5fbc547.system.entry.js} +2 -2
  556. package/lib/duet/{p-54c07ffa.system.entry.js → p-e82882cb.system.entry.js} +1 -1
  557. package/lib/duet/p-e8f76d19.system.entry.js +4 -0
  558. package/lib/duet/{p-9b992ce9.entry.js → p-ea2375d5.entry.js} +1 -1
  559. package/lib/duet/{p-703c3662.system.entry.js → p-ebf8ad5c.system.entry.js} +2 -2
  560. package/lib/duet/{p-37ee4ceb.system.entry.js → p-ec2b5cc2.system.entry.js} +2 -2
  561. package/lib/duet/p-ecf1f6cd.system.js +4 -0
  562. package/lib/duet/p-ed5a5071.system.js +4 -0
  563. package/lib/duet/{p-285b2d7b.system.entry.js → p-f158a882.system.entry.js} +1 -1
  564. package/lib/duet/{p-84390ead.entry.js → p-f6476f51.entry.js} +1 -1
  565. package/lib/duet/{p-a095c36f.system.entry.js → p-f67da334.system.entry.js} +2 -2
  566. package/lib/duet/{p-acfae908.system.entry.js → p-f69e737e.system.entry.js} +2 -2
  567. package/lib/duet/{p-e4fd145a.entry.js → p-f89001e8.entry.js} +1 -1
  568. package/lib/duet/{p-3768dda7.system.entry.js → p-faefd02d.system.entry.js} +2 -2
  569. package/lib/duet/{p-29a6d3b3.entry.js → p-fd0d794b.entry.js} +1 -1
  570. package/lib/duet/{p-3344fca3.entry.js → p-fdcc3016.entry.js} +1 -1
  571. package/lib/duet/p-ff9db811.js +5 -0
  572. package/lib/esm/duet-action-button.entry.js +9 -9
  573. package/lib/esm/duet-alert.entry.js +6 -6
  574. package/lib/esm/duet-badge.entry.js +3 -3
  575. package/lib/esm/duet-banner.entry.js +4 -4
  576. package/lib/esm/duet-breadcrumb.entry.js +5 -5
  577. package/lib/esm/duet-breadcrumbs.entry.js +4 -4
  578. package/lib/esm/duet-button_2.entry.js +7 -7
  579. package/lib/esm/duet-callout.entry.js +3 -3
  580. package/lib/esm/duet-caption_4.entry.js +26 -9
  581. package/lib/esm/duet-card.entry.js +7 -7
  582. package/lib/esm/duet-checkbox.entry.js +4 -4
  583. package/lib/esm/duet-checkmark.entry.js +2 -2
  584. package/lib/esm/duet-chip.entry.js +4 -4
  585. package/lib/esm/duet-choice_2.entry.js +11 -11
  586. package/lib/esm/duet-collapsible.entry.js +7 -7
  587. package/lib/esm/duet-combobox.entry.js +6 -6
  588. package/lib/esm/duet-contact-card.entry.js +5 -5
  589. package/lib/esm/duet-cookie-consent.entry.js +3 -3
  590. package/lib/esm/duet-date-picker.entry.js +7 -7
  591. package/lib/esm/duet-divider_2.entry.js +3 -3
  592. package/lib/esm/duet-editable-table_3.entry.js +10 -10
  593. package/lib/esm/duet-empty-state.entry.js +3 -3
  594. package/lib/esm/duet-fieldset.entry.js +5 -5
  595. package/lib/esm/duet-footer.entry.js +6 -6
  596. package/lib/esm/duet-grid_2.entry.js +3 -3
  597. package/lib/esm/duet-header_2.entry.js +9 -9
  598. package/lib/esm/duet-hero.entry.js +6 -6
  599. package/lib/esm/duet-icon.entry.js +4 -4
  600. package/lib/esm/duet-input_2.entry.js +8 -8
  601. package/lib/esm/duet-layout.entry.js +2 -2
  602. package/lib/esm/duet-list_2.entry.js +3 -3
  603. package/lib/esm/duet-menu-bar-button.entry.js +3 -3
  604. package/lib/esm/duet-menu-bar-dropdown-link.entry.js +4 -4
  605. package/lib/esm/duet-menu-bar-dropdown.entry.js +4 -4
  606. package/lib/esm/duet-menu-bar-link.entry.js +3 -3
  607. package/lib/esm/duet-menu-bar.entry.js +3 -3
  608. package/lib/esm/duet-modal.entry.js +10 -10
  609. package/lib/esm/duet-multiselect.entry.js +7 -7
  610. package/lib/esm/duet-nav.entry.js +2 -2
  611. package/lib/esm/duet-notification_2.entry.js +5 -5
  612. package/lib/esm/duet-number-input.entry.js +7 -7
  613. package/lib/esm/duet-page-heading.entry.js +3 -3
  614. package/lib/esm/duet-pagination_2.entry.js +9 -9
  615. package/lib/esm/duet-popup-menu-item.entry.js +3 -3
  616. package/lib/esm/duet-popup-menu.entry.js +5 -5
  617. package/lib/esm/duet-progress.entry.js +6 -6
  618. package/lib/esm/duet-promo-card.entry.js +4 -4
  619. package/lib/esm/duet-radio_2.entry.js +5 -5
  620. package/lib/esm/duet-range-slider.entry.js +5 -5
  621. package/lib/esm/duet-scrollable_3.entry.js +7 -7
  622. package/lib/esm/duet-section-layout.entry.js +2 -2
  623. package/lib/esm/duet-select.entry.js +5 -5
  624. package/lib/esm/duet-shaped-image.entry.js +2 -2
  625. package/lib/esm/duet-show-more.entry.js +7 -7
  626. package/lib/esm/duet-slideout-lang.entry.js +5 -5
  627. package/lib/esm/duet-slideout-link.entry.js +3 -3
  628. package/lib/esm/duet-slideout-panel-dropdown.entry.js +3 -3
  629. package/lib/esm/duet-slideout-panel.entry.js +7 -7
  630. package/lib/esm/duet-slideout.entry.js +9 -9
  631. package/lib/esm/duet-step_2.entry.js +5 -5
  632. package/lib/esm/duet-submenu-bar-dropdown-link.entry.js +4 -4
  633. package/lib/esm/duet-submenu-bar-dropdown.entry.js +4 -4
  634. package/lib/esm/duet-submenu-bar-link.entry.js +4 -4
  635. package/lib/esm/duet-submenu-bar.entry.js +4 -4
  636. package/lib/esm/duet-textarea.entry.js +5 -5
  637. package/lib/esm/duet-toggle.entry.js +4 -4
  638. package/lib/esm/duet-toolbar-dropdown-link.entry.js +4 -4
  639. package/lib/esm/duet-toolbar-dropdown.entry.js +4 -4
  640. package/lib/esm/duet-toolbar-link.entry.js +3 -3
  641. package/lib/esm/duet-toolbar.entry.js +2 -2
  642. package/lib/esm/duet-tooltip-button_2.entry.js +5 -5
  643. package/lib/esm/duet-tooltip.entry.js +8 -8
  644. package/lib/esm/duet-tray.entry.js +6 -6
  645. package/lib/esm/duet-upload-aria-status.entry.js +2 -2
  646. package/lib/esm/duet-upload-item.entry.js +6 -6
  647. package/lib/esm/duet-visually-hidden.entry.js +2 -2
  648. package/lib/esm/duet.js +5 -12
  649. package/lib/esm/{errorcodes.utils-47fc5d49.js → errorcodes.utils-424b1197.js} +2 -2
  650. package/lib/esm/{focus-utils-8fc4feb5.js → focus-utils-d927e096.js} +1 -1
  651. package/lib/esm/{index-b1b085ac.js → index-bb518df4.js} +505 -183
  652. package/lib/esm/{language-utils-9d850f6c.js → language-utils-9ff76444.js} +1 -1
  653. package/lib/esm/loader.js +4 -13
  654. package/lib/esm-es5/app-globals-de2a5510.js +1 -1
  655. package/lib/esm-es5/{bodyScrollLock.es6-61b5e9a4.js → bodyScrollLock.es6-8dc7cca7.js} +1 -1
  656. package/lib/esm-es5/{create-id-981107da.js → create-id-2b0cd46d.js} +1 -1
  657. package/lib/esm-es5/duet-action-button.entry.js +2 -2
  658. package/lib/esm-es5/duet-alert.entry.js +2 -2
  659. package/lib/esm-es5/duet-badge.entry.js +1 -1
  660. package/lib/esm-es5/duet-banner.entry.js +1 -1
  661. package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
  662. package/lib/esm-es5/duet-breadcrumbs.entry.js +2 -2
  663. package/lib/esm-es5/duet-button_2.entry.js +2 -2
  664. package/lib/esm-es5/duet-callout.entry.js +1 -1
  665. package/lib/esm-es5/duet-caption_4.entry.js +2 -2
  666. package/lib/esm-es5/duet-card.entry.js +1 -1
  667. package/lib/esm-es5/duet-checkbox.entry.js +2 -2
  668. package/lib/esm-es5/duet-checkmark.entry.js +1 -1
  669. package/lib/esm-es5/duet-chip.entry.js +2 -2
  670. package/lib/esm-es5/duet-choice_2.entry.js +2 -2
  671. package/lib/esm-es5/duet-collapsible.entry.js +2 -2
  672. package/lib/esm-es5/duet-combobox.entry.js +2 -2
  673. package/lib/esm-es5/duet-contact-card.entry.js +1 -1
  674. package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
  675. package/lib/esm-es5/duet-date-picker.entry.js +2 -2
  676. package/lib/esm-es5/duet-divider_2.entry.js +1 -1
  677. package/lib/esm-es5/duet-editable-table_3.entry.js +2 -2
  678. package/lib/esm-es5/duet-empty-state.entry.js +1 -1
  679. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  680. package/lib/esm-es5/duet-footer.entry.js +2 -2
  681. package/lib/esm-es5/duet-grid_2.entry.js +2 -2
  682. package/lib/esm-es5/duet-header_2.entry.js +2 -2
  683. package/lib/esm-es5/duet-hero.entry.js +2 -2
  684. package/lib/esm-es5/duet-icon.entry.js +2 -2
  685. package/lib/esm-es5/duet-input_2.entry.js +2 -2
  686. package/lib/esm-es5/duet-layout.entry.js +1 -1
  687. package/lib/esm-es5/duet-list_2.entry.js +2 -2
  688. package/lib/esm-es5/duet-menu-bar-button.entry.js +2 -2
  689. package/lib/esm-es5/duet-menu-bar-dropdown-link.entry.js +1 -1
  690. package/lib/esm-es5/duet-menu-bar-dropdown.entry.js +2 -2
  691. package/lib/esm-es5/duet-menu-bar-link.entry.js +1 -1
  692. package/lib/esm-es5/duet-menu-bar.entry.js +1 -1
  693. package/lib/esm-es5/duet-modal.entry.js +2 -2
  694. package/lib/esm-es5/duet-multiselect.entry.js +2 -2
  695. package/lib/esm-es5/duet-nav.entry.js +1 -1
  696. package/lib/esm-es5/duet-notification_2.entry.js +2 -2
  697. package/lib/esm-es5/duet-number-input.entry.js +2 -2
  698. package/lib/esm-es5/duet-page-heading.entry.js +1 -1
  699. package/lib/esm-es5/duet-pagination_2.entry.js +2 -2
  700. package/lib/esm-es5/duet-popup-menu-item.entry.js +2 -2
  701. package/lib/esm-es5/duet-popup-menu.entry.js +2 -2
  702. package/lib/esm-es5/duet-progress.entry.js +1 -1
  703. package/lib/esm-es5/duet-promo-card.entry.js +1 -1
  704. package/lib/esm-es5/duet-radio_2.entry.js +2 -2
  705. package/lib/esm-es5/duet-range-slider.entry.js +2 -2
  706. package/lib/esm-es5/duet-scrollable_3.entry.js +2 -2
  707. package/lib/esm-es5/duet-section-layout.entry.js +1 -1
  708. package/lib/esm-es5/duet-select.entry.js +2 -2
  709. package/lib/esm-es5/duet-shaped-image.entry.js +1 -1
  710. package/lib/esm-es5/duet-show-more.entry.js +1 -1
  711. package/lib/esm-es5/duet-slideout-lang.entry.js +1 -1
  712. package/lib/esm-es5/duet-slideout-link.entry.js +1 -1
  713. package/lib/esm-es5/duet-slideout-panel-dropdown.entry.js +2 -2
  714. package/lib/esm-es5/duet-slideout-panel.entry.js +2 -2
  715. package/lib/esm-es5/duet-slideout.entry.js +2 -2
  716. package/lib/esm-es5/duet-step_2.entry.js +2 -2
  717. package/lib/esm-es5/duet-submenu-bar-dropdown-link.entry.js +1 -1
  718. package/lib/esm-es5/duet-submenu-bar-dropdown.entry.js +1 -1
  719. package/lib/esm-es5/duet-submenu-bar-link.entry.js +1 -1
  720. package/lib/esm-es5/duet-submenu-bar.entry.js +2 -2
  721. package/lib/esm-es5/duet-textarea.entry.js +2 -2
  722. package/lib/esm-es5/duet-toggle.entry.js +2 -2
  723. package/lib/esm-es5/duet-toolbar-dropdown-link.entry.js +1 -1
  724. package/lib/esm-es5/duet-toolbar-dropdown.entry.js +2 -2
  725. package/lib/esm-es5/duet-toolbar-link.entry.js +1 -1
  726. package/lib/esm-es5/duet-toolbar.entry.js +1 -1
  727. package/lib/esm-es5/duet-tooltip-button_2.entry.js +2 -2
  728. package/lib/esm-es5/duet-tooltip.entry.js +2 -2
  729. package/lib/esm-es5/duet-tray.entry.js +1 -1
  730. package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
  731. package/lib/esm-es5/duet-upload-item.entry.js +2 -2
  732. package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
  733. package/lib/esm-es5/duet.js +1 -1
  734. package/lib/esm-es5/errorcodes.utils-424b1197.js +4 -0
  735. package/lib/esm-es5/{floating-ui.dom.esm-6025c98f.js → floating-ui.dom.esm-efad5c89.js} +2 -2
  736. package/lib/esm-es5/focus-utils-d927e096.js +4 -0
  737. package/lib/esm-es5/index-bb518df4.js +5 -0
  738. package/lib/esm-es5/input-utils-a0225b92.js +4 -0
  739. package/lib/esm-es5/keyboard-utils-5746e126.js +4 -0
  740. package/lib/esm-es5/{language-utils-9d850f6c.js → language-utils-9ff76444.js} +1 -1
  741. package/lib/esm-es5/loader.js +1 -1
  742. package/lib/esm-es5/string-utils-59ad4cb2.js +4 -0
  743. package/lib/esm-es5/teleport-15747328.js +4 -0
  744. package/lib/esm-es5/token-utils-46c8fe31.js +4 -0
  745. package/lib/esm-es5/watch-options-f189118b.js +4 -0
  746. package/lib/loader/index.d.ts +2 -2
  747. package/lib/types/common-types.d.ts +1 -0
  748. package/lib/types/components/duet-alert/duet-alert.d.ts +1 -1
  749. package/lib/types/components/duet-button/duet-button.d.ts +1 -1
  750. package/lib/types/components/duet-choice/duet-choice.d.ts +1 -1
  751. package/lib/types/components/duet-footer/duet-footer.d.ts +1 -1
  752. package/lib/types/components/duet-header/duet-header.d.ts +2 -2
  753. package/lib/types/components/duet-link/duet-link.d.ts +20 -3
  754. package/lib/types/components/duet-notification/duet-notification.d.ts +1 -1
  755. package/lib/types/components/duet-upload/duet-upload.d.ts +1 -1
  756. package/lib/types/components.d.ts +494 -22
  757. package/lib/types/stencil-public-runtime.d.ts +41 -5
  758. package/package.json +6 -6
  759. package/lib/duet/p-1c8634b1.entry.js +0 -4
  760. package/lib/duet/p-1e709927.system.entry.js +0 -4
  761. package/lib/duet/p-34ea0849.system.js +0 -4
  762. package/lib/duet/p-3538b0af.entry.js +0 -4
  763. package/lib/duet/p-43660fa9.system.js +0 -4
  764. package/lib/duet/p-4c04b1c6.entry.js +0 -4
  765. package/lib/duet/p-51721695.system.js +0 -4
  766. package/lib/duet/p-5c8e5f29.system.js +0 -4
  767. package/lib/duet/p-5f6bd5db.system.js +0 -4
  768. package/lib/duet/p-60b4b7c1.system.js +0 -4
  769. package/lib/duet/p-6aa821df.system.js +0 -4
  770. package/lib/duet/p-6d09651a.entry.js +0 -4
  771. package/lib/duet/p-6d620156.system.entry.js +0 -4
  772. package/lib/duet/p-733bb740.js +0 -5
  773. package/lib/duet/p-737167be.system.js +0 -4
  774. package/lib/duet/p-8304e300.system.entry.js +0 -4
  775. package/lib/duet/p-962a83ef.entry.js +0 -4
  776. package/lib/duet/p-9f97eb07.system.js +0 -5
  777. package/lib/duet/p-a659351d.system.js +0 -4
  778. package/lib/duet/p-a6f6f073.system.entry.js +0 -4
  779. package/lib/duet/p-a7915b7d.entry.js +0 -4
  780. package/lib/duet/p-acb9ba1b.system.entry.js +0 -4
  781. package/lib/duet/p-b6d51921.system.js +0 -4
  782. package/lib/duet/p-b760c72b.system.js +0 -4
  783. package/lib/duet/p-c466bad9.system.js +0 -4
  784. package/lib/duet/p-d863e150.system.js +0 -4
  785. package/lib/duet/p-e30d6bee.system.entry.js +0 -4
  786. package/lib/duet/p-e566ff11.system.js +0 -4
  787. package/lib/duet/p-eb55ccd2.system.js +0 -4
  788. package/lib/duet/p-fa5bcc42.system.js +0 -4
  789. package/lib/duet/p-fc1fee5c.system.js +0 -4
  790. package/lib/duet/p-ff9ef21e.system.entry.js +0 -4
  791. package/lib/esm/polyfills/css-shim.js +0 -1
  792. package/lib/esm-es5/errorcodes.utils-47fc5d49.js +0 -4
  793. package/lib/esm-es5/focus-utils-8fc4feb5.js +0 -4
  794. package/lib/esm-es5/index-b1b085ac.js +0 -5
  795. package/lib/esm-es5/input-utils-de45e099.js +0 -4
  796. package/lib/esm-es5/keyboard-utils-d237bd5a.js +0 -4
  797. package/lib/esm-es5/string-utils-5954f458.js +0 -4
  798. package/lib/esm-es5/teleport-467626fe.js +0 -4
  799. package/lib/esm-es5/token-utils-2d3af0db.js +0 -4
  800. package/lib/esm-es5/watch-options-dd55bce8.js +0 -4
  801. /package/lib/cjs/{bodyScrollLock.es6-6ef1142a.js → bodyScrollLock.es6-83f334d1.js} +0 -0
  802. /package/lib/cjs/{common-strings-de17f887.js → common-strings-17770d7a.js} +0 -0
  803. /package/lib/cjs/{create-id-c3b984b1.js → create-id-167cd350.js} +0 -0
  804. /package/lib/cjs/{floating-ui.dom.esm-d537b048.js → floating-ui.dom.esm-a7d59d53.js} +0 -0
  805. /package/lib/cjs/{input-utils-b5e8f524.js → input-utils-b4615782.js} +0 -0
  806. /package/lib/cjs/{is-internet-explorer-91361c56.js → is-internet-explorer-76c3b538.js} +0 -0
  807. /package/lib/cjs/{js-utils-134e0318.js → js-utils-b20cfc79.js} +0 -0
  808. /package/lib/cjs/{keyboard-utils-bb32119b.js → keyboard-utils-02441bc5.js} +0 -0
  809. /package/lib/cjs/{nudge-82021e4f.js → nudge-ee03ce2e.js} +0 -0
  810. /package/lib/cjs/{slot-query-1624497e.js → slot-query-b7555763.js} +0 -0
  811. /package/lib/cjs/{string-utils-5cadd058.js → string-utils-51a2f59f.js} +0 -0
  812. /package/lib/cjs/{teleport-3166d264.js → teleport-af825e04.js} +0 -0
  813. /package/lib/cjs/{themeable-component-fdeaef9f.js → themeable-component-0be6d1f4.js} +0 -0
  814. /package/lib/cjs/{token-utils-71db4785.js → token-utils-dbfeff2e.js} +0 -0
  815. /package/lib/cjs/{watch-options-d88afac0.js → watch-options-1773d69f.js} +0 -0
  816. /package/lib/dist-custom-elements/{p-8adb9463.js → p-00c8a755.js} +0 -0
  817. /package/lib/dist-custom-elements/{p-3ae39071.js → p-040f8831.js} +0 -0
  818. /package/lib/dist-custom-elements/{p-bd779757.js → p-141e14d0.js} +0 -0
  819. /package/lib/dist-custom-elements/{p-5a9d75e1.js → p-1a395a8d.js} +0 -0
  820. /package/lib/dist-custom-elements/{p-9c1b089a.js → p-24853ebf.js} +0 -0
  821. /package/lib/dist-custom-elements/{p-704245ef.js → p-268171f7.js} +0 -0
  822. /package/lib/dist-custom-elements/{p-0b3f675e.js → p-3d8d557b.js} +0 -0
  823. /package/lib/dist-custom-elements/{p-c1325e35.js → p-45f71a69.js} +0 -0
  824. /package/lib/dist-custom-elements/{p-d8549efe.js → p-56ac3289.js} +0 -0
  825. /package/lib/dist-custom-elements/{p-56118313.js → p-77f2dbee.js} +0 -0
  826. /package/lib/dist-custom-elements/{p-12721178.js → p-a1371eee.js} +0 -0
  827. /package/lib/dist-custom-elements/{p-4ebf1618.js → p-d48735b6.js} +0 -0
  828. /package/lib/dist-custom-elements/{p-76f00bd5.js → p-dade978b.js} +0 -0
  829. /package/lib/dist-custom-elements/{p-9d915d45.js → p-f8c76b25.js} +0 -0
  830. /package/lib/duet/{p-8adb9463.js → p-00c8a755.js} +0 -0
  831. /package/lib/duet/{p-3ae39071.js → p-040f8831.js} +0 -0
  832. /package/lib/duet/{p-2bb34e3d.js → p-0b31864f.js} +0 -0
  833. /package/lib/duet/{p-bd779757.js → p-141e14d0.js} +0 -0
  834. /package/lib/duet/{p-5a9d75e1.js → p-1a395a8d.js} +0 -0
  835. /package/lib/duet/{p-9c1b089a.js → p-24853ebf.js} +0 -0
  836. /package/lib/duet/{p-704245ef.js → p-268171f7.js} +0 -0
  837. /package/lib/duet/{p-c7ae95bd.system.js → p-36b36a8e.system.js} +0 -0
  838. /package/lib/duet/{p-0b3f675e.js → p-3d8d557b.js} +0 -0
  839. /package/lib/duet/{p-c1325e35.js → p-45f71a69.js} +0 -0
  840. /package/lib/duet/{p-56118313.js → p-77f2dbee.js} +0 -0
  841. /package/lib/duet/{p-12721178.js → p-a1371eee.js} +0 -0
  842. /package/lib/duet/{p-f077c646.js → p-cc1909de.js} +0 -0
  843. /package/lib/duet/{p-4ebf1618.js → p-d48735b6.js} +0 -0
  844. /package/lib/duet/{p-76f00bd5.js → p-dade978b.js} +0 -0
  845. /package/lib/duet/{p-9d915d45.js → p-f8c76b25.js} +0 -0
  846. /package/lib/esm/{bodyScrollLock.es6-61b5e9a4.js → bodyScrollLock.es6-8dc7cca7.js} +0 -0
  847. /package/lib/esm/{common-strings-97e04e4b.js → common-strings-71f2aabd.js} +0 -0
  848. /package/lib/esm/{create-id-981107da.js → create-id-2b0cd46d.js} +0 -0
  849. /package/lib/esm/{floating-ui.dom.esm-6025c98f.js → floating-ui.dom.esm-efad5c89.js} +0 -0
  850. /package/lib/esm/{input-utils-de45e099.js → input-utils-a0225b92.js} +0 -0
  851. /package/lib/esm/{is-internet-explorer-62b3bdbd.js → is-internet-explorer-032d4dae.js} +0 -0
  852. /package/lib/esm/{js-utils-fa98b8cd.js → js-utils-a35dcc8c.js} +0 -0
  853. /package/lib/esm/{keyboard-utils-d237bd5a.js → keyboard-utils-5746e126.js} +0 -0
  854. /package/lib/esm/{nudge-a828c525.js → nudge-560904c3.js} +0 -0
  855. /package/lib/esm/{slot-query-8c7dce21.js → slot-query-7877f18f.js} +0 -0
  856. /package/lib/esm/{string-utils-5954f458.js → string-utils-59ad4cb2.js} +0 -0
  857. /package/lib/esm/{teleport-467626fe.js → teleport-15747328.js} +0 -0
  858. /package/lib/esm/{themeable-component-cb76be7c.js → themeable-component-fdce4fd7.js} +0 -0
  859. /package/lib/esm/{token-utils-2d3af0db.js → token-utils-46c8fe31.js} +0 -0
  860. /package/lib/esm/{watch-options-dd55bce8.js → watch-options-f189118b.js} +0 -0
  861. /package/lib/esm-es5/{common-strings-97e04e4b.js → common-strings-71f2aabd.js} +0 -0
  862. /package/lib/esm-es5/{is-internet-explorer-62b3bdbd.js → is-internet-explorer-032d4dae.js} +0 -0
  863. /package/lib/esm-es5/{js-utils-fa98b8cd.js → js-utils-a35dcc8c.js} +0 -0
  864. /package/lib/esm-es5/{nudge-a828c525.js → nudge-560904c3.js} +0 -0
  865. /package/lib/esm-es5/{slot-query-8c7dce21.js → slot-query-7877f18f.js} +0 -0
  866. /package/lib/esm-es5/{themeable-component-cb76be7c.js → themeable-component-fdce4fd7.js} +0 -0
@@ -2,7 +2,8 @@
2
2
  * Built with Duet Design System
3
3
  */
4
4
  const NAMESPACE = 'duet';
5
- const Env = /* duet */ {"cdnURILocal":"http://0.0.0.0:3334","cdnURIProd":"https://cdn.duetds.com/api","duetIconVersion":"4.0.13"};
5
+ 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: false, hydrateServerSide: false, hydratedAttribute: false, hydratedClass: true, invisiblePrehydration: true, isDebug: false, isDev: false, isTesting: false, lazyLoad: false, 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, 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 };
6
+ const Env = /* duet */ {"cdnURILocal":"http://0.0.0.0:3334","cdnURIProd":"https://cdn.duetds.com/api","duetIconVersion":"4.0.14"};
6
7
 
7
8
  /**
8
9
  * Virtual DOM patching algorithm based on Snabbdom by
@@ -26,6 +27,10 @@ const Build = {
26
27
  isServer: false,
27
28
  isTesting: false,
28
29
  };
30
+ const getAssetPath = (path) => {
31
+ const assetUrl = new URL(path, plt.$resourcesUrl$);
32
+ return assetUrl.origin !== win.location.origin ? assetUrl.href : assetUrl.pathname;
33
+ };
29
34
  const setAssetPath = (path) => (plt.$resourcesUrl$ = path);
30
35
  const createTime = (fnName, tagName = '') => {
31
36
  {
@@ -34,6 +39,13 @@ const createTime = (fnName, tagName = '') => {
34
39
  };
35
40
  }
36
41
  };
42
+ /**
43
+ * Constant for styles to be globally applied to `slot-fb` elements for pseudo-slot behavior.
44
+ *
45
+ * Two cascading rules must be used instead of a `:not()` selector due to Stencil browser
46
+ * support as of Stencil v4.
47
+ */
48
+ const SLOT_FB_CSS = 'slot-fb{display:contents}slot-fb[hidden]{display:none}';
37
49
  const XLINK_NS = 'http://www.w3.org/1999/xlink';
38
50
  /**
39
51
  * Default style mode id
@@ -114,13 +126,13 @@ const h = (nodeName, vnodeData, ...children) => {
114
126
  };
115
127
  walk(children);
116
128
  if (vnodeData) {
117
- // normalize class / classname attributes
118
129
  if (vnodeData.key) {
119
130
  key = vnodeData.key;
120
131
  }
121
132
  if (vnodeData.name) {
122
133
  slotName = vnodeData.name;
123
134
  }
135
+ // normalize class / className attributes
124
136
  {
125
137
  const classData = vnodeData.className || vnodeData.class;
126
138
  if (classData) {
@@ -328,9 +340,9 @@ const registerStyle = (scopeId, cssText, allowCS) => {
328
340
  }
329
341
  styles.set(scopeId, style);
330
342
  };
331
- const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
343
+ const addStyle = (styleContainerNode, cmpMeta, mode) => {
332
344
  var _a;
333
- let scopeId = getScopeId(cmpMeta);
345
+ const scopeId = getScopeId(cmpMeta);
334
346
  const style = styles.get(scopeId);
335
347
  // if an element is NOT connected then getRootNode() will return the wrong root node
336
348
  // so the fallback is to always use the document for the root node in those cases
@@ -345,11 +357,8 @@ const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
345
357
  }
346
358
  if (!appliedStyles.has(scopeId)) {
347
359
  {
348
- // TODO(STENCIL-659): Remove code implementing the CSS variable shim
349
- {
350
- styleElm = doc.createElement('style');
351
- styleElm.innerHTML = style;
352
- }
360
+ styleElm = doc.createElement('style');
361
+ styleElm.innerHTML = style;
353
362
  // Apply CSP nonce to the style tag if it exists
354
363
  const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
355
364
  if (nonce != null) {
@@ -357,6 +366,10 @@ const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
357
366
  }
358
367
  styleContainerNode.insertBefore(styleElm, styleContainerNode.querySelector('link'));
359
368
  }
369
+ // Add styles for `slot-fb` elements if we're using slots outside the Shadow DOM
370
+ if (cmpMeta.$flags$ & 4 /* CMP_FLAGS.hasSlotRelocation */) {
371
+ styleElm.innerHTML += SLOT_FB_CSS;
372
+ }
360
373
  if (appliedStyles) {
361
374
  appliedStyles.add(scopeId);
362
375
  }
@@ -374,7 +387,6 @@ const attachStyles = (hostRef) => {
374
387
  const flags = cmpMeta.$flags$;
375
388
  const endAttachStyles = createTime('attachStyles', cmpMeta.$tagName$);
376
389
  const scopeId = addStyle(elm.shadowRoot ? elm.shadowRoot : elm.getRootNode(), cmpMeta);
377
- // TODO(STENCIL-662): Remove code related to deprecated shadowDomShim field
378
390
  if (flags & 10 /* CMP_FLAGS.needsScopedEncapsulation */) {
379
391
  // only required when we're NOT using native shadow dom (slot)
380
392
  // or this browser doesn't support native shadow dom
@@ -400,6 +412,21 @@ const getScopeId = (cmp, mode) => 'sc-' + (cmp.$tagName$);
400
412
  *
401
413
  * Modified for Stencil's compiler and vdom
402
414
  */
415
+ /**
416
+ * When running a VDom render set properties present on a VDom node onto the
417
+ * corresponding HTML element.
418
+ *
419
+ * Note that this function has special functionality for the `class`,
420
+ * `style`, `key`, and `ref` attributes, as well as event handlers (like
421
+ * `onClick`, etc). All others are just passed through as-is.
422
+ *
423
+ * @param elm the HTMLElement onto which attributes should be set
424
+ * @param memberName the name of the attribute to set
425
+ * @param oldValue the old value for the attribute
426
+ * @param newValue the new value for the attribute
427
+ * @param isSvg whether we're in an svg context or not
428
+ * @param flags bitflags for Vdom variables
429
+ */
403
430
  const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
404
431
  if (oldValue !== newValue) {
405
432
  let isProp = isMemberInElement(elm, memberName);
@@ -476,11 +503,19 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
476
503
  // except for the first character, we keep the event name case
477
504
  memberName = ln[2] + memberName.slice(3);
478
505
  }
479
- if (oldValue) {
480
- plt.rel(elm, memberName, oldValue, false);
481
- }
482
- if (newValue) {
483
- plt.ael(elm, memberName, newValue, false);
506
+ if (oldValue || newValue) {
507
+ // Need to account for "capture" events.
508
+ // If the event name ends with "Capture", we'll update the name to remove
509
+ // the "Capture" suffix and make sure the event listener is setup to handle the capture event.
510
+ const capture = memberName.endsWith(CAPTURE_EVENT_SUFFIX);
511
+ // Make sure we only replace the last instance of "Capture"
512
+ memberName = memberName.replace(CAPTURE_EVENT_REGEX, '');
513
+ if (oldValue) {
514
+ plt.rel(elm, memberName, oldValue, capture);
515
+ }
516
+ if (newValue) {
517
+ plt.ael(elm, memberName, newValue, capture);
518
+ }
484
519
  }
485
520
  }
486
521
  else {
@@ -542,6 +577,8 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
542
577
  };
543
578
  const parseClassListRegex = /\s/;
544
579
  const parseClassList = (value) => (!value ? [] : value.split(parseClassListRegex));
580
+ const CAPTURE_EVENT_SUFFIX = 'Capture';
581
+ const CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + '$');
545
582
  const updateElement = (oldVnode, newVnode, isSvgMode, memberName) => {
546
583
  // if the element passed in is a shadow root, which is a document fragment
547
584
  // then we want to be adding attrs/props to the shadow root's "host" element
@@ -575,6 +612,7 @@ const updateElement = (oldVnode, newVnode, isSvgMode, memberName) => {
575
612
  * @returns the newly created node
576
613
  */
577
614
  const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
615
+ var _a;
578
616
  // tslint:disable-next-line: prefer-const
579
617
  const newVNode = newParentVNode.$children$[childIndex];
580
618
  let i = 0;
@@ -653,6 +691,8 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
653
691
  if (newVNode.$flags$ & (2 /* VNODE_FLAGS.isSlotFallback */ | 1 /* VNODE_FLAGS.isSlotReference */)) {
654
692
  // remember the content reference comment
655
693
  elm['s-sr'] = true;
694
+ // Persist the name of the slot that this slot was going to be projected into.
695
+ elm['s-fs'] = (_a = newVNode.$attrs$) === null || _a === void 0 ? void 0 : _a.slot;
656
696
  // remember the content reference comment
657
697
  elm['s-cr'] = contentRef;
658
698
  // remember the slot name, or empty string for default slot
@@ -669,6 +709,7 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
669
709
  return elm;
670
710
  };
671
711
  const putBackInOriginalLocation = (parentElm, recursive) => {
712
+ var _a;
672
713
  plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
673
714
  const oldSlotChildNodes = parentElm.childNodes;
674
715
  for (let i = oldSlotChildNodes.length - 1; i >= 0; i--) {
@@ -681,9 +722,17 @@ const putBackInOriginalLocation = (parentElm, recursive) => {
681
722
  parentReferenceNode(childNode).insertBefore(childNode, referenceNode(childNode));
682
723
  // remove the old original location comment entirely
683
724
  // later on the patch function will know what to do
684
- // and move this to the correct spot in need be
725
+ // and move this to the correct spot if need be
685
726
  childNode['s-ol'].remove();
686
727
  childNode['s-ol'] = undefined;
728
+ // Reset so we can correctly move the node around again.
729
+ childNode['s-sh'] = undefined;
730
+ // When putting an element node back in its original location,
731
+ // we need to reset the `slot` attribute back to the value it originally had
732
+ // so we can correctly relocate it again in the future
733
+ if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
734
+ childNode.setAttribute('slot', (_a = childNode['s-sn']) !== null && _a !== void 0 ? _a : '');
735
+ }
687
736
  checkSlotRelocate = true;
688
737
  }
689
738
  if (recursive) {
@@ -733,30 +782,31 @@ const addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) =>
733
782
  * @param vnodes a list of virtual DOM nodes to remove
734
783
  * @param startIdx the index at which to start removing nodes (inclusive)
735
784
  * @param endIdx the index at which to stop removing nodes (inclusive)
736
- * @param vnode a VNode
737
- * @param elm an element
738
785
  */
739
- const removeVnodes = (vnodes, startIdx, endIdx, vnode, elm) => {
740
- for (; startIdx <= endIdx; ++startIdx) {
741
- if ((vnode = vnodes[startIdx])) {
742
- elm = vnode.$elm$;
743
- callNodeRefs(vnode);
744
- {
745
- // we're removing this element
746
- // so it's possible we need to show slot fallback content now
747
- checkSlotFallbackVisibility = true;
748
- if (elm['s-ol']) {
749
- // remove the original location comment
750
- elm['s-ol'].remove();
751
- }
752
- else {
753
- // it's possible that child nodes of the node
754
- // that's being removed are slot nodes
755
- putBackInOriginalLocation(elm, true);
786
+ const removeVnodes = (vnodes, startIdx, endIdx) => {
787
+ for (let index = startIdx; index <= endIdx; ++index) {
788
+ const vnode = vnodes[index];
789
+ if (vnode) {
790
+ const elm = vnode.$elm$;
791
+ nullifyVNodeRefs(vnode);
792
+ if (elm) {
793
+ {
794
+ // we're removing this element
795
+ // so it's possible we need to show slot fallback content now
796
+ checkSlotFallbackVisibility = true;
797
+ if (elm['s-ol']) {
798
+ // remove the original location comment
799
+ elm['s-ol'].remove();
800
+ }
801
+ else {
802
+ // it's possible that child nodes of the node
803
+ // that's being removed are slot nodes
804
+ putBackInOriginalLocation(elm, true);
805
+ }
756
806
  }
807
+ // remove the vnode's element from the dom
808
+ elm.remove();
757
809
  }
758
- // remove the vnode's element from the dom
759
- elm.remove();
760
810
  }
761
811
  }
762
812
  };
@@ -1106,42 +1156,53 @@ const patch = (oldVNode, newVNode) => {
1106
1156
  elm.data = text;
1107
1157
  }
1108
1158
  };
1159
+ /**
1160
+ * Adjust the `.hidden` property as-needed on any nodes in a DOM subtree which
1161
+ * are slot fallbacks nodes.
1162
+ *
1163
+ * A slot fallback node should be visible by default. Then, it should be
1164
+ * conditionally hidden if:
1165
+ *
1166
+ * - it has a sibling with a `slot` property set to its slot name or if
1167
+ * - it is a default fallback slot node, in which case we hide if it has any
1168
+ * content
1169
+ *
1170
+ * @param elm the element of interest
1171
+ */
1109
1172
  const updateFallbackSlotVisibility = (elm) => {
1110
- // tslint:disable-next-line: prefer-const
1111
1173
  const childNodes = elm.childNodes;
1112
- let childNode;
1113
- let i;
1114
- let ilen;
1115
- let j;
1116
- let slotNameAttr;
1117
- let nodeType;
1118
- for (i = 0, ilen = childNodes.length; i < ilen; i++) {
1119
- childNode = childNodes[i];
1174
+ for (const childNode of childNodes) {
1120
1175
  if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
1121
1176
  if (childNode['s-sr']) {
1122
1177
  // this is a slot fallback node
1123
1178
  // get the slot name for this slot reference node
1124
- slotNameAttr = childNode['s-sn'];
1179
+ const slotName = childNode['s-sn'];
1125
1180
  // by default always show a fallback slot node
1126
1181
  // then hide it if there are other slots in the light dom
1127
1182
  childNode.hidden = false;
1128
- for (j = 0; j < ilen; j++) {
1129
- nodeType = childNodes[j].nodeType;
1130
- if (childNodes[j]['s-hn'] !== childNode['s-hn'] || slotNameAttr !== '') {
1131
- // this sibling node is from a different component OR is a named fallback slot node
1132
- if (nodeType === 1 /* NODE_TYPE.ElementNode */ && slotNameAttr === childNodes[j].getAttribute('slot')) {
1133
- childNode.hidden = true;
1134
- break;
1183
+ // we need to check all of its sibling nodes in order to see if
1184
+ // `childNode` should be hidden
1185
+ for (const siblingNode of childNodes) {
1186
+ // Don't check the node against itself
1187
+ if (siblingNode !== childNode) {
1188
+ if (siblingNode['s-hn'] !== childNode['s-hn'] || slotName !== '') {
1189
+ // this sibling node is from a different component OR is a named
1190
+ // fallback slot node
1191
+ if (siblingNode.nodeType === 1 /* NODE_TYPE.ElementNode */ &&
1192
+ (slotName === siblingNode.getAttribute('slot') || slotName === siblingNode['s-sn'])) {
1193
+ childNode.hidden = true;
1194
+ break;
1195
+ }
1135
1196
  }
1136
- }
1137
- else {
1138
- // this is a default fallback slot node
1139
- // any element or text node (with content)
1140
- // should hide the default fallback slot node
1141
- if (nodeType === 1 /* NODE_TYPE.ElementNode */ ||
1142
- (nodeType === 3 /* NODE_TYPE.TextNode */ && childNodes[j].textContent.trim() !== '')) {
1143
- childNode.hidden = true;
1144
- break;
1197
+ else {
1198
+ // this is a default fallback slot node
1199
+ // any element or text node (with content)
1200
+ // should hide the default fallback slot node
1201
+ if (siblingNode.nodeType === 1 /* NODE_TYPE.ElementNode */ ||
1202
+ (siblingNode.nodeType === 3 /* NODE_TYPE.TextNode */ && siblingNode.textContent.trim() !== '')) {
1203
+ childNode.hidden = true;
1204
+ break;
1205
+ }
1145
1206
  }
1146
1207
  }
1147
1208
  }
@@ -1151,45 +1212,67 @@ const updateFallbackSlotVisibility = (elm) => {
1151
1212
  }
1152
1213
  }
1153
1214
  };
1215
+ /**
1216
+ * Component-global information about nodes which are either currently being
1217
+ * relocated or will be shortly.
1218
+ */
1154
1219
  const relocateNodes = [];
1155
- const relocateSlotContent = (elm) => {
1220
+ /**
1221
+ * Mark the contents of a slot for relocation via adding references to them to
1222
+ * the {@link relocateNodes} data structure. The actual work of relocating them
1223
+ * will then be handled in {@link renderVdom}.
1224
+ *
1225
+ * @param elm a render node whose child nodes need to be relocated
1226
+ */
1227
+ const markSlotContentForRelocation = (elm) => {
1156
1228
  // tslint:disable-next-line: prefer-const
1157
- let childNode;
1158
1229
  let node;
1159
1230
  let hostContentNodes;
1160
- let slotNameAttr;
1161
- let relocateNodeData;
1162
1231
  let j;
1163
- let i = 0;
1164
- const childNodes = elm.childNodes;
1165
- const ilen = childNodes.length;
1166
- for (; i < ilen; i++) {
1167
- childNode = childNodes[i];
1232
+ for (const childNode of elm.childNodes) {
1233
+ // we need to find child nodes which are slot references so we can then try
1234
+ // to match them up with nodes that need to be relocated
1168
1235
  if (childNode['s-sr'] && (node = childNode['s-cr']) && node.parentNode) {
1169
- // first got the content reference comment node
1170
- // then we got it's parent, which is where all the host content is in now
1236
+ // first get the content reference comment node ('s-cr'), then we get
1237
+ // its parent, which is where all the host content is now
1171
1238
  hostContentNodes = node.parentNode.childNodes;
1172
- slotNameAttr = childNode['s-sn'];
1239
+ const slotName = childNode['s-sn'];
1240
+ // iterate through all the nodes under the location where the host was
1241
+ // originally rendered
1173
1242
  for (j = hostContentNodes.length - 1; j >= 0; j--) {
1174
1243
  node = hostContentNodes[j];
1175
- if (!node['s-cn'] && !node['s-nr'] && node['s-hn'] !== childNode['s-hn']) {
1176
- // let's do some relocating to its new home
1177
- // but never relocate a content reference node
1178
- // that is suppose to always represent the original content location
1179
- if (isNodeLocatedInSlot(node, slotNameAttr)) {
1244
+ // check that the node is not a content reference node or a node
1245
+ // reference and then check that the host name does not match that of
1246
+ // childNode.
1247
+ // In addition, check that the slot either has not already been relocated, or
1248
+ // that its current location's host is not childNode's host. This is essentially
1249
+ // a check so that we don't try to relocate (and then hide) a node that is already
1250
+ // where it should be.
1251
+ if (!node['s-cn'] &&
1252
+ !node['s-nr'] &&
1253
+ node['s-hn'] !== childNode['s-hn'] &&
1254
+ (!BUILD.experimentalSlotFixes )) {
1255
+ // if `node` is located in the slot that `childNode` refers to (via the
1256
+ // `'s-sn'` property) then we need to relocate it from it's current spot
1257
+ // (under the host element parent) to the right slot location
1258
+ if (isNodeLocatedInSlot(node, slotName)) {
1180
1259
  // it's possible we've already decided to relocate this node
1181
- relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);
1260
+ let relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);
1182
1261
  // made some changes to slots
1183
1262
  // let's make sure we also double check
1184
1263
  // fallbacks are correctly hidden or shown
1185
1264
  checkSlotFallbackVisibility = true;
1186
- node['s-sn'] = node['s-sn'] || slotNameAttr;
1265
+ // ensure that the slot-name attr is correct
1266
+ node['s-sn'] = node['s-sn'] || slotName;
1187
1267
  if (relocateNodeData) {
1188
- // previously we never found a slot home for this node
1189
- // but turns out we did, so let's remember it now
1268
+ relocateNodeData.$nodeToRelocate$['s-sh'] = childNode['s-hn'];
1269
+ // we marked this node for relocation previously but didn't find
1270
+ // out the slot reference node to which it needs to be relocated
1271
+ // so write it down now!
1190
1272
  relocateNodeData.$slotRefNode$ = childNode;
1191
1273
  }
1192
1274
  else {
1275
+ node['s-sh'] = childNode['s-hn'];
1193
1276
  // add to our list of nodes to relocate
1194
1277
  relocateNodes.push({
1195
1278
  $slotRefNode$: childNode,
@@ -1208,8 +1291,10 @@ const relocateSlotContent = (elm) => {
1208
1291
  }
1209
1292
  }
1210
1293
  else if (!relocateNodes.some((r) => r.$nodeToRelocate$ === node)) {
1211
- // so far this element does not have a slot home, not setting slotRefNode on purpose
1212
- // if we never find a home for this element then we'll need to hide it
1294
+ // the node is not found within the slot (`childNode`) that we're
1295
+ // currently looking at, so we stick it into `relocateNodes` to
1296
+ // handle later. If we never find a home for this element then
1297
+ // we'll need to hide it
1213
1298
  relocateNodes.push({
1214
1299
  $nodeToRelocate$: node,
1215
1300
  });
@@ -1217,30 +1302,48 @@ const relocateSlotContent = (elm) => {
1217
1302
  }
1218
1303
  }
1219
1304
  }
1305
+ // if we're dealing with any type of element (capable of itself being a
1306
+ // slot reference or containing one) then we recur
1220
1307
  if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
1221
- relocateSlotContent(childNode);
1308
+ markSlotContentForRelocation(childNode);
1222
1309
  }
1223
1310
  }
1224
1311
  };
1225
- const isNodeLocatedInSlot = (nodeToRelocate, slotNameAttr) => {
1312
+ /**
1313
+ * Check whether a node is located in a given named slot.
1314
+ *
1315
+ * @param nodeToRelocate the node of interest
1316
+ * @param slotName the slot name to check
1317
+ * @returns whether the node is located in the slot or not
1318
+ */
1319
+ const isNodeLocatedInSlot = (nodeToRelocate, slotName) => {
1226
1320
  if (nodeToRelocate.nodeType === 1 /* NODE_TYPE.ElementNode */) {
1227
- if (nodeToRelocate.getAttribute('slot') === null && slotNameAttr === '') {
1321
+ if (nodeToRelocate.getAttribute('slot') === null && slotName === '') {
1322
+ // if the node doesn't have a slot attribute, and the slot we're checking
1323
+ // is not a named slot, then we assume the node should be within the slot
1228
1324
  return true;
1229
1325
  }
1230
- if (nodeToRelocate.getAttribute('slot') === slotNameAttr) {
1326
+ if (nodeToRelocate.getAttribute('slot') === slotName) {
1231
1327
  return true;
1232
1328
  }
1233
1329
  return false;
1234
1330
  }
1235
- if (nodeToRelocate['s-sn'] === slotNameAttr) {
1331
+ if (nodeToRelocate['s-sn'] === slotName) {
1236
1332
  return true;
1237
1333
  }
1238
- return slotNameAttr === '';
1334
+ return slotName === '';
1239
1335
  };
1240
- const callNodeRefs = (vNode) => {
1336
+ /**
1337
+ * 'Nullify' any VDom `ref` callbacks on a VDom node or its children by calling
1338
+ * them with `null`. This signals that the DOM element corresponding to the VDom
1339
+ * node has been removed from the DOM.
1340
+ *
1341
+ * @param vNode a virtual DOM node
1342
+ */
1343
+ const nullifyVNodeRefs = (vNode) => {
1241
1344
  {
1242
1345
  vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);
1243
- vNode.$children$ && vNode.$children$.map(callNodeRefs);
1346
+ vNode.$children$ && vNode.$children$.map(nullifyVNodeRefs);
1244
1347
  }
1245
1348
  };
1246
1349
  /**
@@ -1254,17 +1357,45 @@ const callNodeRefs = (vNode) => {
1254
1357
  * @param hostRef data needed to root and render the virtual DOM tree, such as
1255
1358
  * the DOM node into which it should be rendered.
1256
1359
  * @param renderFnResults the virtual DOM nodes to be rendered
1360
+ * @param isInitialLoad whether or not this is the first call after page load
1257
1361
  */
1258
- const renderVdom = (hostRef, renderFnResults) => {
1362
+ const renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
1363
+ var _a, _b;
1259
1364
  const hostElm = hostRef.$hostElement$;
1260
1365
  const cmpMeta = hostRef.$cmpMeta$;
1261
1366
  const oldVNode = hostRef.$vnode$ || newVNode(null, null);
1367
+ // if `renderFnResults` is a Host node then we can use it directly. If not,
1368
+ // we need to call `h` again to wrap the children of our component in a
1369
+ // 'dummy' Host node (well, an empty vnode) since `renderVdom` assumes
1370
+ // implicitly that the top-level vdom node is 1) an only child and 2)
1371
+ // contains attrs that need to be set on the host element.
1262
1372
  const rootVnode = isHost(renderFnResults) ? renderFnResults : h(null, null, renderFnResults);
1263
1373
  hostTagName = hostElm.tagName;
1264
1374
  if (cmpMeta.$attrsToReflect$) {
1265
1375
  rootVnode.$attrs$ = rootVnode.$attrs$ || {};
1266
1376
  cmpMeta.$attrsToReflect$.map(([propName, attribute]) => (rootVnode.$attrs$[attribute] = hostElm[propName]));
1267
1377
  }
1378
+ // On the first render and *only* on the first render we want to check for
1379
+ // any attributes set on the host element which are also set on the vdom
1380
+ // node. If we find them, we override the value on the VDom node attrs with
1381
+ // the value from the host element, which allows developers building apps
1382
+ // with Stencil components to override e.g. the `role` attribute on a
1383
+ // component even if it's already set on the `Host`.
1384
+ if (isInitialLoad && rootVnode.$attrs$) {
1385
+ for (const key of Object.keys(rootVnode.$attrs$)) {
1386
+ // We have a special implementation in `setAccessor` for `style` and
1387
+ // `class` which reconciles values coming from the VDom with values
1388
+ // already present on the DOM element, so we don't want to override those
1389
+ // attributes on the VDom tree with values from the host element if they
1390
+ // are present.
1391
+ //
1392
+ // Likewise, `ref` and `key` are special internal values for the Stencil
1393
+ // runtime and we don't want to override those either.
1394
+ if (hostElm.hasAttribute(key) && !['key', 'ref', 'style', 'class'].includes(key)) {
1395
+ rootVnode.$attrs$[key] = hostElm[key];
1396
+ }
1397
+ }
1398
+ }
1268
1399
  rootVnode.$tag$ = null;
1269
1400
  rootVnode.$flags$ |= 4 /* VNODE_FLAGS.isHost */;
1270
1401
  hostRef.$vnode$ = rootVnode;
@@ -1285,43 +1416,48 @@ const renderVdom = (hostRef, renderFnResults) => {
1285
1416
  // the disconnectCallback from working
1286
1417
  plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
1287
1418
  if (checkSlotRelocate) {
1288
- relocateSlotContent(rootVnode.$elm$);
1289
- let relocateData;
1290
- let nodeToRelocate;
1291
- let orgLocationNode;
1292
- let parentNodeRef;
1293
- let insertBeforeNode;
1294
- let refNode;
1295
- let i = 0;
1296
- for (; i < relocateNodes.length; i++) {
1297
- relocateData = relocateNodes[i];
1298
- nodeToRelocate = relocateData.$nodeToRelocate$;
1419
+ markSlotContentForRelocation(rootVnode.$elm$);
1420
+ for (const relocateData of relocateNodes) {
1421
+ const nodeToRelocate = relocateData.$nodeToRelocate$;
1299
1422
  if (!nodeToRelocate['s-ol']) {
1300
1423
  // add a reference node marking this node's original location
1301
1424
  // keep a reference to this node for later lookups
1302
- orgLocationNode =
1303
- doc.createTextNode('');
1425
+ const orgLocationNode = doc.createTextNode('');
1304
1426
  orgLocationNode['s-nr'] = nodeToRelocate;
1305
1427
  nodeToRelocate.parentNode.insertBefore((nodeToRelocate['s-ol'] = orgLocationNode), nodeToRelocate);
1306
1428
  }
1307
1429
  }
1308
- for (i = 0; i < relocateNodes.length; i++) {
1309
- relocateData = relocateNodes[i];
1310
- nodeToRelocate = relocateData.$nodeToRelocate$;
1311
- if (relocateData.$slotRefNode$) {
1312
- // by default we're just going to insert it directly
1313
- // after the slot reference node
1314
- parentNodeRef = relocateData.$slotRefNode$.parentNode;
1315
- insertBeforeNode = relocateData.$slotRefNode$.nextSibling;
1316
- orgLocationNode = nodeToRelocate['s-ol'];
1317
- while ((orgLocationNode = orgLocationNode.previousSibling)) {
1318
- refNode = orgLocationNode['s-nr'];
1319
- if (refNode && refNode['s-sn'] === nodeToRelocate['s-sn'] && parentNodeRef === refNode.parentNode) {
1320
- refNode = refNode.nextSibling;
1321
- if (!refNode || !refNode['s-nr']) {
1322
- insertBeforeNode = refNode;
1323
- break;
1430
+ for (const relocateData of relocateNodes) {
1431
+ const nodeToRelocate = relocateData.$nodeToRelocate$;
1432
+ const slotRefNode = relocateData.$slotRefNode$;
1433
+ if (slotRefNode) {
1434
+ const parentNodeRef = slotRefNode.parentNode;
1435
+ // When determining where to insert content, the most simple case would be
1436
+ // to relocate the node immediately following the slot reference node. We do this
1437
+ // by getting a reference to the node immediately following the slot reference node
1438
+ // since we will use `insertBefore` to manipulate the DOM.
1439
+ //
1440
+ // If there is no node immediately following the slot reference node, then we will just
1441
+ // end up appending the node as the last child of the parent.
1442
+ let insertBeforeNode = slotRefNode.nextSibling;
1443
+ // If the node we're currently planning on inserting the new node before is an element,
1444
+ // we need to do some additional checks to make sure we're inserting the node in the correct order.
1445
+ // The use case here would be that we have multiple nodes being relocated to the same slot. So, we want
1446
+ // to make sure they get inserted into their new how in the same order they were declared in their original location.
1447
+ //
1448
+ // TODO(STENCIL-914): Remove `experimentalSlotFixes` check
1449
+ {
1450
+ let orgLocationNode = (_a = nodeToRelocate['s-ol']) === null || _a === void 0 ? void 0 : _a.previousSibling;
1451
+ while (orgLocationNode) {
1452
+ let refNode = (_b = orgLocationNode['s-nr']) !== null && _b !== void 0 ? _b : null;
1453
+ if (refNode && refNode['s-sn'] === nodeToRelocate['s-sn'] && parentNodeRef === refNode.parentNode) {
1454
+ refNode = refNode.nextSibling;
1455
+ if (!refNode || !refNode['s-nr']) {
1456
+ insertBeforeNode = refNode;
1457
+ break;
1458
+ }
1324
1459
  }
1460
+ orgLocationNode = orgLocationNode.previousSibling;
1325
1461
  }
1326
1462
  }
1327
1463
  if ((!insertBeforeNode && parentNodeRef !== nodeToRelocate.parentNode) ||
@@ -1331,10 +1467,13 @@ const renderVdom = (hostRef, renderFnResults) => {
1331
1467
  // has a different next sibling or parent relocated
1332
1468
  if (nodeToRelocate !== insertBeforeNode) {
1333
1469
  if (!nodeToRelocate['s-hn'] && nodeToRelocate['s-ol']) {
1334
- // probably a component in the index.html that doesn't have it's hostname set
1470
+ // probably a component in the index.html that doesn't have its hostname set
1335
1471
  nodeToRelocate['s-hn'] = nodeToRelocate['s-ol'].parentNode.nodeName;
1336
1472
  }
1337
- // add it back to the dom but in its new home
1473
+ // Add it back to the dom but in its new home
1474
+ // If we get to this point and `insertBeforeNode` is `null`, that means
1475
+ // we're just going to append the node as the last child of the parent. Passing
1476
+ // `null` as the second arg here will trigger that behavior.
1338
1477
  parentNodeRef.insertBefore(nodeToRelocate, insertBeforeNode);
1339
1478
  }
1340
1479
  }
@@ -1377,24 +1516,90 @@ const scheduleUpdate = (hostRef, isInitialLoad) => {
1377
1516
  const dispatch = () => dispatchHooks(hostRef, isInitialLoad);
1378
1517
  return writeTask(dispatch) ;
1379
1518
  };
1519
+ /**
1520
+ * Dispatch initial-render and update lifecycle hooks, enqueuing calls to
1521
+ * component lifecycle methods like `componentWillLoad` as well as
1522
+ * {@link updateComponent}, which will kick off the virtual DOM re-render.
1523
+ *
1524
+ * @param hostRef a reference to a host DOM node
1525
+ * @param isInitialLoad whether we're on the initial load or not
1526
+ * @returns an empty Promise which is used to enqueue a series of operations for
1527
+ * the component
1528
+ */
1380
1529
  const dispatchHooks = (hostRef, isInitialLoad) => {
1381
1530
  const elm = hostRef.$hostElement$;
1382
1531
  const endSchedule = createTime('scheduleUpdate', hostRef.$cmpMeta$.$tagName$);
1383
1532
  const instance = elm;
1384
- let promise;
1533
+ // We're going to use this variable together with `enqueue` to implement a
1534
+ // little promise-based queue. We start out with it `undefined`. When we add
1535
+ // the first function to the queue we'll set this variable to be that
1536
+ // function's return value. When we attempt to add subsequent values to the
1537
+ // queue we'll check that value and, if it was a `Promise`, we'll then chain
1538
+ // the new function off of that `Promise` using `.then()`. This will give our
1539
+ // queue two nice properties:
1540
+ //
1541
+ // 1. If all functions added to the queue are synchronous they'll be called
1542
+ // synchronously right away.
1543
+ // 2. If all functions added to the queue are asynchronous they'll all be
1544
+ // called in order after `dispatchHooks` exits.
1545
+ let maybePromise;
1385
1546
  if (isInitialLoad) {
1386
1547
  {
1387
- promise = safeCall(instance, 'componentWillLoad');
1548
+ // If `componentWillLoad` returns a `Promise` then we want to wait on
1549
+ // whatever's going on in that `Promise` before we launch into
1550
+ // rendering the component, doing other lifecycle stuff, etc. So
1551
+ // in that case we assign the returned promise to the variable we
1552
+ // declared above to hold a possible 'queueing' Promise
1553
+ maybePromise = safeCall(instance, 'componentWillLoad');
1388
1554
  }
1389
1555
  }
1390
1556
  {
1391
- promise = then(promise, () => safeCall(instance, 'componentWillRender'));
1557
+ maybePromise = enqueue(maybePromise, () => safeCall(instance, 'componentWillRender'));
1392
1558
  }
1393
1559
  endSchedule();
1394
- return then(promise, () => updateComponent(hostRef, instance, isInitialLoad));
1560
+ return enqueue(maybePromise, () => updateComponent(hostRef, instance, isInitialLoad));
1395
1561
  };
1562
+ /**
1563
+ * This function uses a Promise to implement a simple first-in, first-out queue
1564
+ * of functions to be called.
1565
+ *
1566
+ * The queue is ordered on the basis of the first argument. If it's
1567
+ * `undefined`, then nothing is on the queue yet, so the provided function can
1568
+ * be called synchronously (although note that this function may return a
1569
+ * `Promise`). The idea is that then the return value of that enqueueing
1570
+ * operation is kept around, so that if it was a `Promise` then subsequent
1571
+ * functions can be enqueued by calling this function again with that `Promise`
1572
+ * as the first argument.
1573
+ *
1574
+ * @param maybePromise either a `Promise` which should resolve before the next function is called or an 'empty' sentinel
1575
+ * @param fn a function to enqueue
1576
+ * @returns either a `Promise` or the return value of the provided function
1577
+ */
1578
+ const enqueue = (maybePromise, fn) => isPromisey(maybePromise) ? maybePromise.then(fn) : fn();
1579
+ /**
1580
+ * Check that a value is a `Promise`. To check, we first see if the value is an
1581
+ * instance of the `Promise` global. In a few circumstances, in particular if
1582
+ * the global has been overwritten, this is could be misleading, so we also do
1583
+ * a little 'duck typing' check to see if the `.then` property of the value is
1584
+ * defined and a function.
1585
+ *
1586
+ * @param maybePromise it might be a promise!
1587
+ * @returns whether it is or not
1588
+ */
1589
+ const isPromisey = (maybePromise) => maybePromise instanceof Promise ||
1590
+ (maybePromise && maybePromise.then && typeof maybePromise.then === 'function');
1591
+ /**
1592
+ * Update a component given reference to its host elements and so on.
1593
+ *
1594
+ * @param hostRef an object containing references to the element's host node,
1595
+ * VDom nodes, and other metadata
1596
+ * @param instance a reference to the underlying host element where it will be
1597
+ * rendered
1598
+ * @param isInitialLoad whether or not this function is being called as part of
1599
+ * the first render cycle
1600
+ */
1396
1601
  const updateComponent = async (hostRef, instance, isInitialLoad) => {
1397
- // updateComponent
1602
+ var _a;
1398
1603
  const elm = hostRef.$hostElement$;
1399
1604
  const endUpdate = createTime('update', hostRef.$cmpMeta$.$tagName$);
1400
1605
  const rc = elm['s-rc'];
@@ -1404,7 +1609,7 @@ const updateComponent = async (hostRef, instance, isInitialLoad) => {
1404
1609
  }
1405
1610
  const endRender = createTime('render', hostRef.$cmpMeta$.$tagName$);
1406
1611
  {
1407
- callRender(hostRef, instance);
1612
+ callRender(hostRef, instance, elm, isInitialLoad);
1408
1613
  }
1409
1614
  if (rc) {
1410
1615
  // ok, so turns out there are some child host elements
@@ -1416,7 +1621,7 @@ const updateComponent = async (hostRef, instance, isInitialLoad) => {
1416
1621
  endRender();
1417
1622
  endUpdate();
1418
1623
  {
1419
- const childrenPromises = elm['s-p'];
1624
+ const childrenPromises = (_a = elm['s-p']) !== null && _a !== void 0 ? _a : [];
1420
1625
  const postUpdate = () => postUpdateComponent(hostRef);
1421
1626
  if (childrenPromises.length === 0) {
1422
1627
  postUpdate();
@@ -1428,8 +1633,24 @@ const updateComponent = async (hostRef, instance, isInitialLoad) => {
1428
1633
  }
1429
1634
  }
1430
1635
  };
1431
- const callRender = (hostRef, instance, elm) => {
1636
+ /**
1637
+ * Handle making the call to the VDom renderer with the proper context given
1638
+ * various build variables
1639
+ *
1640
+ * @param hostRef an object containing references to the element's host node,
1641
+ * VDom nodes, and other metadata
1642
+ * @param instance a reference to the underlying host element where it will be
1643
+ * rendered
1644
+ * @param elm the Host element for the component
1645
+ * @param isInitialLoad whether or not this function is being called as part of
1646
+ * @returns an empty promise
1647
+ */
1648
+ const callRender = (hostRef, instance, elm, isInitialLoad) => {
1432
1649
  try {
1650
+ /**
1651
+ * minification optimization: `allRenderFn` is `true` if all components have a `render`
1652
+ * method, so we can call the method immediately. If not, check before calling it.
1653
+ */
1433
1654
  instance = instance.render() ;
1434
1655
  {
1435
1656
  hostRef.$flags$ &= ~16 /* HOST_FLAGS.isQueuedForUpdate */;
@@ -1443,7 +1664,7 @@ const callRender = (hostRef, instance, elm) => {
1443
1664
  // or we need to update the css class/attrs on the host element
1444
1665
  // DOM WRITE!
1445
1666
  {
1446
- renderVdom(hostRef, instance);
1667
+ renderVdom(hostRef, instance, isInitialLoad);
1447
1668
  }
1448
1669
  }
1449
1670
  }
@@ -1509,6 +1730,16 @@ const appDidLoad = (who) => {
1509
1730
  }
1510
1731
  nextTick(() => emitEvent(win, 'appload', { detail: { namespace: NAMESPACE } }));
1511
1732
  };
1733
+ /**
1734
+ * Allows to safely call a method, e.g. `componentDidLoad`, on an instance,
1735
+ * e.g. custom element node. If a build figures out that e.g. no component
1736
+ * has a `componentDidLoad` method, the instance method gets removed from the
1737
+ * output bundle and this function returns `undefined`.
1738
+ * @param instance any object that may or may not contain methods
1739
+ * @param method method name
1740
+ * @param arg single arbitrary argument
1741
+ * @returns result of method call if it exists, otherwise `undefined`
1742
+ */
1512
1743
  const safeCall = (instance, method, arg) => {
1513
1744
  if (instance && instance[method]) {
1514
1745
  try {
@@ -1520,9 +1751,6 @@ const safeCall = (instance, method, arg) => {
1520
1751
  }
1521
1752
  return undefined;
1522
1753
  };
1523
- const then = (promise, thenFn) => {
1524
- return promise && promise.then ? promise.then(thenFn) : thenFn();
1525
- };
1526
1754
  const addHydratedFlag = (elm) => elm.classList.add('hydrated')
1527
1755
  ;
1528
1756
  const getValue = (ref, propName) => getHostRef(ref).$instanceValues$.get(propName);
@@ -1579,6 +1807,7 @@ const setValue = (ref, propName, newVal, cmpMeta) => {
1579
1807
  * @returns a reference to the same constructor passed in (but now mutated)
1580
1808
  */
1581
1809
  const proxyComponent = (Cstr, cmpMeta, flags) => {
1810
+ var _a;
1582
1811
  if (cmpMeta.$members$) {
1583
1812
  if (Cstr.watchers) {
1584
1813
  cmpMeta.$watchers$ = Cstr.watchers;
@@ -1606,7 +1835,7 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1606
1835
  });
1607
1836
  {
1608
1837
  const attrNameToPropName = new Map();
1609
- prototype.attributeChangedCallback = function (attrName, _oldValue, newValue) {
1838
+ prototype.attributeChangedCallback = function (attrName, oldValue, newValue) {
1610
1839
  plt.jmp(() => {
1611
1840
  const propName = attrNameToPropName.get(attrName);
1612
1841
  // In a web component lifecycle the attributeChangedCallback runs prior to connectedCallback
@@ -1629,12 +1858,12 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1629
1858
  // customElements.define('my-component', MyComponent);
1630
1859
  // </script>
1631
1860
  // ```
1632
- // In this case if we do not unshadow here and use the value of the shadowing property, attributeChangedCallback
1861
+ // In this case if we do not un-shadow here and use the value of the shadowing property, attributeChangedCallback
1633
1862
  // will be called with `newValue = "some-value"` and will set the shadowed property (this.someAttribute = "another-value")
1634
1863
  // to the value that was set inline i.e. "some-value" from above example. When
1635
- // the connectedCallback attempts to unshadow it will use "some-value" as the initial value rather than "another-value"
1864
+ // the connectedCallback attempts to un-shadow it will use "some-value" as the initial value rather than "another-value"
1636
1865
  //
1637
- // The case where the attribute was NOT set inline but was not set programmatically shall be handled/unshadowed
1866
+ // The case where the attribute was NOT set inline but was not set programmatically shall be handled/un-shadowed
1638
1867
  // by connectedCallback as this attributeChangedCallback will not fire.
1639
1868
  //
1640
1869
  // https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties
@@ -1654,32 +1883,73 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1654
1883
  // `propName` to be converted to a `DOMString`, which may not be what we want for other primitive props.
1655
1884
  return;
1656
1885
  }
1886
+ else if (propName == null) {
1887
+ // At this point we should know this is not a "member", so we can treat it like watching an attribute
1888
+ // on a vanilla web component
1889
+ const hostRef = getHostRef(this);
1890
+ const flags = hostRef === null || hostRef === void 0 ? void 0 : hostRef.$flags$;
1891
+ // We only want to trigger the callback(s) if:
1892
+ // 1. The instance is ready
1893
+ // 2. The watchers are ready
1894
+ // 3. The value has changed
1895
+ if (!(flags & 8 /* HOST_FLAGS.isConstructingInstance */) &&
1896
+ flags & 128 /* HOST_FLAGS.isWatchReady */ &&
1897
+ newValue !== oldValue) {
1898
+ const elm = this;
1899
+ const instance = elm;
1900
+ const entry = cmpMeta.$watchers$[attrName];
1901
+ entry === null || entry === void 0 ? void 0 : entry.forEach((callbackName) => {
1902
+ if (instance[callbackName] != null) {
1903
+ instance[callbackName].call(instance, newValue, oldValue, attrName);
1904
+ }
1905
+ });
1906
+ }
1907
+ return;
1908
+ }
1657
1909
  this[propName] = newValue === null && typeof this[propName] === 'boolean' ? false : newValue;
1658
1910
  });
1659
1911
  };
1660
- // create an array of attributes to observe
1661
- // and also create a map of html attribute name to js property name
1662
- Cstr.observedAttributes = members
1663
- .filter(([_, m]) => m[0] & 15 /* MEMBER_FLAGS.HasAttribute */) // filter to only keep props that should match attributes
1664
- .map(([propName, m]) => {
1665
- const attrName = m[1] || propName;
1666
- attrNameToPropName.set(attrName, propName);
1667
- if (m[0] & 512 /* MEMBER_FLAGS.ReflectAttr */) {
1668
- cmpMeta.$attrsToReflect$.push([propName, attrName]);
1669
- }
1670
- return attrName;
1671
- });
1912
+ // Create an array of attributes to observe
1913
+ // This list in comprised of all strings used within a `@Watch()` decorator
1914
+ // on a component as well as any Stencil-specific "members" (`@Prop()`s and `@State()`s).
1915
+ // As such, there is no way to guarantee type-safety here that a user hasn't entered
1916
+ // an invalid attribute.
1917
+ Cstr.observedAttributes = Array.from(new Set([
1918
+ ...Object.keys((_a = cmpMeta.$watchers$) !== null && _a !== void 0 ? _a : {}),
1919
+ ...members
1920
+ .filter(([_, m]) => m[0] & 15 /* MEMBER_FLAGS.HasAttribute */)
1921
+ .map(([propName, m]) => {
1922
+ const attrName = m[1] || propName;
1923
+ attrNameToPropName.set(attrName, propName);
1924
+ if (m[0] & 512 /* MEMBER_FLAGS.ReflectAttr */) {
1925
+ cmpMeta.$attrsToReflect$.push([propName, attrName]);
1926
+ }
1927
+ return attrName;
1928
+ }),
1929
+ ]));
1672
1930
  }
1673
1931
  }
1674
1932
  return Cstr;
1675
1933
  };
1676
- const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) => {
1934
+ /**
1935
+ * Initialize a Stencil component given a reference to its host element, its
1936
+ * runtime bookkeeping data structure, runtime metadata about the component,
1937
+ * and (optionally) an HMR version ID.
1938
+ *
1939
+ * @param elm a host element
1940
+ * @param hostRef the element's runtime bookkeeping object
1941
+ * @param cmpMeta runtime metadata for the Stencil component
1942
+ * @param hmrVersionId an (optional) HMR version ID
1943
+ */
1944
+ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
1945
+ let Cstr;
1677
1946
  // initializeComponent
1678
1947
  if ((hostRef.$flags$ & 32 /* HOST_FLAGS.hasInitializedComponent */) === 0) {
1948
+ // Let the runtime know that the component has been initialized
1949
+ hostRef.$flags$ |= 32 /* HOST_FLAGS.hasInitializedComponent */;
1679
1950
  {
1680
1951
  // sync constructor component
1681
1952
  Cstr = elm.constructor;
1682
- hostRef.$flags$ |= 32 /* HOST_FLAGS.hasInitializedComponent */;
1683
1953
  // wait for the CustomElementRegistry to mark the component as ready before setting `isWatchReady`. Otherwise,
1684
1954
  // watchers may fire prematurely if `customElements.get()`/`customElements.whenDefined()` resolves _before_
1685
1955
  // Stencil has completed instantiating the component.
@@ -1712,6 +1982,8 @@ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) =>
1712
1982
  schedule();
1713
1983
  }
1714
1984
  };
1985
+ const fireConnectedCallback = (instance) => {
1986
+ };
1715
1987
  const connectedCallback = (elm) => {
1716
1988
  if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0) {
1717
1989
  const hostRef = getHostRef(elm);
@@ -1725,7 +1997,7 @@ const connectedCallback = (elm) => {
1725
1997
  // if the slot polyfill is required we'll need to put some nodes
1726
1998
  // in here to act as original content anchors as we move nodes around
1727
1999
  // host element has been connected to the DOM
1728
- if ((// TODO(STENCIL-662): Remove code related to deprecated shadowDomShim field
2000
+ if ((// TODO(STENCIL-854): Remove code related to legacy shadowDomShim field
1729
2001
  cmpMeta.$flags$ & (4 /* CMP_FLAGS.hasSlotRelocation */ | 8 /* CMP_FLAGS.needsShadowDomShim */))) {
1730
2002
  setContentReference(elm);
1731
2003
  }
@@ -1765,6 +2037,11 @@ const connectedCallback = (elm) => {
1765
2037
  // reattach any event listeners to the host
1766
2038
  // since they would have been removed when disconnected
1767
2039
  addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);
2040
+ // fire off connectedCallback() on component instance
2041
+ if (hostRef === null || hostRef === void 0 ? void 0 : hostRef.$lazyInstance$) ;
2042
+ else if (hostRef === null || hostRef === void 0 ? void 0 : hostRef.$onReadyPromise$) {
2043
+ hostRef.$onReadyPromise$.then(() => fireConnectedCallback());
2044
+ }
1768
2045
  }
1769
2046
  endConnected();
1770
2047
  }
@@ -1780,7 +2057,7 @@ const setContentReference = (elm) => {
1780
2057
  contentRefElm['s-cn'] = true;
1781
2058
  elm.insertBefore(contentRefElm, elm.firstChild);
1782
2059
  };
1783
- const disconnectedCallback = (elm) => {
2060
+ const disconnectedCallback = async (elm) => {
1784
2061
  if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0) {
1785
2062
  const hostRef = getHostRef(elm);
1786
2063
  {
@@ -1791,6 +2068,44 @@ const disconnectedCallback = (elm) => {
1791
2068
  }
1792
2069
  }
1793
2070
  };
2071
+ const patchChildSlotNodes = (elm, cmpMeta) => {
2072
+ class FakeNodeList extends Array {
2073
+ item(n) {
2074
+ return this[n];
2075
+ }
2076
+ }
2077
+ // TODO(STENCIL-854): Remove code related to legacy shadowDomShim field
2078
+ if (cmpMeta.$flags$ & 8 /* CMP_FLAGS.needsShadowDomShim */) {
2079
+ const childNodesFn = elm.__lookupGetter__('childNodes');
2080
+ Object.defineProperty(elm, 'children', {
2081
+ get() {
2082
+ return this.childNodes.map((n) => n.nodeType === 1);
2083
+ },
2084
+ });
2085
+ Object.defineProperty(elm, 'childElementCount', {
2086
+ get() {
2087
+ return elm.children.length;
2088
+ },
2089
+ });
2090
+ Object.defineProperty(elm, 'childNodes', {
2091
+ get() {
2092
+ const childNodes = childNodesFn.call(this);
2093
+ if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0 &&
2094
+ getHostRef(this).$flags$ & 2 /* HOST_FLAGS.hasRendered */) {
2095
+ const result = new FakeNodeList();
2096
+ for (let i = 0; i < childNodes.length; i++) {
2097
+ const slot = childNodes[i]['s-nr'];
2098
+ if (slot) {
2099
+ result.push(slot);
2100
+ }
2101
+ }
2102
+ return result;
2103
+ }
2104
+ return FakeNodeList.from(childNodes);
2105
+ },
2106
+ });
2107
+ }
2108
+ };
1794
2109
  const proxyCustomElement = (Cstr, compactMeta) => {
1795
2110
  const cmpMeta = {
1796
2111
  $flags$: compactMeta[0],
@@ -1808,6 +2123,13 @@ const proxyCustomElement = (Cstr, compactMeta) => {
1808
2123
  {
1809
2124
  cmpMeta.$attrsToReflect$ = [];
1810
2125
  }
2126
+ // TODO(STENCIL-914): this check and `else` block can go away and be replaced by just `BUILD.scoped` once we
2127
+ // default our pseudo-slot behavior
2128
+ {
2129
+ {
2130
+ patchChildSlotNodes(Cstr.prototype, cmpMeta);
2131
+ }
2132
+ }
1811
2133
  const originalConnectedCallback = Cstr.prototype.connectedCallback;
1812
2134
  const originalDisconnectedCallback = Cstr.prototype.disconnectedCallback;
1813
2135
  Object.assign(Cstr.prototype, {
@@ -1881,22 +2203,41 @@ const hostListenerOpts = (flags) => (flags & 2 /* LISTENER_FLAGS.Capture */) !==
1881
2203
  */
1882
2204
  const setNonce = (nonce) => (plt.$nonce$ = nonce);
1883
2205
  const setPlatformOptions = (opts) => Object.assign(plt, opts);
2206
+ /**
2207
+ * A WeakMap mapping runtime component references to their corresponding host reference
2208
+ * instances.
2209
+ */
1884
2210
  const hostRefs = /*@__PURE__*/ new WeakMap();
2211
+ /**
2212
+ * Given a {@link d.RuntimeRef} retrieve the corresponding {@link d.HostRef}
2213
+ *
2214
+ * @param ref the runtime ref of interest
2215
+ * @returns the Host reference (if found) or undefined
2216
+ */
1885
2217
  const getHostRef = (ref) => hostRefs.get(ref);
1886
- const registerHost = (elm, cmpMeta) => {
2218
+ /**
2219
+ * Register a host element for a Stencil component, setting up various metadata
2220
+ * and callbacks based on {@link BUILD} flags as well as the component's runtime
2221
+ * metadata.
2222
+ *
2223
+ * @param hostElement the host element to register
2224
+ * @param cmpMeta runtime metadata for that component
2225
+ * @returns a reference to the host ref WeakMap
2226
+ */
2227
+ const registerHost = (hostElement, cmpMeta) => {
1887
2228
  const hostRef = {
1888
2229
  $flags$: 0,
1889
- $hostElement$: elm,
2230
+ $hostElement$: hostElement,
1890
2231
  $cmpMeta$: cmpMeta,
1891
2232
  $instanceValues$: new Map(),
1892
2233
  };
1893
2234
  {
1894
2235
  hostRef.$onReadyPromise$ = new Promise((r) => (hostRef.$onReadyResolve$ = r));
1895
- elm['s-p'] = [];
1896
- elm['s-rc'] = [];
2236
+ hostElement['s-p'] = [];
2237
+ hostElement['s-rc'] = [];
1897
2238
  }
1898
- addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);
1899
- return hostRefs.set(elm, hostRef);
2239
+ addHostEventListeners(hostElement, hostRef, cmpMeta.$listeners$);
2240
+ return hostRefs.set(hostElement, hostRef);
1900
2241
  };
1901
2242
  const isMemberInElement = (elm, memberName) => memberName in elm;
1902
2243
  const consoleError = (e, el) => (0, console.error)(e, el);
@@ -1964,7 +2305,7 @@ const flush = () => {
1964
2305
  }
1965
2306
  }
1966
2307
  };
1967
- const nextTick = /*@__PURE__*/ (cb) => promiseResolve().then(cb);
2308
+ const nextTick = (cb) => promiseResolve().then(cb);
1968
2309
  const writeTask = /*@__PURE__*/ queueTask(queueDomWrites, true);
1969
2310
 
1970
- export { Build as B, Env as E, Fragment as F, H, setNonce as a, setPlatformOptions as b, createEvent as c, Host as d, h, proxyCustomElement as p, setAssetPath as s };
2311
+ export { Build as B, Env as E, Fragment as F, H, setNonce as a, setPlatformOptions as b, createEvent as c, Host as d, getAssetPath as g, h, proxyCustomElement as p, setAssetPath as s };