@umbraco-cms/backoffice 16.3.4 → 16.4.0-rc2

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 (406) hide show
  1. package/README.md +8 -0
  2. package/dist-cms/apps/backoffice/components/backoffice-header-sections.element.js +3 -2
  3. package/dist-cms/apps/preview/apps/preview-exit.element.js +1 -1
  4. package/dist-cms/apps/preview/apps/preview-open-website.element.js +1 -1
  5. package/dist-cms/apps/preview/preview.context.d.ts +1 -1
  6. package/dist-cms/apps/preview/preview.context.js +24 -4
  7. package/dist-cms/apps/preview/preview.element.js +1 -1
  8. package/dist-cms/assets/lang/da.js +17 -13
  9. package/dist-cms/assets/lang/de.js +3 -0
  10. package/dist-cms/assets/lang/en.js +17 -2
  11. package/dist-cms/assets/lang/es.js +3 -0
  12. package/dist-cms/assets/lang/fr.js +1 -0
  13. package/dist-cms/assets/lang/nb.js +1 -1
  14. package/dist-cms/assets/lang/nl.js +1 -0
  15. package/dist-cms/assets/lang/pt.js +7 -0
  16. package/dist-cms/custom-elements.json +250 -18
  17. package/dist-cms/external/dompurify/package.json +1 -1
  18. package/dist-cms/external/lit/package.json +1 -1
  19. package/dist-cms/external/marked/package.json +1 -1
  20. package/dist-cms/external/monaco-editor/package.json +1 -1
  21. package/dist-cms/external/monaco-editor/vite.config.js +1 -1
  22. package/dist-cms/external/openid/src/redirect_based_handler.d.ts +6 -0
  23. package/dist-cms/external/openid/src/redirect_based_handler.js +35 -7
  24. package/dist-cms/external/openid/src/xhr.js +1 -0
  25. package/dist-cms/external/uui/package.json +2 -2
  26. package/dist-cms/libs/localization-api/localization.controller.d.ts +9 -0
  27. package/dist-cms/libs/localization-api/localization.controller.js +9 -0
  28. package/dist-cms/packages/block/block/workspace/block-workspace-editor.element.js +1 -4
  29. package/dist-cms/packages/block/block/workspace/block-workspace.context.js +37 -12
  30. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.js +16 -21
  31. package/dist-cms/packages/block/block-grid/components/block-grid-area-config-entry/block-grid-area-config-entry.element.js +7 -3
  32. package/dist-cms/packages/block/block-grid/components/block-grid-area-config-entry/workspace/views/settings.element.js +2 -2
  33. package/dist-cms/packages/block/block-grid/components/block-grid-block/block-grid-block.element.d.ts +1 -0
  34. package/dist-cms/packages/block/block-grid/components/block-grid-block/block-grid-block.element.js +4 -1
  35. package/dist-cms/packages/block/block-grid/components/block-grid-block-inline/block-grid-block-inline.element.d.ts +1 -0
  36. package/dist-cms/packages/block/block-grid/components/block-grid-block-inline/block-grid-block-inline.element.js +4 -1
  37. package/dist-cms/packages/block/block-grid/components/block-grid-entries/block-grid-entries.element.js +3 -3
  38. package/dist-cms/packages/block/block-grid/components/block-grid-entry/block-grid-entry.element.js +3 -1
  39. package/dist-cms/packages/block/block-grid/property-editors/block-grid-area-type-permission/block-grid-area-type-permission.element.js +11 -2
  40. package/dist-cms/packages/block/block-grid/property-editors/block-grid-areas-config/property-editor-ui-block-grid-areas-config.element.js +6 -0
  41. package/dist-cms/packages/block/block-grid/property-editors/block-grid-type-configuration/property-editor-ui-block-grid-type-configuration.element.js +21 -13
  42. package/dist-cms/packages/block/block-grid/workspace/views/block-grid-type-workspace-view-areas.element.js +1 -1
  43. package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.d.ts +2 -2
  44. package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.js +8 -7
  45. package/dist-cms/packages/block/block-list/components/inline-list-block/inline-list-block.element.d.ts +1 -0
  46. package/dist-cms/packages/block/block-list/components/inline-list-block/inline-list-block.element.js +4 -5
  47. package/dist-cms/packages/block/block-list/components/ref-list-block/ref-list-block.element.d.ts +1 -0
  48. package/dist-cms/packages/block/block-list/components/ref-list-block/ref-list-block.element.js +4 -1
  49. package/dist-cms/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.js +5 -4
  50. package/dist-cms/packages/block/block-rte/components/block-rte-entry/block-rte-entry.element.d.ts +1 -1
  51. package/dist-cms/packages/block/block-rte/components/block-rte-entry/block-rte-entry.element.js +6 -5
  52. package/dist-cms/packages/block/block-rte/components/ref-rte-block/ref-rte-block.element.d.ts +1 -0
  53. package/dist-cms/packages/block/block-rte/components/ref-rte-block/ref-rte-block.element.js +4 -1
  54. package/dist-cms/packages/block/block-type/components/input-block-type/input-block-type.element.js +3 -4
  55. package/dist-cms/packages/clipboard/clipboard-entry/picker/clipboard-entry-picker.element.js +1 -1
  56. package/dist-cms/packages/content/content/manager/content-data-manager.js +1 -0
  57. package/dist-cms/packages/content/content/manager/element-data-manager.js +6 -5
  58. package/dist-cms/packages/content/content/types.d.ts +8 -2
  59. package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.d.ts +4 -0
  60. package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.js +34 -10
  61. package/dist-cms/packages/content/content/workspace/views/edit/content-editor.element.d.ts +2 -1
  62. package/dist-cms/packages/content/content/workspace/views/edit/content-editor.element.js +10 -2
  63. package/dist-cms/packages/content/content-type/structure/content-type-container-structure-helper.class.js +1 -1
  64. package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.d.ts +9 -5
  65. package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.js +25 -5
  66. package/dist-cms/packages/content/content-type/workspace/content-type-workspace-context-base.js +1 -0
  67. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-group.element.js +3 -4
  68. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-property.element.js +17 -5
  69. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-tab.element.js +39 -20
  70. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor.element.js +1 -1
  71. package/dist-cms/packages/content/property-type/workspace/views/settings/property-workspace-view-settings.element.js +1 -1
  72. package/dist-cms/packages/core/auth/auth-flow.js +5 -0
  73. package/dist-cms/packages/core/backend-api/client/client.gen.js +39 -11
  74. package/dist-cms/packages/core/backend-api/client/index.d.ts +1 -0
  75. package/dist-cms/packages/core/backend-api/client/index.js +1 -0
  76. package/dist-cms/packages/core/backend-api/client/types.gen.d.ts +1 -1
  77. package/dist-cms/packages/core/backend-api/client/utils.gen.d.ts +6 -11
  78. package/dist-cms/packages/core/backend-api/client/utils.gen.js +27 -23
  79. package/dist-cms/packages/core/backend-api/client.gen.d.ts +3 -3
  80. package/dist-cms/packages/core/backend-api/core/queryKeySerializer.gen.d.ts +18 -0
  81. package/dist-cms/packages/core/backend-api/core/queryKeySerializer.gen.js +99 -0
  82. package/dist-cms/packages/core/backend-api/core/serverSentEvents.gen.d.ts +13 -1
  83. package/dist-cms/packages/core/backend-api/core/serverSentEvents.gen.js +16 -2
  84. package/dist-cms/packages/core/backend-api/core/utils.gen.d.ts +6 -1
  85. package/dist-cms/packages/core/backend-api/core/utils.gen.js +18 -0
  86. package/dist-cms/packages/core/backend-api/sdk.gen.d.ts +12 -6
  87. package/dist-cms/packages/core/backend-api/sdk.gen.js +500 -416
  88. package/dist-cms/packages/core/backend-api/types.gen.d.ts +294 -6
  89. package/dist-cms/packages/core/backend-api/types.gen.js +1 -0
  90. package/dist-cms/packages/core/collection/action/create/manifests.js +1 -1
  91. package/dist-cms/packages/core/components/backoffice-notification-container/backoffice-notification-container.element.d.ts +4 -0
  92. package/dist-cms/packages/core/components/backoffice-notification-container/backoffice-notification-container.element.js +39 -2
  93. package/dist-cms/packages/core/components/body-layout/body-layout.element.js +1 -1
  94. package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.d.ts +1 -1
  95. package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.js +18 -12
  96. package/dist-cms/packages/core/components/index.d.ts +1 -0
  97. package/dist-cms/packages/core/components/index.js +1 -0
  98. package/dist-cms/packages/core/components/input-number-range/input-number-range.element.js +1 -1
  99. package/dist-cms/packages/core/components/input-slider/input-slider.element.d.ts +8 -3
  100. package/dist-cms/packages/core/components/input-slider/input-slider.element.js +95 -9
  101. package/dist-cms/packages/core/components/multiple-color-picker-input/multiple-color-picker-item-input.element.js +28 -5
  102. package/dist-cms/packages/core/components/split-panel/split-panel.element.d.ts +3 -2
  103. package/dist-cms/packages/core/components/split-panel/split-panel.element.js +7 -2
  104. package/dist-cms/packages/core/components/view-loader/view-loader.element.d.ts +5 -0
  105. package/dist-cms/packages/core/components/view-loader/view-loader.element.js +36 -0
  106. package/dist-cms/packages/core/culture/manifests.d.ts +1 -1
  107. package/dist-cms/packages/core/entity-action/common/create/create.action.js +1 -1
  108. package/dist-cms/packages/core/entity-action/common/create/create.action.kind.js +1 -1
  109. package/dist-cms/packages/core/entity-action/global-components/entity-actions-table-column-view/entity-actions-table-column-view.element.js +1 -1
  110. package/dist-cms/packages/core/entity-flag/index.d.ts +1 -0
  111. package/dist-cms/packages/core/entity-flag/index.js +1 -0
  112. package/dist-cms/packages/core/entity-flag/types.d.ts +10 -0
  113. package/dist-cms/packages/core/entity-flag/types.js +1 -0
  114. package/dist-cms/packages/core/entity-sign/components/entity-sign-bundle.element.d.ts +21 -0
  115. package/dist-cms/packages/core/entity-sign/components/entity-sign-bundle.element.js +257 -0
  116. package/dist-cms/packages/core/entity-sign/components/index.d.ts +1 -0
  117. package/dist-cms/packages/core/entity-sign/components/index.js +1 -0
  118. package/dist-cms/packages/core/entity-sign/extensions/entity-sign-api.interface.d.ts +18 -0
  119. package/dist-cms/packages/core/entity-sign/extensions/entity-sign-api.interface.js +1 -0
  120. package/dist-cms/packages/core/entity-sign/extensions/entity-sign-element.interface.d.ts +5 -0
  121. package/dist-cms/packages/core/entity-sign/extensions/entity-sign-element.interface.js +1 -0
  122. package/dist-cms/packages/core/entity-sign/extensions/entity-sign.extension.d.ts +20 -0
  123. package/dist-cms/packages/core/entity-sign/extensions/entity-sign.extension.js +1 -0
  124. package/dist-cms/packages/core/entity-sign/extensions/types.d.ts +3 -0
  125. package/dist-cms/packages/core/entity-sign/extensions/types.js +1 -0
  126. package/dist-cms/packages/core/entity-sign/index.d.ts +2 -0
  127. package/dist-cms/packages/core/entity-sign/index.js +1 -0
  128. package/dist-cms/packages/core/entity-sign/kinds/icon/entity-sign-icon.api.d.ts +10 -0
  129. package/dist-cms/packages/core/entity-sign/kinds/icon/entity-sign-icon.api.js +11 -0
  130. package/dist-cms/packages/core/entity-sign/kinds/icon/entity-sign-icon.element.d.ts +10 -0
  131. package/dist-cms/packages/core/entity-sign/kinds/icon/entity-sign-icon.element.js +41 -0
  132. package/dist-cms/packages/core/entity-sign/kinds/icon/index.d.ts +1 -0
  133. package/dist-cms/packages/core/entity-sign/kinds/icon/index.js +1 -0
  134. package/dist-cms/packages/core/entity-sign/kinds/icon/manifests.d.ts +2 -0
  135. package/dist-cms/packages/core/entity-sign/kinds/icon/manifests.js +14 -0
  136. package/dist-cms/packages/core/entity-sign/kinds/icon/types.d.ts +15 -0
  137. package/dist-cms/packages/core/entity-sign/kinds/icon/types.js +1 -0
  138. package/dist-cms/packages/core/entity-sign/kinds/manifests.d.ts +2 -0
  139. package/dist-cms/packages/core/entity-sign/kinds/manifests.js +2 -0
  140. package/dist-cms/packages/core/entity-sign/kinds/types.d.ts +1 -0
  141. package/dist-cms/packages/core/entity-sign/kinds/types.js +1 -0
  142. package/dist-cms/packages/core/entity-sign/manifests.d.ts +2 -0
  143. package/dist-cms/packages/core/entity-sign/manifests.js +2 -0
  144. package/dist-cms/packages/core/entity-sign/types.d.ts +1 -0
  145. package/dist-cms/packages/core/entity-sign/types.js +1 -0
  146. package/dist-cms/packages/core/entry-point.d.ts +1 -0
  147. package/dist-cms/packages/core/entry-point.js +1 -0
  148. package/dist-cms/packages/core/http-client/index.d.ts +2 -1
  149. package/dist-cms/packages/core/http-client/index.js +12 -1
  150. package/dist-cms/packages/core/icon-registry/icon-dictionary.json +8 -0
  151. package/dist-cms/packages/core/icon-registry/icon-picker-modal/icon-picker-modal.element.d.ts +1 -3
  152. package/dist-cms/packages/core/icon-registry/icon-picker-modal/icon-picker-modal.element.js +44 -26
  153. package/dist-cms/packages/core/icon-registry/icon-picker-modal/icon-picker-modal.token.d.ts +5 -2
  154. package/dist-cms/packages/core/icon-registry/icons/icon-bar-chart.d.ts +1 -1
  155. package/dist-cms/packages/core/icon-registry/icons/icon-bar-chart.js +1 -1
  156. package/dist-cms/packages/core/icon-registry/icons/icon-bars.d.ts +1 -1
  157. package/dist-cms/packages/core/icon-registry/icons/icon-bars.js +1 -1
  158. package/dist-cms/packages/core/icon-registry/icons/icon-blockquote.d.ts +1 -1
  159. package/dist-cms/packages/core/icon-registry/icons/icon-blockquote.js +1 -1
  160. package/dist-cms/packages/core/icon-registry/icons/icon-bug.d.ts +1 -1
  161. package/dist-cms/packages/core/icon-registry/icons/icon-bug.js +1 -1
  162. package/dist-cms/packages/core/icon-registry/icons/icon-bulleted-list.d.ts +1 -1
  163. package/dist-cms/packages/core/icon-registry/icons/icon-bulleted-list.js +1 -1
  164. package/dist-cms/packages/core/icon-registry/icons/icon-equalizer.d.ts +1 -1
  165. package/dist-cms/packages/core/icon-registry/icons/icon-equalizer.js +1 -1
  166. package/dist-cms/packages/core/icon-registry/icons/icon-heading-5.d.ts +1 -1
  167. package/dist-cms/packages/core/icon-registry/icons/icon-heading-5.js +1 -1
  168. package/dist-cms/packages/core/icon-registry/icons/icon-heading-6.d.ts +1 -1
  169. package/dist-cms/packages/core/icon-registry/icons/icon-heading-6.js +1 -1
  170. package/dist-cms/packages/core/icon-registry/icons/icon-heading.d.ts +1 -1
  171. package/dist-cms/packages/core/icon-registry/icons/icon-heading.js +1 -1
  172. package/dist-cms/packages/core/icon-registry/icons/icon-home.d.ts +1 -1
  173. package/dist-cms/packages/core/icon-registry/icons/icon-home.js +1 -1
  174. package/dist-cms/packages/core/icon-registry/icons/icon-indent.d.ts +1 -1
  175. package/dist-cms/packages/core/icon-registry/icons/icon-indent.js +1 -1
  176. package/dist-cms/packages/core/icon-registry/icons/icon-list.d.ts +1 -1
  177. package/dist-cms/packages/core/icon-registry/icons/icon-list.js +1 -1
  178. package/dist-cms/packages/core/icon-registry/icons/icon-ordered-list.d.ts +1 -1
  179. package/dist-cms/packages/core/icon-registry/icons/icon-ordered-list.js +1 -1
  180. package/dist-cms/packages/core/icon-registry/icons/icon-outdent.d.ts +1 -1
  181. package/dist-cms/packages/core/icon-registry/icons/icon-outdent.js +1 -1
  182. package/dist-cms/packages/core/icon-registry/icons/icon-playlist.d.ts +1 -1
  183. package/dist-cms/packages/core/icon-registry/icons/icon-playlist.js +1 -1
  184. package/dist-cms/packages/core/icon-registry/icons/icon-stretch-horizontal.d.ts +2 -0
  185. package/dist-cms/packages/core/icon-registry/icons/icon-stretch-horizontal.js +1 -0
  186. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-center.d.ts +1 -1
  187. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-center.js +1 -1
  188. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-justify.d.ts +1 -1
  189. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-justify.js +1 -1
  190. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-left.d.ts +1 -1
  191. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-left.js +1 -1
  192. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-right.d.ts +1 -1
  193. package/dist-cms/packages/core/icon-registry/icons/icon-text-align-right.js +1 -1
  194. package/dist-cms/packages/core/icon-registry/icons/icon-trending-up-down.d.ts +2 -0
  195. package/dist-cms/packages/core/icon-registry/icons/icon-trending-up-down.js +1 -0
  196. package/dist-cms/packages/core/icon-registry/icons/icon-twitter-x.d.ts +1 -1
  197. package/dist-cms/packages/core/icon-registry/icons/icon-twitter-x.js +1 -1
  198. package/dist-cms/packages/core/icon-registry/icons.d.ts +10 -0
  199. package/dist-cms/packages/core/icon-registry/icons.js +6 -0
  200. package/dist-cms/packages/core/manifests.js +2 -0
  201. package/dist-cms/packages/core/menu/components/menu-item-layout/menu-item-layout.element.js +20 -19
  202. package/dist-cms/packages/core/menu/section-sidebar-menu-with-entity-actions/section-sidebar-menu-with-entity-actions.element.js +3 -2
  203. package/dist-cms/packages/core/openapi-ts.config.d.ts +31 -1
  204. package/dist-cms/packages/core/package.json +4 -4
  205. package/dist-cms/packages/core/property/components/property/property.element.d.ts +1 -1
  206. package/dist-cms/packages/core/property/components/property/property.element.js +6 -1
  207. package/dist-cms/packages/core/property/components/property-layout/property-layout.element.js +2 -1
  208. package/dist-cms/packages/core/property/manifests.d.ts +1 -1
  209. package/dist-cms/packages/core/property/property-value-preset/property-value-preset-builder.controller.d.ts +3 -1
  210. package/dist-cms/packages/core/property/property-value-preset/property-value-preset-builder.controller.js +25 -16
  211. package/dist-cms/packages/core/property/property-value-preset/property-value-preset-variant-builder.controller.js +12 -10
  212. package/dist-cms/packages/core/property/property-value-preset/types.d.ts +1 -0
  213. package/dist-cms/packages/core/property-editor/constants.d.ts +2 -0
  214. package/dist-cms/packages/core/property-editor/constants.js +2 -0
  215. package/dist-cms/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/modal/restore-from-recycle-bin-modal.element.js +1 -1
  216. package/dist-cms/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.js +8 -5
  217. package/dist-cms/packages/core/resources/extractUmbColorVariable.function.js +1 -0
  218. package/dist-cms/packages/core/resources/try-execute/tryXhrRequest.function.js +1 -0
  219. package/dist-cms/packages/core/resources/types.d.ts +1 -0
  220. package/dist-cms/packages/core/router/modal-registration/modal-route-registration.controller.js +8 -4
  221. package/dist-cms/packages/core/section/extensions/section.extension.d.ts +1 -0
  222. package/dist-cms/packages/core/sorter/sorter.controller.d.ts +0 -1
  223. package/dist-cms/packages/core/sorter/sorter.controller.js +0 -1
  224. package/dist-cms/packages/core/temporary-file/manifests.d.ts +1 -1
  225. package/dist-cms/packages/core/themes/manifests.d.ts +1 -1
  226. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.d.ts +10 -0
  227. package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.js +75 -15
  228. package/dist-cms/packages/core/tree/types.d.ts +2 -1
  229. package/dist-cms/packages/core/validation/controllers/validation.controller.js +4 -2
  230. package/dist-cms/packages/core/variant/types.d.ts +2 -0
  231. package/dist-cms/packages/core/vite.config.js +2 -0
  232. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-menu-breadcrumb/workspace-menu-breadcrumb.element.js +5 -1
  233. package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-variant-menu-breadcrumb/workspace-variant-menu-breadcrumb.element.js +5 -2
  234. package/dist-cms/packages/core/workspace/components/workspace-split-view/workspace-split-view-variant-selector.element.js +22 -4
  235. package/dist-cms/packages/core/workspace/components/workspace-split-view/workspace-split-view.element.d.ts +2 -1
  236. package/dist-cms/packages/core/workspace/components/workspace-split-view/workspace-split-view.element.js +5 -0
  237. package/dist-cms/packages/core/workspace/entity-detail/entity-detail-workspace-base.d.ts +6 -0
  238. package/dist-cms/packages/core/workspace/entity-detail/entity-detail-workspace-base.js +12 -2
  239. package/dist-cms/packages/core/workspace/kinds/default/default-workspace.context.d.ts +1 -1
  240. package/dist-cms/packages/core/workspace/workspace.element.d.ts +2 -2
  241. package/dist-cms/packages/core/workspace/workspace.element.js +2 -2
  242. package/dist-cms/packages/data-type/index.d.ts +1 -0
  243. package/dist-cms/packages/data-type/index.js +1 -0
  244. package/dist-cms/packages/data-type/workspace/data-type-workspace.context.js +4 -1
  245. package/dist-cms/packages/data-type/workspace/index.d.ts +1 -0
  246. package/dist-cms/packages/data-type/workspace/index.js +1 -0
  247. package/dist-cms/packages/data-type/workspace/views/details/data-type-details-workspace-property-editor-picker.element.d.ts +22 -0
  248. package/dist-cms/packages/data-type/workspace/views/details/data-type-details-workspace-property-editor-picker.element.js +128 -0
  249. package/dist-cms/packages/data-type/workspace/views/details/data-type-details-workspace-view.element.js +23 -72
  250. package/dist-cms/packages/data-type/workspace/views/index.d.ts +1 -0
  251. package/dist-cms/packages/data-type/workspace/views/index.js +1 -0
  252. package/dist-cms/packages/dictionary/entity-action/manifests.js +1 -1
  253. package/dist-cms/packages/dictionary/workspace/views/workspace-view-dictionary-editor.element.js +5 -8
  254. package/dist-cms/packages/documents/document-blueprints/entity-actions/create/manifests.js +1 -1
  255. package/dist-cms/packages/documents/document-blueprints/repository/detail/document-blueprint-detail.server.data-source.js +3 -0
  256. package/dist-cms/packages/documents/document-blueprints/types.d.ts +2 -2
  257. package/dist-cms/packages/documents/document-types/entity-actions/create/manifests.js +1 -1
  258. package/dist-cms/packages/documents/documents/collection/repository/document-collection.server.data-source.js +2 -0
  259. package/dist-cms/packages/documents/documents/collection/types.d.ts +3 -2
  260. package/dist-cms/packages/documents/documents/constants.d.ts +1 -0
  261. package/dist-cms/packages/documents/documents/entity-actions/create/create.action.d.ts +1 -1
  262. package/dist-cms/packages/documents/documents/entity-actions/create/create.action.js +1 -1
  263. package/dist-cms/packages/documents/documents/entity-actions/create/manifests.js +1 -1
  264. package/dist-cms/packages/documents/documents/entity-sign/constants.d.ts +2 -0
  265. package/dist-cms/packages/documents/documents/entity-sign/constants.js +1 -0
  266. package/dist-cms/packages/documents/documents/entity-sign/has-pending-changes/constants.d.ts +1 -0
  267. package/dist-cms/packages/documents/documents/entity-sign/has-pending-changes/constants.js +1 -0
  268. package/dist-cms/packages/documents/documents/entity-sign/has-pending-changes/manifests.d.ts +1 -0
  269. package/dist-cms/packages/documents/documents/entity-sign/has-pending-changes/manifests.js +12 -0
  270. package/dist-cms/packages/documents/documents/entity-sign/has-schedule/constants.d.ts +1 -0
  271. package/dist-cms/packages/documents/documents/entity-sign/has-schedule/constants.js +1 -0
  272. package/dist-cms/packages/documents/documents/entity-sign/has-schedule/manifests.d.ts +1 -0
  273. package/dist-cms/packages/documents/documents/entity-sign/has-schedule/manifests.js +18 -0
  274. package/dist-cms/packages/documents/documents/entity-sign/is-protected/constants.d.ts +1 -0
  275. package/dist-cms/packages/documents/documents/entity-sign/is-protected/constants.js +1 -0
  276. package/dist-cms/packages/documents/documents/entity-sign/is-protected/manifest.d.ts +1 -0
  277. package/dist-cms/packages/documents/documents/entity-sign/is-protected/manifest.js +15 -0
  278. package/dist-cms/packages/documents/documents/entity-sign/manifests.d.ts +1 -0
  279. package/dist-cms/packages/documents/documents/entity-sign/manifests.js +8 -0
  280. package/dist-cms/packages/documents/documents/item/document-item-data-resolver.d.ts +9 -6
  281. package/dist-cms/packages/documents/documents/item/document-item-data-resolver.js +43 -21
  282. package/dist-cms/packages/documents/documents/item/repository/document-item.server.cache-invalidation.manager.js +1 -0
  283. package/dist-cms/packages/documents/documents/item/repository/document-item.server.data-source.js +2 -0
  284. package/dist-cms/packages/documents/documents/item/repository/types.d.ts +3 -1
  285. package/dist-cms/packages/documents/documents/manifests.js +2 -0
  286. package/dist-cms/packages/documents/documents/publishing/publish/entity-bulk-action/publish.bulk-action.js +1 -0
  287. package/dist-cms/packages/documents/documents/publishing/repository/document-publishing.server.data-source.js +2 -0
  288. package/dist-cms/packages/documents/documents/publishing/unpublish/entity-bulk-action/unpublish.bulk-action.js +1 -0
  289. package/dist-cms/packages/documents/documents/recycle-bin/tree/data/document-recycle-bin-tree.server.data-source.js +3 -0
  290. package/dist-cms/packages/documents/documents/reference/repository/document-reference-response.management-api.mapping.js +1 -0
  291. package/dist-cms/packages/documents/documents/repository/detail/document-detail.server.data-source.js +3 -0
  292. package/dist-cms/packages/documents/documents/search/document-search.server.data-source.js +2 -0
  293. package/dist-cms/packages/documents/documents/tree/document-tree.server.data-source.js +2 -0
  294. package/dist-cms/packages/documents/documents/tree/tree-item/document-tree-item.context.d.ts +1 -0
  295. package/dist-cms/packages/documents/documents/tree/tree-item/document-tree-item.context.js +1 -0
  296. package/dist-cms/packages/documents/documents/tree/tree-item/document-tree-item.element.d.ts +7 -3
  297. package/dist-cms/packages/documents/documents/tree/tree-item/document-tree-item.element.js +20 -90
  298. package/dist-cms/packages/documents/documents/tree/types.d.ts +3 -1
  299. package/dist-cms/packages/documents/documents/user-permissions/document/manifests.js +1 -1
  300. package/dist-cms/packages/documents/documents/user-permissions/document/repository/document-permission.server.data.js +1 -0
  301. package/dist-cms/packages/documents/documents/utils.js +1 -0
  302. package/dist-cms/packages/documents/documents/workspace/constants.js +1 -0
  303. package/dist-cms/packages/documents/documents/workspace/document-workspace-editor.element.d.ts +2 -1
  304. package/dist-cms/packages/documents/documents/workspace/document-workspace-editor.element.js +10 -3
  305. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view-variant-selector.element.d.ts +1 -3
  306. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view-variant-selector.element.js +2 -2
  307. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view.element.d.ts +1 -0
  308. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view.element.js +13 -6
  309. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.js +9 -1
  310. package/dist-cms/packages/extension-types/index.d.ts +2 -0
  311. package/dist-cms/packages/language/entity-actions/manifests.js +1 -1
  312. package/dist-cms/packages/log-viewer/workspace/logviewer-workspace.context.d.ts +1 -0
  313. package/dist-cms/packages/log-viewer/workspace/logviewer-workspace.context.js +8 -1
  314. package/dist-cms/packages/management-api/detail/cache-invalidation.manager.d.ts +1 -0
  315. package/dist-cms/packages/management-api/detail/cache-invalidation.manager.js +3 -1
  316. package/dist-cms/packages/management-api/detail/detail-data.request-manager.js +1 -1
  317. package/dist-cms/packages/management-api/item/cache-invalidation.manager.d.ts +1 -0
  318. package/dist-cms/packages/management-api/item/cache-invalidation.manager.js +3 -1
  319. package/dist-cms/packages/media/media/audit-log/info-app/media-history-workspace-info-app.element.js +1 -0
  320. package/dist-cms/packages/media/media/collection/media-collection.context.js +1 -0
  321. package/dist-cms/packages/media/media/collection/repository/media-collection.server.data-source.js +1 -0
  322. package/dist-cms/packages/media/media/collection/types.d.ts +2 -1
  323. package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-svg.element.js +1 -0
  324. package/dist-cms/packages/media/media/dropzone/media-dropzone.manager.js +1 -1
  325. package/dist-cms/packages/media/media/entity-actions/create/create.action.d.ts +1 -1
  326. package/dist-cms/packages/media/media/entity-actions/create/create.action.js +1 -1
  327. package/dist-cms/packages/media/media/entity-actions/create/manifests.js +1 -1
  328. package/dist-cms/packages/media/media/modals/media-picker/components/media-picker-folder-path.element.js +1 -0
  329. package/dist-cms/packages/media/media/paths.js +1 -1
  330. package/dist-cms/packages/media/media/property-editors/upload-field/Umbraco.UploadField.js +1 -1
  331. package/dist-cms/packages/media/media/repository/detail/media-detail.server.data-source.js +5 -0
  332. package/dist-cms/packages/media/media/repository/item/media-item.server.cache-invalidation.manager.js +1 -0
  333. package/dist-cms/packages/media/media/tree/media-tree.server.data-source.js +3 -0
  334. package/dist-cms/packages/media/media/workspace/constants.js +1 -0
  335. package/dist-cms/packages/members/member/collection/repository/member-collection.server.data-source.js +1 -0
  336. package/dist-cms/packages/members/member/entity-actions/create/manifests.js +1 -1
  337. package/dist-cms/packages/members/member/repository/detail/member-detail.server.data-source.js +5 -0
  338. package/dist-cms/packages/members/member/workspace/member/constants.js +1 -0
  339. package/dist-cms/packages/members/member-group/entity-actions/manifests.js +1 -1
  340. package/dist-cms/packages/property-editors/collection/manifests.js +1 -0
  341. package/dist-cms/packages/property-editors/icon-picker/manifests.js +10 -0
  342. package/dist-cms/packages/property-editors/icon-picker/property-editor-ui-icon-picker.element.d.ts +7 -3
  343. package/dist-cms/packages/property-editors/icon-picker/property-editor-ui-icon-picker.element.js +45 -14
  344. package/dist-cms/packages/property-editors/missing/manifests.js +15 -2
  345. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing-base.element.d.ts +18 -0
  346. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing-base.element.js +130 -0
  347. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing-ui.element.d.ts +13 -0
  348. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing-ui.element.js +24 -0
  349. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing.element.d.ts +2 -13
  350. package/dist-cms/packages/property-editors/missing/property-editor-ui-missing.element.js +6 -112
  351. package/dist-cms/packages/property-editors/slider/property-editor-ui-slider.element.d.ts +2 -2
  352. package/dist-cms/packages/property-editors/slider/property-editor-ui-slider.element.js +29 -11
  353. package/dist-cms/packages/property-editors/slider/slider-property-value-preset.d.ts +1 -4
  354. package/dist-cms/packages/property-editors/slider/types.d.ts +3 -2
  355. package/dist-cms/packages/templating/partial-views/entity-actions/create/manifests.js +1 -1
  356. package/dist-cms/packages/templating/scripts/entity-actions/create/manifests.js +1 -1
  357. package/dist-cms/packages/templating/templates/entity-actions/manifests.js +1 -1
  358. package/dist-cms/packages/templating/templates/workspace/template-workspace-editor.element.js +2 -2
  359. package/dist-cms/packages/templating/templates/workspace/template-workspace.context.d.ts +1 -1
  360. package/dist-cms/packages/templating/templates/workspace/template-workspace.context.js +14 -6
  361. package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar.element.js +3 -3
  362. package/dist-cms/packages/tiptap/extensions/horizontal-rule/manifests.js +1 -0
  363. package/dist-cms/packages/tiptap/extensions/style-select/manifests.js +1 -0
  364. package/dist-cms/packages/tiptap/property-editors/extensions-configuration/property-editor-ui-tiptap-extensions-configuration.element.js +2 -2
  365. package/dist-cms/packages/tiptap/property-editors/statusbar-configuration/property-editor-ui-tiptap-statusbar-configuration.element.js +37 -25
  366. package/dist-cms/packages/tiptap/property-editors/statusbar-configuration/tiptap-statusbar-configuration.context.d.ts +2 -2
  367. package/dist-cms/packages/tiptap/property-editors/statusbar-configuration/tiptap-statusbar-configuration.context.js +2 -1
  368. package/dist-cms/packages/tiptap/property-editors/toolbar-configuration/property-editor-ui-tiptap-toolbar-configuration.element.js +1 -3
  369. package/dist-cms/packages/tiptap/property-editors/toolbar-configuration/tiptap-toolbar-configuration.context.d.ts +2 -2
  370. package/dist-cms/packages/tiptap/property-editors/toolbar-configuration/tiptap-toolbar-configuration.context.js +1 -1
  371. package/dist-cms/packages/tiptap/property-editors/toolbar-configuration/tiptap-toolbar-group-configuration.element.js +22 -19
  372. package/dist-cms/packages/tiptap/property-editors/types.d.ts +4 -4
  373. package/dist-cms/packages/ufm/contexts/ufm.context.d.ts +1 -1
  374. package/dist-cms/packages/ufm/filters/manifests.js +24 -0
  375. package/dist-cms/packages/ufm/filters/strip-html.filter.d.ts +1 -0
  376. package/dist-cms/packages/ufm/filters/strip-html.filter.js +1 -0
  377. package/dist-cms/packages/ufm/filters/truncate.filter.d.ts +1 -0
  378. package/dist-cms/packages/ufm/filters/truncate.filter.js +8 -1
  379. package/dist-cms/packages/umbraco-news/umbraco-news-dashboard.element.js +1 -2
  380. package/dist-cms/packages/user/user-permission/constants.d.ts +1 -0
  381. package/dist-cms/packages/user/user-permission/constants.js +1 -0
  382. package/dist-cms/packages/user/user-permission/fallback-permission-condition/constants.d.ts +1 -0
  383. package/dist-cms/packages/user/user-permission/fallback-permission-condition/constants.js +1 -0
  384. package/dist-cms/packages/user/user-permission/fallback-permission-condition/fallback-user-permission.condition.d.ts +9 -0
  385. package/dist-cms/packages/user/user-permission/fallback-permission-condition/fallback-user-permission.condition.js +34 -0
  386. package/dist-cms/packages/user/user-permission/fallback-permission-condition/manifests.d.ts +1 -0
  387. package/dist-cms/packages/user/user-permission/fallback-permission-condition/manifests.js +9 -0
  388. package/dist-cms/packages/user/user-permission/fallback-permission-condition/types.d.ts +20 -0
  389. package/dist-cms/packages/user/user-permission/fallback-permission-condition/types.js +1 -0
  390. package/dist-cms/packages/user/user-permission/index.d.ts +1 -0
  391. package/dist-cms/packages/user/user-permission/index.js +1 -0
  392. package/dist-cms/packages/user/user-permission/manifests.js +2 -1
  393. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  394. package/dist-cms/umbraco-package-schema.json +3 -0
  395. package/dist-cms/umbraco-package.json +1 -1
  396. package/dist-cms/vscode-html-custom-data.json +133 -30
  397. package/examples/user-permission/constants.ts +4 -0
  398. package/examples/user-permission/entity-action/action-1.ts +9 -0
  399. package/examples/user-permission/entity-action/action-2.ts +9 -0
  400. package/examples/user-permission/entity-action/manifests.ts +47 -0
  401. package/examples/user-permission/entity-user-permission/manifests.ts +30 -0
  402. package/examples/user-permission/index.ts +9 -0
  403. package/examples/user-permission/localization/en.ts +6 -0
  404. package/examples/user-permission/localization/manifests.ts +12 -0
  405. package/examples/validation-context/validation-context-dashboard.ts +9 -8
  406. package/package.json +13 -11
