@umbraco-cms/backoffice 14.0.0--preview004-cb305bc6 → 14.0.0--preview004-65c14774

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 (206) hide show
  1. package/dist-cms/apps/backoffice/components/backoffice-main.element.js +4 -5
  2. package/dist-cms/custom-elements.json +2 -4
  3. package/dist-cms/libs/extension-api/controller/base-extension-controller.js +2 -2
  4. package/dist-cms/libs/extension-api/controller/extension-element-controller.js +3 -2
  5. package/dist-cms/libs/extension-api/functions/create-extension-api.function.d.ts +2 -0
  6. package/dist-cms/libs/extension-api/functions/create-extension-api.function.js +21 -0
  7. package/dist-cms/libs/extension-api/functions/create-extension-element.function.d.ts +2 -0
  8. package/dist-cms/libs/extension-api/functions/create-extension-element.function.js +31 -0
  9. package/dist-cms/libs/extension-api/{has-init-export.function.d.ts → functions/has-init-export.function.d.ts} +1 -1
  10. package/dist-cms/libs/extension-api/functions/index.d.ts +6 -0
  11. package/dist-cms/libs/extension-api/functions/index.js +6 -0
  12. package/dist-cms/libs/extension-api/functions/load-extension-api.function.d.ts +2 -0
  13. package/dist-cms/libs/extension-api/functions/load-extension-api.function.js +19 -0
  14. package/dist-cms/libs/extension-api/functions/load-extension-element.function.d.ts +2 -0
  15. package/dist-cms/libs/extension-api/functions/load-extension-element.function.js +19 -0
  16. package/dist-cms/libs/extension-api/{load-extension.function.d.ts → functions/load-extension.function.d.ts} +1 -1
  17. package/dist-cms/libs/extension-api/{load-extension.function.js → functions/load-extension.function.js} +1 -1
  18. package/dist-cms/libs/extension-api/index.d.ts +3 -9
  19. package/dist-cms/libs/extension-api/index.js +3 -9
  20. package/dist-cms/libs/extension-api/{bundle-extension-initializer.d.ts → initializers/bundle-extension-initializer.d.ts} +3 -3
  21. package/dist-cms/libs/extension-api/{bundle-extension-initializer.js → initializers/bundle-extension-initializer.js} +2 -2
  22. package/dist-cms/libs/extension-api/{entry-point-extension-initializer.d.ts → initializers/entry-point-extension-initializer.d.ts} +4 -4
  23. package/dist-cms/libs/extension-api/{entry-point-extension-initializer.js → initializers/entry-point-extension-initializer.js} +2 -3
  24. package/dist-cms/libs/extension-api/initializers/index.d.ts +2 -0
  25. package/dist-cms/libs/extension-api/initializers/index.js +2 -0
  26. package/dist-cms/libs/extension-api/{entry-point.interface.d.ts → models/entry-point.interface.d.ts} +3 -3
  27. package/dist-cms/libs/extension-api/models/index.d.ts +1 -0
  28. package/dist-cms/libs/extension-api/models/index.js +1 -0
  29. package/dist-cms/libs/extension-api/type-guards/has-api-export.function.d.ts +3 -0
  30. package/dist-cms/libs/extension-api/type-guards/has-api-export.function.js +3 -0
  31. package/dist-cms/libs/extension-api/type-guards/has-element-export.function.d.ts +3 -0
  32. package/dist-cms/libs/extension-api/type-guards/has-element-export.function.js +3 -0
  33. package/dist-cms/libs/extension-api/type-guards/index.d.ts +7 -2
  34. package/dist-cms/libs/extension-api/type-guards/index.js +7 -2
  35. package/dist-cms/libs/extension-api/type-guards/is-manifest-api-instance-type.function.d.ts +5 -0
  36. package/dist-cms/libs/extension-api/type-guards/is-manifest-api-instance-type.function.js +3 -0
  37. package/dist-cms/libs/extension-api/type-guards/is-manifest-api-js-type.function.d.ts +5 -0
  38. package/dist-cms/libs/extension-api/type-guards/is-manifest-api-js-type.function.js +3 -0
  39. package/dist-cms/libs/extension-api/type-guards/is-manifest-apiable-type.function.d.ts +2 -0
  40. package/dist-cms/libs/extension-api/type-guards/is-manifest-apiable-type.function.js +10 -0
  41. package/dist-cms/libs/extension-api/type-guards/is-manifest-element-js-type.function.d.ts +5 -0
  42. package/dist-cms/libs/extension-api/type-guards/is-manifest-element-js-type.function.js +3 -0
  43. package/dist-cms/libs/extension-api/type-guards/is-manifest-elementable-type.function.js +2 -0
  44. package/dist-cms/libs/extension-api/types.d.ts +80 -11
  45. package/dist-cms/packages/core/action/action.interface.d.ts +1 -1
  46. package/dist-cms/packages/core/action/repository-action.js +2 -2
  47. package/dist-cms/packages/core/collection/collection-entity-type.condition.d.ts +18 -0
  48. package/dist-cms/packages/core/collection/collection-entity-type.condition.js +21 -0
  49. package/dist-cms/packages/core/collection/collection-selection-actions.element.d.ts +2 -2
  50. package/dist-cms/packages/core/collection/collection-selection-actions.element.js +12 -25
  51. package/dist-cms/packages/core/collection/collection.context.d.ts +5 -4
  52. package/dist-cms/packages/core/collection/collection.context.js +6 -3
  53. package/dist-cms/packages/core/collection/collection.element.js +2 -2
  54. package/dist-cms/packages/core/collection/dashboards/dashboard-collection.element.js +2 -2
  55. package/dist-cms/packages/core/collection/index.d.ts +1 -0
  56. package/dist-cms/packages/core/collection/manifests.d.ts +1 -0
  57. package/dist-cms/packages/core/collection/manifests.js +2 -0
  58. package/dist-cms/packages/core/components/extension-slot/extension-slot.element.d.ts +1 -1
  59. package/dist-cms/packages/core/components/extension-slot/extension-slot.element.js +0 -1
  60. package/dist-cms/packages/core/culture/repository/manifests.js +1 -1
  61. package/dist-cms/packages/core/entity-action/entity-action.element.js +6 -6
  62. package/dist-cms/packages/core/entity-bulk-action/entity-bulk-action.element.js +6 -5
  63. package/dist-cms/packages/core/event/action-executed.event.d.ts +3 -0
  64. package/dist-cms/packages/core/event/action-executed.event.js +5 -0
  65. package/dist-cms/packages/core/event/index.d.ts +1 -1
  66. package/dist-cms/packages/core/event/index.js +1 -1
  67. package/dist-cms/packages/core/extension-registry/conditions/menu-alias.condition.js +1 -1
  68. package/dist-cms/packages/core/extension-registry/conditions/section-alias.condition.js +1 -1
  69. package/dist-cms/packages/core/extension-registry/conditions/switch.condition.js +1 -1
  70. package/dist-cms/packages/core/extension-registry/conditions/types.d.ts +3 -2
  71. package/dist-cms/packages/core/extension-registry/extension-api-initializer.d.ts +19 -0
  72. package/dist-cms/packages/core/extension-registry/{extension-class-initializer.js → extension-api-initializer.js} +19 -8
  73. package/dist-cms/packages/core/extension-registry/index.d.ts +2 -2
  74. package/dist-cms/packages/core/extension-registry/index.js +2 -2
  75. package/dist-cms/packages/core/extension-registry/interfaces/index.d.ts +1 -1
  76. package/dist-cms/packages/core/extension-registry/interfaces/index.js +1 -1
  77. package/dist-cms/packages/core/extension-registry/interfaces/{section-extension-element.interface.d.ts → section-element.interface.d.ts} +1 -1
  78. package/dist-cms/packages/core/extension-registry/models/entity-action.model.d.ts +3 -7
  79. package/dist-cms/packages/core/extension-registry/models/entity-bulk-action.model.d.ts +4 -19
  80. package/dist-cms/packages/core/extension-registry/models/global-context.model.d.ts +2 -2
  81. package/dist-cms/packages/core/extension-registry/models/repository.model.d.ts +2 -2
  82. package/dist-cms/packages/core/extension-registry/models/section.model.d.ts +2 -2
  83. package/dist-cms/packages/core/extension-registry/models/store.model.d.ts +4 -4
  84. package/dist-cms/packages/core/extension-registry/models/tinymce-plugin.model.d.ts +2 -2
  85. package/dist-cms/packages/core/extension-registry/models/workspace-action.model.d.ts +2 -3
  86. package/dist-cms/packages/core/extension-registry/{multi-extensions-class-initializer.d.ts → multi-extensions-api-initializer.d.ts} +4 -3
  87. package/dist-cms/packages/core/extension-registry/{multi-extensions-class-initializer.js → multi-extensions-api-initializer.js} +7 -5
  88. package/dist-cms/packages/core/index.d.ts +0 -1
  89. package/dist-cms/packages/core/index.js +5 -3
  90. package/dist-cms/packages/core/modal/common/folder/folder-modal.element.js +2 -2
  91. package/dist-cms/packages/core/repository/repository-items.manager.js +2 -2
  92. package/dist-cms/packages/core/section/section-default.element.d.ts +2 -2
  93. package/dist-cms/packages/core/section/section-sidebar-context-menu/section-sidebar-context-menu.element.js +1 -1
  94. package/dist-cms/packages/core/tree/tree.context.js +2 -2
  95. package/dist-cms/packages/core/workspace/index.d.ts +2 -1
  96. package/dist-cms/packages/core/workspace/index.js +0 -1
  97. package/dist-cms/packages/core/workspace/manifests.js +3 -2
  98. package/dist-cms/packages/core/workspace/workspace-action/workspace-action.element.js +6 -5
  99. package/dist-cms/packages/core/workspace/workspace-action-menu/workspace-action-menu.element.js +1 -1
  100. package/dist-cms/packages/core/workspace/workspace-alias.condition.js +1 -1
  101. package/dist-cms/packages/core/workspace/workspace-content/views/collection/workspace-view-collection.element.js +2 -2
  102. package/dist-cms/packages/core/workspace/workspace-entity-type.condition.d.ts +18 -0
  103. package/dist-cms/packages/core/workspace/workspace-entity-type.condition.js +21 -0
  104. package/dist-cms/packages/dictionary/dictionary/entity-actions/manifests.js +6 -6
  105. package/dist-cms/packages/dictionary/dictionary/repository/manifests.js +3 -3
  106. package/dist-cms/packages/dictionary/dictionary/workspace/manifests.js +1 -1
  107. package/dist-cms/packages/documents/document-blueprints/manifests.js +2 -2
  108. package/dist-cms/packages/documents/document-types/entity-actions/create/manifests.js +1 -1
  109. package/dist-cms/packages/documents/document-types/entity-actions/manifests.js +4 -4
  110. package/dist-cms/packages/documents/document-types/repository/manifests.js +4 -4
  111. package/dist-cms/packages/documents/document-types/workspace/manifests.js +1 -1
  112. package/dist-cms/packages/documents/documents/collection/views/table/column-layouts/document-table-actions-column-layout.element.js +1 -1
  113. package/dist-cms/packages/documents/documents/collection/views/table/document-table-collection-view.element.js +2 -2
  114. package/dist-cms/packages/documents/documents/entity-actions/create/manifests.js +1 -1
  115. package/dist-cms/packages/documents/documents/entity-actions/manifests.js +10 -10
  116. package/dist-cms/packages/documents/documents/entity-bulk-actions/manifests.js +10 -8
  117. package/dist-cms/packages/documents/documents/manifests.d.ts +1 -1
  118. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.d.ts +1 -1
  119. package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.js +1 -1
  120. package/dist-cms/packages/documents/documents/recycle-bin/manifests.d.ts +1 -1
  121. package/dist-cms/packages/documents/documents/recycle-bin/repository/manifests.js +2 -2
  122. package/dist-cms/packages/documents/documents/repository/manifests.js +4 -4
  123. package/dist-cms/packages/documents/documents/workspace/manifests.js +4 -4
  124. package/dist-cms/packages/documents/manifests.d.ts +1 -1
  125. package/dist-cms/packages/media/media/collection-view/media-grid-collection-view.element.js +2 -2
  126. package/dist-cms/packages/media/media/collection-view/media-table-collection-view.element.js +2 -2
  127. package/dist-cms/packages/media/media/entity-actions/manifests.js +1 -1
  128. package/dist-cms/packages/media/media/entity-bulk-actions/manifests.js +15 -12
  129. package/dist-cms/packages/media/media/repository/manifests.js +4 -4
  130. package/dist-cms/packages/media/media/workspace/manifests.js +1 -1
  131. package/dist-cms/packages/media/media-types/entity-actions/manifests.js +5 -5
  132. package/dist-cms/packages/media/media-types/repository/manifests.js +3 -3
  133. package/dist-cms/packages/members/member-groups/entity-actions/manifests.js +1 -1
  134. package/dist-cms/packages/members/member-groups/repository/manifests.js +3 -3
  135. package/dist-cms/packages/members/member-groups/workspace/manifests.js +1 -1
  136. package/dist-cms/packages/members/member-types/entity-actions/manifests.js +1 -1
  137. package/dist-cms/packages/members/member-types/repository/manifests.js +3 -3
  138. package/dist-cms/packages/members/members/entity-actions/manifests.js +1 -1
  139. package/dist-cms/packages/members/members/repository/manifests.js +3 -3
  140. package/dist-cms/packages/packages/package/repository/manifests.js +2 -2
  141. package/dist-cms/packages/settings/data-types/entity-actions/copy/manifests.js +1 -1
  142. package/dist-cms/packages/settings/data-types/entity-actions/create/manifests.js +1 -1
  143. package/dist-cms/packages/settings/data-types/entity-actions/manifests.js +3 -3
  144. package/dist-cms/packages/settings/data-types/entity-actions/move/manifests.js +1 -1
  145. package/dist-cms/packages/settings/data-types/repository/manifests.js +4 -4
  146. package/dist-cms/packages/settings/data-types/workspace/manifests.js +1 -1
  147. package/dist-cms/packages/settings/languages/entity-actions/manifests.js +2 -2
  148. package/dist-cms/packages/settings/languages/manifests.d.ts +1 -1
  149. package/dist-cms/packages/settings/languages/repository/manifests.d.ts +1 -1
  150. package/dist-cms/packages/settings/languages/repository/manifests.js +3 -3
  151. package/dist-cms/packages/settings/languages/workspace/language/manifests.js +1 -1
  152. package/dist-cms/packages/settings/languages/workspace/language-root/components/language-root-table-delete-column-layout.element.js +1 -1
  153. package/dist-cms/packages/settings/manifests.d.ts +1 -1
  154. package/dist-cms/packages/settings/relation-types/repository/manifests.js +3 -3
  155. package/dist-cms/packages/settings/relation-types/workspace/manifests.js +1 -1
  156. package/dist-cms/packages/tags/repository/manifests.js +2 -2
  157. package/dist-cms/packages/templating/partial-views/entity-actions/manifests.js +5 -5
  158. package/dist-cms/packages/templating/partial-views/repository/manifests.js +3 -3
  159. package/dist-cms/packages/templating/partial-views/workspace/manifests.js +1 -1
  160. package/dist-cms/packages/templating/scripts/entity-actions/manifests.js +4 -4
  161. package/dist-cms/packages/templating/scripts/repository/manifests.js +3 -3
  162. package/dist-cms/packages/templating/scripts/workspace/manifests.js +1 -1
  163. package/dist-cms/packages/templating/stylesheets/entity-actions/manifests.js +5 -5
  164. package/dist-cms/packages/templating/stylesheets/repository/manifests.js +2 -2
  165. package/dist-cms/packages/templating/stylesheets/workspace/manifests.js +1 -1
  166. package/dist-cms/packages/templating/templates/entity-actions/manifests.js +2 -2
  167. package/dist-cms/packages/templating/templates/repository/manifests.js +4 -4
  168. package/dist-cms/packages/templating/templates/workspace/manifests.js +1 -1
  169. package/dist-cms/packages/user/current-user/conditions/user-permission.condition.js +1 -1
  170. package/dist-cms/packages/user/user/collection/user-collection-header.element.js +3 -3
  171. package/dist-cms/packages/user/user/collection/user-collection.element.js +2 -2
  172. package/dist-cms/packages/user/user/collection/views/grid/user-collection-grid-view.element.js +2 -2
  173. package/dist-cms/packages/user/user/collection/views/table/user-collection-table-view.element.js +2 -2
  174. package/dist-cms/packages/user/user/entity-bulk-actions/manifests.js +20 -16
  175. package/dist-cms/packages/user/user/repository/manifests.js +3 -3
  176. package/dist-cms/packages/user/user/workspace/manifests.js +1 -1
  177. package/dist-cms/packages/user/user-group/collection/user-group-collection-header.element.js +2 -2
  178. package/dist-cms/packages/user/user-group/collection/user-group-collection-view.element.js +2 -2
  179. package/dist-cms/packages/user/user-group/collection/user-group-collection.element.js +2 -2
  180. package/dist-cms/packages/user/user-group/entity-actions/manifests.js +1 -1
  181. package/dist-cms/packages/user/user-group/entity-bulk-actions/manifests.js +5 -4
  182. package/dist-cms/packages/user/user-group/modals/user-group-picker/user-group-picker-modal.element.js +2 -2
  183. package/dist-cms/packages/user/user-group/repository/manifests.js +3 -3
  184. package/dist-cms/packages/user/user-group/workspace/manifests.js +1 -1
  185. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  186. package/dist-cms/umbraco-package-schema.json +141 -60
  187. package/dist-cms/vscode-html-custom-data.json +4 -3
  188. package/package.json +1 -1
  189. package/dist-cms/libs/extension-api/create-extension-class.function.d.ts +0 -2
  190. package/dist-cms/libs/extension-api/create-extension-class.function.js +0 -19
  191. package/dist-cms/libs/extension-api/create-extension-element-or-fallback.function.d.ts +0 -1
  192. package/dist-cms/libs/extension-api/create-extension-element-or-fallback.function.js +0 -8
  193. package/dist-cms/libs/extension-api/create-extension-element.function.d.ts +0 -2
  194. package/dist-cms/libs/extension-api/create-extension-element.function.js +0 -24
  195. package/dist-cms/libs/extension-api/type-guards/is-manifest-class-instance-type.function.d.ts +0 -2
  196. package/dist-cms/libs/extension-api/type-guards/is-manifest-class-instance-type.function.js +0 -3
  197. package/dist-cms/libs/extension-api/type-guards/is-manifest-classable-type.function.d.ts +0 -2
  198. package/dist-cms/libs/extension-api/type-guards/is-manifest-classable-type.function.js +0 -8
  199. package/dist-cms/packages/core/event/executed.event.d.ts +0 -3
  200. package/dist-cms/packages/core/event/executed.event.js +0 -5
  201. package/dist-cms/packages/core/extension-registry/extension-class-initializer.d.ts +0 -9
  202. /package/dist-cms/libs/extension-api/{has-init-export.function.js → functions/has-init-export.function.js} +0 -0
  203. /package/dist-cms/libs/extension-api/{entry-point.interface.js → models/entry-point.interface.js} +0 -0
  204. /package/dist-cms/libs/extension-api/{has-default-export.function.d.ts → type-guards/has-default-export.function.d.ts} +0 -0
  205. /package/dist-cms/libs/extension-api/{has-default-export.function.js → type-guards/has-default-export.function.js} +0 -0
  206. /package/dist-cms/packages/core/extension-registry/interfaces/{section-extension-element.interface.js → section-element.interface.js} +0 -0
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { UMB_BACKOFFICE_CONTEXT_TOKEN } from '../backoffice.context.js';
8
8
  import { css, html, customElement, state } from '../../../external/lit/index.js';
