@umbraco-cms/backoffice 17.2.1 → 17.3.0-rc

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 (972) hide show
  1. package/custom-elements.json +514 -147
  2. package/dist-cms/apps/app/app-auth.controller.d.ts +2 -1
  3. package/dist-cms/apps/app/app-auth.controller.js +9 -32
  4. package/dist-cms/apps/app/app-auth.element.d.ts +11 -0
  5. package/dist-cms/apps/app/app-auth.element.js +19 -0
  6. package/dist-cms/apps/app/app.element.d.ts +5 -1
  7. package/dist-cms/apps/app/app.element.js +43 -45
  8. package/dist-cms/assets/lang/ar.js +2 -0
  9. package/dist-cms/assets/lang/bs.js +1 -0
  10. package/dist-cms/assets/lang/cs.js +1 -0
  11. package/dist-cms/assets/lang/cy.js +4 -2
  12. package/dist-cms/assets/lang/da.js +9 -0
  13. package/dist-cms/assets/lang/de.js +5 -1
  14. package/dist-cms/assets/lang/en.js +20 -1
  15. package/dist-cms/assets/lang/es.js +5 -1
  16. package/dist-cms/assets/lang/fr.js +4 -2
  17. package/dist-cms/assets/lang/he.js +2 -0
  18. package/dist-cms/assets/lang/hr.js +1 -0
  19. package/dist-cms/assets/lang/it.js +3 -0
  20. package/dist-cms/assets/lang/ja.js +61 -23
  21. package/dist-cms/assets/lang/ko.js +2 -0
  22. package/dist-cms/assets/lang/nb.js +1 -0
  23. package/dist-cms/assets/lang/nl.js +4 -1
  24. package/dist-cms/assets/lang/pl.js +3 -1
  25. package/dist-cms/assets/lang/pt-br.js +2 -0
  26. package/dist-cms/assets/lang/pt.js +4 -0
  27. package/dist-cms/assets/lang/ro.js +4 -0
  28. package/dist-cms/assets/lang/ru.js +3 -1
  29. package/dist-cms/assets/lang/sv.js +1 -0
  30. package/dist-cms/assets/lang/tr.js +1 -0
  31. package/dist-cms/assets/lang/uk.js +3 -1
  32. package/dist-cms/assets/lang/vi.js +4 -0
  33. package/dist-cms/assets/lang/zh-tw.js +1 -0
  34. package/dist-cms/assets/lang/zh.js +1 -0
  35. package/dist-cms/external/openid/src/index.d.ts +242 -17
  36. package/dist-cms/external/openid/src/index.js +245 -16
  37. package/dist-cms/external/rxjs/index.d.ts +1 -1
  38. package/dist-cms/external/rxjs/index.js +1 -1
  39. package/dist-cms/external/uui/package.json +2 -2
  40. package/dist-cms/libs/context-api/consume/context-consumer.js +58 -32
  41. package/dist-cms/packages/block/block/conditions/block-workspace-is-readonly.condition.d.ts +8 -0
  42. package/dist-cms/packages/block/block/conditions/block-workspace-is-readonly.condition.js +15 -0
  43. package/dist-cms/packages/block/block/conditions/manifests.js +7 -0
  44. package/dist-cms/packages/block/block/conditions/types.d.ts +4 -1
  45. package/dist-cms/packages/block/block/context/block-manager.context.d.ts +1 -0
  46. package/dist-cms/packages/block/block/context/block-manager.context.js +63 -13
  47. package/dist-cms/packages/block/block/events/block-inserted.event.d.ts +14 -0
  48. package/dist-cms/packages/block/block/events/block-inserted.event.js +6 -0
  49. package/dist-cms/packages/block/block/events/index.d.ts +1 -0
  50. package/dist-cms/packages/block/block/events/index.js +1 -0
  51. package/dist-cms/packages/block/block/index.d.ts +1 -0
  52. package/dist-cms/packages/block/block/index.js +1 -0
  53. package/dist-cms/packages/block/block/workspace/block-element-manager.d.ts +2 -2
  54. package/dist-cms/packages/block/block/workspace/block-element-manager.js +4 -7
  55. package/dist-cms/packages/block/block/workspace/block-workspace.context.d.ts +4 -0
  56. package/dist-cms/packages/block/block/workspace/block-workspace.context.js +14 -1
  57. package/dist-cms/packages/block/block/workspace/manifests.js +8 -0
  58. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.d.ts +1 -0
  59. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.js +127 -20
  60. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-property.element.d.ts +1 -0
  61. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-property.element.js +12 -0
  62. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.d.ts +1 -0
  63. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.js +74 -3
  64. package/dist-cms/packages/block/block-grid/block-grid-manager/block-grid-manager.context.js +1 -0
  65. package/dist-cms/packages/block/block-grid/components/block-grid-block/block-grid-block.element.js +3 -2
  66. package/dist-cms/packages/block/block-grid/components/block-grid-block-inline/block-grid-block-inline.element.d.ts +1 -0
  67. package/dist-cms/packages/block/block-grid/components/block-grid-block-inline/block-grid-block-inline.element.js +21 -8
  68. package/dist-cms/packages/block/block-grid/components/block-grid-block-unsupported/block-grid-block-unsupported.element.js +1 -3
  69. package/dist-cms/packages/block/block-grid/components/block-grid-entries/block-grid-entries.context.js +13 -2
  70. package/dist-cms/packages/block/block-grid/components/block-grid-entries/block-grid-entries.element.d.ts +1 -1
  71. package/dist-cms/packages/block/block-grid/components/block-grid-entries/block-grid-entries.element.js +39 -11
  72. package/dist-cms/packages/block/block-grid/components/block-grid-entry/block-grid-entry.element.js +26 -12
  73. package/dist-cms/packages/block/block-grid/components/ref-grid-block/ref-grid-block.element.js +4 -1
  74. package/dist-cms/packages/block/block-grid/property-actions/manifests.js +8 -1
  75. package/dist-cms/packages/block/block-grid/property-editors/block-grid-editor/property-editor-ui-block-grid.element.js +5 -0
  76. package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.js +19 -7
  77. package/dist-cms/packages/block/block-list/components/inline-list-block/inline-list-block.element.js +25 -1
  78. package/dist-cms/packages/block/block-list/components/ref-list-block/ref-list-block.element.js +5 -0
  79. package/dist-cms/packages/block/block-list/components/unsupported-list-block/unsupported-list-block.element.js +1 -0
  80. package/dist-cms/packages/block/block-list/context/block-list-entries.context.js +21 -3
  81. package/dist-cms/packages/block/block-list/context/block-list-manager.context.js +1 -0
  82. package/dist-cms/packages/block/block-list/manifests.js +8 -0
  83. package/dist-cms/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.d.ts +1 -1
  84. package/dist-cms/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.js +48 -30
  85. package/dist-cms/packages/block/block-rte/components/block-rte-entry/block-rte-entry.element.d.ts +2 -1
  86. package/dist-cms/packages/block/block-rte/components/block-rte-entry/block-rte-entry.element.js +81 -9
  87. package/dist-cms/packages/block/block-rte/context/block-rte-entries.context.d.ts +10 -3
  88. package/dist-cms/packages/block/block-rte/context/block-rte-entries.context.js +80 -15
  89. package/dist-cms/packages/block/block-rte/context/block-rte-entry.context.js +1 -1
  90. package/dist-cms/packages/block/block-rte/context/block-rte-manager.context.d.ts +14 -0
  91. package/dist-cms/packages/block/block-rte/context/block-rte-manager.context.js +36 -0
  92. package/dist-cms/packages/block/block-rte/property-value-cloner/property-value-cloner-block-rte.cloner.js +22 -12
  93. package/dist-cms/packages/block/block-single/components/block-single-entry/block-single-entry.element.js +13 -4
  94. package/dist-cms/packages/block/block-single/components/inline-single-block/inline-single-block.element.js +1 -0
  95. package/dist-cms/packages/block/block-single/components/ref-single-block/ref-single-block.element.js +4 -1
  96. package/dist-cms/packages/block/block-single/context/block-single-entries.context.js +20 -2
  97. package/dist-cms/packages/block/block-single/context/block-single-manager.context.js +1 -0
  98. package/dist-cms/packages/block/block-single/property-editors/block-single-editor/property-editor-ui-block-single.element.js +22 -24
  99. package/dist-cms/packages/block/vite.config.js +1 -0
  100. package/dist-cms/packages/content/content/audit-log/audit-log-action/audit-log-action-default.kind.d.ts +3 -0
  101. package/dist-cms/packages/content/content/audit-log/audit-log-action/audit-log-action-default.kind.js +18 -0
  102. package/dist-cms/packages/content/content/audit-log/audit-log-action/audit-log-action.element.d.ts +19 -0
  103. package/dist-cms/packages/content/content/audit-log/audit-log-action/audit-log-action.element.js +54 -0
  104. package/dist-cms/packages/content/content/audit-log/audit-log-action/audit-log-action.extension.d.ts +14 -0
  105. package/dist-cms/packages/content/content/audit-log/audit-log-action/content-rollback.audit-log-action.kind.d.ts +3 -0
  106. package/dist-cms/packages/content/content/audit-log/audit-log-action/content-rollback.audit-log-action.kind.js +22 -0
  107. package/dist-cms/packages/content/content/audit-log/audit-log-action/manifests.d.ts +2 -0
  108. package/dist-cms/packages/content/content/audit-log/audit-log-action/manifests.js +3 -0
  109. package/dist-cms/packages/content/content/audit-log/audit-log-action/types.d.ts +17 -0
  110. package/dist-cms/packages/content/content/audit-log/audit-log-action/types.js +1 -0
  111. package/dist-cms/packages/content/content/audit-log/index.d.ts +4 -0
  112. package/dist-cms/packages/content/content/audit-log/index.js +2 -0
  113. package/dist-cms/packages/content/content/audit-log/info-app/content-audit-log-workspace-info-app.element.d.ts +21 -0
  114. package/dist-cms/packages/content/content/audit-log/info-app/content-audit-log-workspace-info-app.element.js +220 -0
  115. package/dist-cms/packages/content/content/audit-log/info-app/content-audit-log-workspace-info-app.kind.d.ts +2 -0
  116. package/dist-cms/packages/content/content/audit-log/info-app/content-audit-log-workspace-info-app.kind.js +12 -0
  117. package/dist-cms/packages/content/content/audit-log/info-app/manifests.d.ts +2 -0
  118. package/dist-cms/packages/content/content/audit-log/info-app/manifests.js +2 -0
  119. package/dist-cms/packages/content/content/audit-log/info-app/types.d.ts +14 -0
  120. package/dist-cms/packages/content/content/audit-log/info-app/types.js +1 -0
  121. package/dist-cms/packages/content/content/audit-log/manifests.d.ts +2 -0
  122. package/dist-cms/packages/content/content/audit-log/manifests.js +6 -0
  123. package/dist-cms/packages/content/content/collection/manager/content-collection-manager.controller.js +7 -0
  124. package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.context.d.ts +1 -3
  125. package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.element.d.ts +8 -4
  126. package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.element.js +56 -44
  127. package/dist-cms/packages/content/content/global-components/content-workspace-property.element.d.ts +1 -0
  128. package/dist-cms/packages/content/content/global-components/content-workspace-property.element.js +12 -0
  129. package/dist-cms/packages/content/content/index.d.ts +2 -0
  130. package/dist-cms/packages/content/content/index.js +2 -0
  131. package/dist-cms/packages/content/content/manifests.js +4 -0
  132. package/dist-cms/packages/content/content/rollback/entity-action/content-rollback.action.d.ts +7 -0
  133. package/dist-cms/packages/content/content/rollback/entity-action/content-rollback.action.js +26 -0
  134. package/dist-cms/packages/content/content/rollback/entity-action/content-rollback.action.kind.d.ts +3 -0
  135. package/dist-cms/packages/content/content/rollback/entity-action/content-rollback.action.kind.js +23 -0
  136. package/dist-cms/packages/content/content/rollback/entity-action/manifests.d.ts +1 -0
  137. package/dist-cms/packages/content/content/rollback/entity-action/manifests.js +2 -0
  138. package/dist-cms/packages/content/content/rollback/entity-action/types.d.ts +14 -0
  139. package/dist-cms/packages/content/content/rollback/entity-action/types.js +1 -0
  140. package/dist-cms/packages/content/content/rollback/index.d.ts +6 -0
  141. package/dist-cms/packages/content/content/rollback/index.js +2 -0
  142. package/dist-cms/packages/content/content/rollback/manifests.d.ts +1 -0
  143. package/dist-cms/packages/content/content/rollback/manifests.js +3 -0
  144. package/dist-cms/packages/content/content/rollback/modal/constants.d.ts +4 -0
  145. package/dist-cms/packages/content/content/rollback/modal/constants.js +8 -0
  146. package/dist-cms/packages/content/content/rollback/modal/content-rollback-modal.element.d.ts +22 -0
  147. package/dist-cms/packages/content/content/rollback/modal/content-rollback-modal.element.js +509 -0
  148. package/dist-cms/packages/content/content/rollback/modal/manifests.d.ts +1 -0
  149. package/dist-cms/packages/content/content/rollback/modal/manifests.js +9 -0
  150. package/dist-cms/packages/content/content/rollback/modal/types.d.ts +6 -0
  151. package/dist-cms/packages/content/content/rollback/modal/types.js +1 -0
  152. package/dist-cms/packages/content/content/rollback/rollback-repository.interface.d.ts +21 -0
  153. package/dist-cms/packages/content/content/rollback/rollback-repository.interface.js +1 -0
  154. package/dist-cms/packages/content/content/rollback/types.d.ts +20 -0
  155. package/dist-cms/packages/content/content/rollback/types.js +1 -0
  156. package/dist-cms/packages/content/content/types.d.ts +1 -0
  157. package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.d.ts +3 -0
  158. package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.js +53 -10
  159. package/dist-cms/packages/content/content-type/constants.d.ts +1 -0
  160. package/dist-cms/packages/content/content-type/constants.js +1 -0
  161. package/dist-cms/packages/content/content-type/entity-content-type/conditions/constants.d.ts +1 -0
  162. package/dist-cms/packages/content/content-type/entity-content-type/conditions/constants.js +1 -0
  163. package/dist-cms/packages/content/content-type/entity-content-type/conditions/manifests.d.ts +1 -0
  164. package/dist-cms/packages/content/content-type/entity-content-type/conditions/manifests.js +2 -0
  165. package/dist-cms/packages/content/content-type/entity-content-type/conditions/types.d.ts +1 -0
  166. package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/constants.d.ts +4 -0
  167. package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/constants.js +4 -0
  168. package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/entity-content-type-unique.condition.d.ts +7 -0
  169. package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/entity-content-type-unique.condition.js +26 -0
  170. package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/manifests.d.ts +1 -0
  171. package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/manifests.js +10 -0
  172. package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/types.d.ts +21 -0
  173. package/dist-cms/packages/content/content-type/entity-content-type/constants.d.ts +1 -0
  174. package/dist-cms/packages/content/content-type/entity-content-type/constants.js +1 -0
  175. package/dist-cms/packages/content/content-type/entity-content-type/context/entity-content-type.context-token.d.ts +3 -0
  176. package/dist-cms/packages/content/content-type/entity-content-type/context/entity-content-type.context-token.js +2 -0
  177. package/dist-cms/packages/content/content-type/entity-content-type/context/entity-content-type.context.d.ts +12 -0
  178. package/dist-cms/packages/content/content-type/entity-content-type/context/entity-content-type.context.js +26 -0
  179. package/dist-cms/packages/content/content-type/entity-content-type/context/index.d.ts +2 -0
  180. package/dist-cms/packages/content/content-type/entity-content-type/context/index.js +2 -0
  181. package/dist-cms/packages/content/content-type/entity-content-type/index.d.ts +3 -0
  182. package/dist-cms/packages/content/content-type/entity-content-type/index.js +2 -0
  183. package/dist-cms/packages/content/content-type/entity-content-type/manifests.d.ts +1 -0
  184. package/dist-cms/packages/content/content-type/entity-content-type/manifests.js +2 -0
  185. package/dist-cms/packages/content/content-type/entity-content-type/types.d.ts +1 -0
  186. package/dist-cms/packages/content/content-type/global-components/content-type-workspace-editor-header.element.js +9 -2
  187. package/dist-cms/packages/content/content-type/index.d.ts +1 -0
  188. package/dist-cms/packages/content/content-type/index.js +1 -0
  189. package/dist-cms/packages/content/content-type/manifests.js +7 -1
  190. package/dist-cms/packages/content/content-type/repository/structure/content-type-structure-data-source.interface.d.ts +2 -0
  191. package/dist-cms/packages/content/content-type/repository/structure/content-type-structure-repository-base.d.ts +2 -2
  192. package/dist-cms/packages/content/content-type/repository/structure/content-type-structure-repository-base.js +2 -3
  193. package/dist-cms/packages/content/content-type/repository/structure/content-type-structure-repository.interface.d.ts +2 -0
  194. package/dist-cms/packages/content/content-type/structure/content-type-move-root-containers-into-first-tab-helper.class.d.ts +1 -1
  195. package/dist-cms/packages/content/content-type/structure/content-type-move-root-containers-into-first-tab-helper.class.js +16 -6
  196. package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.d.ts +21 -0
  197. package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.js +95 -21
  198. package/dist-cms/packages/content/content-type/types.d.ts +2 -3
  199. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-group.element.js +2 -0
  200. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-property.element.js +14 -11
  201. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-tab.element.js +1 -0
  202. package/dist-cms/packages/content/property-type/workspace/views/settings/property-workspace-view-settings.element.js +1 -1
  203. package/dist-cms/packages/core/audit-log/audit-log-repository.interface.d.ts +3 -2
  204. package/dist-cms/packages/core/audit-log/index.d.ts +1 -1
  205. package/dist-cms/packages/core/audit-log/types.d.ts +12 -0
  206. package/dist-cms/packages/core/auth/auth.context.d.ts +69 -18
  207. package/dist-cms/packages/core/auth/auth.context.js +537 -71
  208. package/dist-cms/packages/core/auth/components/index.d.ts +1 -0
  209. package/dist-cms/packages/core/auth/components/index.js +1 -0
  210. package/dist-cms/packages/core/auth/components/umb-auth-view.element.d.ts +26 -0
  211. package/dist-cms/packages/core/auth/components/umb-auth-view.element.js +287 -0
  212. package/dist-cms/packages/core/auth/constants.d.ts +3 -0
  213. package/dist-cms/packages/core/auth/constants.js +3 -0
  214. package/dist-cms/packages/core/auth/controllers/auth-session-timeout.controller.d.ts +1 -2
  215. package/dist-cms/packages/core/auth/controllers/auth-session-timeout.controller.js +96 -82
  216. package/dist-cms/packages/core/auth/modals/umb-app-auth-modal.element.d.ts +2 -9
  217. package/dist-cms/packages/core/auth/modals/umb-app-auth-modal.element.js +16 -256
  218. package/dist-cms/packages/core/auth/modals/umb-auth-timeout-modal.element.js +5 -1
  219. package/dist-cms/packages/core/auth/modals/umb-auth-timeout-modal.token.d.ts +2 -0
  220. package/dist-cms/packages/core/auth/umb-auth-client.d.ts +49 -0
  221. package/dist-cms/packages/core/auth/umb-auth-client.js +172 -0
  222. package/dist-cms/packages/core/backend-api/sdk.gen.d.ts +1787 -1
  223. package/dist-cms/packages/core/backend-api/sdk.gen.js +1962 -0
  224. package/dist-cms/packages/core/backend-api/types.gen.d.ts +454 -2
  225. package/dist-cms/packages/core/backend-api/types.gen.js +7 -0
  226. package/dist-cms/packages/core/collection/collection-item-picker-modal/collection-item-picker-modal.element.js +6 -0
  227. package/dist-cms/packages/core/collection/collection-item-picker-modal/types.d.ts +3 -0
  228. package/dist-cms/packages/core/collection/components/collection-filter-field.element.js +1 -0
  229. package/dist-cms/packages/core/collection/components/pagination/collection-pagination.element.d.ts +2 -0
  230. package/dist-cms/packages/core/collection/components/pagination/collection-pagination.element.js +21 -1
  231. package/dist-cms/packages/core/collection/default/collection-default.context.js +22 -20
  232. package/dist-cms/packages/core/collection/item/entity-collection-item-card/default-collection-item-card.element.d.ts +2 -2
  233. package/dist-cms/packages/core/collection/item/entity-collection-item-card/default-collection-item-card.element.js +1 -0
  234. package/dist-cms/packages/core/collection/item/entity-collection-item-ref/default-collection-item-ref.element.d.ts +4 -1
  235. package/dist-cms/packages/core/collection/item/entity-collection-item-ref/default-collection-item-ref.element.js +1 -0
  236. package/dist-cms/packages/core/collection/item/umb-entity-collection-item-element-base.element.d.ts +1 -0
  237. package/dist-cms/packages/core/collection/item/umb-entity-collection-item-element-base.element.js +19 -0
  238. package/dist-cms/packages/core/collection/types.d.ts +1 -1
  239. package/dist-cms/packages/core/collection/view/card/card-collection-view.element.js +1 -4
  240. package/dist-cms/packages/core/collection/view/collection-view.manager.d.ts +2 -0
  241. package/dist-cms/packages/core/collection/view/collection-view.manager.js +14 -3
  242. package/dist-cms/packages/core/collection/view/ref/ref-collection-view.element.js +1 -4
  243. package/dist-cms/packages/core/collection/view/umb-collection-view-element-base.d.ts +7 -7
  244. package/dist-cms/packages/core/collection/view/umb-collection-view-element-base.js +1 -1
  245. package/dist-cms/packages/core/collection/workspace-view/collection-workspace-view.element.js +1 -0
  246. package/dist-cms/packages/core/components/dropdown/dropdown.element.d.ts +1 -0
  247. package/dist-cms/packages/core/components/dropdown/dropdown.element.js +6 -1
  248. package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.d.ts +12 -4
  249. package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.js +67 -19
  250. package/dist-cms/packages/core/culture/manifests.d.ts +1 -1
  251. package/dist-cms/packages/core/entity-action/entity-action-list.element.d.ts +10 -1
  252. package/dist-cms/packages/core/entity-action/entity-action-list.element.js +45 -20
  253. package/dist-cms/packages/core/entity-action/global-components/entity-actions-dropdown/entity-actions-dropdown.element.d.ts +0 -1
  254. package/dist-cms/packages/core/entity-action/global-components/entity-actions-dropdown/entity-actions-dropdown.element.js +5 -23
  255. package/dist-cms/packages/core/entity-bulk-action/common/duplicate-to/duplicate-to.action.kind.js +1 -1
  256. package/dist-cms/packages/core/entity-bulk-action/entity-bulk-action.element.js +1 -1
  257. package/dist-cms/packages/core/entity-item/entity-item-ref/default-item-ref.element.d.ts +4 -1
  258. package/dist-cms/packages/core/entity-item/entity-item-ref/default-item-ref.element.js +2 -1
  259. package/dist-cms/packages/core/entity-item/entity-item-ref/entity-item-ref.element.js +13 -1
  260. package/dist-cms/packages/{extension-insights → core/extension}/collection/extension-collection.element.d.ts +1 -1
  261. package/dist-cms/packages/{extension-insights → core/extension}/collection/extension-collection.element.js +5 -5
  262. package/dist-cms/packages/core/extension/collection/index.d.ts +2 -0
  263. package/dist-cms/packages/core/extension/collection/index.js +2 -0
  264. package/dist-cms/packages/core/extension/collection/repository/extension-collection.repository.d.ts +12 -0
  265. package/dist-cms/packages/core/extension/collection/repository/extension-collection.repository.js +49 -0
  266. package/dist-cms/packages/core/extension/collection/types.d.ts +13 -0
  267. package/dist-cms/packages/core/extension/collection/types.js +1 -0
  268. package/dist-cms/packages/core/extension/collection/views/manifests.d.ts +1 -0
  269. package/dist-cms/packages/{extension-insights → core/extension}/collection/views/manifests.js +2 -3
  270. package/dist-cms/packages/{extension-insights → core/extension}/collection/views/table/extension-table-collection-view.element.d.ts +1 -1
  271. package/dist-cms/packages/{extension-insights → core/extension}/collection/views/table/extension-table-collection-view.element.js +9 -9
  272. package/dist-cms/packages/core/extension/entity.d.ts +2 -0
  273. package/dist-cms/packages/core/extension/entity.js +1 -0
  274. package/dist-cms/packages/core/extension/global-components/index.d.ts +1 -0
  275. package/dist-cms/packages/core/extension/global-components/index.js +1 -0
  276. package/dist-cms/packages/core/extension/global-components/input-extension.element.d.ts +19 -0
  277. package/dist-cms/packages/core/extension/global-components/input-extension.element.js +73 -0
  278. package/dist-cms/packages/core/extension/index.d.ts +5 -0
  279. package/dist-cms/packages/core/extension/index.js +4 -0
  280. package/dist-cms/packages/core/extension/item/data/index.d.ts +2 -0
  281. package/dist-cms/packages/core/extension/item/data/index.js +2 -0
  282. package/dist-cms/packages/core/extension/item/data/item.data-source.d.ts +7 -0
  283. package/dist-cms/packages/core/extension/item/data/item.data-source.js +24 -0
  284. package/dist-cms/packages/core/extension/item/data/item.repository.d.ts +7 -0
  285. package/dist-cms/packages/core/extension/item/data/item.repository.js +9 -0
  286. package/dist-cms/packages/core/extension/item/data/item.store.context-token.d.ts +3 -0
  287. package/dist-cms/packages/core/extension/item/data/item.store.context-token.js +2 -0
  288. package/dist-cms/packages/core/extension/item/data/item.store.d.ts +17 -0
  289. package/dist-cms/packages/core/extension/item/data/item.store.js +18 -0
  290. package/dist-cms/packages/core/extension/item/data/manifests.d.ts +1 -0
  291. package/dist-cms/packages/core/extension/item/data/manifests.js +15 -0
  292. package/dist-cms/packages/core/extension/item/data/types.d.ts +6 -0
  293. package/dist-cms/packages/core/extension/item/data/types.js +1 -0
  294. package/dist-cms/packages/core/extension/item/index.d.ts +1 -0
  295. package/dist-cms/packages/core/extension/item/index.js +1 -0
  296. package/dist-cms/packages/core/extension/item/manifests.d.ts +1 -0
  297. package/dist-cms/packages/core/extension/item/manifests.js +2 -0
  298. package/dist-cms/packages/core/extension/item/types.d.ts +1 -0
  299. package/dist-cms/packages/core/extension/item/types.js +1 -0
  300. package/dist-cms/packages/core/extension/manifests.d.ts +1 -0
  301. package/dist-cms/packages/core/extension/manifests.js +8 -0
  302. package/dist-cms/packages/core/extension/picker-data-source/extension.picker-data-source.d.ts +29 -0
  303. package/dist-cms/packages/core/extension/picker-data-source/extension.picker-data-source.js +54 -0
  304. package/dist-cms/packages/core/extension/picker-data-source/index.d.ts +1 -0
  305. package/dist-cms/packages/core/extension/picker-data-source/index.js +1 -0
  306. package/dist-cms/packages/core/extension/picker-data-source/types.d.ts +4 -0
  307. package/dist-cms/packages/core/extension/picker-data-source/types.js +1 -0
  308. package/dist-cms/packages/core/extension/types.d.ts +2 -0
  309. package/dist-cms/packages/core/extension/types.js +1 -0
  310. package/dist-cms/packages/{extension-insights/entity-actions/unregister → core/extension/unregister/entity-action}/unregister-extension.action.d.ts +1 -1
  311. package/dist-cms/packages/{extension-insights/entity-actions/unregister → core/extension/unregister/entity-action}/unregister-extension.action.js +5 -5
  312. package/dist-cms/packages/{extension-insights/entity-actions → core/extension/unregister}/manifests.d.ts +1 -1
  313. package/dist-cms/packages/core/extension/unregister/manifests.js +2 -0
  314. package/dist-cms/packages/core/extension-registry/components/extension-slot/extension-slot.element.d.ts +172 -22
  315. package/dist-cms/packages/core/extension-registry/components/extension-slot/extension-slot.element.js +147 -27
  316. package/dist-cms/packages/core/extension-registry/components/extension-with-api-slot/extension-with-api-slot.element.d.ts +216 -35
  317. package/dist-cms/packages/core/extension-registry/components/extension-with-api-slot/extension-with-api-slot.element.js +168 -38
  318. package/dist-cms/packages/core/http-client/index.d.ts +14 -0
  319. package/dist-cms/packages/core/http-client/index.js +24 -4
  320. package/dist-cms/packages/core/icon-registry/icon-dictionary.json +1 -1
  321. package/dist-cms/packages/core/icon-registry/icons/icon-badge.d.ts +1 -1
  322. package/dist-cms/packages/core/icon-registry/icons/icon-badge.js +1 -1
  323. package/dist-cms/packages/core/lit-element/directives/destroy.lit-directive.d.ts +1 -0
  324. package/dist-cms/packages/core/lit-element/directives/destroy.lit-directive.js +17 -3
  325. package/dist-cms/packages/core/manifests.js +7 -1
  326. package/dist-cms/packages/core/modal/common/index.d.ts +1 -0
  327. package/dist-cms/packages/core/modal/common/index.js +1 -0
  328. package/dist-cms/packages/core/modal/common/info/index.d.ts +3 -0
  329. package/dist-cms/packages/core/modal/common/info/index.js +3 -0
  330. package/dist-cms/packages/core/modal/common/info/info-modal.controller.d.ts +9 -0
  331. package/dist-cms/packages/core/modal/common/info/info-modal.controller.js +11 -0
  332. package/dist-cms/packages/core/modal/common/info/info-modal.element.d.ts +16 -0
  333. package/dist-cms/packages/core/modal/common/info/info-modal.element.js +49 -0
  334. package/dist-cms/packages/core/modal/common/info/info-modal.token.d.ts +8 -0
  335. package/dist-cms/packages/core/modal/common/info/info-modal.token.js +6 -0
  336. package/dist-cms/packages/core/modal/common/info/manifests.d.ts +1 -0
  337. package/dist-cms/packages/core/modal/common/info/manifests.js +8 -0
  338. package/dist-cms/packages/core/modal/common/manifests.js +2 -0
  339. package/dist-cms/packages/core/modal/component/index.d.ts +3 -0
  340. package/dist-cms/packages/core/modal/component/index.js +3 -0
  341. package/dist-cms/packages/core/modal/component/persistent-modal-dialog.element.d.ts +16 -0
  342. package/dist-cms/packages/core/modal/component/persistent-modal-dialog.element.js +36 -0
  343. package/dist-cms/packages/core/modal/context/modal.context.js +1 -2
  344. package/dist-cms/packages/core/modal/index.d.ts +1 -2
  345. package/dist-cms/packages/core/modal/index.js +1 -2
  346. package/dist-cms/packages/core/models/index.d.ts +6 -0
  347. package/dist-cms/packages/core/picker/search/manager/picker-search.manager.d.ts +5 -0
  348. package/dist-cms/packages/core/picker/search/manager/picker-search.manager.js +28 -11
  349. package/dist-cms/packages/core/picker/search/picker-search-result.element.d.ts +4 -1
  350. package/dist-cms/packages/core/picker/search/picker-search-result.element.js +51 -8
  351. package/dist-cms/packages/core/picker-data-source/collection-data-source/types.d.ts +11 -0
  352. package/dist-cms/packages/core/picker-input/picker-input.context.d.ts +2 -1
  353. package/dist-cms/packages/core/picker-input/picker-input.context.js +17 -3
  354. package/dist-cms/packages/core/property/components/property/property.element.js +4 -0
  355. package/dist-cms/packages/core/property/manifests.d.ts +1 -1
  356. package/dist-cms/packages/core/property/property-value-preset/property-value-preset-variant-builder.controller.js +10 -3
  357. package/dist-cms/packages/core/property-action/index.d.ts +1 -0
  358. package/dist-cms/packages/core/property-action/index.js +1 -0
  359. package/dist-cms/packages/core/property-action/kinds/clear/index.d.ts +1 -0
  360. package/dist-cms/packages/core/property-action/kinds/clear/index.js +1 -0
  361. package/dist-cms/packages/core/property-action/kinds/clear/manifests.d.ts +3 -0
  362. package/dist-cms/packages/core/property-action/kinds/clear/manifests.js +18 -0
  363. package/dist-cms/packages/core/property-action/kinds/manifests.js +6 -2
  364. package/dist-cms/packages/core/property-action/manifests.js +1 -21
  365. package/dist-cms/packages/core/property-editor/ui-picker-modal/property-editor-ui-picker-modal.element.js +44 -10
  366. package/dist-cms/packages/core/property-editor/ui-picker-modal/property-editor-ui-picker-modal.token.js +1 -1
  367. package/dist-cms/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.kind.js +1 -1
  368. package/dist-cms/packages/core/repository/detail/read/read-detail-data-source.interface.d.ts +1 -0
  369. package/dist-cms/packages/core/repository/detail/read/read-detail-repository.interface.d.ts +1 -0
  370. package/dist-cms/packages/core/repository/repository-details.manager.js +101 -36
  371. package/dist-cms/packages/core/resources/api-interceptor.controller.d.ts +4 -4
  372. package/dist-cms/packages/core/resources/api-interceptor.controller.js +39 -35
  373. package/dist-cms/packages/core/resources/auth-signaler.context.d.ts +20 -0
  374. package/dist-cms/packages/core/resources/auth-signaler.context.js +30 -0
  375. package/dist-cms/packages/core/resources/extractUmbNotificationColor.function.d.ts +1 -1
  376. package/dist-cms/packages/core/resources/index.d.ts +1 -0
  377. package/dist-cms/packages/core/resources/index.js +1 -0
  378. package/dist-cms/packages/core/resources/isUmbNotifications.function.d.ts +3 -2
  379. package/dist-cms/packages/core/resources/isUmbNotifications.function.js +3 -6
  380. package/dist-cms/packages/core/resources/try-execute/try-execute.controller.js +13 -0
  381. package/dist-cms/packages/core/resources/try-execute/tryXhrRequest.function.js +1 -1
  382. package/dist-cms/packages/core/router/conditions/is-routable-context/constants.d.ts +1 -0
  383. package/dist-cms/packages/core/router/conditions/is-routable-context/constants.js +1 -0
  384. package/dist-cms/packages/core/router/conditions/is-routable-context/index.d.ts +2 -0
  385. package/dist-cms/packages/core/router/conditions/is-routable-context/index.js +2 -0
  386. package/dist-cms/packages/core/router/conditions/is-routable-context/is-routable-context.condition.d.ts +7 -0
  387. package/dist-cms/packages/core/router/conditions/is-routable-context/is-routable-context.condition.js +18 -0
  388. package/dist-cms/packages/core/router/conditions/is-routable-context/manifests.d.ts +1 -0
  389. package/dist-cms/packages/core/router/conditions/is-routable-context/manifests.js +10 -0
  390. package/dist-cms/packages/core/router/conditions/is-routable-context/types.d.ts +15 -0
  391. package/dist-cms/packages/core/router/conditions/is-routable-context/types.js +1 -0
  392. package/dist-cms/packages/core/router/index.d.ts +1 -0
  393. package/dist-cms/packages/core/router/index.js +1 -0
  394. package/dist-cms/packages/core/router/manifests.d.ts +1 -0
  395. package/dist-cms/packages/core/router/manifests.js +2 -0
  396. package/dist-cms/packages/core/router/types.d.ts +1 -0
  397. package/dist-cms/packages/core/search/global-search/global-search.extension.d.ts +1 -0
  398. package/dist-cms/packages/core/search/search-modal/search-modal.element.js +52 -17
  399. package/dist-cms/packages/core/search/types.d.ts +2 -0
  400. package/dist-cms/packages/core/server/conditions/constants.d.ts +4 -0
  401. package/dist-cms/packages/core/server/conditions/constants.js +4 -0
  402. package/dist-cms/packages/core/server/conditions/index.d.ts +2 -0
  403. package/dist-cms/packages/core/server/conditions/index.js +1 -0
  404. package/dist-cms/packages/core/server/conditions/is-production-mode.condition.d.ts +7 -0
  405. package/dist-cms/packages/core/server/conditions/is-production-mode.condition.js +17 -0
  406. package/dist-cms/packages/core/server/conditions/manifests.d.ts +1 -0
  407. package/dist-cms/packages/core/server/conditions/manifests.js +10 -0
  408. package/dist-cms/packages/core/server/conditions/types.d.ts +14 -0
  409. package/dist-cms/packages/core/server/conditions/types.js +1 -0
  410. package/dist-cms/packages/core/server/index.d.ts +1 -0
  411. package/dist-cms/packages/core/server/index.js +1 -0
  412. package/dist-cms/packages/core/server/manifests.d.ts +1 -0
  413. package/dist-cms/packages/core/server/manifests.js +2 -0
  414. package/dist-cms/packages/core/server/server.context.d.ts +12 -0
  415. package/dist-cms/packages/core/server/server.context.js +33 -0
  416. package/dist-cms/packages/core/sorter/sorter.controller.js +35 -16
  417. package/dist-cms/packages/core/store/detail/detail-store-base.d.ts +7 -0
  418. package/dist-cms/packages/core/store/detail/detail-store-base.js +9 -0
  419. package/dist-cms/packages/core/store/detail/detail-store.interface.d.ts +1 -0
  420. package/dist-cms/packages/core/temporary-file/manifests.d.ts +1 -1
  421. package/dist-cms/packages/core/temporary-file/temporary-file-manager.class.js +6 -4
  422. package/dist-cms/packages/core/themes/manifests.d.ts +1 -1
  423. package/dist-cms/packages/core/tree/default/default-tree.context.d.ts +1 -0
  424. package/dist-cms/packages/core/tree/default/default-tree.context.js +5 -0
  425. package/dist-cms/packages/core/tree/entity-actions/duplicate-to/duplicate-to.action.kind.js +1 -1
  426. package/dist-cms/packages/core/tree/entity-actions/move/move-to.action.d.ts +2 -0
  427. package/dist-cms/packages/core/tree/entity-actions/move/move-to.action.js +4 -1
  428. package/dist-cms/packages/core/tree/index.d.ts +1 -0
  429. package/dist-cms/packages/core/tree/index.js +1 -0
  430. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-context-base.js +7 -1
  431. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.js +1 -8
  432. package/dist-cms/packages/core/utils/index.d.ts +1 -0
  433. package/dist-cms/packages/core/utils/index.js +1 -0
  434. package/dist-cms/packages/core/utils/path/get-file-extension.function.d.ts +5 -0
  435. package/dist-cms/packages/core/utils/path/get-file-extension.function.js +11 -0
  436. package/dist-cms/packages/core/utils/path/stored-path.function.js +5 -0
  437. package/dist-cms/packages/core/validation/controllers/validation.controller.d.ts +7 -0
  438. package/dist-cms/packages/core/validation/controllers/validation.controller.js +64 -22
  439. package/dist-cms/packages/core/validation/interfaces/validator.interface.d.ts +10 -1
  440. package/dist-cms/packages/core/vite.config.js +1 -0
  441. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-variant-menu-breadcrumb/workspace-variant-menu-breadcrumb.element.d.ts +1 -0
  442. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-variant-menu-breadcrumb/workspace-variant-menu-breadcrumb.element.js +38 -15
  443. package/dist-cms/packages/core/workspace/controllers/workspace-split-view-manager.controller.d.ts +1 -0
  444. package/dist-cms/packages/core/workspace/controllers/workspace-split-view-manager.controller.js +1 -0
  445. package/dist-cms/packages/core/workspace/submittable/submittable-workspace-context-base.d.ts +2 -1
  446. package/dist-cms/packages/core/workspace/submittable/submittable-workspace-context-base.js +11 -8
  447. package/dist-cms/packages/data-type/entity-actions/conditions/manifests.d.ts +1 -1
  448. package/dist-cms/packages/data-type/modals/data-type-picker-flow/data-type-picker-flow-data-type-picker-modal.element.js +19 -4
  449. package/dist-cms/packages/data-type/modals/data-type-picker-flow/data-type-picker-flow-data-type-picker-modal.token.js +1 -1
  450. package/dist-cms/packages/data-type/modals/data-type-picker-flow/data-type-picker-flow-modal.element.js +16 -5
  451. package/dist-cms/packages/data-type/repository/detail/data-type-detail.repository.d.ts +10 -2
  452. package/dist-cms/packages/data-type/repository/detail/data-type-detail.repository.js +22 -1
  453. package/dist-cms/packages/data-type/repository/detail/server-data-source/data-type-detail.server.data-source.d.ts +13 -0
  454. package/dist-cms/packages/data-type/repository/detail/server-data-source/data-type-detail.server.data-source.js +16 -0
  455. package/dist-cms/packages/data-type/repository/detail/server-data-source/data-type-detail.server.request-manager.js +1 -0
  456. package/dist-cms/packages/data-type/repository/item/data-type-item.server.request-manager.d.ts +1 -0
  457. package/dist-cms/packages/data-type/repository/item/data-type-item.server.request-manager.js +3 -1
  458. package/dist-cms/packages/data-type/search/data-type-search.server.data-source.js +5 -1
  459. package/dist-cms/packages/data-type/search/global-search/manifests.js +1 -0
  460. package/dist-cms/packages/dictionary/entity-action/export/export-dictionary-modal.element.js +4 -4
  461. package/dist-cms/packages/dictionary/repository/item/dictionary-item.server.request-manager.d.ts +1 -0
  462. package/dist-cms/packages/dictionary/repository/item/dictionary-item.server.request-manager.js +3 -1
  463. package/dist-cms/packages/dictionary/search/dictionary-search.server.data-source.js +5 -1
  464. package/dist-cms/packages/dictionary/search/global-search/manifests.js +1 -0
  465. package/dist-cms/packages/documents/document-blueprints/repository/item/document-blueprint-item.server.request-manager.d.ts +1 -0
  466. package/dist-cms/packages/documents/document-blueprints/repository/item/document-blueprint-item.server.request-manager.js +3 -1
  467. package/dist-cms/packages/documents/document-redirect-management/dashboard-redirect-management.element.js +0 -2
  468. package/dist-cms/packages/documents/document-types/repository/detail/document-type-detail.repository.d.ts +11 -2
  469. package/dist-cms/packages/documents/document-types/repository/detail/document-type-detail.repository.js +29 -1
  470. package/dist-cms/packages/documents/document-types/repository/detail/server-data-source/document-type-detail.server.data-source.d.ts +16 -3
  471. package/dist-cms/packages/documents/document-types/repository/detail/server-data-source/document-type-detail.server.data-source.js +21 -5
  472. package/dist-cms/packages/documents/document-types/repository/detail/server-data-source/document-type-detail.server.request-manager.js +1 -0
  473. package/dist-cms/packages/documents/document-types/repository/item/document-type-item.server.request-manager.d.ts +1 -0
  474. package/dist-cms/packages/documents/document-types/repository/item/document-type-item.server.request-manager.js +3 -1
  475. package/dist-cms/packages/documents/document-types/repository/manifests.js +2 -0
  476. package/dist-cms/packages/documents/document-types/repository/structure/document-type-structure.repository.d.ts +2 -0
  477. package/dist-cms/packages/documents/document-types/repository/structure/document-type-structure.repository.js +6 -0
  478. package/dist-cms/packages/documents/document-types/repository/structure/document-type-structure.server.data-source.d.ts +6 -2
  479. package/dist-cms/packages/documents/document-types/repository/structure/document-type-structure.server.data-source.js +16 -0
  480. package/dist-cms/packages/documents/document-types/repository/structure/types.d.ts +5 -0
  481. package/dist-cms/packages/documents/document-types/search/document-type-search.server.data-source.js +6 -1
  482. package/dist-cms/packages/documents/document-types/search/global-search/manifests.js +1 -0
  483. package/dist-cms/packages/documents/documents/audit-log/index.d.ts +1 -1
  484. package/dist-cms/packages/documents/documents/audit-log/index.js +1 -1
  485. package/dist-cms/packages/documents/documents/audit-log/info-app/document-history-workspace-info-app.element.d.ts +3 -0
  486. package/dist-cms/packages/documents/documents/audit-log/info-app/document-history-workspace-info-app.element.js +4 -0
  487. package/dist-cms/packages/documents/documents/audit-log/info-app/manifests.js +5 -2
  488. package/dist-cms/packages/documents/documents/audit-log/info-app/utils.d.ts +2 -1
  489. package/dist-cms/packages/documents/documents/audit-log/info-app/utils.js +2 -1
  490. package/dist-cms/packages/documents/documents/audit-log/manifests.d.ts +1 -2
  491. package/dist-cms/packages/documents/documents/audit-log/manifests.js +2 -1
  492. package/dist-cms/packages/documents/documents/audit-log/repository/constants.d.ts +1 -0
  493. package/dist-cms/packages/documents/documents/audit-log/repository/constants.js +1 -0
  494. package/dist-cms/packages/documents/documents/audit-log/repository/document-audit-log.repository.d.ts +9 -1
  495. package/dist-cms/packages/documents/documents/audit-log/repository/document-audit-log.repository.js +11 -0
  496. package/dist-cms/packages/documents/documents/audit-log/repository/index.d.ts +1 -0
  497. package/dist-cms/packages/documents/documents/audit-log/repository/index.js +1 -0
  498. package/dist-cms/packages/documents/documents/audit-log/repository/manifests.d.ts +1 -0
  499. package/dist-cms/packages/documents/documents/audit-log/repository/manifests.js +9 -0
  500. package/dist-cms/packages/documents/documents/collection/document-collection.context.d.ts +6 -0
  501. package/dist-cms/packages/documents/documents/collection/document-collection.context.js +9 -0
  502. package/dist-cms/packages/documents/documents/collection/item/document-collection-item-card.element.d.ts +7 -3
  503. package/dist-cms/packages/documents/documents/collection/item/document-collection-item-card.element.js +150 -17
  504. package/dist-cms/packages/documents/documents/collection/views/manifests.js +1 -6
  505. package/dist-cms/packages/documents/documents/components/input-document/input-document.context.js +2 -2
  506. package/dist-cms/packages/documents/documents/entity-actions/duplicate/duplicate-document.action.js +30 -1
  507. package/dist-cms/packages/documents/documents/entity-actions/duplicate/modal/duplicate-document-modal.element.js +6 -0
  508. package/dist-cms/packages/documents/documents/entity-actions/duplicate/modal/duplicate-document-modal.token.d.ts +2 -0
  509. package/dist-cms/packages/documents/documents/entity-actions/move-to/document-move-to.action.d.ts +7 -0
  510. package/dist-cms/packages/documents/documents/entity-actions/move-to/document-move-to.action.js +31 -0
  511. package/dist-cms/packages/documents/documents/entity-actions/move-to/manifests.js +1 -0
  512. package/dist-cms/packages/documents/documents/item/repository/document-item.server.request-manager.d.ts +1 -0
  513. package/dist-cms/packages/documents/documents/item/repository/document-item.server.request-manager.js +3 -1
  514. package/dist-cms/packages/documents/documents/publishing/publish/entity-bulk-action/publish.bulk-action.js +1 -0
  515. package/dist-cms/packages/documents/documents/publishing/workspace-context/document-publishing.workspace-context.js +13 -7
  516. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/bulk-trash/document-bulk-trash-with-relation.action.d.ts +5 -0
  517. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/bulk-trash/document-bulk-trash-with-relation.action.js +18 -0
  518. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/bulk-trash/manifests.js +1 -0
  519. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.js +1 -0
  520. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/trash/document-trash-with-relation.action.d.ts +5 -0
  521. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/trash/document-trash-with-relation.action.js +21 -0
  522. package/dist-cms/packages/documents/documents/rollback/audit-log-action/manifests.d.ts +1 -0
  523. package/dist-cms/packages/documents/documents/rollback/audit-log-action/manifests.js +26 -0
  524. package/dist-cms/packages/documents/documents/rollback/constants.d.ts +2 -2
  525. package/dist-cms/packages/documents/documents/rollback/constants.js +2 -2
  526. package/dist-cms/packages/documents/documents/rollback/entity-action/manifests.js +7 -8
  527. package/dist-cms/packages/documents/documents/rollback/entity-action/rollback.action.d.ts +1 -0
  528. package/dist-cms/packages/documents/documents/rollback/entity-action/rollback.action.js +1 -0
  529. package/dist-cms/packages/documents/documents/rollback/manifests.js +2 -0
  530. package/dist-cms/packages/documents/documents/rollback/modal/constants.d.ts +2 -0
  531. package/dist-cms/packages/documents/documents/rollback/modal/constants.js +2 -0
  532. package/dist-cms/packages/documents/documents/rollback/modal/rollback-modal.element.d.ts +1 -0
  533. package/dist-cms/packages/documents/documents/rollback/modal/rollback-modal.element.js +1 -0
  534. package/dist-cms/packages/documents/documents/rollback/modal/types.d.ts +2 -4
  535. package/dist-cms/packages/documents/documents/rollback/repository/constants.d.ts +5 -1
  536. package/dist-cms/packages/documents/documents/rollback/repository/constants.js +5 -1
  537. package/dist-cms/packages/documents/documents/rollback/repository/index.d.ts +2 -1
  538. package/dist-cms/packages/documents/documents/rollback/repository/index.js +2 -1
  539. package/dist-cms/packages/documents/documents/rollback/repository/manifests.js +3 -3
  540. package/dist-cms/packages/documents/documents/rollback/repository/rollback.repository.d.ts +24 -13
  541. package/dist-cms/packages/documents/documents/rollback/repository/rollback.repository.js +46 -5
  542. package/dist-cms/packages/documents/documents/search/document-search.server.data-source.js +2 -0
  543. package/dist-cms/packages/documents/documents/search/global-search/manifests.js +1 -0
  544. package/dist-cms/packages/documents/documents/tree/document-tree.context.js +3 -1
  545. package/dist-cms/packages/documents/documents/tree/tree-item/document-tree-item.context.js +7 -0
  546. package/dist-cms/packages/documents/documents/url/document-urls-data-resolver.js +4 -1
  547. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.js +6 -0
  548. package/dist-cms/packages/extension-insights/entity.d.ts +0 -2
  549. package/dist-cms/packages/extension-insights/entity.js +0 -1
  550. package/dist-cms/packages/extension-insights/manifests.js +1 -8
  551. package/dist-cms/packages/extension-insights/workspace/manifests.js +1 -1
  552. package/dist-cms/packages/extension-types/index.d.ts +2 -0
  553. package/dist-cms/packages/language/modals/language-picker/language-picker-modal.element.js +3 -3
  554. package/dist-cms/packages/language/repository/item/language-item.server.request-manager.d.ts +1 -0
  555. package/dist-cms/packages/language/repository/item/language-item.server.request-manager.js +3 -1
  556. package/dist-cms/packages/management-api/detail/detail-data.request-manager.d.ts +46 -2
  557. package/dist-cms/packages/management-api/detail/detail-data.request-manager.js +122 -0
  558. package/dist-cms/packages/management-api/item/item-data.request-manager.d.ts +2 -0
  559. package/dist-cms/packages/management-api/item/item-data.request-manager.js +69 -12
  560. package/dist-cms/packages/management-api/server-event/global-context/server-event.context.js +5 -8
  561. package/dist-cms/packages/media/dropzone/components/input-dropzone/input-dropzone.element.js +3 -1
  562. package/dist-cms/packages/media/dropzone/dropzone-manager.class.d.ts +1 -1
  563. package/dist-cms/packages/media/dropzone/dropzone-manager.class.js +2 -2
  564. package/dist-cms/packages/media/dropzone/types.d.ts +1 -0
  565. package/dist-cms/packages/media/imaging/components/imaging-thumbnail.element.d.ts +5 -0
  566. package/dist-cms/packages/media/imaging/components/imaging-thumbnail.element.js +4 -0
  567. package/dist-cms/packages/media/imaging/imaging.store.js +2 -2
  568. package/dist-cms/packages/media/imaging/types.d.ts +1 -0
  569. package/dist-cms/packages/media/media/audit-log/index.d.ts +1 -1
  570. package/dist-cms/packages/media/media/audit-log/index.js +1 -1
  571. package/dist-cms/packages/media/media/audit-log/info-app/manifests.js +5 -2
  572. package/dist-cms/packages/media/media/audit-log/info-app/media-history-workspace-info-app.element.d.ts +3 -0
  573. package/dist-cms/packages/media/media/audit-log/info-app/media-history-workspace-info-app.element.js +3 -0
  574. package/dist-cms/packages/media/media/audit-log/info-app/utils.d.ts +1 -0
  575. package/dist-cms/packages/media/media/audit-log/info-app/utils.js +1 -0
  576. package/dist-cms/packages/media/media/audit-log/manifests.js +2 -1
  577. package/dist-cms/packages/media/media/audit-log/repository/constants.d.ts +1 -0
  578. package/dist-cms/packages/media/media/audit-log/repository/constants.js +1 -0
  579. package/dist-cms/packages/media/media/audit-log/repository/index.d.ts +1 -0
  580. package/dist-cms/packages/media/media/audit-log/repository/index.js +1 -0
  581. package/dist-cms/packages/media/media/audit-log/repository/manifests.d.ts +1 -0
  582. package/dist-cms/packages/media/media/audit-log/repository/manifests.js +9 -0
  583. package/dist-cms/packages/media/media/audit-log/repository/media-audit-log.repository.d.ts +9 -1
  584. package/dist-cms/packages/media/media/audit-log/repository/media-audit-log.repository.js +11 -0
  585. package/dist-cms/packages/media/media/collection/item/manifests.d.ts +1 -0
  586. package/dist-cms/packages/media/media/collection/item/manifests.js +10 -0
  587. package/dist-cms/packages/media/media/collection/item/media-collection-item-card.element.d.ts +23 -0
  588. package/dist-cms/packages/media/media/collection/item/media-collection-item-card.element.js +117 -0
  589. package/dist-cms/packages/media/media/collection/item/types.d.ts +31 -0
  590. package/dist-cms/packages/media/media/collection/item/types.js +1 -0
  591. package/dist-cms/packages/media/media/collection/manifests.js +2 -0
  592. package/dist-cms/packages/media/media/collection/media-collection.context.d.ts +6 -0
  593. package/dist-cms/packages/media/media/collection/media-collection.context.js +9 -0
  594. package/dist-cms/packages/media/media/collection/repository/media-collection.server.data-source.js +5 -0
  595. package/dist-cms/packages/media/media/collection/types.d.ts +1 -28
  596. package/dist-cms/packages/media/media/collection/views/grid/media-grid-collection-view.element.d.ts +5 -6
  597. package/dist-cms/packages/media/media/collection/views/grid/media-grid-collection-view.element.js +19 -75
  598. package/dist-cms/packages/media/media/components/input-image-cropper/image-cropper-focus-setter.element.d.ts +1 -0
  599. package/dist-cms/packages/media/media/components/input-image-cropper/image-cropper-focus-setter.element.js +9 -4
  600. package/dist-cms/packages/media/media/components/input-image-cropper/input-image-cropper.element.js +15 -0
  601. package/dist-cms/packages/media/media/components/input-media/input-media.context.d.ts +7 -1
  602. package/dist-cms/packages/media/media/components/input-media/input-media.context.js +33 -3
  603. package/dist-cms/packages/media/media/components/input-media/input-media.element.d.ts +3 -1
  604. package/dist-cms/packages/media/media/components/input-media/input-media.element.js +7 -1
  605. package/dist-cms/packages/media/media/components/input-rich-media/input-rich-media.element.d.ts +1 -1
  606. package/dist-cms/packages/media/media/components/input-rich-media/input-rich-media.element.js +1 -1
  607. package/dist-cms/packages/media/media/components/input-upload-field/input-upload-field.element.js +56 -33
  608. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-file.element.d.ts +1 -0
  609. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-file.element.js +5 -1
  610. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-image.element.js +5 -3
  611. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-svg.element.js +6 -7
  612. package/dist-cms/packages/media/media/dropzone/media-dropzone.manager.js +104 -25
  613. package/dist-cms/packages/media/media/entity-actions/move-to/manifests.js +1 -0
  614. package/dist-cms/packages/media/media/entity-actions/move-to/media-move-to.action.d.ts +7 -0
  615. package/dist-cms/packages/media/media/entity-actions/move-to/media-move-to.action.js +31 -0
  616. package/dist-cms/packages/media/media/global-contexts/index.d.ts +1 -0
  617. package/dist-cms/packages/media/media/global-contexts/index.js +1 -0
  618. package/dist-cms/packages/media/media/global-contexts/manifests.d.ts +2 -0
  619. package/dist-cms/packages/media/media/global-contexts/manifests.js +8 -0
  620. package/dist-cms/packages/media/media/global-contexts/media-configuration.context.d.ts +23 -0
  621. package/dist-cms/packages/media/media/global-contexts/media-configuration.context.js +38 -0
  622. package/dist-cms/packages/media/media/index.d.ts +1 -0
  623. package/dist-cms/packages/media/media/index.js +1 -0
  624. package/dist-cms/packages/media/media/manifests.js +2 -0
  625. package/dist-cms/packages/media/media/modals/media-picker/components/media-picker-folder-path.element.d.ts +2 -0
  626. package/dist-cms/packages/media/media/modals/media-picker/components/media-picker-folder-path.element.js +124 -16
  627. package/dist-cms/packages/media/media/modals/media-picker/media-picker-modal.element.js +14 -2
  628. package/dist-cms/packages/media/media/modals/media-picker/types.d.ts +3 -0
  629. package/dist-cms/packages/media/media/property-editors/media-entity-picker/property-editor-ui-media-entity-picker.element.js +2 -0
  630. package/dist-cms/packages/media/media/property-editors/media-picker/property-editor-ui-media-picker.element.d.ts +1 -1
  631. package/dist-cms/packages/media/media/property-editors/media-picker/property-editor-ui-media-picker.element.js +1 -2
  632. package/dist-cms/packages/media/media/recycle-bin/entity-action/bulk-trash/manifests.js +1 -0
  633. package/dist-cms/packages/media/media/recycle-bin/entity-action/bulk-trash/media-bulk-trash-with-relation.action.d.ts +5 -0
  634. package/dist-cms/packages/media/media/recycle-bin/entity-action/bulk-trash/media-bulk-trash-with-relation.action.js +18 -0
  635. package/dist-cms/packages/media/media/recycle-bin/entity-action/manifests.js +1 -0
  636. package/dist-cms/packages/media/media/recycle-bin/entity-action/trash/media-trash-with-relation.action.d.ts +5 -0
  637. package/dist-cms/packages/media/media/recycle-bin/entity-action/trash/media-trash-with-relation.action.js +19 -0
  638. package/dist-cms/packages/media/media/repository/detail/media-detail.repository.d.ts +11 -0
  639. package/dist-cms/packages/media/media/repository/detail/media-detail.repository.js +9 -0
  640. package/dist-cms/packages/media/media/repository/detail/media-detail.server.data-source.d.ts +1 -1
  641. package/dist-cms/packages/media/media/repository/detail/media-detail.server.data-source.js +2 -2
  642. package/dist-cms/packages/media/media/repository/item/media-item.server.data-source.js +1 -0
  643. package/dist-cms/packages/media/media/repository/item/media-item.server.request-manager.d.ts +1 -0
  644. package/dist-cms/packages/media/media/repository/item/media-item.server.request-manager.js +3 -1
  645. package/dist-cms/packages/media/media/repository/item/types.d.ts +2 -1
  646. package/dist-cms/packages/media/media/search/global-search/manifests.js +1 -0
  647. package/dist-cms/packages/media/media/search/media-search.server.data-source.js +3 -0
  648. package/dist-cms/packages/media/media/tree/server-data-source/media-tree.server.data-source.js +1 -0
  649. package/dist-cms/packages/media/media/tree/tree-item/media-tree-item.context.js +7 -0
  650. package/dist-cms/packages/media/media/tree/tree-item/media-tree-item.element.d.ts +1 -2
  651. package/dist-cms/packages/media/media/tree/tree-item/media-tree-item.element.js +9 -40
  652. package/dist-cms/packages/media/media/url/info-app/media-links-workspace-info-app.element.js +1 -1
  653. package/dist-cms/packages/media/media/workspace/media-workspace.context.d.ts +1 -1
  654. package/dist-cms/packages/media/media/workspace/media-workspace.context.js +6 -0
  655. package/dist-cms/packages/media/media-types/entry-point.js +4 -0
  656. package/dist-cms/packages/media/media-types/repository/detail/media-type-detail.repository.d.ts +11 -2
  657. package/dist-cms/packages/media/media-types/repository/detail/media-type-detail.repository.js +29 -1
  658. package/dist-cms/packages/media/media-types/repository/detail/media-type-detail.server.data-source.d.ts +18 -24
  659. package/dist-cms/packages/media/media-types/repository/detail/media-type-detail.server.data-source.js +69 -84
  660. package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.cache-invalidation.manager.d.ts +6 -0
  661. package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.cache-invalidation.manager.js +10 -0
  662. package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.cache.d.ts +4 -0
  663. package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.cache.js +3 -0
  664. package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.request-manager.d.ts +7 -0
  665. package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.request-manager.js +18 -0
  666. package/dist-cms/packages/media/media-types/repository/item/media-type-item.server.request-manager.d.ts +1 -0
  667. package/dist-cms/packages/media/media-types/repository/item/media-type-item.server.request-manager.js +3 -1
  668. package/dist-cms/packages/media/media-types/repository/manifests.js +7 -1
  669. package/dist-cms/packages/media/media-types/repository/structure/media-type-structure.repository.d.ts +18 -1
  670. package/dist-cms/packages/media/media-types/repository/structure/media-type-structure.repository.js +8 -4
  671. package/dist-cms/packages/media/media-types/repository/structure/media-type-structure.server.data-source.d.ts +21 -3
  672. package/dist-cms/packages/media/media-types/repository/structure/media-type-structure.server.data-source.js +20 -1
  673. package/dist-cms/packages/media/media-types/repository/structure/types.d.ts +6 -0
  674. package/dist-cms/packages/media/media-types/search/global-search/manifests.js +1 -0
  675. package/dist-cms/packages/media/media-types/search/media-type-search.server.data-source.js +5 -1
  676. package/dist-cms/packages/members/member/collection/action/create-member-collection-action.element.js +1 -0
  677. package/dist-cms/packages/members/member/collection/member-collection-header.element.js +3 -1
  678. package/dist-cms/packages/members/member/collection/repository/member-collection.server.data-source.d.ts +1 -1
  679. package/dist-cms/packages/members/member/collection/repository/member-collection.server.data-source.js +11 -2
  680. package/dist-cms/packages/members/member/collection/types.d.ts +3 -0
  681. package/dist-cms/packages/members/member/collection/views/table/member-table-collection-view.element.d.ts +2 -0
  682. package/dist-cms/packages/members/member/collection/views/table/member-table-collection-view.element.js +41 -1
  683. package/dist-cms/packages/members/member/components/input-member/input-member.context.js +2 -2
  684. package/dist-cms/packages/members/member/components/input-member/input-member.element.d.ts +1 -1
  685. package/dist-cms/packages/members/member/item/repository/member-item.server.request-manager.d.ts +1 -0
  686. package/dist-cms/packages/members/member/item/repository/member-item.server.request-manager.js +3 -1
  687. package/dist-cms/packages/members/member/search/global-search/manifests.js +1 -0
  688. package/dist-cms/packages/members/member/search/member-search.server.data-source.js +2 -0
  689. package/dist-cms/packages/members/member/workspace/member/member-workspace.context.js +6 -1
  690. package/dist-cms/packages/members/member/workspace/member/views/member/member-workspace-view-member.element.js +14 -2
  691. package/dist-cms/packages/members/member-group/components/input-member-group/input-member-group.element.d.ts +0 -1
  692. package/dist-cms/packages/members/member-group/components/input-member-group/input-member-group.element.js +0 -3
  693. package/dist-cms/packages/members/member-group/components/member-group-picker-modal/member-group-picker-modal.element.d.ts +4 -1
  694. package/dist-cms/packages/members/member-group/components/member-group-picker-modal/member-group-picker-modal.element.js +68 -26
  695. package/dist-cms/packages/members/member-group/repository/item/member-group-item.server.request-manager.d.ts +1 -0
  696. package/dist-cms/packages/members/member-group/repository/item/member-group-item.server.request-manager.js +3 -1
  697. package/dist-cms/packages/members/member-public-access/modal/public-access-modal.element.d.ts +1 -0
  698. package/dist-cms/packages/members/member-public-access/modal/public-access-modal.element.js +38 -8
  699. package/dist-cms/packages/members/member-public-access/repository/public-access.repository.d.ts +1 -1
  700. package/dist-cms/packages/members/member-public-access/repository/public-access.repository.js +2 -2
  701. package/dist-cms/packages/members/member-public-access/repository/public-access.server.data.d.ts +2 -1
  702. package/dist-cms/packages/members/member-public-access/repository/public-access.server.data.js +3 -2
  703. package/dist-cms/packages/members/member-type/entry-point.js +4 -0
  704. package/dist-cms/packages/members/member-type/repository/detail/member-type-detail.repository.d.ts +11 -2
  705. package/dist-cms/packages/members/member-type/repository/detail/member-type-detail.repository.js +29 -1
  706. package/dist-cms/packages/members/member-type/repository/detail/member-type-detail.server.data-source.d.ts +18 -24
  707. package/dist-cms/packages/members/member-type/repository/detail/member-type-detail.server.data-source.js +66 -81
  708. package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.cache-invalidation.manager.d.ts +6 -0
  709. package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.cache-invalidation.manager.js +10 -0
  710. package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.cache.d.ts +4 -0
  711. package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.cache.js +3 -0
  712. package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.request-manager.d.ts +7 -0
  713. package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.request-manager.js +18 -0
  714. package/dist-cms/packages/members/member-type/repository/item/member-type-item.server.request-manager.d.ts +1 -0
  715. package/dist-cms/packages/members/member-type/repository/item/member-type-item.server.request-manager.js +3 -1
  716. package/dist-cms/packages/members/member-type/search/global-search/manifests.js +1 -0
  717. package/dist-cms/packages/members/member-type/search/member-type-search.server.data-source.js +5 -1
  718. package/dist-cms/packages/multi-url-picker/components/input-multi-url/input-multi-url.element.d.ts +2 -0
  719. package/dist-cms/packages/multi-url-picker/components/input-multi-url/input-multi-url.element.js +11 -3
  720. package/dist-cms/packages/multi-url-picker/constants.d.ts +1 -0
  721. package/dist-cms/packages/multi-url-picker/constants.js +1 -0
  722. package/dist-cms/packages/multi-url-picker/document-link-picker-modal/constants.d.ts +1 -0
  723. package/dist-cms/packages/multi-url-picker/document-link-picker-modal/constants.js +1 -0
  724. package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker-modal.element.d.ts +18 -0
  725. package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker-modal.element.js +139 -0
  726. package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker-modal.token.d.ts +10 -0
  727. package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker-modal.token.js +7 -0
  728. package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker.context.d.ts +12 -0
  729. package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker.context.js +45 -0
  730. package/dist-cms/packages/multi-url-picker/document-link-picker-modal/manifests.d.ts +6 -0
  731. package/dist-cms/packages/multi-url-picker/document-link-picker-modal/manifests.js +8 -0
  732. package/dist-cms/packages/multi-url-picker/index.d.ts +1 -0
  733. package/dist-cms/packages/multi-url-picker/index.js +1 -0
  734. package/dist-cms/packages/multi-url-picker/link-picker-modal/link-picker-modal.element.d.ts +2 -3
  735. package/dist-cms/packages/multi-url-picker/link-picker-modal/link-picker-modal.element.js +95 -52
  736. package/dist-cms/packages/multi-url-picker/link-picker-modal/link-picker-modal.token.d.ts +4 -0
  737. package/dist-cms/packages/multi-url-picker/link-picker-modal/types.d.ts +1 -0
  738. package/dist-cms/packages/multi-url-picker/manifests.js +2 -0
  739. package/dist-cms/packages/multi-url-picker/property-editor/manifests.js +6 -0
  740. package/dist-cms/packages/multi-url-picker/property-editor/property-editor-ui-multi-url-picker.element.d.ts +1 -0
  741. package/dist-cms/packages/multi-url-picker/property-editor/property-editor-ui-multi-url-picker.element.js +7 -0
  742. package/dist-cms/packages/property-editors/content-picker/components/input-content/input-content.element.d.ts +2 -2
  743. package/dist-cms/packages/property-editors/content-picker/components/input-content/input-content.element.js +2 -3
  744. package/dist-cms/packages/property-editors/content-picker/property-editor-ui-content-picker.element.js +18 -8
  745. package/dist-cms/packages/property-editors/entity-data-picker/conditions/constants.d.ts +1 -0
  746. package/dist-cms/packages/property-editors/entity-data-picker/conditions/constants.js +1 -0
  747. package/dist-cms/packages/property-editors/entity-data-picker/conditions/entity-data-picker-supports-text-filter.condition.d.ts +6 -0
  748. package/dist-cms/packages/property-editors/entity-data-picker/conditions/entity-data-picker-supports-text-filter.condition.js +21 -0
  749. package/dist-cms/packages/property-editors/entity-data-picker/conditions/manifests.d.ts +2 -0
  750. package/dist-cms/packages/property-editors/entity-data-picker/conditions/manifests.js +10 -0
  751. package/dist-cms/packages/property-editors/entity-data-picker/constants.d.ts +1 -0
  752. package/dist-cms/packages/property-editors/entity-data-picker/constants.js +1 -0
  753. package/dist-cms/packages/property-editors/entity-data-picker/entry-point.d.ts +1 -0
  754. package/dist-cms/packages/property-editors/entity-data-picker/entry-point.js +3 -2
  755. package/dist-cms/packages/property-editors/entity-data-picker/input/entity-data-picker-data-source.context.d.ts +1 -1
  756. package/dist-cms/packages/property-editors/entity-data-picker/input/input-entity-data.context.d.ts +23 -6
  757. package/dist-cms/packages/property-editors/entity-data-picker/input/input-entity-data.context.js +35 -30
  758. package/dist-cms/packages/property-editors/entity-data-picker/input/input-entity-data.element.d.ts +9 -2
  759. package/dist-cms/packages/property-editors/entity-data-picker/input/input-entity-data.element.js +10 -4
  760. package/dist-cms/packages/property-editors/entity-data-picker/manifests.js +4 -2
  761. package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/constants.d.ts +1 -0
  762. package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/constants.js +1 -0
  763. package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/manifests.js +18 -1
  764. package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/views/constants.d.ts +2 -0
  765. package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/views/constants.js +2 -0
  766. package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/views/manifests.js +3 -2
  767. package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/index.d.ts +1 -0
  768. package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/index.js +1 -0
  769. package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/manifests.d.ts +2 -0
  770. package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/manifests.js +11 -0
  771. package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/picker-views-configuration.element.d.ts +19 -0
  772. package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/picker-views-configuration.element.js +117 -0
  773. package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/types.d.ts +4 -0
  774. package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/types.js +1 -0
  775. package/dist-cms/packages/property-editors/entity-data-picker/property-editor/entity-data-picker-property-editor-ui.element.d.ts +2 -1
  776. package/dist-cms/packages/property-editors/entity-data-picker/property-editor/entity-data-picker-property-editor-ui.element.js +31 -6
  777. package/dist-cms/packages/property-editors/entity-data-picker/property-editor/manifests.js +10 -0
  778. package/dist-cms/packages/property-editors/manifests.js +2 -0
  779. package/dist-cms/packages/property-editors/number/Umbraco.Decimal.js +3 -3
  780. package/dist-cms/packages/property-editors/slider/slider-property-value-preset.js +4 -1
  781. package/dist-cms/packages/property-editors/text-box/property-editor-ui-text-box.element.js +27 -1
  782. package/dist-cms/packages/property-editors/textarea/property-editor-ui-textarea.element.js +32 -5
  783. package/dist-cms/packages/property-editors/utils/character-count.d.ts +6 -0
  784. package/dist-cms/packages/property-editors/utils/character-count.js +11 -0
  785. package/dist-cms/packages/relations/relation-types/collection/views/table/relation-type-table-collection-view.element.js +5 -1
  786. package/dist-cms/packages/relations/relation-types/index.d.ts +1 -0
  787. package/dist-cms/packages/relations/relation-types/index.js +1 -0
  788. package/dist-cms/packages/relations/relation-types/paths.d.ts +7 -0
  789. package/dist-cms/packages/relations/relation-types/paths.js +9 -0
  790. package/dist-cms/packages/relations/relations/entity-actions/bulk-trash/modal/bulk-trash-with-relation-modal.element.d.ts +1 -0
  791. package/dist-cms/packages/relations/relations/entity-actions/bulk-trash/modal/bulk-trash-with-relation-modal.element.js +40 -3
  792. package/dist-cms/packages/relations/relations/entity-actions/bulk-trash/modal/bulk-trash-with-relation-modal.token.d.ts +1 -0
  793. package/dist-cms/packages/relations/relations/entity-actions/trash/modal/trash-with-relation-modal.element.d.ts +1 -0
  794. package/dist-cms/packages/relations/relations/entity-actions/trash/modal/trash-with-relation-modal.element.js +32 -3
  795. package/dist-cms/packages/relations/relations/entity-actions/trash/modal/trash-with-relation-modal.token.d.ts +1 -0
  796. package/dist-cms/packages/relations/relations/global-components/confirm-action-modal-entity-references.element.js +2 -4
  797. package/dist-cms/packages/relations/relations/global-components/confirm-bulk-action-modal-entity-references.element.d.ts +1 -0
  798. package/dist-cms/packages/relations/relations/global-components/confirm-bulk-action-modal-entity-references.element.js +5 -0
  799. package/dist-cms/packages/relations/relations/index.d.ts +4 -0
  800. package/dist-cms/packages/relations/relations/index.js +2 -0
  801. package/dist-cms/packages/static-file/repository/item/static-file-item.server.request-manager.d.ts +1 -0
  802. package/dist-cms/packages/static-file/repository/item/static-file-item.server.request-manager.js +3 -1
  803. package/dist-cms/packages/templating/local-components/insert-menu/insert-menu.element.d.ts +1 -0
  804. package/dist-cms/packages/templating/local-components/insert-menu/insert-menu.element.js +6 -0
  805. package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.api.d.ts +5 -0
  806. package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.api.js +12 -0
  807. package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.d.ts +2 -0
  808. package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.element.d.ts +12 -0
  809. package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.element.js +30 -0
  810. package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.js +2 -0
  811. package/dist-cms/packages/templating/partial-views/entity-actions/create/manifests.js +7 -0
  812. package/dist-cms/packages/templating/partial-views/entity-actions/manifests.js +7 -0
  813. package/dist-cms/packages/templating/partial-views/entity-actions/rename/manifests.js +7 -0
  814. package/dist-cms/packages/templating/partial-views/repository/item/partial-view-item.server.request-manager.d.ts +1 -0
  815. package/dist-cms/packages/templating/partial-views/repository/item/partial-view-item.server.request-manager.js +3 -1
  816. package/dist-cms/packages/templating/partial-views/tree/folder/manifests.js +7 -0
  817. package/dist-cms/packages/templating/partial-views/workspace/manifests.js +23 -0
  818. package/dist-cms/packages/templating/partial-views/workspace/partial-view-workspace-editor.element.d.ts +5 -0
  819. package/dist-cms/packages/templating/partial-views/workspace/partial-view-workspace-editor.element.js +22 -2
  820. package/dist-cms/packages/templating/scripts/repository/item/script-item.server.request-manager.d.ts +1 -0
  821. package/dist-cms/packages/templating/scripts/repository/item/script-item.server.request-manager.js +3 -1
  822. package/dist-cms/packages/templating/stylesheets/repository/item/stylesheet-item.server.request-manager.d.ts +1 -0
  823. package/dist-cms/packages/templating/stylesheets/repository/item/stylesheet-item.server.request-manager.js +3 -1
  824. package/dist-cms/packages/templating/templates/entity-actions/manifests.js +14 -1
  825. package/dist-cms/packages/templating/templates/repository/item/template-item.server.request-manager.d.ts +1 -0
  826. package/dist-cms/packages/templating/templates/repository/item/template-item.server.request-manager.js +3 -1
  827. package/dist-cms/packages/templating/templates/search/global-search/manifests.js +1 -0
  828. package/dist-cms/packages/templating/templates/search/template-search.server.data-source.js +5 -1
  829. package/dist-cms/packages/templating/templates/workspace/manifests.js +23 -0
  830. package/dist-cms/packages/templating/templates/workspace/template-workspace-editor.element.d.ts +5 -0
  831. package/dist-cms/packages/templating/templates/workspace/template-workspace-editor.element.js +29 -9
  832. package/dist-cms/packages/tiptap/clipboard/block/copy/block-rte-to-block-copy-translator.d.ts +8 -0
  833. package/dist-cms/packages/tiptap/clipboard/block/copy/block-rte-to-block-copy-translator.js +24 -0
  834. package/dist-cms/packages/tiptap/clipboard/block/copy/manifest.d.ts +1 -0
  835. package/dist-cms/packages/tiptap/clipboard/block/copy/manifest.js +10 -0
  836. package/dist-cms/packages/tiptap/clipboard/block/paste/block-to-block-rte-paste-translator.d.ts +14 -0
  837. package/dist-cms/packages/tiptap/clipboard/block/paste/block-to-block-rte-paste-translator.js +30 -0
  838. package/dist-cms/packages/tiptap/clipboard/block/paste/manifest.d.ts +1 -0
  839. package/dist-cms/packages/tiptap/clipboard/block/paste/manifest.js +10 -0
  840. package/dist-cms/packages/tiptap/clipboard/manifests.d.ts +1 -0
  841. package/dist-cms/packages/tiptap/clipboard/manifests.js +11 -0
  842. package/dist-cms/packages/tiptap/components/input-tiptap/input-tiptap.element.js +3 -2
  843. package/dist-cms/packages/tiptap/components/statusbar/tiptap-statusbar.element.d.ts +1 -0
  844. package/dist-cms/packages/tiptap/components/statusbar/tiptap-statusbar.element.js +13 -2
  845. package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-button-action.element.d.ts +11 -0
  846. package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-button-action.element.js +32 -0
  847. package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-button-disabled.element.d.ts +1 -0
  848. package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-button-disabled.element.js +2 -1
  849. package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-button.element.d.ts +3 -3
  850. package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-color-picker-button.element.d.ts +2 -1
  851. package/dist-cms/packages/tiptap/extensions/block/block.tiptap-api.js +65 -4
  852. package/dist-cms/packages/tiptap/extensions/bubble-menu/bubble-menu.tiptap-extension.d.ts +5 -0
  853. package/dist-cms/packages/tiptap/extensions/bubble-menu/bubble-menu.tiptap-extension.js +2 -0
  854. package/dist-cms/packages/tiptap/extensions/index.d.ts +1 -0
  855. package/dist-cms/packages/tiptap/extensions/index.js +1 -0
  856. package/dist-cms/packages/tiptap/extensions/link/link.tiptap-extension.js +2 -1
  857. package/dist-cms/packages/tiptap/extensions/link/link.tiptap-toolbar-api.js +4 -1
  858. package/dist-cms/packages/tiptap/extensions/link/manifests.js +1 -2
  859. package/dist-cms/packages/tiptap/extensions/link/unlink.tiptap-toolbar-api.d.ts +2 -3
  860. package/dist-cms/packages/tiptap/extensions/link/unlink.tiptap-toolbar-api.js +2 -3
  861. package/dist-cms/packages/tiptap/extensions/manifests.js +4 -3
  862. package/dist-cms/packages/tiptap/extensions/table/plugins/table-handle.d.ts +8 -0
  863. package/dist-cms/packages/tiptap/extensions/table/plugins/table-handle.js +376 -0
  864. package/dist-cms/packages/tiptap/extensions/table/plugins/table-view.d.ts +9 -0
  865. package/dist-cms/packages/tiptap/extensions/table/plugins/table-view.js +76 -0
  866. package/dist-cms/packages/tiptap/extensions/table/table.tiptap-api.js +92 -71
  867. package/dist-cms/packages/tiptap/extensions/table/table.tiptap-extension.d.ts +2 -7
  868. package/dist-cms/packages/tiptap/extensions/table/table.tiptap-extension.js +14 -389
  869. package/dist-cms/packages/tiptap/extensions/tiptap-toolbar-action-button-api-base.d.ts +14 -0
  870. package/dist-cms/packages/tiptap/extensions/tiptap-toolbar-action-button-api-base.js +16 -0
  871. package/dist-cms/packages/tiptap/extensions/tiptap-toolbar-action-button.kind.d.ts +2 -0
  872. package/dist-cms/packages/tiptap/extensions/tiptap-toolbar-action-button.kind.js +9 -0
  873. package/dist-cms/packages/tiptap/extensions/tiptap-toolbar.extension.d.ts +5 -1
  874. package/dist-cms/packages/tiptap/extensions/undo-redo/manifests.js +2 -4
  875. package/dist-cms/packages/tiptap/extensions/undo-redo/redo.tiptap-toolbar-api.d.ts +2 -3
  876. package/dist-cms/packages/tiptap/extensions/undo-redo/redo.tiptap-toolbar-api.js +2 -3
  877. package/dist-cms/packages/tiptap/extensions/undo-redo/undo.tiptap-toolbar-api.d.ts +2 -3
  878. package/dist-cms/packages/tiptap/extensions/undo-redo/undo.tiptap-toolbar-api.js +2 -3
  879. package/dist-cms/packages/tiptap/manifests.js +6 -1
  880. package/dist-cms/packages/tiptap/property-editors/constants.d.ts +1 -0
  881. package/dist-cms/packages/tiptap/property-editors/constants.js +1 -0
  882. package/dist-cms/packages/tiptap/property-editors/tiptap-rte/constants.d.ts +1 -0
  883. package/dist-cms/packages/tiptap/property-editors/tiptap-rte/constants.js +1 -0
  884. package/dist-cms/packages/tiptap/property-editors/tiptap-rte/manifests.js +2 -1
  885. package/dist-cms/packages/ufm/contexts/ufm.context.js +1 -1
  886. package/dist-cms/packages/umbraco-news/umbraco-news-dashboard.element.js +1 -1
  887. package/dist-cms/packages/user/current-user/history/current-user-history-user-profile-app.element.d.ts +2 -0
  888. package/dist-cms/packages/user/current-user/history/current-user-history-user-profile-app.element.js +52 -5
  889. package/dist-cms/packages/user/current-user/history/current-user-history.store.d.ts +9 -0
  890. package/dist-cms/packages/user/current-user/history/current-user-history.store.js +236 -15
  891. package/dist-cms/packages/user/current-user/modals/current-user/current-user-modal.element.js +5 -7
  892. package/dist-cms/packages/user/user/repository/item/user-item.server.request-manager.d.ts +1 -0
  893. package/dist-cms/packages/user/user/repository/item/user-item.server.request-manager.js +3 -1
  894. package/dist-cms/packages/user/user/workspace/user/components/user-workspace-assign-access/user-workspace-assign-access.element.js +1 -0
  895. package/dist-cms/packages/user/user/workspace/user/user-workspace.context.js +6 -3
  896. package/dist-cms/packages/user/user-group/repository/item/user-group-item.server.request-manager.d.ts +1 -0
  897. package/dist-cms/packages/user/user-group/repository/item/user-group-item.server.request-manager.js +3 -1
  898. package/dist-cms/packages/user/user-group/workspace/user-group/views/user-group-details-workspace-view.element.js +1 -0
  899. package/dist-cms/packages/webhook/webhook/repository/item/webhook-item.server.request-manager.d.ts +1 -0
  900. package/dist-cms/packages/webhook/webhook/repository/item/webhook-item.server.request-manager.js +3 -1
  901. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  902. package/examples/entity-content-type-condition/index.ts +21 -40
  903. package/examples/entity-content-type-condition/unique-condition-entity-action.ts +9 -0
  904. package/examples/picker-data-source/example-custom-picker-collection-data-source.ts +108 -20
  905. package/examples/{entity-content-type-condition → workspace-content-type-condition}/content-type-alias-condition-workspace-view.element.ts +4 -4
  906. package/examples/{entity-content-type-condition → workspace-content-type-condition}/content-type-unique-condition-workspace-view.element.ts +4 -4
  907. package/examples/workspace-content-type-condition/index.ts +43 -0
  908. package/package.json +18 -16
  909. package/umbraco-package-schema.json +1455 -116
  910. package/vscode-html-custom-data.json +252 -103
  911. package/dist-cms/external/openid/src/authorization_request.d.ts +0 -43
  912. package/dist-cms/external/openid/src/authorization_request.js +0 -89
  913. package/dist-cms/external/openid/src/authorization_request_handler.d.ts +0 -63
  914. package/dist-cms/external/openid/src/authorization_request_handler.js +0 -108
  915. package/dist-cms/external/openid/src/authorization_response.d.ts +0 -40
  916. package/dist-cms/external/openid/src/authorization_response.js +0 -49
  917. package/dist-cms/external/openid/src/authorization_service_configuration.d.ts +0 -32
  918. package/dist-cms/external/openid/src/authorization_service_configuration.js +0 -55
  919. package/dist-cms/external/openid/src/base64-js/index.d.ts +0 -19
  920. package/dist-cms/external/openid/src/base64-js/index.js +0 -124
  921. package/dist-cms/external/openid/src/crypto_utils.d.ts +0 -22
  922. package/dist-cms/external/openid/src/crypto_utils.js +0 -74
  923. package/dist-cms/external/openid/src/errors.d.ts +0 -8
  924. package/dist-cms/external/openid/src/errors.js +0 -23
  925. package/dist-cms/external/openid/src/flags.d.ts +0 -2
  926. package/dist-cms/external/openid/src/flags.js +0 -18
  927. package/dist-cms/external/openid/src/logger.d.ts +0 -5
  928. package/dist-cms/external/openid/src/logger.js +0 -69
  929. package/dist-cms/external/openid/src/query_string_utils.d.ts +0 -14
  930. package/dist-cms/external/openid/src/query_string_utils.js +0 -51
  931. package/dist-cms/external/openid/src/redirect_based_handler.d.ts +0 -29
  932. package/dist-cms/external/openid/src/redirect_based_handler.js +0 -159
  933. package/dist-cms/external/openid/src/revoke_token_request.d.ts +0 -31
  934. package/dist-cms/external/openid/src/revoke_token_request.js +0 -34
  935. package/dist-cms/external/openid/src/storage.d.ts +0 -50
  936. package/dist-cms/external/openid/src/storage.js +0 -59
  937. package/dist-cms/external/openid/src/token_request.d.ts +0 -33
  938. package/dist-cms/external/openid/src/token_request.js +0 -69
  939. package/dist-cms/external/openid/src/token_request_handler.d.ts +0 -27
  940. package/dist-cms/external/openid/src/token_request_handler.js +0 -58
  941. package/dist-cms/external/openid/src/token_response.d.ts +0 -65
  942. package/dist-cms/external/openid/src/token_response.js +0 -77
  943. package/dist-cms/external/openid/src/types.d.ts +0 -22
  944. package/dist-cms/external/openid/src/types.js +0 -14
  945. package/dist-cms/external/openid/src/xhr.d.ts +0 -13
  946. package/dist-cms/external/openid/src/xhr.js +0 -72
  947. package/dist-cms/packages/core/auth/auth-flow.d.ts +0 -107
  948. package/dist-cms/packages/core/auth/auth-flow.js +0 -385
  949. package/dist-cms/packages/core/auth/workers/token-check.worker.js +0 -104
  950. package/dist-cms/packages/documents/documents/collection/item/document-grid-collection-card.element.d.ts +0 -23
  951. package/dist-cms/packages/documents/documents/collection/item/document-grid-collection-card.element.js +0 -155
  952. package/dist-cms/packages/documents/documents/collection/views/grid/document-grid-collection-view.element.d.ts +0 -17
  953. package/dist-cms/packages/documents/documents/collection/views/grid/document-grid-collection-view.element.js +0 -98
  954. package/dist-cms/packages/extension-insights/collection/repository/extension-collection.repository.d.ts +0 -14
  955. package/dist-cms/packages/extension-insights/collection/repository/extension-collection.repository.js +0 -32
  956. package/dist-cms/packages/extension-insights/collection/types.d.ts +0 -10
  957. package/dist-cms/packages/extension-insights/collection/views/manifests.d.ts +0 -2
  958. package/dist-cms/packages/extension-insights/entity-actions/manifests.js +0 -2
  959. /package/dist-cms/packages/{extension-insights/entity-actions/unregister/index.js → content/content/audit-log/audit-log-action/audit-log-action.extension.js} +0 -0
  960. /package/dist-cms/packages/{extension-insights/collection → content/content-type/entity-content-type/conditions}/types.js +0 -0
  961. /package/dist-cms/packages/{core/auth/workers/token-check.worker.d.ts → content/content-type/entity-content-type/conditions/unique/types.js} +0 -0
  962. /package/dist-cms/packages/{extension-insights/entity-actions/unregister/index.d.ts → content/content-type/entity-content-type/types.js} +0 -0
  963. /package/dist-cms/packages/{extension-insights → core/extension}/collection/manifests.d.ts +0 -0
  964. /package/dist-cms/packages/{extension-insights → core/extension}/collection/manifests.js +0 -0
  965. /package/dist-cms/packages/{extension-insights → core/extension}/collection/repository/index.d.ts +0 -0
  966. /package/dist-cms/packages/{extension-insights → core/extension}/collection/repository/index.js +0 -0
  967. /package/dist-cms/packages/{extension-insights → core/extension}/collection/repository/manifests.d.ts +0 -0
  968. /package/dist-cms/packages/{extension-insights → core/extension}/collection/repository/manifests.js +0 -0
  969. /package/dist-cms/packages/{extension-insights/entity-actions/unregister → core/extension/unregister/entity-action}/manifests.d.ts +0 -0
  970. /package/dist-cms/packages/{extension-insights/entity-actions/unregister → core/extension/unregister/entity-action}/manifests.js +0 -0
  971. /package/dist-cms/packages/core/property-action/{common → kinds}/clear/property-action-clear.controller.d.ts +0 -0
  972. /package/dist-cms/packages/core/property-action/{common → kinds}/clear/property-action-clear.controller.js +0 -0
