@ukic/canary-web-components 3.0.0-canary.45 → 3.0.0-canary.46

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 (134) hide show
  1. package/dist/cjs/{common-helpers-0b38906e.js → common-helpers-17b5eaf4.js} +275 -36
  2. package/dist/cjs/common-helpers-17b5eaf4.js.map +1 -0
  3. package/dist/cjs/{ic-accordion-cced5003.js → ic-accordion-269e7641.js} +54 -39
  4. package/dist/cjs/ic-accordion-269e7641.js.map +1 -0
  5. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-data-table.cjs.entry.js +1 -1
  7. package/dist/cjs/ic-drawer.cjs.entry.js +3 -3
  8. package/dist/cjs/{ic-menu-8f90eee0.js → ic-menu-7bee7456.js} +2 -2
  9. package/dist/cjs/{ic-menu-8f90eee0.js.map → ic-menu-7bee7456.js.map} +1 -1
  10. package/dist/cjs/ic-menu.cjs.entry.js +2 -2
  11. package/dist/cjs/ic-tree-view.cjs.entry.js +1 -1
  12. package/dist/components/ic-accordion.js +53 -38
  13. package/dist/components/ic-accordion.js.map +1 -1
  14. package/dist/components/ic-radio-option.js.map +1 -1
  15. package/dist/components/ic-side-navigation.js.map +1 -1
  16. package/dist/components/ic-skip-link.js.map +1 -1
  17. package/dist/components/purify.js +274 -35
  18. package/dist/components/purify.js.map +1 -1
  19. package/dist/core/core.esm.js +1 -1
  20. package/dist/core/{p-f19a1e0d.js → p-1677b008.js} +2 -2
  21. package/dist/core/{p-42e6ca3e.entry.js → p-18a6536e.entry.js} +2 -2
  22. package/dist/core/{p-82bffec7.js → p-4f534fe3.js} +2 -2
  23. package/dist/core/p-4f534fe3.js.map +1 -0
  24. package/dist/core/{p-52244e66.entry.js → p-8f958e9c.entry.js} +2 -2
  25. package/dist/core/p-94cb894f.js +3 -0
  26. package/dist/core/p-94cb894f.js.map +1 -0
  27. package/dist/core/{p-e793b7b4.entry.js → p-ad8d9dc5.entry.js} +2 -2
  28. package/dist/core/p-b5b622a7.entry.js +2 -0
  29. package/dist/core/p-f8ef56e7.entry.js +2 -0
  30. package/dist/esm/{common-helpers-b72aaf4e.js → common-helpers-451f6c47.js} +275 -36
  31. package/dist/esm/common-helpers-451f6c47.js.map +1 -0
  32. package/dist/esm/{ic-accordion-8a60202f.js → ic-accordion-f8d6f20f.js} +54 -39
  33. package/dist/esm/ic-accordion-f8d6f20f.js.map +1 -0
  34. package/dist/esm/ic-accordion.entry.js +1 -1
  35. package/dist/esm/ic-data-table.entry.js +1 -1
  36. package/dist/esm/ic-drawer.entry.js +3 -3
  37. package/dist/esm/{ic-menu-37dee714.js → ic-menu-6a4ef9cb.js} +2 -2
  38. package/dist/esm/{ic-menu-37dee714.js.map → ic-menu-6a4ef9cb.js.map} +1 -1
  39. package/dist/esm/ic-menu.entry.js +2 -2
  40. package/dist/esm/ic-tree-view.entry.js +1 -1
  41. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-accordion/ic-accordion.d.ts +3 -1
  42. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-button/ic-button.d.ts +1 -1
  43. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-checkbox/ic-checkbox.d.ts +1 -1
  44. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-chip/ic-chip.d.ts +1 -1
  45. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-footer/ic-footer.d.ts +1 -1
  46. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-menu/ic-menu.d.ts +1 -1
  47. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-menu-item/ic-menu-item.d.ts +1 -1
  48. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-navigation-item/ic-navigation-item.d.ts +1 -1
  49. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-pagination/ic-pagination.d.ts +1 -1
  50. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-pagination-bar/ic-pagination-bar.d.ts +1 -1
  51. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-pagination-item/ic-pagination-item.d.ts +1 -1
  52. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-popover-menu/ic-popover-menu.d.ts +1 -1
  53. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-radio-group/ic-radio-group.d.ts +1 -1
  54. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-radio-option/ic-radio-option.d.ts +1 -1
  55. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-search-bar/ic-search-bar.d.ts +1 -1
  56. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-select/ic-select.d.ts +1 -1
  57. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-side-navigation/ic-side-navigation.d.ts +1 -1
  58. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-switch/ic-switch.d.ts +1 -1
  59. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-tab/ic-tab.d.ts +1 -1
  60. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-tab-context/ic-tab-context.d.ts +1 -1
  61. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-tab-panel/ic-tab-panel.d.ts +1 -1
  62. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-text-field/ic-text-field.d.ts +1 -1
  63. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-theme/ic-theme.d.ts +1 -1
  64. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-toggle-button/ic-toggle-button.d.ts +1 -1
  65. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-toggle-button-group/ic-toggle-button-group.d.ts +1 -1
  66. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-tooltip/ic-tooltip.d.ts +1 -1
  67. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-top-navigation/ic-top-navigation.d.ts +1 -1
  68. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-typography/ic-typography.d.ts +1 -1
  69. package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/utils/helpers.d.ts +1 -1
  70. package/hydrate/index.js +327 -73
  71. package/hydrate/index.mjs +327 -73
  72. package/package.json +2 -2
  73. package/dist/cjs/common-helpers-0b38906e.js.map +0 -1
  74. package/dist/cjs/ic-accordion-cced5003.js.map +0 -1
  75. package/dist/core/p-5f68c316.entry.js +0 -2
  76. package/dist/core/p-6ff5fd18.entry.js +0 -2
  77. package/dist/core/p-82bffec7.js.map +0 -1
  78. package/dist/core/p-b569a57d.js +0 -3
  79. package/dist/core/p-b569a57d.js.map +0 -1
  80. package/dist/esm/common-helpers-b72aaf4e.js.map +0 -1
  81. package/dist/esm/ic-accordion-8a60202f.js.map +0 -1
  82. /package/dist/core/{p-f19a1e0d.js.map → p-1677b008.js.map} +0 -0
  83. /package/dist/core/{p-42e6ca3e.entry.js.map → p-18a6536e.entry.js.map} +0 -0
  84. /package/dist/core/{p-52244e66.entry.js.map → p-8f958e9c.entry.js.map} +0 -0
  85. /package/dist/core/{p-e793b7b4.entry.js.map → p-ad8d9dc5.entry.js.map} +0 -0
  86. /package/dist/core/{p-5f68c316.entry.js.map → p-b5b622a7.entry.js.map} +0 -0
  87. /package/dist/core/{p-6ff5fd18.entry.js.map → p-f8ef56e7.entry.js.map} +0 -0
  88. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-action-chip/ic-action-chip.d.ts +0 -0
  89. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-back-to-top/ic-back-to-top.types.d.ts +0 -0
  90. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-badge/ic-badge.types.d.ts +0 -0
  91. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-button/ic-button.types.d.ts +0 -0
  92. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-checkbox-group/ic-checkbox-group.types.d.ts +0 -0
  93. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-classification-banner/ic-classification-banner.types.d.ts +0 -0
  94. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-divider/ic-divider.types.d.ts +0 -0
  95. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-empty-state/ic-empty-state.d.ts +0 -0
  96. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-empty-state/ic-empty-state.types.d.ts +0 -0
  97. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-footer/ic-footer.types.d.ts +0 -0
  98. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-hero/ic-hero.types.d.ts +0 -0
  99. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-horizontal-scroll/ic-horizontal-scroll.d.ts +0 -0
  100. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-input-component-container/ic-input-component-container.d.ts +0 -0
  101. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-input-container/ic-input-container.d.ts +0 -0
  102. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-input-label/ic-input-label.d.ts +0 -0
  103. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-input-validation/ic-input-validation.d.ts +0 -0
  104. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-layout-grid/ic-layout-grid.types.d.ts +0 -0
  105. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-link/ic-link.d.ts +0 -0
  106. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-loading-indicator/ic-loading-indicator.d.ts +0 -0
  107. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-loading-indicator/ic-loading-indicator.types.d.ts +0 -0
  108. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-menu/ic-menu.types.d.ts +0 -0
  109. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-menu-group/ic-menu-group.d.ts +0 -0
  110. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-menu-item/ic-menu-item.types.d.ts +0 -0
  111. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-navigation-group/ic-navigation-group.types.d.ts +0 -0
  112. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-page-header/ic-page-header.d.ts +0 -0
  113. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-pagination/ic-pagination.types.d.ts +0 -0
  114. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-pagination-bar/ic-pagination-bar.types.d.ts +0 -0
  115. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-pagination-item/ic-pagination-item.types.d.ts +0 -0
  116. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-radio-group/ic-radio-group.types.d.ts +0 -0
  117. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-search-bar/ic-search-bar.types.d.ts +0 -0
  118. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-section-container/ic-section-container.d.ts +0 -0
  119. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-select/ic-select.types.d.ts +0 -0
  120. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-side-navigation/ic-side-navigation.types.d.ts +0 -0
  121. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-skeleton/ic-skeleton.types.d.ts +0 -0
  122. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-skip-link/ic-skip-link.d.ts +0 -0
  123. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-status-tag/ic-status-tag.types.d.ts +0 -0
  124. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-step/ic-step.types.d.ts +0 -0
  125. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-stepper/ic-stepper.types.d.ts +0 -0
  126. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-switch/ic-switch.types.d.ts +0 -0
  127. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-tab/ic-tab.types.d.ts +0 -0
  128. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-tab-group/ic-tab-group.d.ts +0 -0
  129. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-text-field/ic-text-field.types.d.ts +0 -0
  130. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-toggle-button-group/ic-toggle-button-group.types.d.ts +0 -0
  131. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/components/ic-tooltip/ic-tooltip.types.d.ts +0 -0
  132. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/utils/common-helpers.d.ts +0 -0
  133. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/utils/constants.d.ts +0 -0
  134. /package/dist/types/{home/gchq-dev-530 → Users/michael17979/Library/CloudStorage/OneDrive-Corp/Documents/Programming}/ic-ui-kit/packages/canary-web-components/.stencil/web-components/src/utils/types.d.ts +0 -0