@@ -6,22 +6,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { UMB_CONTENT_TYPE_WORKSPACE_CONTEXT } from '../../content-type-workspace.context-token.js';
8
8
  import { UmbContentTypeContainerStructureHelper } from '../../../structure/index.js';
9
- import { UMB_CONTENT_TYPE_DESIGN_EDITOR_CONTEXT } from './content-type-design-editor.context-token.js';
10
9
  import { css, customElement, html, nothing, property, repeat, state } from '../../../../../../external/lit/index.js';
11
10
  import { UmbLitElement } from '../../../../../core/lit-element/index.js';
11
+ import { UMB_CONTENT_TYPE_DESIGN_EDITOR_CONTEXT } from './content-type-design-editor.context-token.js';
12
12
  import { UmbModalRouteRegistrationController } from '../../../../../core/router/index.js';
13
13
  import { UmbSorterController } from '../../../../../core/sorter/index.js';
14
14
  import { UMB_WORKSPACE_MODAL } from '../../../../../core/workspace/index.js';
15
15
  import './content-type-design-editor-properties.element.js';
16
16
  import './content-type-design-editor-group.element.js';
17
17
  const SORTER_CONFIG = {
18
- getUniqueOfElement: (element) => element.group?.key,
19
- getUniqueOfModel: (modelEntry) => modelEntry.key,
18
+ getUniqueOfElement: (element) => element.group?.ownerId ?? element.group?.ids[0],
19
+ getUniqueOfModel: (modelEntry) => modelEntry.ownerId ?? modelEntry.ids[0],
20
20
  // TODO: Make specific to the current owner document. [NL]
21
21
  identifier: 'content-type-container-sorter',
22
22
  itemSelector: 'umb-content-type-design-editor-group',
23
23
  handleSelector: '.drag-handle',
24
- disabledItemSelector: '[inherited]', // Inherited attribute is set by the umb-content-type-design-editor-group.
24
+ disabledItemSelector: ':not([has-owner-container])', // Inherited attribute is set by the umb-content-type-design-editor-group.
25
25
  containerSelector: '.container-list',
26
26
  };