@@ -1,12 +1,17 @@
1
- import { UmbAuthFlow } from './auth-flow.js';
1
+ import { UmbAuthClient } from './umb-auth-client.js';
2
2
  import { UMB_AUTH_CONTEXT } from './auth.context.token.js';
3
3
  import { UmbAuthSessionTimeoutController } from './controllers/auth-session-timeout.controller.js';
4
- import { UMB_STORAGE_TOKEN_RESPONSE_NAME } from './constants.js';
5
4
  import { UmbContextBase } from '../../../libs/class-api/index.js';
6
- import { UmbBooleanState } from '../../../libs/observable-api/index.js';
7
- import { ReplaySubject, Subject, firstValueFrom, switchMap, distinctUntilChanged, throttleTime, auditTime, } from '../../../external/rxjs/index.js';
8
- import { umbHttpClient } from '../http-client/index.js';
9
- import { isTestEnvironment } from '../utils/index.js';
5
+ import { UmbApiInterceptorController, UMB_AUTH_SIGNALER_CONTEXT } from '../resources/index.js';
6
+ import { UmbBooleanState, UmbObjectState } from '../../../libs/observable-api/index.js';
7
+ import { ReplaySubject, Subject, switchMap, distinctUntilChanged, throttleTime, auditTime, } from '../../../external/rxjs/index.js';
8
+ import { isTestEnvironment, UmbDeprecation } from '../utils/index.js';
9
+ /**
10
+ * The multiplier for the token expiry time.
11
+ * In Umbraco, access_tokens live for a quarter of the time of the refresh_token.
12
+ * We multiply by this to get the full session lifetime.
13
+ */
14
+ const TOKEN_EXPIRY_MULTIPLIER = 4;
10
15
  export class UmbAuthContext extends UmbContextBase {
11
16
  #isAuthorized;
12
17
  // Timeout is different from `isAuthorized` because it can occur repeatedly
@@ -15,38 +20,67 @@ export class UmbAuthContext extends UmbContextBase {
15
20
  #isBypassed;
16
21
  #serverUrl;
17
22
  #backofficePath;
18
- #authFlow;
23
+ // Auth client (replaces appauth library)
24
+ #client;
25
+ // Session timing — in-memory only, no localStorage
26
+ #session;
27
+ // True only during the synchronous #updateSession() call inside the lock callback.
28
+ // Prevents re-entrant /token calls when session$ observers fire synchronously
29
+ // (e.g. keepUserLoggedIn=true with short expiresIn triggers #onSessionExpiring
30
+ // from inside the lock, capturing sessionBefore = newSession so the guard can't help).
31
+ #inSessionUpdateCallback;
32
+ // Cross-tab coordination
33
+ #channel;
34
+ // Popup management
19
35
  #authWindowProxy;
20
- #previousAuthUrl;
21
- // Event handler for storage events - arrow function to maintain consistent reference
22
- #onStorageEvent;
36
+ #popupCleanup;
37
+ /**
38
+ * @deprecated Observe isAuthorized instead. Scheduled for removal in Umbraco 19.
39
+ */
40
+ #authorizationSignal;
41
+ // Track clients that have been configured to prevent duplicate interceptor binding
42
+ #configuredClients;
43
+ // Endpoint URLs
44
+ #linkEndpoint;
45
+ #linkKeyEndpoint;
46
+ #unlinkEndpoint;
47
+ #postLogoutRedirectUri;
23
48
  /**
24
49
  * Observable that acts as a signal for when the authorization state changes.
50
+ * @deprecated Observe isAuthorized instead. Scheduled for removal in Umbraco 19.
25
51
  * @remark It will emit once per second, so it can be used to trigger UI updates or other actions when the authorization state changes.
26
- * @returns {Subject<void>} An observable that emits when the authorization state changes.
52
+ * @returns An observable that emits when the authorization state changes.
27
53
  */
28
54
  get authorizationSignal() {
29
- return this.#authFlow.authorizationSignal.asObservable().pipe(
55
+ new UmbDeprecation({
56
+ deprecated: 'get authorizationSignal',
57
+ solution: 'Observe isAuthorized instead. This provides more useful information (authorized or not) and is more efficient to consume. Scheduled for removal in Umbraco 19.',
58
+ removeInVersion: '19.0.0',
59
+ }).warn();
60
+ return this.#authorizationSignal.asObservable().pipe(
30
61
  // Throttle the signal to ensure that it emits once, then waits for 1s before allowing another emission.
31
62
  throttleTime(1000));
32
63
  }
33
- constructor(host, serverUrl, backofficePath, isBypassed) {
64
+ constructor(host, serverUrl, backofficePath, isBypassed, keepUserLoggedIn = false) {
34
65
  super(host, UMB_AUTH_CONTEXT);
35
66
  this.#isAuthorized = new UmbBooleanState(false);
36
67
  // Timeout is different from `isAuthorized` because it can occur repeatedly
37
68
  this.#isTimeout = new Subject();
38
69
  this.#isInitialized = new ReplaySubject(1);
39
- // Event handler for storage events - arrow function to maintain consistent reference
40
- this.#onStorageEvent = async (evt) => {
41
- if (evt.key === UMB_STORAGE_TOKEN_RESPONSE_NAME) {
42
- // Close any open auth windows
43
- this.#authWindowProxy?.close();
44
- // Refresh the local storage state into memory
45
- await this.setInitialState();
46
- // Let any auth listeners (such as the auth modal) know that the auth state has changed
47
- this.#authFlow.authorizationSignal.next();
48
- }
49
- };
70
+ // Session timing in-memory only, no localStorage
71
+ this.#session = new UmbObjectState(undefined);
72
+ this.session$ = this.#session.asObservable();
73
+ // True only during the synchronous #updateSession() call inside the lock callback.
74
+ // Prevents re-entrant /token calls when session$ observers fire synchronously
75
+ // (e.g. keepUserLoggedIn=true with short expiresIn triggers #onSessionExpiring
76
+ // from inside the lock, capturing sessionBefore = newSession so the guard can't help).
77
+ this.#inSessionUpdateCallback = false;
78
+ /**
79
+ * @deprecated Observe isAuthorized instead. Scheduled for removal in Umbraco 19.
80
+ */
81
+ this.#authorizationSignal = new Subject();
82
+ // Track clients that have been configured to prevent duplicate interceptor binding
83
+ this.#configuredClients = new WeakSet();
50
84
  /**
51
85
  * Observable that emits true when the auth context is initialized.
52
86
  * @remark It will only emit once and then complete itself.
@@ -69,23 +103,79 @@ export class UmbAuthContext extends UmbContextBase {
69
103
  this.#isBypassed = isBypassed;
70
104
  this.#serverUrl = serverUrl;
71
105
  this.#backofficePath = backofficePath;
72
- this.#authFlow = new UmbAuthFlow(serverUrl, this.getRedirectUrl(), this.getPostLogoutRedirectUrl());
73
- // Observe the authorization signal and close the auth window
74
- this.observe(this.authorizationSignal, () => {
75
- // Update the authorization state
76
- this.getIsAuthorized();
77
- }, '_authFlowAuthorizationSignal');
78
- // Observe changes to local storage and update the authorization state
79
- // This establishes the tab-to-tab communication
80
- window.addEventListener('storage', this.#onStorageEvent);
106
+ this.keepUserLoggedIn = keepUserLoggedIn;
107
+ const redirectUri = this.getRedirectUrl();
108
+ this.#postLogoutRedirectUri = this.getPostLogoutRedirectUrl();
109
+ const endpoints = {
110
+ authorizationEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/authorize`,
111
+ tokenEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/token`,
112
+ revocationEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/revoke`,
113
+ linkEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/link-login`,
114
+ linkKeyEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/link-login-key`,
115
+ unlinkEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/unlink-login`,
116
+ };
117
+ this.#linkEndpoint = endpoints.linkEndpoint;
118
+ this.#linkKeyEndpoint = endpoints.linkKeyEndpoint;
119
+ this.#unlinkEndpoint = endpoints.unlinkEndpoint;
120
+ this.#client = new UmbAuthClient(endpoints, redirectUri);
121
+ // Set up cross-tab coordination via BroadcastChannel
122
+ this.#channel = new BroadcastChannel('umb:auth');
123
+ this.#channel.onmessage = (evt) => {
124
+ switch (evt.data?.type) {
125
+ case 'authorized': {
126
+ // Set session locally — do NOT call #updateSession which would re-broadcast
127
+ const accessTokenExpiresAt = evt.data.issuedAt + evt.data.expiresIn;
128
+ const expiresAt = evt.data.issuedAt + evt.data.expiresIn * TOKEN_EXPIRY_MULTIPLIER;
129
+ this.#session.setValue({ accessTokenExpiresAt, expiresAt });
130
+ this.#isAuthorized.setValue(true);
131
+ this.#authorizationSignal.next();
132
+ break;
133
+ }
134
+ case 'sessionUpdate':
135
+ this.#session.setValue({
136
+ accessTokenExpiresAt: evt.data.accessTokenExpiresAt,
137
+ expiresAt: evt.data.expiresAt,
138
+ });
139
+ this.#isAuthorized.setValue(true);
140
+ break;
141
+ case 'sessionCleared':
142
+ this.#session.setValue(undefined);
143
+ this.#isAuthorized.setValue(false);
144
+ break;
145
+ case 'signedOut':
146
+ this.#session.setValue(undefined);
147
+ this.#isAuthorized.setValue(false);
148
+ // Redirect to logout page — cookies already cleared by the tab that initiated sign-out
149
+ location.href = this.#postLogoutRedirectUri;
150
+ break;
151
+ case 'sessionRequest': {
152
+ // Another tab is asking for the current session state (e.g. new tab opening).
153
+ // Only share the session if it is still valid — an expired session would cause
154
+ // the recipient (e.g. a popup) to believe it is already authorized and skip
155
+ // the authorization code exchange.
156
+ if (this.isSessionValid()) {
157
+ this.#channel.postMessage({ type: 'sessionResponse', session: this.#session.getValue() });
158
+ }
159
+ break;
160
+ }
161
+ }
162
+ };
81
163
  if (!isTestEnvironment()) {
82
164
  // Start the session timeout controller
83
- new UmbAuthSessionTimeoutController(this, this.#authFlow);
165
+ new UmbAuthSessionTimeoutController(this);
84
166
  }
167
+ // When an HTTP interceptor is active it registers an UmbAuthSignalerContext on the host.
168
+ // Consume it to keep authorization state in sync and to react to timeout requests.
169
+ this.consumeContext(UMB_AUTH_SIGNALER_CONTEXT, (signaler) => {
170
+ // Keep the signaler's authorization state in sync with ours
171
+ this.observe(this.isAuthorized, (isAuthorized) => signaler?.setAuthorized(isAuthorized ?? false));
172
+ // React to timeout requests from the interceptor
173
+ this.observe(signaler?.timeoutRequest, () => this.timeOut());
174
+ });
85
175
  }
86
176
  destroy() {
87
177
  super.destroy();
88
- window.removeEventListener('storage', this.#onStorageEvent);
178
+ this.#channel.close();
89
179
  }
90
180
  /**
91
181
  * Initiates the login flow.
@@ -95,29 +185,127 @@ export class UmbAuthContext extends UmbContextBase {
95
185
  * @param manifest The manifest for the registered provider.
96
186
  */
97
187
  async makeAuthorizationRequest(identityProvider = 'Umbraco', redirect, usernameHint, manifest) {
98
- const redirectUrl = await this.#authFlow.makeAuthorizationRequest(identityProvider, usernameHint);
188
+ const redirectUrl = await this.#client.buildAuthorizationUrl(identityProvider, usernameHint);
99
189
  if (redirect) {
190
+ // For redirect flows, persist PKCE state in sessionStorage (survives same-tab navigation)
191
+ sessionStorage.setItem('umb:pkce', JSON.stringify({
192
+ codeVerifier: this.#client.codeVerifier,
193
+ state: this.#client.state,
194
+ }));
100
195
  location.href = redirectUrl;
101
196
  return;
102
197
  }
103
198
  const popupTarget = manifest?.meta?.behavior?.popupTarget ?? 'umbracoAuthPopup';
104
199
  const popupFeatures = manifest?.meta?.behavior?.popupFeatures ??
105
200
  'width=600,height=600,menubar=no,location=no,resizable=yes,scrollbars=yes,status=no,toolbar=no';
201
+ // Clean up any pending popup flow before starting a new one
202
+ this.#popupCleanup?.();
106
203
  if (!this.#authWindowProxy || this.#authWindowProxy.closed) {
107
204
  this.#authWindowProxy = window.open(redirectUrl, popupTarget, popupFeatures);
108
205
  }
109
- else if (this.#previousAuthUrl !== redirectUrl) {
206
+ else {
207
+ // Popup still open — navigate to the new URL (always different due to PKCE state)
110
208
  this.#authWindowProxy = window.open(redirectUrl, popupTarget);
111
209
  this.#authWindowProxy?.focus();
112
210
  }
113
- this.#previousAuthUrl = redirectUrl;
114
- return firstValueFrom(this.authorizationSignal);
211
+ // Store PKCE state for the popup's postMessage request
212
+ const codeVerifier = this.#client.codeVerifier;
213
+ const state = this.#client.state;
214
+ // Listen for PKCE requests from the popup
215
+ const pkceHandler = (evt) => {
216
+ if (evt.origin !== window.location.origin)
217
+ return;
218
+ if (evt.data?.type === 'pkceRequest' && evt.data?.state === state) {
219
+ // Respond with the code_verifier
220
+ this.#authWindowProxy?.postMessage({ type: 'pkceResponse', codeVerifier, state }, window.location.origin);
221
+ }
222
+ };
223
+ window.addEventListener('message', pkceHandler);
224
+ // Wait for the popup to complete via BroadcastChannel.
225
+ // Resolves when authorized; also resolves (no-op) if the popup is closed/cancelled.
226
+ return new Promise((resolve) => {
227
+ const cleanup = () => {
228
+ clearInterval(closedPoll);
229
+ this.#channel.removeEventListener('message', handler);
230
+ window.removeEventListener('message', pkceHandler);
231
+ this.#popupCleanup = undefined;
232
+ };
233
+ this.#popupCleanup = cleanup;
234
+ const handler = (evt) => {
235
+ if (evt.data?.type === 'authorized') {
236
+ cleanup();
237
+ this.#client.clearPkceState();
238
+ this.#authWindowProxy?.close();
239
+ resolve();
240
+ }
241
+ };
242
+ this.#channel.addEventListener('message', handler);
243
+ // Poll for popup closed (user cancelled or closed the window)
244
+ const closedPoll = setInterval(() => {
245
+ if (this.#authWindowProxy?.closed) {
246
+ cleanup();
247
+ this.#client.clearPkceState();
248
+ resolve();
249
+ }
250
+ }, 500);
251
+ });
115
252
  }
116
253
  /**
117
254
  * Completes the login flow.
255
+ * This is called on the oauth_complete page to exchange the authorization code for tokens.
256
+ * @returns The token response timing, or null if no authorization was pending.
118
257
  */
119
- completeAuthorizationRequest() {
120
- return this.#authFlow.completeAuthorizationIfPossible();
258
+ async completeAuthorizationRequest() {
259
+ const searchParams = new URLSearchParams(window.location.search);
260
+ const code = searchParams.get('code');
261
+ const state = searchParams.get('state');
262
+ if (!code) {
263
+ return null;
264
+ }
265
+ // Try to get PKCE state — first from the parent window (popup flow), then from sessionStorage (redirect flow)
266
+ let codeVerifier;
267
+ if (window.opener) {
268
+ // Popup flow: request code_verifier from parent via postMessage
269
+ codeVerifier = await this.#requestCodeVerifierFromOpener(state);
270
+ }
271
+ if (!codeVerifier) {
272
+ // Redirect flow: read from sessionStorage
273
+ const pkceData = sessionStorage.getItem('umb:pkce');
274
+ if (pkceData) {
275
+ try {
276
+ const parsed = JSON.parse(pkceData);
277
+ if (parsed.state === state) {
278
+ codeVerifier = parsed.codeVerifier;
279
+ sessionStorage.removeItem('umb:pkce');
280
+ }
281
+ }
282
+ catch {
283
+ // Ignore parse errors
284
+ sessionStorage.removeItem('umb:pkce');
285
+ }
286
+ }
287
+ }
288
+ if (!codeVerifier) {
289
+ console.error('[UmbAuthContext] No code_verifier available for authorization code exchange');
290
+ return null;
291
+ }
292
+ const response = await this.#client.exchangeCode(code, codeVerifier);
293
+ if (!response) {
294
+ return null;
295
+ }
296
+ // Set session locally — use #setSessionLocally (not #updateSession) to avoid
297
+ // broadcasting sessionUpdate AND authorized, which would cause a message storm.
298
+ this.#setSessionLocally(response.expiresIn, response.issuedAt);
299
+ this.#isAuthorized.setValue(true);
300
+ // Broadcast to all tabs that authorization is complete
301
+ this.#channel.postMessage({
302
+ type: 'authorized',
303
+ expiresIn: response.expiresIn,
304
+ issuedAt: response.issuedAt,
305
+ });
306
+ // Fire the deprecated signal for external consumers
307
+ this.#authorizationSignal.next();
308
+ return response;
121
309
  }
122
310
  /**
123
311
  * Checks if the user is authorized. If Authorization is bypassed, the user is always authorized.
@@ -129,48 +317,161 @@ export class UmbAuthContext extends UmbContextBase {
129
317
  return true;
130
318
  }
131
319
  else {
132
- const isAuthorized = this.#authFlow.isAuthorized();
320
+ const isAuthorized = !!this.#session.getValue();
133
321
  this.#isAuthorized.setValue(isAuthorized);
134
322
  return isAuthorized;
135
323
  }
136
324
  }
137
325
  /**
138
326
  * Sets the initial state of the auth flow.
327
+ * First asks existing tabs for their session via BroadcastChannel.
328
+ * If no peer responds, falls back to a server refresh.
139
329
  * @returns {Promise<void>}
140
330
  */
141
- setInitialState() {
142
- return this.#authFlow.setInitialState();
331
+ async setInitialState() {
332
+ // If we already have a session, no need to re-initialize
333
+ if (this.#session.getValue()) {
334
+ return;
335
+ }
336
+ // Ask existing tabs for their session state (avoids a /token call for new tabs)
337
+ const peerSession = await this.#requestSessionFromPeers();
338
+ if (peerSession) {
339
+ this.#session.setValue(peerSession);
340
+ this.#isAuthorized.setValue(true);
341
+ return;
342
+ }
343
+ // No peer responded — try a server refresh.
344
+ // Uses the Web Lock so concurrent calls (from API requests via getLatestToken)
345
+ // are deduplicated — only one actual /token call is made.
346
+ await this.makeRefreshTokenRequest();
143
347
  }
144
348
  /**
145
349
  * Gets the latest token from the Management API.
146
- * If the token is expired, it will be refreshed.
350
+ * With cookie auth, this returns '[redacted]' — the real token is in the httpOnly cookie.
351
+ * If the session has expired, it will attempt a refresh first.
147
352
  *
148
- * NB! The user may experience being redirected to the login screen if the token is expired.
149
353
  * @example <caption>Using the latest token</caption>
150
354
  * ```js
151
355
  * const token = await authContext.getLatestToken();
152
356
  * const result = await fetch('https://my-api.com', { headers: { Authorization: `Bearer ${token}` } });
153
357
  * ```
358
+ * @deprecated Use {@link configureClient} for `@hey-api/openapi-ts` clients or {@link getOpenApiConfiguration} for manual fetch calls. With cookie-based auth this always returns `'[redacted]'`. Scheduled for removal in Umbraco 19.
359
+ * @see {@link configureClient} for automatic token handling with `@hey-api/openapi-ts` clients.
360
+ * @see {@link getOpenApiConfiguration} for manual fetch calls with cookie-based auth.
154
361
  * @memberof UmbAuthContext
155
362
  * @returns The latest token from the Management API
156
363
  */
157
- getLatestToken() {
158
- return this.#authFlow.performWithFreshTokens();
364
+ async getLatestToken() {
365
+ new UmbDeprecation({
366
+ deprecated: 'getLatestToken',
367
+ solution: 'Use configureClient for @hey-api/openapi-ts clients or getOpenApiConfiguration for manual fetch calls. With cookie-based auth this always returns "[redacted]".',
368
+ removeInVersion: '19.0.0',
369
+ }).warn();
370
+ await this.#ensureTokenReady();
371
+ return '[redacted]';
159
372
  }
160
373
  /**
161
- * Validates the token against the server and returns true if the token is valid.
374
+ * Forces a token refresh against the server (calls `/token`) and returns true if successful.
375
+ * Use this when you need to unconditionally refresh — e.g. session timeout keep-alive.
376
+ * For per-request token handling, prefer {@link configureClient} which skips the network
377
+ * call when the access token is still valid.
378
+ * Uses Web Locks to deduplicate concurrent refresh requests across tabs.
162
379
  * @memberof UmbAuthContext
163
- * @returns True if the token is valid, otherwise false
380
+ * @returns True if the refresh succeeded, otherwise false
164
381
  */
165
382
  async validateToken() {
166
- return this.#isBypassed || this.#authFlow.makeRefreshTokenRequest();
383
+ return this.#isBypassed || this.makeRefreshTokenRequest();
384
+ }
385
+ /**
386
+ * Attempts to refresh the token using Web Locks to prevent concurrent refresh requests.
387
+ * @returns True if the refresh was successful, otherwise false.
388
+ */
389
+ async makeRefreshTokenRequest() {
390
+ // Fallback for environments without Web Locks (some enterprise/kiosk browsers)
391
+ if (!navigator.locks) {
392
+ console.warn('[UmbAuth] navigator.locks is not available — token refresh coordination disabled.');
393
+ if (this.#isAccessTokenValid())
394
+ return true;
395
+ const response = await this.#client.refreshToken();
396
+ if (response) {
397
+ this.#updateSession(response.expiresIn, response.issuedAt);
398
+ return true;
399
+ }
400
+ return false;
401
+ }
402
+ // Capture the session before entering the lock queue. Inside the lock we check
403
+ // if the session object was replaced — that means another tab broadcast a
404
+ // sessionUpdate while we were waiting, so we can skip our own /token call.
405
+ // We compare object references (not expiresAt) because keepUserLoggedIn triggers
406
+ // a proactive refresh *before* the access token expires; an expiresAt-based check
407
+ // would incorrectly skip the refresh when the session is still technically valid.
408
+ const sessionBefore = this.#session.getValue();
409
+ // Guard against re-entrant calls: if session$ fired synchronously from inside
410
+ // a lock callback (via #updateSession → observer → keepUserLoggedIn proactive refresh),
411
+ // sessionBefore would equal the already-updated session so the reference check below
412
+ // can't help. Return true immediately — the lock holder already refreshed.
413
+ if (this.#inSessionUpdateCallback)
414
+ return true;
415
+ return navigator.locks.request('umb:token-refresh', async () => {
416
+ if (this.#session.getValue() !== sessionBefore && this.#isAccessTokenValid())
417
+ return true;
418
+ const response = await this.#client.refreshToken();
419
+ if (response) {
420
+ this.#updateSession(response.expiresIn, response.issuedAt);
421
+ return true;
422
+ }
423
+ return false;
424
+ });
425
+ }
426
+ /**
427
+ * Checks if the current session is still valid.
428
+ * @returns True if the session has not expired.
429
+ */
430
+ isSessionValid() {
431
+ const session = this.#session.getValue();
432
+ return !!session && session.expiresAt > Math.floor(Date.now() / 1000);
433
+ }
434
+ /**
435
+ * Local-only check — no network call.
436
+ * Returns true if the cached access token has not yet reached its expiry timestamp.
437
+ * Does NOT check the refresh token or server state.
438
+ */
439
+ #isAccessTokenValid() {
440
+ const session = this.#session.getValue();
441
+ return !!session && session.accessTokenExpiresAt > Math.floor(Date.now() / 1000);
167
442
  }
168
443
  /**
169
- * Clears the token storage.
444
+ * Gate for per-request token handling.
445
+ * - If the access token is expired: calls {@link validateToken} to refresh it (network call).
446
+ * - If the access token is still valid but another tab holds the `umb:token-refresh` lock:
447
+ * waits for that refresh to finish before returning, so the request is sent with the
448
+ * latest cookie and not the token that is about to be revoked (prevents ID2019 errors).
449
+ * - Otherwise: returns immediately with no network call.
450
+ */
451
+ async #ensureTokenReady() {
452
+ if (!this.#isAccessTokenValid()) {
453
+ await this.validateToken();
454
+ return;
455
+ }
456
+ if (!navigator.locks)
457
+ return;
458
+ const state = await navigator.locks.query();
459
+ if (state.held?.some((l) => l.name === 'umb:token-refresh')) {
460
+ // A refresh is in progress in another tab — queue behind it so we send
461
+ // requests with the new cookie rather than the soon-to-be-revoked one.
462
+ await navigator.locks.request('umb:token-refresh', async () => {
463
+ // No-op: we only need to wait for the ongoing refresh to finish.
464
+ });
465
+ }
466
+ }
467
+ /**
468
+ * Clears the in-memory session state.
170
469
  * @memberof UmbAuthContext
171
470
  */
172
471
  clearTokenStorage() {
173
- return this.#authFlow.clearTokenStorage();
472
+ this.#session.setValue(undefined);
473
+ this.#isAuthorized.setValue(false);
474
+ this.#channel.postMessage({ type: 'sessionCleared' });
174
475
  }
175
476
  /**
176
477
  * Handles the case where the user has timed out, i.e. the token has expired.
@@ -178,15 +479,27 @@ export class UmbAuthContext extends UmbContextBase {
178
479
  * @memberof UmbAuthContext
179
480
  */
180
481
  timeOut() {
482
+ this.#session.setValue(undefined);
181
483
  this.#isAuthorized.setValue(false);
182
484
  this.#isTimeout.next();
183
485
  }
184
486
  /**
185
- * Signs the user out by removing any tokens from the browser.
487
+ * Signs the user out by revoking tokens and redirecting to the end session endpoint.
186
488
  * @memberof UmbAuthContext
187
489
  */
188
- signOut() {
189
- return this.#authFlow.signOut();
490
+ async signOut() {
491
+ // Revoke the token (best-effort)
492
+ await this.#client.revokeToken().catch(() => { });
493
+ // Clear local state (don't call clearTokenStorage — signedOut covers other tabs)
494
+ this.#session.setValue(undefined);
495
+ this.#isAuthorized.setValue(false);
496
+ this.#channel.postMessage({ type: 'signedOut' });
497
+ // Redirect to end session endpoint
498
+ const postLogoutRedirectUri = new URL(this.#postLogoutRedirectUri, window.location.origin);
499
+ const endSessionEndpoint = `${this.#serverUrl}/umbraco/management/api/v1/security/back-office/signout`;
500
+ const postLogoutLocation = new URL(endSessionEndpoint);
501
+ postLogoutLocation.searchParams.set('post_logout_redirect_uri', postLogoutRedirectUri.href);
502
+ location.href = postLogoutLocation.href;
190
503
  }
191
504
  /**
192
505
  * Get the server url to the Management API.
@@ -198,9 +511,11 @@ export class UmbAuthContext extends UmbContextBase {
198
511
  * ```
199
512
  * @example <caption></caption>
200
513
  * ```js
201
- * const serverUrl = authContext.getServerUrl();
202
- * const token = await authContext.getLatestToken();
203
- * const result = await fetch(`${serverUrl}/umbraco/management/api/v1/my-resource`, { headers: { Authorization: `Bearer ${token}` } });
514
+ * const config = authContext.getOpenApiConfiguration();
515
+ * const result = await fetch(`${config.base}/umbraco/management/api/v1/my-resource`, {
516
+ * credentials: config.credentials,
517
+ * headers: { Authorization: `Bearer ${await config.token()}` },
518
+ * });
204
519
  * ```
205
520
  * @returns The server url to the Management API
206
521
  */
@@ -222,13 +537,41 @@ export class UmbAuthContext extends UmbContextBase {
222
537
  * @returns {UmbOpenApiConfiguration} The default OpenAPI configuration
223
538
  */
224
539
  getOpenApiConfiguration() {
225
- const config = umbHttpClient.getConfig();
226
540
  return {
227
- base: config.baseUrl,
228
- credentials: config.credentials,
229
- token: () => this.getLatestToken(),
541
+ base: this.#serverUrl,
542
+ credentials: 'include',
543
+ token: () => Promise.resolve('[redacted]'),
230
544
  };
231
545
  }
546
+ /**
547
+ * Configures a `@hey-api/openapi-ts` client for authenticated API calls.
548
+ * Sets baseUrl, credentials, auth header, and binds the default response
549
+ * interceptors (401 retry, error handling, notifications).
550
+ * @example
551
+ * ```js
552
+ * const authContext = await this.getContext(UMB_AUTH_CONTEXT);
553
+ * authContext.configureClient(myClient);
554
+ * // Now myClient automatically includes auth headers and interceptors
555
+ * ```
556
+ * @param client A `@hey-api/openapi-ts` client instance.
557
+ */
558
+ configureClient(client) {
559
+ if (this.#configuredClients.has(client))
560
+ return;
561
+ this.#configuredClients.add(client);
562
+ client.setConfig({
563
+ baseUrl: this.#serverUrl,
564
+ credentials: 'include',
565
+ auth: async () => {
566
+ await this.#ensureTokenReady();
567
+ return '[redacted]';
568
+ },
569
+ });
570
+ // Controller self-registers on the host element via UmbControllerBase constructor,
571
+ // so the anonymous reference is intentional — lifecycle is managed by the host.
572
+ // Note: _host must be a proper UmbControllerHost (element host) for correct cleanup.
573
+ new UmbApiInterceptorController(this._host).bindDefaultInterceptors(client);
574
+ }
232
575
  /**
233
576
  * Sets the auth context as initialized, which means that the auth context is ready to be used.
234
577
  * @remark This is used to let the app context know that the core module is ready, which means that the core auth providers are available.
@@ -259,18 +602,141 @@ export class UmbAuthContext extends UmbContextBase {
259
602
  return `${window.location.origin}${this.#backofficePath}${this.#backofficePath.endsWith('/') ? '' : '/'}logout`;
260
603
  }
261
604
  /**
262
- * @param provider
263
- * @see UmbAuthFlow#linkLogin
605
+ * Links the current user to the specified provider by redirecting to the link endpoint.
606
+ * @param provider The provider to link to.
264
607
  */
265
- linkLogin(provider) {
266
- return this.#authFlow.linkLogin(provider);
608
+ async linkLogin(provider) {
609
+ const linkKey = await this.#makeLinkTokenRequest(provider);
610
+ const form = document.createElement('form');
611
+ form.method = 'POST';
612
+ form.action = this.#linkEndpoint;
613
+ form.style.display = 'none';
614
+ const providerInput = document.createElement('input');
615
+ providerInput.name = 'provider';
616
+ providerInput.value = provider;
617
+ form.appendChild(providerInput);
618
+ const linkKeyInput = document.createElement('input');
619
+ linkKeyInput.name = 'linkKey';
620
+ linkKeyInput.value = linkKey;
621
+ form.appendChild(linkKeyInput);
622
+ document.body.appendChild(form);
623
+ form.submit();
267
624
  }
268
625
  /**
269
- * @param providerName
626
+ * Unlinks the current user from the specified provider.
627
+ * @param loginProvider
270
628
  * @param providerKey
271
- * @see UmbAuthFlow#unlinkLogin
272
629
  */
273
- unlinkLogin(providerName, providerKey) {
274
- return this.#authFlow.unlinkLogin(providerName, providerKey);
630
+ async unlinkLogin(loginProvider, providerKey) {
631
+ const request = new Request(this.#unlinkEndpoint, {
632
+ method: 'POST',
633
+ credentials: 'include',
634
+ headers: { 'Content-Type': 'application/json', Authorization: 'Bearer [redacted]' },
635
+ body: JSON.stringify({ loginProvider, providerKey }),
636
+ });
637
+ const result = await fetch(request);
638
+ if (!result.ok) {
639
+ const error = await result.json();
640
+ throw error;
641
+ }
642
+ await this.signOut();
643
+ return true;
644
+ }
645
+ /**
646
+ * Sets the in-memory session state without broadcasting.
647
+ * Use when the caller handles broadcasting separately (e.g. completeAuthorizationRequest).
648
+ *
649
+ * Sets #inSessionUpdateCallback around the setValue calls to prevent re-entrant /token
650
+ * requests triggered by session$ observers firing synchronously (e.g. keepUserLoggedIn=true
651
+ * with a short expiresIn causes #onSessionExpiring to fire immediately).
652
+ */
653
+ #setSessionLocally(expiresIn, issuedAt) {
654
+ const accessTokenExpiresAt = issuedAt + expiresIn;
655
+ // The access_token lives for 1/4 of the refresh_token lifetime.
656
+ // Multiply to get the full session expiry.
657
+ const expiresAt = issuedAt + expiresIn * TOKEN_EXPIRY_MULTIPLIER;
658
+ this.#inSessionUpdateCallback = true;
659
+ try {
660
+ this.#session.setValue({ accessTokenExpiresAt, expiresAt });
661
+ this.#isAuthorized.setValue(true);
662
+ }
663
+ finally {
664
+ this.#inSessionUpdateCallback = false;
665
+ }
666
+ }
667
+ /**
668
+ * Updates the in-memory session state and broadcasts to other tabs.
669
+ */
670
+ #updateSession(expiresIn, issuedAt) {
671
+ this.#setSessionLocally(expiresIn, issuedAt);
672
+ const session = this.#session.getValue();
673
+ this.#channel.postMessage({
674
+ type: 'sessionUpdate',
675
+ accessTokenExpiresAt: session.accessTokenExpiresAt,
676
+ expiresAt: session.expiresAt,
677
+ });
678
+ }
679
+ /**
680
+ * Asks other tabs for their current session state via BroadcastChannel.
681
+ * Returns the first response within 300ms, or undefined if no peer responds.
682
+ * The 300ms window is empirical — long enough for a loaded peer tab to respond
683
+ * via the event loop, short enough to not noticeably delay login.
684
+ */
685
+ #requestSessionFromPeers() {
686
+ return new Promise((resolve) => {
687
+ const timeout = setTimeout(() => {
688
+ this.#channel.removeEventListener('message', handler);
689
+ resolve(undefined);
690
+ }, 300);
691
+ const handler = (evt) => {
692
+ if (evt.data?.type === 'sessionResponse' && evt.data.session) {
693
+ clearTimeout(timeout);
694
+ this.#channel.removeEventListener('message', handler);
695
+ resolve(evt.data.session);
696
+ }
697
+ };
698
+ this.#channel.addEventListener('message', handler);
699
+ this.#channel.postMessage({ type: 'sessionRequest' });
700
+ });
701
+ }
702
+ /**
703
+ * Requests the code_verifier from the parent window via postMessage (popup flow).
704
+ */
705
+ #requestCodeVerifierFromOpener(state) {
706
+ return new Promise((resolve) => {
707
+ if (!window.opener) {
708
+ resolve(undefined);
709
+ return;
710
+ }
711
+ const timeout = setTimeout(() => {
712
+ window.removeEventListener('message', handler);
713
+ resolve(undefined);
714
+ }, 5000);
715
+ const handler = (evt) => {
716
+ if (evt.origin !== window.location.origin)
717
+ return;
718
+ if (evt.data?.type === 'pkceResponse' && evt.data?.state === state) {
719
+ clearTimeout(timeout);
720
+ window.removeEventListener('message', handler);
721
+ resolve(evt.data.codeVerifier);
722
+ }
723
+ };
724
+ window.addEventListener('message', handler);
725
+ // Ask the parent for the code_verifier
726
+ window.opener.postMessage({ type: 'pkceRequest', state }, window.location.origin);
727
+ });
728
+ }
729
+ async #makeLinkTokenRequest(provider) {
730
+ const request = await fetch(`${this.#linkKeyEndpoint}?provider=${provider}`, {
731
+ credentials: 'include',
732
+ headers: {
733
+ Authorization: 'Bearer [redacted]',
734
+ 'Content-Type': 'application/json',
735
+ },
736
+ });
737
+ if (!request.ok) {
738
+ throw new Error('Failed to link login');
739
+ }
740
+ return request.json();
275
741
  }
276
742
  }