@@ -6,7 +6,7 @@ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof win
6
6
 
7
7
  var purify = {exports: {}};
8
8
 
9
- /*! @license DOMPurify 3.4.11 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.11/LICENSE */
9
+ /*! @license DOMPurify 3.4.13 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.13/LICENSE */
10
10
 
11
11
  (function (module, exports) {
12
12
  (function (global, factory) {
@@ -323,7 +323,7 @@ var purify = {exports: {}};
323
323
  const text = freeze(['#text']);
324
324
 
325
325
  const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'command', 'commandfor', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns']);
326
- const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
326
+ const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dominant-baseline', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-orientation', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
327
327
  const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnalign', 'columnlines', 'columnspacing', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lquote', 'lspace', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
328
328
  const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
329
329
 
@@ -436,7 +436,7 @@ var purify = {exports: {}};
436
436
  function createDOMPurify() {
437
437
  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
438
438
  const DOMPurify = root => createDOMPurify(root);
439
- DOMPurify.version = '3.4.11';
439
+ DOMPurify.version = '3.4.13';
440
440
  DOMPurify.removed = [];
441
441
  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
442
442
  // Not running in a browser, provide a factory function
@@ -463,6 +463,7 @@ var purify = {exports: {}};
463
463
  const getAttributes = lookupGetter(ElementPrototype, 'attributes');
464
464
  const getNodeType = Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;
465
465
  const getNodeName = Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeName') : null;
466
+ const getOwnerDocument = Node && Node.prototype ? lookupGetter(Node.prototype, 'ownerDocument') : null;
466
467
  // As per issue #47, the web-components registry is inherited by a
467
468
  // new document created via createHTMLDocument. As per the spec
468
469
  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
@@ -1114,6 +1115,13 @@ var purify = {exports: {}};
1114
1115
  * @param root the in-place root to empty
1115
1116
  */
1116
1117
  const _neutralizeRoot = function _neutralizeRoot(root) {
1118
+ /* Strip every disallowed attribute (on* handlers included) off the whole
1119
+ subtree BEFORE detaching anything. Detaching first would hand back
1120
+ handler-bearing originals (e.g. an already-loading `<img onerror>`)
1121
+ whose queued resource event still fires in page scope after we throw.
1122
+ Clobber-safe reads; a doomed clobbered node's own attributes are
1123
+ irrelevant while its non-clobbered descendants are reached and scrubbed. */
1124
+ _neutralizeSubtree(root);
1117
1125
  const childNodes = getChildNodes(root);
1118
1126
  if (childNodes) {
1119
1127
  const snapshot = [];
@@ -1241,6 +1249,82 @@ var purify = {exports: {}};
1241
1249
  }
1242
1250
  }
1243
1251
  };
1252
+ /**
1253
+ * _neutralizePatchLinkage
1254
+ *
1255
+ * IN_PLACE entry pre-pass (declarative-partial-updates / streaming
1256
+ * hardening, https://github.com/WICG/declarative-partial-updates).
1257
+ *
1258
+ * The main walk strips patch linkage (`for`/`patchsrc`) and removes range
1259
+ * markers (PIs / markup comments) node-by-node, in document order, AS it
1260
+ * reaches each node. On a live in-place root that leaves a window: from the
1261
+ * moment the root is connected until the walk arrives at a given node, that
1262
+ * node's linkage is live. A patch applied on connection/stream can fire as
1263
+ * a microtask during the walk and inject or teleport an unsanitized DOM
1264
+ * range into a region the iterator has already passed and will not revisit,
1265
+ * so the post-return "tree is sanitized" contract is violated. Sweep the
1266
+ * whole tree once up front and sever every linkage before the walk begins,
1267
+ * closing that window.
1268
+ *
1269
+ * This CANNOT undo a patch that already fired before sanitize ran — that is
1270
+ * the irreducible "do not IN_PLACE a live-connected attacker tree" caveat —
1271
+ * but it closes everything from sanitize-start onward. Gated on SAFE_FOR_XML
1272
+ * to group with the rest of the declarative-partial-updates handling and
1273
+ * stay overridable, consistent with the codebase.
1274
+ *
1275
+ * Clobber-safe traversal (cached childNodes getter); per-node try/catch so a
1276
+ * clobbered root cannot defeat the sweep of its non-clobbered descendants.
1277
+ *
1278
+ * NOTE (pending real-Chrome confirmation, see test/declarative-patch-probe
1279
+ * .html Q1): this mirrors the existing policy of keeping `for` on
1280
+ * <label>/<output>. If the shipping feature can drive a patch through a
1281
+ * surviving `for`-on-label/output + `id` pair, this pre-pass and the
1282
+ * attribute check at _isBasicCustomElement's caller must additionally drop
1283
+ * that pair on the IN_PLACE path. Left as-is until the taxonomy is verified.
1284
+ *
1285
+ * @param root the in-place root to sweep
1286
+ */
1287
+ const _neutralizePatchLinkage = function _neutralizePatchLinkage(root) {
1288
+ if (!SAFE_FOR_XML) {
1289
+ return;
1290
+ }
1291
+ const stack = [root];
1292
+ while (stack.length > 0) {
1293
+ const node = stack.pop();
1294
+ const nodeType = getNodeType ? getNodeType(node) : node.nodeType;
1295
+ /* Remove range markers (the target side of a patch linkage): every
1296
+ processing instruction, and any markup-bearing comment. */
1297
+ if (nodeType === NODE_TYPE.processingInstruction || nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, node.data)) {
1298
+ try {
1299
+ remove(node);
1300
+ } catch (_) {
1301
+ /* Best-effort */
1302
+ }
1303
+ continue;
1304
+ }
1305
+ /* Strip patch-source attributes (the source side) off elements. */
1306
+ if (nodeType === NODE_TYPE.element) {
1307
+ const element = node;
1308
+ const lcTag = transformCaseFunc(getNodeName ? getNodeName(node) : node.nodeName);
1309
+ try {
1310
+ if (element.hasAttribute && element.hasAttribute('patchsrc')) {
1311
+ element.removeAttribute('patchsrc');
1312
+ }
1313
+ if (element.hasAttribute && element.hasAttribute('for') && lcTag !== 'label' && lcTag !== 'output') {
1314
+ element.removeAttribute('for');
1315
+ }
1316
+ } catch (_) {
1317
+ /* Clobbered removeAttribute/hasAttribute on a doomed node — ignore */
1318
+ }
1319
+ }
1320
+ const childNodes = getChildNodes(node);
1321
+ if (childNodes) {
1322
+ for (let i = childNodes.length - 1; i >= 0; --i) {
1323
+ stack.push(childNodes[i]);
1324
+ }
1325
+ }
1326
+ }
1327
+ };
1244
1328
  /**
1245
1329
  * _initDocument
1246
1330
  *
@@ -1298,7 +1382,17 @@ var purify = {exports: {}};
1298
1382
  * @return The created NodeIterator
1299
1383
  */
1300
1384
  const _createNodeIterator = function _createNodeIterator(root) {
1301
- return createNodeIterator.call(root.ownerDocument || root, root,
1385
+ /* Read ownerDocument through the cached Node.prototype getter, never the
1386
+ direct property. HTMLFormElement has [LegacyOverrideBuiltIns], so a
1387
+ clobbering child (<input name="ownerDocument"> or a form-associated
1388
+ external input) shadows the prototype getter and makes a direct read
1389
+ return that <input>. createNodeIterator.call(<input>, ...) then throws
1390
+ "Illegal invocation", and on the IN_PLACE path that throw lands before
1391
+ the walk's fail-closed barrier - leaving the caller's live tree, with
1392
+ any already-armed handler in it, un-neutralized. The cached getter
1393
+ returns the real Document regardless of the clobber. */
1394
+ const doc = getOwnerDocument ? getOwnerDocument(root) : root.ownerDocument;
1395
+ return createNodeIterator.call(doc || root, root,
1302
1396
  // eslint-disable-next-line no-bitwise
1303
1397
  NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
1304
1398
  };
@@ -1338,7 +1432,11 @@ var purify = {exports: {}};
1338
1432
  const _scrubTemplateExpressions2 = function _scrubTemplateExpressions(node) {
1339
1433
  var _node$querySelectorAl;
1340
1434
  node.normalize();
1341
- const walker = createNodeIterator.call(node.ownerDocument || node, node,
1435
+ /* Clobber-safe ownerDocument read, same reasoning as _createNodeIterator:
1436
+ under SAFE_FOR_TEMPLATES this runs on the live IN_PLACE root, which may
1437
+ carry a form-named-getter override of ownerDocument. */
1438
+ const doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;
1439
+ const walker = createNodeIterator.call(doc || node, node,
1342
1440
  // eslint-disable-next-line no-bitwise
1343
1441
  NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);
1344
1442
  let currentNode = walker.nextNode();
@@ -1491,15 +1589,21 @@ var purify = {exports: {}};
1491
1589
  /**
1492
1590
  * Handle a node whose tag is forbidden or not allowlisted: keep
1493
1591
  * allowed custom elements (false return exits _sanitizeElements
1494
- * early - namespace/fallback checks and the afterSanitizeElements
1495
- * hook are intentionally skipped for kept custom elements), else
1496
- * hoist content per KEEP_CONTENT and remove.
1592
+ * early - the namespace and fallback-tag removal checks are
1593
+ * intentionally skipped for kept custom elements), else hoist
1594
+ * content per KEEP_CONTENT and remove.
1595
+ *
1596
+ * A kept custom element is the ONLY case in which this function
1597
+ * returns false, so the caller uses that return value to run the
1598
+ * afterSanitizeElements hook on the kept element and keep the
1599
+ * element-hook lifecycle consistent with normal allowlisted
1600
+ * elements (GHSA-c2j3-45gr-mqc4).
1497
1601
  *
1498
1602
  * @param currentNode the disallowed node
1499
1603
  * @param tagName the node's transformCaseFunc'd tag name
1500
1604
  * @return true if the node was removed, false if kept
1501
1605
  */
1502
- const _sanitizeDisallowedNode = function _sanitizeDisallowedNode(currentNode, tagName) {
1606
+ const _sanitizeDisallowedNode = function _sanitizeDisallowedNode(currentNode, tagName, root) {
1503
1607
  /* Check if we have a custom element to handle */
1504
1608
  if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
1505
1609
  if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
@@ -1522,27 +1626,26 @@ var purify = {exports: {}};
1522
1626
  const childNodes = getChildNodes(currentNode);
1523
1627
  if (childNodes && parentNode) {
1524
1628
  const childCount = childNodes.length;
1525
- /* In-place: hoist the *original* children so the iterator visits
1526
- and sanitises them through the same allowlist pass as every other
1527
- node. The caller built the tree in the live document, so the
1528
- originals carry already-queued resource events (`<img onerror>`,
1529
- `<video>`/`<audio>` error, lazy/`onload`, …); cloning would leave
1530
- those originals detached but still armed, firing in page scope
1531
- while the returned tree looked clean. Moving is safe in-place: the
1532
- root is pre-validated as an allowed tag and so is never the node
1533
- being removed, which keeps `parentNode` inside the iterator root
1534
- and the relocated child inside the serialised tree.
1535
- Otherwise (string / DOM-copy paths): clone. The iterator is rooted
1536
- at — and the result serialised from — `body`, so a restrictive
1537
- ALLOWED_TAGS that removes `body` itself must leave its content in
1538
- place, which only cloning does; and those paths parse into an
1539
- inert document, so their discarded originals never had a queued
1540
- event to neutralise.
1629
+ /* Hoist by moving each child up one level rather than deep-cloning
1630
+ it. Moving transfers every descendant exactly once, so a chain of
1631
+ nested disallowed elements costs O(n) instead of the O(n^2) that
1632
+ re-cloning the shrinking subtree at each level produced; it also
1633
+ empties the removed original, so `DOMPurify.removed` no longer
1634
+ pins whole subtrees. Moving preserves the in-place guarantee too:
1635
+ an original carrying already-queued resource events (`<img
1636
+ onerror>`, `<video>`/`<audio>` error, lazy/`onload`, …) is
1637
+ relocated and sanitised rather than left detached but still armed.
1638
+ The sole case that must clone is removing the walk root itself.
1639
+ The result is serialised from the root's subtree, so a restrictive
1640
+ ALLOWED_TAGS that strips the root (`body` on the string path) must
1641
+ leave the content inside it, which only cloning does. In IN_PLACE
1642
+ the root is pre-validated as an allowed tag and so is never removed
1643
+ here, so that path always takes the move branch.
1541
1644
  `childNodes` is live; a tail-to-head walk keeps `childNodes[i]`
1542
1645
  valid whether we move (drops the trailing entry) or clone (leaves
1543
1646
  the list intact). */
1544
1647
  for (let i = childCount - 1; i >= 0; --i) {
1545
- const hoisted = IN_PLACE ? childNodes[i] : cloneNode(childNodes[i], true);
1648
+ const hoisted = currentNode === root ? cloneNode(childNodes[i], true) : childNodes[i];
1546
1649
  parentNode.insertBefore(hoisted, getNextSibling(currentNode));
1547
1650
  }
1548
1651
  }
@@ -1550,6 +1653,26 @@ var purify = {exports: {}};
1550
1653
  _forceRemove(currentNode);
1551
1654
  return true;
1552
1655
  };
1656
+ /**
1657
+ * Fork a hook-mutable allowlist off its shared binding the first time a
1658
+ * (possibly lazily-installed) uponSanitize* hook is about to see it, so the
1659
+ * hook cannot widen the per-instance default or the setConfig binding by
1660
+ * reference and leak past the call. Returns the set unchanged once it is
1661
+ * already call-local, so repeated calls across elements are idempotent.
1662
+ *
1663
+ * @param hookList the uponSanitize* hook array for this event
1664
+ * @param set the current ALLOWED_TAGS / ALLOWED_ATTR binding
1665
+ * @param defaultSet the per-instance DEFAULT_ALLOWED_* constant
1666
+ * @param setConfigSet the captured setConfig() binding, or null
1667
+ * @return a call-local clone if a hook is present and set is still shared,
1668
+ * else set unchanged
1669
+ */
1670
+ const _forkSharedAllowlist = function _forkSharedAllowlist(hookList, set, defaultSet, setConfigSet) {
1671
+ if (hookList.length === 0) {
1672
+ return set;
1673
+ }
1674
+ return set === defaultSet || set === setConfigSet ? clone(set) : set;
1675
+ };
1553
1676
  /**
1554
1677
  * _sanitizeElements
1555
1678
  *
@@ -1559,9 +1682,20 @@ var purify = {exports: {}};
1559
1682
  * @param currentNode to check for permission to exist
1560
1683
  * @return true if node was killed, false if left alive
1561
1684
  */
1562
- const _sanitizeElements = function _sanitizeElements(currentNode) {
1685
+ // eslint-disable-next-line complexity
1686
+ const _sanitizeElements = function _sanitizeElements(currentNode, root) {
1563
1687
  /* Execute a hook if present */
1564
1688
  _executeHooks(hooks.beforeSanitizeElements, currentNode, null);
1689
+ /* A hook may have detached the node - treat it as removed (see the
1690
+ detached-node comment after the uponSanitizeElement hook below). On
1691
+ the IN_PLACE path, neutralize the detached subtree first so a queued
1692
+ resource handler on it cannot fire in page scope after we return. */
1693
+ if (currentNode !== root && getParentNode(currentNode) === null) {
1694
+ if (IN_PLACE) {
1695
+ _neutralizeSubtree(currentNode);
1696
+ }
1697
+ return true;
1698
+ }
1565
1699
  /* Check if element is clobbered or can clobber */
1566
1700
  if (_isClobbered(currentNode)) {
1567
1701
  _forceRemove(currentNode);
@@ -1569,11 +1703,47 @@ var purify = {exports: {}};
1569
1703
  }
1570
1704
  /* Now let's check the element's type and name */
1571
1705
  const tagName = transformCaseFunc(getNodeName ? getNodeName(currentNode) : currentNode.nodeName);
1706
+ /* Close the pre-walk clone-guard's timing gap: an uponSanitizeElement
1707
+ hook may have been installed after that guard sampled the hook arrays
1708
+ (e.g. lazily from beforeSanitizeElements), leaving ALLOWED_TAGS still
1709
+ aliasing a shared binding that a widening hook would mutate by
1710
+ reference. Fork it before exposing it to the hook. */
1711
+ ALLOWED_TAGS = _forkSharedAllowlist(hooks.uponSanitizeElement, ALLOWED_TAGS, DEFAULT_ALLOWED_TAGS, SET_CONFIG_ALLOWED_TAGS);
1572
1712
  /* Execute a hook if present */
1573
1713
  _executeHooks(hooks.uponSanitizeElement, currentNode, {
1574
1714
  tagName,
1575
1715
  allowedTags: ALLOWED_TAGS
1576
1716
  });
1717
+ /* A hook may have detached the node from the tree — a long-standing
1718
+ user pattern (issue #469; draw.io-style foreignObject filtering).
1719
+ Per the cached, unclobberable parentNode getter the node is
1720
+ genuinely out of the tree, so it can reach neither the serialized
1721
+ output nor an IN_PLACE live tree; treat it as removed and stop
1722
+ processing it. Without this guard, the unsafe-node / namespace
1723
+ checks below would call _forceRemove on a parentless node and hit
1724
+ the REPORT-3 fail-closed throw — which exists for nodes DOMPurify
1725
+ wants gone but *cannot* detach (clobbered / parentless roots), the
1726
+ opposite of a node that is already safely gone. The walk root is
1727
+ exempt: a detached IN_PLACE root is legitimate input and must still
1728
+ be fully sanitized, and a kill-decision on it must keep hitting the
1729
+ REPORT-3 throw. Nodes detached by hooks stay the hook's
1730
+ responsibility for placement: they are not recorded in
1731
+ DOMPurify.removed, so the post-walk IN_PLACE pass (which iterates
1732
+ DOMPurify.removed) does not reach them. But a hook-detached subtree
1733
+ can still hold a queued resource-event handler - e.g. an <img onload>
1734
+ that began loading when the caller built the live tree - which fires
1735
+ in page scope after sanitize returns even though the handler never
1736
+ reached the returned tree. That is the audit-5 F1 hazard, and the
1737
+ documented node.remove() hook pattern walks straight into it. So on
1738
+ the IN_PLACE path we neutralize the detached subtree inline here,
1739
+ stripping its non-allow-listed attributes before returning, exactly
1740
+ as the post-walk pass does for _forceRemove'd subtrees. */
1741
+ if (currentNode !== root && getParentNode(currentNode) === null) {
1742
+ if (IN_PLACE) {
1743
+ _neutralizeSubtree(currentNode);
1744
+ }
1745
+ return true;
1746
+ }
1577
1747
  /* Remove mXSS vectors, processing instructions and risky comments */
1578
1748
  if (_isUnsafeNode(currentNode, tagName)) {
1579
1749
  _forceRemove(currentNode);
@@ -1581,7 +1751,22 @@ var purify = {exports: {}};
1581
1751
  }
1582
1752
  /* Remove element if anything forbids its presence */
1583
1753
  if (FORBID_TAGS[tagName] || !(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && !ALLOWED_TAGS[tagName]) {
1584
- return _sanitizeDisallowedNode(currentNode, tagName);
1754
+ const removed = _sanitizeDisallowedNode(currentNode, tagName, root);
1755
+ /* A false return means the node is a custom element kept via
1756
+ CUSTOM_ELEMENT_HANDLING - the only keep path through
1757
+ _sanitizeDisallowedNode. Run afterSanitizeElements on it so the
1758
+ element-hook lifecycle matches normal allowlisted elements: a
1759
+ security policy applied in this hook (e.g. stripping an attribute
1760
+ from every surviving element) must not silently skip kept custom
1761
+ elements (GHSA-c2j3-45gr-mqc4). This mirrors the normal-element
1762
+ tail below - the hook runs, then the walker's subsequent
1763
+ _sanitizeAttributes pass sanitizes the element's attributes. The
1764
+ deliberately skipped namespace and fallback-tag removal checks stay
1765
+ skipped; they are removal decisions, not the hook contract. */
1766
+ if (removed === false) {
1767
+ _executeHooks(hooks.afterSanitizeElements, currentNode, null);
1768
+ }
1769
+ return removed;
1585
1770
  }
1586
1771
  /* Check whether element has a valid namespace.
1587
1772
  Realm-safe check (GHSA-hpcv-96wg-7vj8): use the cached Node.prototype
@@ -1628,6 +1813,33 @@ var purify = {exports: {}};
1628
1813
  if (FORBID_ATTR[lcName]) {
1629
1814
  return false;
1630
1815
  }
1816
+ /* Reject declarative-partial-updates patch-linkage attributes
1817
+ (https://github.com/WICG/declarative-partial-updates).
1818
+ Empirical note (Chrome 150, verified — see
1819
+ test/declarative-patch-probe-v3.html): expansion is NOT applied after
1820
+ sanitization. For the string path it fires during sanitize()'s own
1821
+ parse, so the walk sees and sanitizes the fully materialized expanded
1822
+ tree — teleports into MathML/SVG integration points included; a
1823
+ weaponized `<template for>`->`<img onerror>` comes back with the handler
1824
+ stripped. For the IN_PLACE path it fires on connection, before the walk.
1825
+ Either way DOMPurify is NOT blind to the patch.
1826
+ This removal is therefore defense-in-depth rather than the sole barrier:
1827
+ it prevents live linkage from surviving into the OUTPUT and re-expanding
1828
+ in the caller's context, and keeps behaviour deterministic if a future
1829
+ engine defers expansion. `for` is legitimate only on <label>/<output>;
1830
+ anywhere else (notably <template for>) it links the element to a patch
1831
+ target and teleports or removes an arbitrary DOM range by id/marker name.
1832
+ `patchsrc` fetches remote markup and is treated as a script-loading
1833
+ mechanism (CSP). Gated on SAFE_FOR_XML so the removal groups with the
1834
+ other structural-threat checks and stays overridable, consistent with
1835
+ the rest of the codebase. PI range markers are already removed by
1836
+ _isUnsafeNode. */
1837
+ if (SAFE_FOR_XML && lcName === 'patchsrc') {
1838
+ return false;
1839
+ }
1840
+ if (SAFE_FOR_XML && lcName === 'for' && lcTag !== 'label' && lcTag !== 'output') {
1841
+ return false;
1842
+ }
1631
1843
  /* Make sure attribute cannot clobber */
1632
1844
  if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
1633
1845
  return false;
@@ -1744,6 +1956,9 @@ var purify = {exports: {}};
1744
1956
  if (!attributes || _isClobbered(currentNode)) {
1745
1957
  return;
1746
1958
  }
1959
+ /* Same lazy-install guard as uponSanitizeElement (see there): fork the
1960
+ attribute allowlist off its shared binding before a hook can see it. */
1961
+ ALLOWED_ATTR = _forkSharedAllowlist(hooks.uponSanitizeAttribute, ALLOWED_ATTR, DEFAULT_ALLOWED_ATTR, SET_CONFIG_ALLOWED_ATTR);
1747
1962
  const hookEvent = {
1748
1963
  attrName: '',
1749
1964
  attrValue: '',
@@ -1837,7 +2052,7 @@ var purify = {exports: {}};
1837
2052
  /* Execute a hook if present */
1838
2053
  _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);
1839
2054
  /* Sanitize tags and elements */
1840
- _sanitizeElements(shadowNode);
2055
+ _sanitizeElements(shadowNode, fragment);
1841
2056
  /* Check attributes next */
1842
2057
  _sanitizeAttributes(shadowNode);
1843
2058
  /* Deep shadow DOM detected.
@@ -2028,6 +2243,11 @@ var purify = {exports: {}};
2028
2243
  keep using and whose return value they ignore — unsanitized. REPORT-2. */
2029
2244
  const inPlace = IN_PLACE && typeof dirty !== 'string' && _isNode(dirty);
2030
2245
  if (inPlace) {
2246
+ /* Declarative-partial-updates / streaming pre-pass: sever every patch
2247
+ linkage across the live tree BEFORE the walk, so no patch can fire
2248
+ mid-walk and inject into an already-processed region. Runs first, so
2249
+ it also covers the forbidden/clobbered roots that throw below. */
2250
+ _neutralizePatchLinkage(dirty);
2031
2251
  /* Do some early pre-sanitization to avoid unsafe root nodes.
2032
2252
  Read nodeName through the cached prototype getter — a clobbering
2033
2253
  child named "nodeName" on the form root would otherwise shadow
@@ -2037,6 +2257,9 @@ var purify = {exports: {}};
2037
2257
  if (typeof nn === 'string') {
2038
2258
  const tagName = transformCaseFunc(nn);
2039
2259
  if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
2260
+ /* Fail closed on a live root: neutralize handlers/children before
2261
+ throwing, exactly as the mid-walk abort path does. */
2262
+ _neutralizeRoot(dirty);
2040
2263
  throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');
2041
2264
  }
2042
2265
  }
@@ -2051,6 +2274,10 @@ var purify = {exports: {}};
2051
2274
  the application unsanitized. Refuse to sanitize such a root
2052
2275
  the same way we refuse a forbidden tag. GHSA-r47g-fvhr-h676. */
2053
2276
  if (_isClobbered(dirty)) {
2277
+ /* Fail closed on a live clobbered root before throwing.
2278
+ _neutralizeRoot's reads are clobber-safe (cached getters); the
2279
+ form's non-clobbered descendants, e.g. an armed <img>, are scrubbed. */
2280
+ _neutralizeRoot(dirty);
2054
2281
  throw typeErrorCreate('root node is clobbered and cannot be sanitized in-place');
2055
2282
  }
2056
2283
  /* Sanitize attached shadow roots before the main iterator runs.
@@ -2103,20 +2330,24 @@ var purify = {exports: {}};
2103
2330
  _forceRemove(body.firstChild);
2104
2331
  }
2105
2332
  /* Get node iterator */
2106
- const nodeIterator = _createNodeIterator(inPlace ? dirty : body);
2333
+ const walkRoot = inPlace ? dirty : body;
2107
2334
  /* Now start iterating over the created document.
2108
2335
  The walk runs inside an exception barrier (campaign-3 F2): a re-entrant
2109
2336
  engine/custom-element mutation can detach a node mid-walk so
2110
2337
  `_forceRemove`'s parentless guard throws, aborting the loop. Without the
2111
2338
  barrier the caller's in-place tree would be left half-sanitized with the
2112
- unvisited tail still armed. On any throw we fail closed — strip the
2113
- in-place root bare — then rethrow so the existing throw contract is
2114
- preserved. (String/DOM-copy paths never return the partial body, so the
2115
- propagating throw is already fail-closed there.) */
2339
+ unvisited tail still armed. _createNodeIterator itself is inside the
2340
+ barrier too: constructing the iterator dereferences the root's document,
2341
+ and any failure there (e.g. an exotic/clobbered root) must still fail
2342
+ closed rather than skip the neutralize. On any throw we fail closed -
2343
+ strip the in-place root bare - then rethrow so the existing throw
2344
+ contract is preserved. (String/DOM-copy paths never return the partial
2345
+ body, so the propagating throw is already fail-closed there.) */
2116
2346
  try {
2347
+ const nodeIterator = _createNodeIterator(walkRoot);
2117
2348
  while (currentNode = nodeIterator.nextNode()) {
2118
2349
  /* Sanitize tags and elements */
2119
- _sanitizeElements(currentNode);
2350
+ _sanitizeElements(currentNode, walkRoot);
2120
2351
  /* Check attributes next */
2121
2352
  _sanitizeAttributes(currentNode);
2122
2353
  /* Shadow DOM detected, sanitize it.
@@ -2130,6 +2361,14 @@ var purify = {exports: {}};
2130
2361
  } catch (error) {
2131
2362
  if (inPlace) {
2132
2363
  _neutralizeRoot(dirty);
2364
+ /* Nodes _forceRemove'd earlier in the aborted walk are already
2365
+ detached from the root, so _neutralizeRoot's subtree pass does not
2366
+ reach them. Defuse them too, mirroring the success-path loop below. */
2367
+ arrayForEach(DOMPurify.removed, entry => {
2368
+ if (entry.element) {
2369
+ _neutralizeSubtree(entry.element);
2370
+ }
2371
+ });
2133
2372
  }
2134
2373
  throw error;
2135
2374
  }
@@ -2279,4 +2518,4 @@ const sanitizeHTMLIconString = (html) => {
2279
2518
  exports.sanitizeHTMLIconString = sanitizeHTMLIconString;
2280
2519
  exports.sanitizeHTMLString = sanitizeHTMLString;
2281
2520
 
2282
- //# sourceMappingURL=common-helpers-0b38906e.js.map
2521
+ //# sourceMappingURL=common-helpers-17b5eaf4.js.map