27
27
  let UmbContentTypeDesignEditorTabElement = class UmbContentTypeDesignEditorTabElement extends UmbLitElement {
@@ -40,6 +40,7 @@ let UmbContentTypeDesignEditorTabElement = class UmbContentTypeDesignEditorTabEl
40
40
  this.requestUpdate('containerId', oldValue);
41
41
  }
42
42
  #groupStructureHelper;
43
+ #contentTypeWorkspaceContext;
43
44
  constructor() {
44
45
  super();
45
46
  this.#sorter = new UmbSorterController(this, {
@@ -47,18 +48,30 @@ let UmbContentTypeDesignEditorTabElement = class UmbContentTypeDesignEditorTabEl
47
48
  onChange: ({ model }) => {
48
49
  this._groups = model;
49
50
  },
51
+ onContainerChange: ({ item }) => {
52
+ if (this.#containerId === undefined) {
53
+ throw new Error('ContainerId is not set');
54
+ }
55
+ if (item.ownerId === undefined) {
56
+ // This may be possible later, but for now this is not possible. [NL]
57
+ throw new Error('OwnerId is not set for the given container, we cannot move containers that are not owned by the current Document.');
58
+ }
59
+ this.#groupStructureHelper.partialUpdateContainer(item.ownerId, {
60
+ parent: this.#containerId ? { id: this.#containerId } : null,
61
+ });
62
+ },
50
63
  onEnd: ({ item }) => {
51
- /*if (this._inherited === undefined) {
52
- throw new Error('OwnerTabId is not set, we have not made a local duplicated of this container.');
53
- return;
54
- }*/
64
+ if (item.ownerId === undefined) {
65
+ // This may be possible later, but for now this is not possible. [NL]
66
+ throw new Error('OwnerId is not set for the given container, we cannot move containers that are not owned by the current Document.');
67
+ }
55
68
  /**
56
69
  * Explanation: If the item is the first in list, we compare it to the item behind it to set a sortOrder.
57
70
  * If it's not the first in list, we will compare to the item in before it, and check the following item to see if it caused overlapping sortOrder, then update
58
71
  * the overlap if true, which may cause another overlap, so we loop through them till no more overlaps...
59
72
  */
60
73
  const model = this._groups;
61
- const newIndex = model.findIndex((entry) => entry.key === item.key);
74
+ const newIndex = model.findIndex((entry) => entry.ownerId === item.ownerId);
62
75
  // Doesn't exist in model
63
76
  if (newIndex === -1)
64
77
  return;
@@ -88,26 +101,27 @@ let UmbContentTypeDesignEditorTabElement = class UmbContentTypeDesignEditorTabEl
88
101
  this.#groupStructureHelper.partialUpdateContainer(entry.ownerId, {
89
102
  sortOrder: ++prevSortOrder,
90
103
  });