9
9
  import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../../../packages/core/section/index.js';
10
- import { createExtensionElementOrFallback, } from '../../../libs/extension-api/index.js';
10
+ import { createExtensionElement, } from '../../../libs/extension-api/index.js';
11
11
  import { UmbLitElement } from '../../../shared/lit-element/index.js';
12
12
  export let UmbBackofficeMainElement = class UmbBackofficeMainElement extends UmbLitElement {
13
13
  constructor() {
@@ -41,8 +41,7 @@ export let UmbBackofficeMainElement = class UmbBackofficeMainElement extends Umb
41
41
  return;
42
42
  const oldValue = this._routes;
43
43
  // TODO: Refactor this for re-use across the app where the routes are re-generated at any time.
44
- // TODO: remove section-routes that does not exist anymore.
45
- this._routes = this._sections.map((section) => {
44
+ this._routes = this._sections.filter(x => x.manifest).map((section) => {
46
45
  const existingRoute = this._routes.find((r) => r.alias === section.alias);
47
46
  if (existingRoute) {
48
47
  return existingRoute;
@@ -51,7 +50,7 @@ export let UmbBackofficeMainElement = class UmbBackofficeMainElement extends Umb
51
50
  return {
52
51
  alias: section.alias,
53
52
  path: this._routePrefix + section.manifest.meta.pathname,
54
- component: () => createExtensionElementOrFallback(section.manifest, 'umb-section-default'),
53
+ component: () => createExtensionElement(section.manifest, 'umb-section-default'),
55
54
  setup: (component) => {
56
55
  component.manifest = section.manifest;
57
56
  },
@@ -86,7 +85,7 @@ export let UmbBackofficeMainElement = class UmbBackofficeMainElement extends Umb
86
85
  :host {
87
86
  background-color: var(--uui-color-background);
88
87
  display: block;
89
- height: calc(100% - 60px); // 60 => top header height
88
+ height: calc(100% - 60px); // 60 => top header height, TODO: Make sure this comes from somewhere so it is maintainable and eventually responsive.
90
89
  }
91
90
  `,
92
91
  ]; }
@@ -828,8 +828,7 @@
828
828
  },
829
829
  {
830
830
  "name": "default-element",
831
- "type": "string",
832
- "default": "\"\""
831
+ "type": "string | undefined"
833
832
  },
834
833
  {
835
834
  "name": "renderMethod",
@@ -856,8 +855,7 @@
856
855
  {
857
856
  "name": "defaultElement",
858
857
  "attribute": "default-element",
859
- "type": "string",
860
- "default": "\"\""
858
+ "type": "string | undefined"
861
859
  },
862
860
  {
863
861
  "name": "renderMethod",
@@ -1,5 +1,5 @@
1
1
  import { UmbBaseController } from '../../controller-api/index.js';
2
- import { createExtensionClass, } from '../index.js';
2
+ import { createExtensionApi, } from '../index.js';
3
3
  export class UmbBaseExtensionController extends UmbBaseController {
4
4
  #promiseResolvers;
5
5
  #manifestObserver;
@@ -129,7 +129,7 @@ export class UmbBaseExtensionController extends UmbBaseController {
129
129
  // Check if we already have a controller for this config:
130
130
  const existing = this.#conditionControllers.find((controller) => controller.config === conditionConfig);
131
131
  if (!existing) {
132
- const conditionController = await createExtensionClass(conditionManifest, [
132
+ const conditionController = await createExtensionApi(conditionManifest, [
133
133
  {
134
134
  host: this,
135
135
  manifest: conditionManifest,
@@ -1,4 +1,4 @@
1
- import { createExtensionElement } from '../create-extension-element.function.js';
1
+ import { createExtensionElement } from '../functions/create-extension-element.function.js';
2
2
  import { isManifestElementableType } from '../type-guards/is-manifest-elementable-type.function.js';
3
3
  import { UmbBaseExtensionController } from './base-extension-controller.js';
4
4
  export class UmbExtensionElementController extends UmbBaseExtensionController {
@@ -48,8 +48,9 @@ export class UmbExtensionElementController extends UmbBaseExtensionController {
48
48
  };
49
49
  async _conditionsAreGood() {
50
50
  const manifest = this.manifest; // In this case we are sure its not undefined.
51
+ console.log("---defaultElement", this._defaultElement);
51
52
  if (isManifestElementableType(manifest)) {
52
- const newComponent = await createExtensionElement(manifest);
53
+ const newComponent = await createExtensionElement(manifest, this._defaultElement);
53
54
  if (!this._positive) {
54
55
  // We are not positive anymore, so we will back out of this creation.
55
56
  return false;
@@ -0,0 +1,2 @@
1
+ import type { ManifestApi, ManifestElementAndApi } from '../types.js';
2
+ export declare function createExtensionApi<ApiType = unknown>(manifest: ManifestApi<ApiType> | ManifestElementAndApi<any, ApiType>, constructorArguments: unknown[]): Promise<ApiType | undefined>;
@@ -0,0 +1,21 @@
1
+ import { hasApiExport, hasDefaultExport, isManifestApiConstructorType } from '../type-guards/index.js';
2
+ import { loadExtensionApi } from '../functions/load-extension-api.function.js';
3
+ //TODO: Write tests for this method:
4
+ export async function createExtensionApi(manifest, constructorArguments) {
5
+ const js = await loadExtensionApi(manifest);
6
+ if (isManifestApiConstructorType(manifest)) {
7
+ return new manifest.api(...constructorArguments);
8
+ }
9
+ if (js) {
10
+ if (hasApiExport(js)) {
11
+ return new js.api(...constructorArguments);
12
+ }
13
+ if (hasDefaultExport(js)) {
14
+ return new js.default(...constructorArguments);
15
+ }
16
+ console.error(`-- Extension of alias "${manifest.alias}" did not succeed creating an api class instance, missing a 'api' or 'default' export of the served JavaScript file`, manifest);
17
+ return undefined;
18
+ }
19
+ console.error(`-- Extension of alias "${manifest.alias}" did not succeed creating an api class instance, missing a JavaScript file via the 'apiJs' or 'js' property or a ClassConstructor in 'api' in the manifest.`, manifest);
20
+ return undefined;
21
+ }
@@ -0,0 +1,2 @@
1
+ import type { ManifestElement } from '../types.js';
2
+ export declare function createExtensionElement<ElementType extends HTMLElement>(manifest: ManifestElement<ElementType>, fallbackElementName?: string): Promise<ElementType | undefined>;
@@ -0,0 +1,31 @@
1
+ import { hasDefaultExport, hasElementExport, isManifestElementNameType } from '../type-guards/index.js';
2
+ import { loadExtensionElement } from '../functions/load-extension-element.function.js';
3
+ export async function createExtensionElement(manifest, fallbackElementName) {
4
+ //TODO: Write tests for these extension options:
5
+ const js = await loadExtensionElement(manifest);
6
+ if (isManifestElementNameType(manifest)) {
7
+ // created by manifest method providing HTMLElement
8
+ return document.createElement(manifest.elementName);
9
+ }
10
+ // TODO: Do we need this except for the default() loader?
11
+ if (js) {
12
+ if (hasElementExport(js)) {
13
+ // Element will be created by default class
14
+ return new js.element();
15
+ }
16
+ if (hasDefaultExport(js)) {
17
+ // Element will be created by default class
18
+ return new js.default();
19
+ }
20
+ if (!fallbackElementName) {
21
+ console.error(`-- Extension of alias "${manifest.alias}" did not succeed creating an api class instance, missing a 'element' or 'default' export of the served JavaScript file`, manifest);
22
+ return undefined;
23
+ }
24
+ }
25
+ if (fallbackElementName) {
26
+ return document.createElement(fallbackElementName);
27
+ }
28
+ // If some JS was loaded and manifest did not have a elementName neither it the JS file contain a default export, so we will fail:
29
+ console.error(`-- Extension of alias "${manifest.alias}" did not succeed creating an element, missing a JavaScript file via the 'elementJs' or 'js' property or a Element Name in 'elementName' in the manifest.`, manifest);
30
+ return undefined;
31
+ }
@@ -1,4 +1,4 @@
1
- import type { UmbEntryPointModule } from './entry-point.interface.js';
1
+ import type { UmbEntryPointModule } from '../models/entry-point.interface.js';
2
2
  /**
3
3
  * Validate if an ESModule exports a known init function called 'onInit'
4
4
  */
@@ -0,0 +1,6 @@
1
+ export * from './create-extension-api.function.js';
2
+ export * from './create-extension-element.function.js';
3
+ export * from './has-init-export.function.js';
4
+ export * from './load-extension-api.function.js';
5
+ export * from './load-extension-element.function.js';
6
+ export * from './load-extension.function.js';
@@ -0,0 +1,6 @@
1
+ export * from './create-extension-api.function.js';
2
+ export * from './create-extension-element.function.js';
3
+ export * from './has-init-export.function.js';
4
+ export * from './load-extension-api.function.js';
5
+ export * from './load-extension-element.function.js';
6
+ export * from './load-extension.function.js';
@@ -0,0 +1,2 @@
1
+ import type { ManifestWithLoader } from '../types.js';
2
+ export declare function loadExtensionApi<T = unknown>(manifest: ManifestWithLoader<T>): Promise<T | null>;
@@ -0,0 +1,19 @@
1
+ import { isManifestApiJSType, isManifestJSType, isManifestLoaderType } from '../type-guards/index.js';
2
+ export async function loadExtensionApi(manifest) {
3
+ try {
4
+ if (isManifestLoaderType(manifest)) {
5
+ return manifest.loader();
6
+ }
7
+ if (isManifestApiJSType(manifest) && manifest.apiJs) {
8
+ return await import(/* @vite-ignore */ manifest.apiJs);
9
+ }
10
+ if (isManifestJSType(manifest) && manifest.js) {
11
+ return await import(/* @vite-ignore */ manifest.js);
12
+ }
13
+ }
14
+ catch (err) {
15
+ console.warn('-- Extension failed to load script', manifest, err);
16
+ return Promise.resolve(null);
17
+ }
18
+ return Promise.resolve(null);
19
+ }
@@ -0,0 +1,2 @@
1
+ import type { ManifestWithLoader } from '../types.js';
2
+ export declare function loadExtensionElement<T = unknown>(manifest: ManifestWithLoader<T>): Promise<T | null>;
@@ -0,0 +1,19 @@
1
+ import { isManifestElementJSType, isManifestJSType, isManifestLoaderType } from '../type-guards/index.js';
2
+ export async function loadExtensionElement(manifest) {
3
+ try {
4
+ if (isManifestLoaderType(manifest)) {
5
+ return manifest.loader();
6
+ }
7
+ if (isManifestElementJSType(manifest) && manifest.elementJs) {
8
+ return await import(/* @vite-ignore */ manifest.elementJs);
9
+ }
10
+ if (isManifestJSType(manifest) && manifest.js) {
11
+ return await import(/* @vite-ignore */ manifest.js);
12
+ }
13
+ }
14
+ catch (err) {
15
+ console.warn('-- Extension failed to load script', manifest, err);
16
+ return Promise.resolve(null);
17
+ }
18
+ return Promise.resolve(null);
19
+ }
@@ -1,2 +1,2 @@
1
- import type { ManifestWithLoader } from './types.js';
1
+ import type { ManifestWithLoader } from '../types.js';
2
2
  export declare function loadExtension<T = unknown>(manifest: ManifestWithLoader<T>): Promise<T | null>;
@@ -1,4 +1,4 @@
1
- import { isManifestJSType, isManifestLoaderType } from './type-guards/index.js';
1
+ import { isManifestJSType, isManifestLoaderType } from '../type-guards/index.js';
2
2
  export async function loadExtension(manifest) {
3
3
  try {
4
4
  if (isManifestLoaderType(manifest)) {
@@ -1,14 +1,8 @@
1
- export * from './bundle-extension-initializer.js';
1
+ export * from './initializers/index.js';
2
2
  export * from './condition/index.js';
3
3
  export * from './controller/index.js';
4
- export * from './create-extension-class.function.js';
5
- export * from './create-extension-element-or-fallback.function.js';
6
- export * from './create-extension-element.function.js';
7
- export * from './entry-point-extension-initializer.js';
8
- export * from './entry-point.interface.js';
9
- export * from './has-default-export.function.js';
10
- export * from './has-init-export.function.js';
11
- export * from './load-extension.function.js';
4
+ export * from './functions/index.js';
5
+ export * from './models/index.js';
12
6
  export * from './registry/extension.registry.js';
13
7
  export * from './type-guards/index.js';
14
8
  export * from './types.js';
@@ -1,14 +1,8 @@
1
- export * from './bundle-extension-initializer.js';
1
+ export * from './initializers/index.js';
2
2
  export * from './condition/index.js';
3
3
  export * from './controller/index.js';
4
- export * from './create-extension-class.function.js';
5
- export * from './create-extension-element-or-fallback.function.js';
6
- export * from './create-extension-element.function.js';
7
- export * from './entry-point-extension-initializer.js';
8
- export * from './entry-point.interface.js';
9
- export * from './has-default-export.function.js';
10
- export * from './has-init-export.function.js';
11
- export * from './load-extension.function.js';
4
+ export * from './functions/index.js';
5
+ export * from './models/index.js';
12
6
  export * from './registry/extension.registry.js';
13
7
  export * from './type-guards/index.js';
14
8
  export * from './types.js';
@@ -1,6 +1,6 @@
1
- import type { ManifestBundle } from './types.js';
2
- import { UmbExtensionRegistry } from './registry/extension.registry.js';
3
- import { UmbBaseController, UmbControllerHostElement } from '../controller-api/index.js';
1
+ import type { ManifestBundle } from '../types.js';
2
+ import { UmbExtensionRegistry } from '../registry/extension.registry.js';
3
+ import { UmbBaseController, UmbControllerHostElement } from '../../controller-api/index.js';
4
4
  export declare class UmbBundleExtensionInitializer extends UmbBaseController {
5
5
  #private;
6
6
  constructor(host: UmbControllerHostElement, extensionRegistry: UmbExtensionRegistry<ManifestBundle>);
@@ -1,5 +1,5 @@
1
- import { loadExtension } from './load-extension.function.js';
2
- import { UmbBaseController } from '../controller-api/index.js';
1
+ import { loadExtension } from '../functions/load-extension.function.js';
2
+ import { UmbBaseController } from '../../controller-api/index.js';
3
3
  export class UmbBundleExtensionInitializer extends UmbBaseController {
4
4
  #extensionRegistry;
5
5
  #bundleMap = new Map();
@@ -1,7 +1,7 @@
1
- import { UmbBaseController } from '../controller-api/controller.class.js';
2
- import type { ManifestEntryPoint } from './types.js';
3
- import { UmbExtensionRegistry } from './registry/extension.registry.js';
4
- import { UmbElement } from '../element-api/index.js';
1
+ import { UmbBaseController } from '../../controller-api/controller.class.js';
2
+ import type { ManifestEntryPoint } from '../types.js';
3
+ import { UmbExtensionRegistry } from '../registry/extension.registry.js';
4
+ import { UmbElement } from '../../element-api/index.js';
5
5
  export declare class UmbEntryPointExtensionInitializer extends UmbBaseController {
6
6
  #private;
7
7
  constructor(host: UmbElement, extensionRegistry: UmbExtensionRegistry<ManifestEntryPoint>);
@@ -1,6 +1,5 @@
1
- import { UmbBaseController } from '../controller-api/controller.class.js';
2
- import { hasInitExport } from './has-init-export.function.js';
3
- import { loadExtension } from './load-extension.function.js';
1
+ import { UmbBaseController } from '../../controller-api/controller.class.js';
2
+ import { hasInitExport, loadExtension } from '../functions/index.js';
4
3
  export class UmbEntryPointExtensionInitializer extends UmbBaseController {
5
4
  #host;
6
5
  #extensionRegistry;
@@ -0,0 +1,2 @@
1
+ export * from './bundle-extension-initializer.js';
2
+ export * from './entry-point-extension-initializer.js';
@@ -0,0 +1,2 @@
1
+ export * from './bundle-extension-initializer.js';
2
+ export * from './entry-point-extension-initializer.js';
@@ -1,6 +1,6 @@
1
- import type { UmbExtensionRegistry } from './registry/extension.registry.js';
2
- import { ManifestBase } from './types.js';
3
- import type { UmbElement } from '../element-api/index.js';
1
+ import type { UmbExtensionRegistry } from '../registry/extension.registry.js';
2
+ import { ManifestBase } from '../types.js';
3
+ import type { UmbElement } from '../../element-api/index.js';
4
4
  export type UmbEntryPointOnInit = (host: UmbElement, extensionRegistry: UmbExtensionRegistry<ManifestBase>) => void;
5
5
  /**
6
6
  * Interface containing supported life-cycle functions for ESModule entry points
@@ -0,0 +1 @@
1
+ export * from './entry-point.interface.js';
@@ -0,0 +1 @@
1
+ export * from './entry-point.interface.js';
@@ -0,0 +1,3 @@
1
+ export declare function hasApiExport<ConstructorType>(object: unknown): object is {
2
+ api: ConstructorType;
3
+ };
@@ -0,0 +1,3 @@
1
+ export function hasApiExport(object) {
2
+ return typeof object === 'object' && object !== null && 'api' in object;
3
+ }
@@ -0,0 +1,3 @@
1
+ export declare function hasElementExport<ConstructorType>(object: unknown): object is {
2
+ element: ConstructorType;
3
+ };
@@ -0,0 +1,3 @@
1
+ export function hasElementExport(object) {
2
+ return typeof object === 'object' && object !== null && 'element' in object;
3
+ }
@@ -1,6 +1,11 @@
1
- export * from './is-manifest-class-instance-type.function.js';
2
- export * from './is-manifest-classable-type.function.js';
1
+ export * from './is-manifest-api-instance-type.function.js';
2
+ export * from './is-manifest-apiable-type.function.js';
3
3
  export * from './is-manifest-element-name-type.function.js';
4
4
  export * from './is-manifest-elementable-type.function.js';
5
5
  export * from './is-manifest-js-type.function.js';
6
+ export * from './is-manifest-element-js-type.function.js';
7
+ export * from './is-manifest-api-js-type.function.js';
6
8
  export * from './is-manifest-loader-type.function.js';
9
+ export * from './has-default-export.function.js';
10
+ export * from './has-element-export.function.js';
11
+ export * from './has-api-export.function.js';
@@ -1,6 +1,11 @@
1
- export * from './is-manifest-class-instance-type.function.js';
2
- export * from './is-manifest-classable-type.function.js';
1
+ export * from './is-manifest-api-instance-type.function.js';
2
+ export * from './is-manifest-apiable-type.function.js';
3
3
  export * from './is-manifest-element-name-type.function.js';
4
4
  export * from './is-manifest-elementable-type.function.js';
5
5
  export * from './is-manifest-js-type.function.js';
6
+ export * from './is-manifest-element-js-type.function.js';
7
+ export * from './is-manifest-api-js-type.function.js';
6
8
  export * from './is-manifest-loader-type.function.js';
9
+ export * from './has-default-export.function.js';
10
+ export * from './has-element-export.function.js';
11
+ export * from './has-api-export.function.js';
@@ -0,0 +1,5 @@
1
+ import type { ClassConstructor, ManifestApi } from '../types.js';
2
+ export declare function isManifestApiConstructorType<ApiType>(manifest: unknown): manifest is ManifestApiWithClassConstructor<ApiType>;
3
+ export interface ManifestApiWithClassConstructor<T = unknown> extends ManifestApi<T> {
4
+ api: ClassConstructor<T>;
5
+ }
@@ -0,0 +1,3 @@
1
+ export function isManifestApiConstructorType(manifest) {
2
+ return typeof manifest === 'object' && manifest !== null && manifest.api !== undefined;
3
+ }
@@ -0,0 +1,5 @@
1
+ import type { ManifestBase, ManifestWithLoader } from '../types.js';
2
+ export type ManifestApiJSType<T> = ManifestWithLoader<T> & {
3
+ apiJs: string;
4
+ };
5
+ export declare function isManifestApiJSType<T>(manifest: ManifestBase | unknown): manifest is ManifestApiJSType<T>;
@@ -0,0 +1,3 @@
1
+ export function isManifestApiJSType(manifest) {
2
+ return manifest.apiJs !== undefined;
3
+ }
@@ -0,0 +1,2 @@
1
+ import type { ManifestBase, ManifestApi } from '../types.js';
2
+ export declare function isManifestApiType(manifest: ManifestBase): manifest is ManifestApi;
@@ -0,0 +1,10 @@
1
+ import { isManifestJSType } from './is-manifest-js-type.function.js';
2
+ import { isManifestLoaderType } from './is-manifest-loader-type.function.js';
3
+ import { isManifestApiConstructorType } from './is-manifest-api-instance-type.function.js';
4
+ import { isManifestApiJSType } from './is-manifest-api-js-type.function.js';
5
+ export function isManifestApiType(manifest) {
6
+ return (isManifestApiConstructorType(manifest) ||
7
+ isManifestLoaderType(manifest) ||
8
+ isManifestApiJSType(manifest) ||
9
+ isManifestJSType(manifest));
10
+ }
@@ -0,0 +1,5 @@
1
+ import type { ManifestBase, ManifestWithLoader } from '../types.js';
2
+ export type ManifestElementJSType<T> = ManifestWithLoader<T> & {
3
+ elementJs: string;
4
+ };
5
+ export declare function isManifestElementJSType<T>(manifest: ManifestBase | unknown): manifest is ManifestElementJSType<T>;
@@ -0,0 +1,3 @@
1
+ export function isManifestElementJSType(manifest) {
2
+ return manifest.elementJs !== undefined;
3
+ }
@@ -1,8 +1,10 @@
1
+ import { isManifestElementJSType } from './is-manifest-element-js-type.function.js';
1
2
  import { isManifestElementNameType } from './is-manifest-element-name-type.function.js';
2
3
  import { isManifestJSType } from './is-manifest-js-type.function.js';
3
4
  import { isManifestLoaderType } from './is-manifest-loader-type.function.js';
4
5
  export function isManifestElementableType(manifest) {
5
6
  return (isManifestElementNameType(manifest) ||
6
7
  isManifestLoaderType(manifest) ||
8
+ isManifestElementJSType(manifest) ||
7
9
  isManifestJSType(manifest));
8
10
  }
@@ -1,5 +1,5 @@
1
1
  import type { UmbExtensionCondition } from './condition/index.js';
2
- import type { UmbEntryPointModule } from './entry-point.interface.js';
2
+ import type { UmbEntryPointModule } from './models/index.js';
3
3
  export type HTMLElementConstructor<T = HTMLElement> = new (...args: any[]) => T;
4
4
  export type ClassConstructor<T = object> = new (...args: any[]) => T;
5
5
  export type ManifestTypeMap<ManifestTypes extends ManifestBase> = {
@@ -73,13 +73,15 @@ export interface ManifestWithLoader<LoaderReturnType> extends ManifestBase {
73
73
  /**
74
74
  * The type of extension such as dashboard etc...
75
75
  */
76
- export interface ManifestClass<ClassType = unknown> extends ManifestWithLoader<{
77
- default: ClassConstructor<ClassType>;
76
+ export interface ManifestApi<ApiType = unknown> extends ManifestWithLoader<{
77
+ default: ClassConstructor<ApiType>;
78
+ } | {
79
+ api: ClassConstructor<ApiType>;
78
80
  }> {
79
81
  /**
80
82
  * @TJS-ignore
81
83
  */
82
- readonly CLASS_TYPE?: ClassType;
84
+ readonly API_TYPE?: ApiType;
83
85
  /**
84
86
  * The file location of the javascript file to load
85
87
  * @TJS-required
@@ -88,23 +90,67 @@ export interface ManifestClass<ClassType = unknown> extends ManifestWithLoader<{
88
90
  /**
89
91
  * @TJS-ignore
90
92
  */
91
- className?: string;
93
+ apiName?: string;
92
94
  /**
93
95
  * @TJS-ignore
94
96
  */
95
- class?: ClassConstructor<ClassType>;
96
- }
97
- export interface ManifestClassWithClassConstructor<T = unknown> extends ManifestClass<T> {
98
- class: ClassConstructor<T>;
97
+ api?: ClassConstructor<ApiType>;
99
98
  }
100
99
  export interface ManifestWithLoaderIncludingDefaultExport<T = unknown> extends ManifestWithLoader<{
101
100
  default: T;
101
+ } | {
102
+ element: T;
102
103
  } | Omit<object, 'default'>> {
103
104
  /**
104
105
  * The file location of the javascript file to load
105
106
  */
106
107
  js?: string;
107
108
  }
109
+ export interface ManifestWithLoaderIncludingApiExport<ApiType = unknown> extends ManifestWithLoader<{
110
+ api: ApiType;
111
+ } | Omit<object, 'api'>> {
112
+ /**
113
+ * The file location of the javascript file to load
114
+ */
115
+ js?: string;
116
+ /**
117
+ * The file location of the API javascript file to load
118
+ */
119
+ apiJs?: string;
120
+ }
121
+ export interface ManifestWithLoaderIncludingElementExport<ElementType extends HTMLElement = HTMLElement> extends ManifestWithLoader<{
122
+ element: ElementType;
123
+ } | Omit<object, 'element'>> {
124
+ /**
125
+ * The file location of the javascript file to load
126
+ */
127
+ js?: string;
128
+ /**
129
+ * The file location of the element javascript file to load
130
+ */
131
+ elementJs?: string;
132
+ }
133
+ export interface ManifestWithLoaderOptionalApiOrElementExport<ElementType extends HTMLElement = HTMLElement, ApiType = unknown, ClassType = {
134
+ element: ElementType;
135
+ } | {
136
+ api: ApiType;
137
+ } | {
138
+ element: ElementType;
139
+ api: ApiType;
140
+ } | Omit<Omit<object, 'element'>, 'api'>> extends ManifestWithLoader<ClassType> {
141
+ /**
142
+ * The file location of the javascript file to load
143
+ */
144
+ js?: string;
145
+ /**
146
+ * The file location of the element javascript file to load
147
+ */
148
+ elementJs?: string;
149
+ /**
150
+ * The file location of the API javascript file to load
151
+ */
152
+ apiJs?: string;
153
+ }
108
154
  export interface ManifestElement<ElementType extends HTMLElement = HTMLElement> extends ManifestWithLoader<{
109
155
  default: ClassConstructor<ElementType>;
110
156
  } | Omit<object, 'default'>> {
@@ -120,7 +166,7 @@ export interface ManifestElement<ElementType extends HTMLElement = HTMLElement>
120
166
  js?: string;
121
167
  /**
122
168
  * The HTML web component name to use such as 'my-dashboard'
123
- * Note it is NOT <my-dashboard></my-dashboard> but just the name
169
+ * Note it is NOT <my-dashboard></my-dashboard>, just the element name.
124
170
  */
125
171
  elementName?: string;
126
172
  /**
@@ -128,6 +174,29 @@ export interface ManifestElement<ElementType extends HTMLElement = HTMLElement>
128
174
  */
129
175
  meta?: unknown;
130
176
  }
177
+ export interface ManifestElementAndApi<ElementType extends HTMLElement = HTMLElement, ApiType = unknown> extends ManifestWithLoaderOptionalApiOrElementExport<ElementType, ApiType> {
178
+ /**
179
+ * @TJS-ignore
180
+ */
181
+ readonly API_TYPE?: ApiType;
182
+ /**
183
+ * @TJS-ignore
184
+ */
185
+ readonly ELEMENT_TYPE?: ElementType;
186
+ /**
187
+ * @TJS-ignore
188
+ */
189
+ apiName?: string;
190
+ /**
191
+ * @TJS-ignore
192
+ */
193
+ api?: ClassConstructor<ApiType>;
194
+ /**
195
+ * The HTML web component name to use such as 'my-dashboard'
196
+ * Note it is NOT <my-dashboard></my-dashboard>, just the element name.
197
+ */
198
+ elementName?: string;
199
+ }
131
200
  export interface ManifestWithView<ElementType extends HTMLElement = HTMLElement> extends ManifestElement<ElementType> {
132
201
  meta: MetaManifestWithView;
133
202
  }
@@ -175,7 +244,7 @@ export interface ManifestBundle<UmbManifestTypes extends ManifestBase = Manifest
175
244
  /**
176
245
  * This type of extension takes a JS module and registers all exported manifests from the pointed JS file.
177
246
  */
178
- export interface ManifestCondition extends ManifestClass<UmbExtensionCondition> {
247
+ export interface ManifestCondition extends ManifestApi<UmbExtensionCondition> {
179
248
  type: 'condition';
180
249
  /**
181
250
  * The file location of the javascript file to load in the backoffice
@@ -1,6 +1,6 @@
1
1
  import { UmbControllerHostElement } from '../../../libs/controller-api/index.js';
2
2
  export interface UmbAction<RepositoryType = unknown> {
3
3
  host: UmbControllerHostElement;
4
- repository: RepositoryType;
4
+ repository?: RepositoryType;
5
5
  execute(): Promise<void>;
6
6
  }