91
- i++;
92
104
  }
105
+ i++;
93
106
  }
94
107
  },
95
108
  onRequestDrop: async ({ unique }) => {
96
- const context = await this.getContext(UMB_CONTENT_TYPE_WORKSPACE_CONTEXT);
109
+ const context = this.#contentTypeWorkspaceContext;
97
110
  if (!context) {
98
111
  throw new Error('Could not get Workspace Context');
99
112
  }
100
- return context.structure.getMergedContainerById(unique);
113
+ const result = context.structure.getMergedContainerById(unique);
114
+ return result;
101
115
  },
102
116
  requestExternalRemove: async ({ item }) => {
103
- const context = await this.getContext(UMB_CONTENT_TYPE_WORKSPACE_CONTEXT);
117
+ const context = this.#contentTypeWorkspaceContext;
104
118
  if (!context) {
105
119
  throw new Error('Could not get Workspace Context');
106
120
  }
107
121
  return await context.structure.removeContainer(null, item.ownerId, { preventRemovingProperties: true }).then(() => true, () => false);
108
122
  },
109
123
  requestExternalInsert: async ({ item }) => {
110
- const context = await this.getContext(UMB_CONTENT_TYPE_WORKSPACE_CONTEXT);
124
+ const context = this.#contentTypeWorkspaceContext;
111
125
  if (!context) {
112
126
  throw new Error('Could not get Workspace Context');
113
127
  }
@@ -136,6 +150,7 @@ let UmbContentTypeDesignEditorTabElement = class UmbContentTypeDesignEditorTabEl
136
150
  this.#groupStructureHelper.addContainer(this.#containerId, sortOrder);
137
151
  };
138
152
  this.consumeContext(UMB_CONTENT_TYPE_WORKSPACE_CONTEXT, (context) => {
153
+ this.#contentTypeWorkspaceContext = context;
139
154
  this.#groupStructureHelper.setStructureManager(context?.structure);
140
155
  const entityType = context?.getEntityType();
141
156
  this.#workspaceModal?.destroy();
@@ -151,12 +166,6 @@ let UmbContentTypeDesignEditorTabElement = class UmbContentTypeDesignEditorTabEl
151
166
  this.consumeContext(UMB_CONTENT_TYPE_DESIGN_EDITOR_CONTEXT, (context) => {
152
167
  this.observe(context?.isSorting, (isSorting) => {
153
168
  this._sortModeActive = isSorting;
154
- if (isSorting) {
155
- this.#sorter.enable();
156
- }
157
- else {
158
- this.#sorter.disable();
159
- }
160
169
  }, '_observeIsSorting');
161
170
  });
162
171
  this.observe(this.#groupStructureHelper.childContainers, (groups) => {
@@ -230,10 +239,20 @@ let UmbContentTypeDesignEditorTabElement = class UmbContentTypeDesignEditorTabEl
230
239
  align-content: start;
231
240
  }
232
241
 
242
+ /* Ensure the container-list has some height when its empty so groups can be dropped into it.*/
243
+ .container-list {
244
+ margin-top: calc(var(--uui-size-layout-1) * -1);
245
+ padding-top: var(--uui-size-layout-1);
246
+ }
247
+
233
248
  .container-list #convert-to-tab {
234
249
  margin-bottom: var(--uui-size-layout-1);
235
250
  display: flex;
236
251
  }
252
+
253
+ .container-list[sort-mode-active] {
254
+ min-height: 100px;
255
+ }
237
256
  `,
238
257
  ]; }
239
258
  };
@@ -636,7 +636,7 @@ let UmbContentTypeDesignEditorElement = class UmbContentTypeDesignEditorElement
636
636
  transition: opacity 100ms;
637
637
  }
638
638
 
639
- uui-tab:not(:hover, :focus) .trash {
639
+ uui-tab:not(:hover, :focus, :focus-within) .trash {
640
640
  opacity: 0;
641
641
  transition: opacity 100ms;
642
642
  }
@@ -67,7 +67,7 @@ let UmbPropertyTypeWorkspaceViewSettingsElement = class UmbPropertyTypeWorkspace
67
67
  }
68
68
  #onAliasChange() {
69
69
  // TODO: Why can I not get the correct value via event? Is it an issue in uui library too?
70
- const alias = generateAlias(this._aliasInput.value.toString());
70
+ const alias = this._aliasInput.value.toString();
71
71
  this.updateValue({ alias });
72
72
  }
73
73
  #onDescriptionChange(event) {
@@ -198,6 +198,9 @@ export class UmbAuthFlow {
198
198
  await this.#storageBackend.removeItem(UMB_STORAGE_TOKEN_RESPONSE_NAME);
199
199
  // clear the internal state
200
200
  this.#tokenResponse.setValue(undefined);
201
+ // Also cleanup any OAuth/PKCE artifacts that may still be in localStorage
202
+ // This is a defense-in-depth measure during logout
203
+ await this.#authorizationHandler.cleanupStaleAuthorizationData();
201
204
  }
202
205
  /**
203
206
  * This method will sign the user out of the application.
@@ -291,6 +294,7 @@ export class UmbAuthFlow {
291
294
  const token = await this.performWithFreshTokens();
292
295
  const request = new Request(this.#unlink_endpoint, {
293
296
  method: 'POST',
297
+ credentials: 'include',
294
298
  headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` },
295
299
  body: JSON.stringify({ loginProvider, providerKey }),
296
300
  });
@@ -367,6 +371,7 @@ export class UmbAuthFlow {
367
371
  async #makeLinkTokenRequest(provider) {
368
372
  const token = await this.performWithFreshTokens();
369
373
  const request = await fetch(`${this.#link_key_endpoint}?provider=${provider}`, {
374
+ credentials: 'include',
370
375
  headers: {
371
376
  Authorization: `Bearer ${token}`,
372
377
  'Content-Type': 'application/json',
@@ -1,5 +1,6 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
2
  import { createSseClient } from '../core/serverSentEvents.gen.js';
3
+ import { getValidRequestBody } from '../core/utils.gen.js';
3
4
  import { buildUrl, createConfig, createInterceptors, getParseAs, mergeConfigs, mergeHeaders, setAuthParams, } from './utils.gen.js';
4
5
  export const createClient = (config = {}) => {
5
6
  let _config = mergeConfigs(createConfig(), config);
@@ -26,11 +27,11 @@ export const createClient = (config = {}) => {
26
27
  if (opts.requestValidator) {
27
28
  await opts.requestValidator(opts);
28
29
  }
29
- if (opts.body && opts.bodySerializer) {
30
+ if (opts.body !== undefined && opts.bodySerializer) {
30
31
  opts.serializedBody = opts.bodySerializer(opts.body);
31
32
  }
32
33
  // remove Content-Type header if body is empty to avoid sending invalid requests
33
- if (opts.serializedBody === undefined || opts.serializedBody === '') {
34
+ if (opts.body === undefined || opts.serializedBody === '') {
34
35
  opts.headers.delete('Content-Type');
35
36
  }
36
37
  const url = buildUrl(opts);
@@ -42,10 +43,10 @@ export const createClient = (config = {}) => {
42
43
  const requestInit = {
43
44
  redirect: 'follow',
44
45
  ...opts,
45
- body: opts.serializedBody,
46
+ body: getValidRequestBody(opts),
46
47
  };
47
48
  let request = new Request(url, requestInit);
48
- for (const fn of interceptors.request._fns) {
49
+ for (const fn of interceptors.request.fns) {
49
50
  if (fn) {
50
51
  request = await fn(request, opts);
51
52
  }
@@ -54,7 +55,7 @@ export const createClient = (config = {}) => {
54
55
  // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation
55
56
  const _fetch = opts.fetch;
56
57
  let response = await _fetch(request);
57
- for (const fn of interceptors.response._fns) {
58
+ for (const fn of interceptors.response.fns) {
58
59
  if (fn) {
59
60
  response = await fn(response, request, opts);
60
61
  }
@@ -64,18 +65,36 @@ export const createClient = (config = {}) => {
64
65
  response,
65
66
  };
66
67
  if (response.ok) {
68
+ const parseAs = (opts.parseAs === 'auto'
69
+ ? getParseAs(response.headers.get('Content-Type'))
70
+ : opts.parseAs) ?? 'json';
67
71
  if (response.status === 204 ||
68
72
  response.headers.get('Content-Length') === '0') {
73
+ let emptyData;
74
+ switch (parseAs) {
75
+ case 'arrayBuffer':
76
+ case 'blob':
77
+ case 'text':
78
+ emptyData = await response[parseAs]();
79
+ break;
80
+ case 'formData':
81
+ emptyData = new FormData();
82
+ break;
83
+ case 'stream':
84
+ emptyData = response.body;
85
+ break;
86
+ case 'json':
87
+ default:
88
+ emptyData = {};
89
+ break;
90
+ }
69
91
  return opts.responseStyle === 'data'
70
- ? {}
92
+ ? emptyData
71
93
  : {
72
- data: {},
94
+ data: emptyData,
73
95
  ...result,
74
96
  };
75
97
  }
76
- const parseAs = (opts.parseAs === 'auto'
77
- ? getParseAs(response.headers.get('Content-Type'))
78
- : opts.parseAs) ?? 'json';
79
98
  let data;
80
99
  switch (parseAs) {
81
100
  case 'arrayBuffer':
@@ -118,7 +137,7 @@ export const createClient = (config = {}) => {
118
137
  }
119
138
  const error = jsonError ?? textError;
120
139
  let finalError = error;
121
- for (const fn of interceptors.error._fns) {
140
+ for (const fn of interceptors.error.fns) {
122
141
  if (fn) {
123
142
  finalError = (await fn(error, response, request, opts));
124
143
  }
@@ -143,6 +162,15 @@ export const createClient = (config = {}) => {
143
162
  body: opts.body,
144
163
  headers: opts.headers,
145
164
  method,
165
+ onRequest: async (url, init) => {
166
+ let request = new Request(url, init);
167
+ for (const fn of interceptors.request.fns) {
168
+ if (fn) {
169
+ request = await fn(request, opts);
170
+ }
171
+ }
172
+ return request;
173
+ },
146
174
  url,
147
175
  });
148
176
  };
@@ -2,6 +2,7 @@ export type { Auth } from '../core/auth.gen.js';
2
2
  export type { QuerySerializerOptions } from '../core/bodySerializer.gen.js';
3
3
  export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer, } from '../core/bodySerializer.gen.js';
4
4
  export { buildClientParams } from '../core/params.gen.js';
5
+ export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen.js';
5
6
  export { createClient } from './client.gen.js';
6
7
  export type { Client, ClientOptions, Config, CreateClientConfig, Options, OptionsLegacyParser, RequestOptions, RequestResult, ResolvedRequestOptions, ResponseStyle, TDataShape, } from './types.gen.js';
7
8
  export { createConfig, mergeHeaders } from './utils.gen.js';
@@ -1,5 +1,6 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
2
  export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer, } from '../core/bodySerializer.gen.js';
3
3
  export { buildClientParams } from '../core/params.gen.js';
4
+ export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen.js';
4
5
  export { createClient } from './client.gen.js';
5
6
  export { createConfig, mergeHeaders } from './utils.gen.js';
@@ -14,7 +14,7 @@ export interface Config<T extends ClientOptions = ClientOptions> extends Omit<Re
14
14
  *
15
15
  * @default globalThis.fetch
16
16
  */
17
- fetch?: (request: Request) => ReturnType<typeof fetch>;
17
+ fetch?: typeof fetch;
18
18
  /**
19
19
  * Please don't use the Fetch client for Next.js applications. The `next`
20
20
  * options won't have any effect.
@@ -15,24 +15,19 @@ type ErrInterceptor<Err, Res, Req, Options> = (error: Err, response: Res, reques
15
15
  type ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;
16
16
  type ResInterceptor<Res, Req, Options> = (response: Res, request: Req, options: Options) => Res | Promise<Res>;
17
17
  declare class Interceptors<Interceptor> {
18
- _fns: (Interceptor | null)[];
19
- constructor();
18
+ fns: Array<Interceptor | null>;
20
19
  clear(): void;
21
- getInterceptorIndex(id: number | Interceptor): number;
22
- exists(id: number | Interceptor): boolean;
23
20
  eject(id: number | Interceptor): void;
24
- update(id: number | Interceptor, fn: Interceptor): number | false | Interceptor;
21
+ exists(id: number | Interceptor): boolean;
22
+ getInterceptorIndex(id: number | Interceptor): number;
23
+ update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false;
25
24
  use(fn: Interceptor): number;
26
25
  }
27
26
  export interface Middleware<Req, Res, Err, Options> {
28
- error: Pick<Interceptors<ErrInterceptor<Err, Res, Req, Options>>, 'eject' | 'use'>;
29
- request: Pick<Interceptors<ReqInterceptor<Req, Options>>, 'eject' | 'use'>;
30
- response: Pick<Interceptors<ResInterceptor<Res, Req, Options>>, 'eject' | 'use'>;
31
- }
32
- export declare const createInterceptors: <Req, Res, Err, Options>() => {
33
27
  error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;
34
28
  request: Interceptors<ReqInterceptor<Req, Options>>;
35
29
  response: Interceptors<ResInterceptor<Res, Req, Options>>;
36
- };
30
+ }
31
+ export declare const createInterceptors: <Req, Res, Err, Options>() => Middleware<Req, Res, Err, Options>;
37
32
  export declare const createConfig: <T extends ClientOptions = ClientOptions>(override?: Config<Omit<ClientOptions, keyof T> & T>) => Config<Omit<ClientOptions, keyof T> & T>;
38
33
  export {};
@@ -134,13 +134,22 @@ export const mergeConfigs = (a, b) => {
134
134
  config.headers = mergeHeaders(a.headers, b.headers);
135
135
  return config;
136
136
  };
137
+ const headersEntries = (headers) => {
138
+ const entries = [];
139
+ headers.forEach((value, key) => {
140
+ entries.push([key, value]);
141
+ });
142
+ return entries;
143
+ };
137
144
  export const mergeHeaders = (...headers) => {
138
145
  const mergedHeaders = new Headers();
139
146
  for (const header of headers) {
140
- if (!header || typeof header !== 'object') {
147
+ if (!header) {
141
148
  continue;
142
149
  }
143
- const iterator = header instanceof Headers ? header.entries() : Object.entries(header);
150
+ const iterator = header instanceof Headers
151
+ ? headersEntries(header)
152
+ : Object.entries(header);
144
153
  for (const [key, value] of iterator) {
145
154
  if (value === null) {
146
155
  mergedHeaders.delete(key);
@@ -161,45 +170,40 @@ export const mergeHeaders = (...headers) => {
161
170
  };
162
171
  class Interceptors {
163
172
  constructor() {
164
- this._fns = [];
173
+ this.fns = [];
165
174
  }
166
175
  clear() {
167
- this._fns = [];
176
+ this.fns = [];
168
177
  }
169
- getInterceptorIndex(id) {
170
- if (typeof id === 'number') {
171
- return this._fns[id] ? id : -1;
172
- }
173
- else {
174
- return this._fns.indexOf(id);
178
+ eject(id) {
179
+ const index = this.getInterceptorIndex(id);
180
+ if (this.fns[index]) {
181
+ this.fns[index] = null;
175
182
  }
176
183
  }
177
184
  exists(id) {
178
185
  const index = this.getInterceptorIndex(id);
179
- return !!this._fns[index];
186
+ return Boolean(this.fns[index]);
180
187
  }
181
- eject(id) {
182
- const index = this.getInterceptorIndex(id);
183
- if (this._fns[index]) {
184
- this._fns[index] = null;
188
+ getInterceptorIndex(id) {
189
+ if (typeof id === 'number') {
190
+ return this.fns[id] ? id : -1;
185
191
  }
192
+ return this.fns.indexOf(id);
186
193
  }
187
194
  update(id, fn) {
188
195
  const index = this.getInterceptorIndex(id);
189
- if (this._fns[index]) {
190
- this._fns[index] = fn;
196
+ if (this.fns[index]) {
197
+ this.fns[index] = fn;
191
198
  return id;
192
199
  }
193
- else {
194
- return false;
195
- }
200
+ return false;
196
201
  }
197
202
  use(fn) {
198
- this._fns = [...this._fns, fn];
199
- return this._fns.length - 1;
203
+ this.fns.push(fn);
204
+ return this.fns.length - 1;
200
205
  }
201
206
  }
202
- // do not add `Middleware` as return type so we can use _fns internally
203
207
  export const createInterceptors = () => ({
204
208
  error: new Interceptors(),
205
209
  request: new Interceptors(),
@@ -1,5 +1,5 @@
1
- import type { ClientOptions } from './types.gen.js';
2
- import { type Config, type ClientOptions as DefaultClientOptions } from './client/index.js';
1
+ import { type ClientOptions, type Config } from './client/index.js';
2
+ import type { ClientOptions as ClientOptions2 } from './types.gen.js';
3
3
  /**
4
4
  * The `createClientConfig()` function will be called on client initialization
5
5
  * and the returned object will become the client's initial configuration.
@@ -8,5 +8,5 @@ import { type Config, type ClientOptions as DefaultClientOptions } from './clien
8
8
  * `setConfig()`. This is useful for example if you're using Next.js
9
9
  * to ensure your client always has the correct values.
10
10
  */
11
- export type CreateClientConfig<T extends DefaultClientOptions = ClientOptions> = (override?: Config<DefaultClientOptions & T>) => Config<Required<DefaultClientOptions> & T>;
11
+ export type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;
12
12
  export declare const client: import("./client/index.js").Client;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * JSON-friendly union that mirrors what Pinia Colada can hash.
3
+ */
4
+ export type JsonValue = null | string | number | boolean | JsonValue[] | {
5
+ [key: string]: JsonValue;
6
+ };
7
+ /**
8
+ * Replacer that converts non-JSON values (bigint, Date, etc.) to safe substitutes.
9
+ */
10
+ export declare const queryKeyJsonReplacer: (_key: string, value: unknown) => {} | null | undefined;
11
+ /**
12
+ * Safely stringifies a value and parses it back into a JsonValue.
13
+ */
14
+ export declare const stringifyToJsonValue: (input: unknown) => JsonValue | undefined;
15
+ /**
16
+ * Normalizes any accepted value into a JSON-friendly shape for query keys.
17
+ */
18
+ export declare const serializeQueryKeyValue: (value: unknown) => JsonValue | undefined;
@@ -0,0 +1,99 @@
1
+ // This file is auto-generated by @hey-api/openapi-ts
2
+ /**
3
+ * Replacer that converts non-JSON values (bigint, Date, etc.) to safe substitutes.
4
+ */
5
+ export const queryKeyJsonReplacer = (_key, value) => {
6
+ if (value === undefined ||
7
+ typeof value === 'function' ||
8
+ typeof value === 'symbol') {
9
+ return undefined;
10
+ }
11
+ if (typeof value === 'bigint') {
12
+ return value.toString();
13
+ }
14
+ if (value instanceof Date) {
15
+ return value.toISOString();
16
+ }
17
+ return value;
18
+ };
19
+ /**
20
+ * Safely stringifies a value and parses it back into a JsonValue.
21
+ */
22
+ export const stringifyToJsonValue = (input) => {
23
+ try {
24
+ const json = JSON.stringify(input, queryKeyJsonReplacer);
25
+ if (json === undefined) {
26
+ return undefined;
27
+ }
28
+ return JSON.parse(json);
29
+ }
30
+ catch {
31
+ return undefined;
32
+ }
33
+ };
34
+ /**
35
+ * Detects plain objects (including objects with a null prototype).
36
+ */
37
+ const isPlainObject = (value) => {
38
+ if (value === null || typeof value !== 'object') {
39
+ return false;
40
+ }
41
+ const prototype = Object.getPrototypeOf(value);
42
+ return prototype === Object.prototype || prototype === null;
43
+ };
44
+ /**
45
+ * Turns URLSearchParams into a sorted JSON object for deterministic keys.
46
+ */
47
+ const serializeSearchParams = (params) => {
48
+ const entries = Array.from(params.entries()).sort(([a], [b]) => a.localeCompare(b));
49
+ const result = {};
50
+ for (const [key, value] of entries) {
51
+ const existing = result[key];
52
+ if (existing === undefined) {
53
+ result[key] = value;
54
+ continue;
55
+ }
56
+ if (Array.isArray(existing)) {
57
+ existing.push(value);
58
+ }
59
+ else {
60
+ result[key] = [existing, value];
61
+ }
62
+ }
63
+ return result;
64
+ };
65
+ /**
66
+ * Normalizes any accepted value into a JSON-friendly shape for query keys.
67
+ */
68
+ export const serializeQueryKeyValue = (value) => {
69
+ if (value === null) {
70
+ return null;
71
+ }
72
+ if (typeof value === 'string' ||
73
+ typeof value === 'number' ||
74
+ typeof value === 'boolean') {
75
+ return value;
76
+ }
77
+ if (value === undefined ||
78
+ typeof value === 'function' ||
79
+ typeof value === 'symbol') {
80
+ return undefined;
81
+ }
82
+ if (typeof value === 'bigint') {
83
+ return value.toString();
84
+ }
85
+ if (value instanceof Date) {
86
+ return value.toISOString();
87
+ }
88
+ if (Array.isArray(value)) {
89
+ return stringifyToJsonValue(value);
90
+ }
91
+ if (typeof URLSearchParams !== 'undefined' &&
92
+ value instanceof URLSearchParams) {
93
+ return serializeSearchParams(value);
94
+ }
95
+ if (isPlainObject(value)) {
96
+ return stringifyToJsonValue(value);
97
+ }
98
+ return undefined;
99
+ };
@@ -1,5 +1,16 @@
1
1
  import type { Config } from './types.gen.js';
2
2
  export type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> & Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {
3
+ /**
4
+ * Fetch API implementation. You can use this option to provide a custom
5
+ * fetch instance.
6
+ *
7
+ * @default globalThis.fetch
8
+ */
9
+ fetch?: typeof fetch;
10
+ /**
11
+ * Implementing clients can call request interceptors inside this hook.
12
+ */
13
+ onRequest?: (url: string, init: RequestInit) => Promise<Request>;
3
14
  /**
4
15
  * Callback invoked when a network or parsing error occurs during streaming.
5
16
  *
@@ -17,6 +28,7 @@ export type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method
17
28
  * @returns Nothing (void).
18
29
  */
19
30
  onSseEvent?: (event: StreamEvent<TData>) => void;
31
+ serializedBody?: RequestInit['body'];
20
32
  /**
21
33
  * Default retry delay in milliseconds.
22
34
  *
@@ -56,4 +68,4 @@ export interface StreamEvent<TData = unknown> {
56
68
  export type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {
57
69
  stream: AsyncGenerator<TData extends Record<string, unknown> ? TData[keyof TData] : TData, TReturn, TNext>;
58
70
  };
59
- export declare const createSseClient: <TData = unknown>({ onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url, ...options }: ServerSentEventsOptions) => ServerSentEventsResult<TData>;
71
+ export declare const createSseClient: <TData = unknown>({ onRequest, onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url, ...options }: ServerSentEventsOptions) => ServerSentEventsResult<TData>;
@@ -1,5 +1,5 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
- export const createSseClient = ({ onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url, ...options }) => {
2
+ export const createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url, ...options }) => {
3
3
  let lastEventId;
4
4
  const sleep = sseSleepFn ??
5
5
  ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
@@ -18,7 +18,21 @@ export const createSseClient = ({ onSseError, onSseEvent, responseTransformer, r
18
18
  headers.set('Last-Event-ID', lastEventId);
19
19
  }
20
20
  try {
21
- const response = await fetch(url, { ...options, headers, signal });
21
+ const requestInit = {
22
+ redirect: 'follow',
23
+ ...options,
24
+ body: options.serializedBody,
25
+ headers,
26
+ signal,
27
+ };
28
+ let request = new Request(url, requestInit);
29
+ if (onRequest) {
30
+ request = await onRequest(url, requestInit);
31
+ }
32
+ // fetch must be assigned here, otherwise it would throw the error:
33
+ // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation
34
+ const _fetch = options.fetch ?? globalThis.fetch;
35
+ const response = await _fetch(request);
22
36
  if (!response.ok)
23
37
  throw new Error(`SSE failed: ${response.status} ${response.statusText}`);
24
38
  if (!response.body)
@@ -1,4 +1,4 @@
1
- import type { QuerySerializer } from './bodySerializer.gen.js';
1
+ import type { BodySerializer, QuerySerializer } from './bodySerializer.gen.js';
2
2
  export interface PathSerializer {
3
3
  path: Record<string, unknown>;
4
4
  url: string;
@@ -12,3 +12,8 @@ export declare const getUrl: ({ baseUrl, path, query, querySerializer, url: _url
12
12
  querySerializer: QuerySerializer;
13
13
  url: string;
14
14
  }) => string;
15
+ export declare function getValidRequestBody(options: {
16
+ body?: unknown;
17
+ bodySerializer?: BodySerializer | null;
18
+ serializedBody?: unknown;
19
+ }): unknown;