@umbraco-cms/backoffice 14.0.0--preview006-3b155c84 → 14.0.0--preview007-5b109fa3

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 (52) hide show
  1. package/dist-cms/libs/context-api/consume/context-consumer.controller.js +2 -1
  2. package/dist-cms/libs/context-api/consume/context-consumer.js +1 -0
  3. package/dist-cms/libs/context-api/provide/context-provider.controller.js +1 -0
  4. package/dist-cms/libs/context-api/provide/context-provider.js +4 -2
  5. package/dist-cms/libs/controller-api/controller-host-element.mixin.d.ts +1 -0
  6. package/dist-cms/libs/controller-api/controller-host.mixin.js +9 -0
  7. package/dist-cms/libs/element-api/element.mixin.js +4 -0
  8. package/dist-cms/libs/extension-api/controller/base-extension-initializer.controller.d.ts +1 -0
  9. package/dist-cms/libs/extension-api/controller/base-extension-initializer.controller.js +37 -9
  10. package/dist-cms/libs/extension-api/controller/base-extensions-initializer.controller.d.ts +2 -2
  11. package/dist-cms/libs/extension-api/controller/base-extensions-initializer.controller.js +56 -32
  12. package/dist-cms/libs/extension-api/controller/extension-api-initializer.controller.d.ts +1 -0
  13. package/dist-cms/libs/extension-api/controller/extension-api-initializer.controller.js +4 -0
  14. package/dist-cms/libs/extension-api/controller/extension-element-initializer.controller.d.ts +1 -0
  15. package/dist-cms/libs/extension-api/controller/extension-element-initializer.controller.js +4 -0
  16. package/dist-cms/libs/extension-api/controller/extensions-api-initializer.controller.d.ts +2 -1
  17. package/dist-cms/libs/extension-api/controller/extensions-api-initializer.controller.js +7 -2
  18. package/dist-cms/libs/extension-api/controller/extensions-element-initializer.controller.d.ts +2 -1
  19. package/dist-cms/libs/extension-api/controller/extensions-element-initializer.controller.js +7 -2
  20. package/dist-cms/libs/extension-api/controller/extensions-manifest-initializer.controller.d.ts +2 -1
  21. package/dist-cms/libs/extension-api/controller/extensions-manifest-initializer.controller.js +6 -2
  22. package/dist-cms/libs/localization-api/localization.controller.js +1 -1
  23. package/dist-cms/libs/observable-api/observer.controller.js +2 -1
  24. package/dist-cms/libs/observable-api/observer.js +3 -2
  25. package/dist-cms/libs/observable-api/states/array-state.d.ts +1 -0
  26. package/dist-cms/libs/observable-api/states/array-state.js +5 -0
  27. package/dist-cms/libs/observable-api/states/basic-state.js +3 -2
  28. package/dist-cms/libs/observable-api/states/class-state.js +2 -0
  29. package/dist-cms/libs/observable-api/states/deep-state.js +2 -0
  30. package/dist-cms/packages/block/block-type/workspace/block-type-workspace.context.js +1 -0
  31. package/dist-cms/packages/core/components/extension-slot/extension-slot.element.js +1 -1
  32. package/dist-cms/packages/core/content-type/content-type-structure-manager.class.js +1 -0
  33. package/dist-cms/packages/core/data-type/workspace/data-type-workspace.context.js +1 -0
  34. package/dist-cms/packages/core/modal/modal.element.d.ts +2 -1
  35. package/dist-cms/packages/core/modal/modal.element.js +10 -9
  36. package/dist-cms/packages/core/property-action/shared/property-action-menu/property-action-menu.element.js +1 -1
  37. package/dist-cms/packages/core/workspace/components/workspace-editor/workspace-editor.element.js +1 -1
  38. package/dist-cms/packages/dictionary/workspace/dictionary-workspace.context.js +1 -0
  39. package/dist-cms/packages/documents/documents/workspace/document-workspace-editor.element.d.ts +1 -1
  40. package/dist-cms/packages/documents/documents/workspace/document-workspace-editor.element.js +1 -1
  41. package/dist-cms/packages/documents/documents/workspace/document-workspace.element.d.ts +1 -1
  42. package/dist-cms/packages/documents/documents/workspace/document-workspace.element.js +1 -1
  43. package/dist-cms/packages/language/workspace/language/language-workspace.context.js +1 -0
  44. package/dist-cms/packages/media/media/workspace/media-workspace.context.js +1 -0
  45. package/dist-cms/packages/members/member-types/workspace/member-type-workspace.context.js +1 -0
  46. package/dist-cms/packages/relations/relation-types/workspace/relation-type-workspace.context.js +1 -0
  47. package/dist-cms/packages/templating/partial-views/workspace/partial-view-workspace.context.js +1 -0
  48. package/dist-cms/packages/templating/stylesheets/workspace/stylesheet-workspace.context.js +1 -0
  49. package/dist-cms/packages/user/user/workspace/user-workspace.context.js +1 -0
  50. package/dist-cms/packages/user/user-group/workspace/user-group-workspace.context.js +1 -0
  51. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  52. package/package.json +1 -1
@@ -23,7 +23,8 @@ export class UmbContextConsumerController extends UmbContextConsumer {
23
23
  host.addController(this);
24
24
  }
25
25
  destroy() {
26
- __classPrivateFieldGet(this, _UmbContextConsumerController_host, "f").removeController(this);
26
+ __classPrivateFieldGet(this, _UmbContextConsumerController_host, "f")?.removeController(this);
27
+ __classPrivateFieldSet(this, _UmbContextConsumerController_host, undefined, "f");
27
28
  super.destroy();
28
29
  }
29
30
  }
@@ -153,6 +153,7 @@ export class UmbContextConsumer {
153
153
  __classPrivateFieldSet(this, _UmbContextConsumer_promise, undefined, "f");
154
154
  __classPrivateFieldSet(this, _UmbContextConsumer_promiseResolver, undefined, "f");
155
155
  __classPrivateFieldSet(this, _UmbContextConsumer_instance, undefined, "f");
156
+ __classPrivateFieldSet(this, _UmbContextConsumer_discriminator, undefined, "f");
156
157
  }
157
158
  }
158
159
  _UmbContextConsumer_skipOrigin = new WeakMap(), _UmbContextConsumer_stopAtContextMatch = new WeakMap(), _UmbContextConsumer_callback = new WeakMap(), _UmbContextConsumer_promise = new WeakMap(), _UmbContextConsumer_promiseResolver = new WeakMap(), _UmbContextConsumer_instance = new WeakMap(), _UmbContextConsumer_contextAlias = new WeakMap(), _UmbContextConsumer_apiAlias = new WeakMap(), _UmbContextConsumer_discriminator = new WeakMap(), _UmbContextConsumer_handleNewProvider = new WeakMap();
@@ -38,6 +38,7 @@ export class UmbContextProviderController extends UmbContextProvider {
38
38
  destroy() {
39
39
  if (__classPrivateFieldGet(this, _UmbContextProviderController_host, "f")) {
40
40
  __classPrivateFieldGet(this, _UmbContextProviderController_host, "f").removeController(this);
41
+ __classPrivateFieldSet(this, _UmbContextProviderController_host, undefined, "f");
41
42
  }
42
43
  super.destroy();
43
44
  }
@@ -10,7 +10,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
10
10
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
11
  };
12
12
  var _UmbContextProvider_eventTarget, _UmbContextProvider_contextAlias, _UmbContextProvider_apiAlias, _UmbContextProvider_instance, _UmbContextProvider_handleContextRequest;
13
- import { UMB_CONTENT_REQUEST_EVENT_TYPE, UMB_DEBUG_CONTEXT_EVENT_TYPE, } from '../consume/context-request.event.js';
13
+ import { UMB_CONTENT_REQUEST_EVENT_TYPE, UMB_DEBUG_CONTEXT_EVENT_TYPE } from '../consume/context-request.event.js';
14
14
  import { UmbContextProvideEventImplementation,
15
15
  //UmbContextUnprovidedEventImplementation,
16
16
  } from './context-provide.event.js';
@@ -93,12 +93,14 @@ export class UmbContextProvider {
93
93
  // Out-commented for now, but kept if we like to reintroduce this:
94
94
  //window.dispatchEvent(new UmbContextUnprovidedEventImplementation(this._contextAlias, this.#instance));
95
95
  // Stop listen to our debug event 'umb:debug-contexts'
96
- __classPrivateFieldGet(this, _UmbContextProvider_eventTarget, "f").removeEventListener(UMB_DEBUG_CONTEXT_EVENT_TYPE, this._handleDebugContextRequest);
96
+ __classPrivateFieldGet(this, _UmbContextProvider_eventTarget, "f")?.removeEventListener(UMB_DEBUG_CONTEXT_EVENT_TYPE, this._handleDebugContextRequest);
97
97
  }
98
98
  destroy() {
99
+ this.hostDisconnected();
99
100
  // We want to call a destroy method on the instance, if it has one.
100
101
  __classPrivateFieldGet(this, _UmbContextProvider_instance, "f")?.destroy?.();
101
102
  __classPrivateFieldSet(this, _UmbContextProvider_instance, undefined, "f");
103
+ __classPrivateFieldSet(this, _UmbContextProvider_eventTarget, undefined, "f");
102
104
  }
103
105
  }
104
106
  _UmbContextProvider_eventTarget = new WeakMap(), _UmbContextProvider_contextAlias = new WeakMap(), _UmbContextProvider_apiAlias = new WeakMap(), _UmbContextProvider_instance = new WeakMap(), _UmbContextProvider_handleContextRequest = new WeakMap();
@@ -9,6 +9,7 @@ export declare class UmbControllerHostElement extends HTMLElement implements Umb
9
9
  removeControllerByAlias(alias: UmbControllerAlias): void;
10
10
  removeController(controller: UmbController): void;
11
11
  getHostElement(): Element;
12
+ destroy(): void;
12
13
  }
13
14
  /**
14
15
  * This mixin enables a web-component to host controllers.
@@ -101,9 +101,18 @@ export const UmbControllerHostMixin = (superClass) => {
101
101
  }
102
102
  destroy() {
103
103
  let ctrl;
104
+ //let prev = null;
104
105
  // Note: A very important way of doing this loop, as foreach will skip over the next item if the current item is removed.
105
106
  while ((ctrl = __classPrivateFieldGet(this, _UmbControllerHostBaseClass_controllers, "f")[0])) {
106
107
  ctrl.destroy();
108
+ /*
109
+ //This code can help debug if there is some controller that does not destroy properly: (When a controller is destroyed it should remove it self)
110
+ if (ctrl === prev) {
111
+ console.log('WUPS, we have a controller that does not destroy it self');
112
+ debugger;
113
+ }
114
+ prev = ctrl;
115
+ */
107
116
  }
108
117
  __classPrivateFieldGet(this, _UmbControllerHostBaseClass_controllers, "f").length = 0;
109
118
  }
@@ -38,6 +38,10 @@ export const UmbElementMixin = (superClass) => {
38
38
  consumeContext(alias, callback) {
39
39
  return new UmbContextConsumerController(this, alias, callback);
40
40
  }
41
+ destroy() {
42
+ super.destroy();
43
+ this.localize = undefined;
44
+ }
41
45
  }
42
46
  return UmbElementMixinClass;
43
47
  };
@@ -24,5 +24,6 @@ export declare abstract class UmbBaseExtensionInitializer<ManifestType extends M
24
24
  protected abstract _conditionsAreGood(): Promise<boolean>;
25
25
  protected abstract _conditionsAreBad(): Promise<void>;
26
26
  equal(otherClass: UmbBaseExtensionInitializer | undefined): boolean;
27
+ hostDisconnected(): void;
27
28
  destroy(): void;
28
29
  }
@@ -57,7 +57,9 @@ export class UmbBaseExtensionInitializer extends UmbBaseController {
57
57
  manifests.forEach(__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_gotCondition, "f"));
58
58
  });
59
59
  _UmbBaseExtensionInitializer_gotCondition.set(this, async (conditionManifest) => {
60
- const conditionConfigs = __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_manifest, "f")?.conditions ?? [];
60
+ if (!__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_manifest, "f"))
61
+ return;
62
+ const conditionConfigs = __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_manifest, "f").conditions ?? [];
61
63
  //
62
64
  // Get just the conditions that uses this condition alias:
63
65
  const configsOfThisType = conditionConfigs.filter((conditionConfig) => conditionConfig.alias === conditionManifest.alias);
@@ -90,11 +92,12 @@ export class UmbBaseExtensionInitializer extends UmbBaseController {
90
92
  const isPositive = __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_instances, "m", _UmbBaseExtensionInitializer_conditionsAreInitialized).call(this) &&
91
93
  __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_conditionControllers, "f").find((condition) => condition.permitted === false) === undefined;
92
94
  this._isConditionsPositive = isPositive;
93
- if (isPositive) {
95
+ if (isPositive === true) {
94
96
  if (__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_isPermitted, "f") !== true) {
95
97
  const newPermission = await this._conditionsAreGood();
96
98
  // Only set new permission if we are still positive, otherwise it means that we have been destroyed in the mean time.
97
- if (newPermission === false) {
99
+ if (newPermission === false || this._isConditionsPositive === false) {
100
+ console.warn('If this happens then please inform Niels Lyngsø on CMS Team. We are still investigating wether this is a situation we should handle. Ref. No.: 1.');
98
101
  return;
99
102
  }
100
103
  // We update the oldValue as this point, cause in this way we are sure its the value at this point, when doing async code someone else might have changed the state in the mean time.
@@ -104,11 +107,18 @@ export class UmbBaseExtensionInitializer extends UmbBaseController {
104
107
  }
105
108
  else if (__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_isPermitted, "f") !== false) {
106
109
  // Clean up:
107
- __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_isPermitted, false, "f");
108
110
  await this._conditionsAreBad();
111
+ // Only continue if we are still negative, otherwise it means that something changed in the mean time.
112
+ if (this._isConditionsPositive === true) {
113
+ console.warn('If this happens then please inform Niels Lyngsø on CMS Team. We are still investigating wether this is a situation we should handle. Ref. No.: 2.');
114
+ return;
115
+ }
116
+ // We update the oldValue as this point, cause in this way we are sure its the value at this point, when doing async code someone else might have changed the state in the mean time.
117
+ oldValue = __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_isPermitted, "f") ?? false;
118
+ __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_isPermitted, false, "f");
109
119
  }
110
120
  if (oldValue !== __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_isPermitted, "f") && __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_isPermitted, "f") !== undefined) {
111
- if (__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_isPermitted, "f")) {
121
+ if (__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_isPermitted, "f") === true) {
112
122
  __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_promiseResolvers, "f").forEach((x) => x());
113
123
  __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_promiseResolvers, [], "f");
114
124
  }
@@ -120,7 +130,7 @@ export class UmbBaseExtensionInitializer extends UmbBaseController {
120
130
  __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_onPermissionChanged, onPermissionChanged, "f");
121
131
  }
122
132
  _init() {
123
- __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_manifestObserver, this.observe(__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_extensionRegistry, "f").byAlias(__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_alias, "f")), async (extensionManifest) => {
133
+ __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_manifestObserver, this.observe(__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_extensionRegistry, "f").byAlias(__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_alias, "f")), (extensionManifest) => {
124
134
  __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_instances, "m", _UmbBaseExtensionInitializer_clearPermittedState).call(this);
125
135
  __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_manifest, extensionManifest, "f");
126
136
  if (extensionManifest) {
@@ -148,9 +158,25 @@ export class UmbBaseExtensionInitializer extends UmbBaseController {
148
158
  equal(otherClass) {
149
159
  return otherClass?.manifest === this.manifest;
150
160
  }
161
+ /*
162
+ public hostConnected(): void {
163
+ super.hostConnected();
164
+ //this.#onConditionsChangedCallback();
165
+ }
166
+ */
167
+ hostDisconnected() {
168
+ super.hostDisconnected();
169
+ this._isConditionsPositive = false;
170
+ if (__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_isPermitted, "f") === true) {
171
+ this._conditionsAreBad();
172
+ __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_isPermitted, false, "f");
173
+ __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_onPermissionChanged, "f")?.call(this, false, this);
174
+ }
175
+ }
151
176
  destroy() {
152
177
  if (!__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_extensionRegistry, "f"))
153
178
  return;
179
+ __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_manifest, undefined, "f");
154
180
  __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_promiseResolvers, [], "f");
155
181
  __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_instances, "m", _UmbBaseExtensionInitializer_clearPermittedState).call(this); // This fires the callback as not permitted, if it was permitted before.
156
182
  __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_isPermitted, undefined, "f");
@@ -160,17 +186,19 @@ export class UmbBaseExtensionInitializer extends UmbBaseController {
160
186
  __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_onPermissionChanged, undefined, "f");
161
187
  __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_extensionRegistry, undefined, "f");
162
188
  super.destroy();
163
- // Destroy the conditions controllers, are begin destroyed cause they are controllers.
189
+ // Destroy the conditions controllers, they are begin destroyed cause they are controllers...
164
190
  }
165
191
  }
166
192
  _UmbBaseExtensionInitializer_promiseResolvers = new WeakMap(), _UmbBaseExtensionInitializer_manifestObserver = new WeakMap(), _UmbBaseExtensionInitializer_extensionRegistry = new WeakMap(), _UmbBaseExtensionInitializer_alias = new WeakMap(), _UmbBaseExtensionInitializer_overwrites = new WeakMap(), _UmbBaseExtensionInitializer_manifest = new WeakMap(), _UmbBaseExtensionInitializer_conditionControllers = new WeakMap(), _UmbBaseExtensionInitializer_onPermissionChanged = new WeakMap(), _UmbBaseExtensionInitializer_isPermitted = new WeakMap(), _UmbBaseExtensionInitializer_gotConditions = new WeakMap(), _UmbBaseExtensionInitializer_gotCondition = new WeakMap(), _UmbBaseExtensionInitializer_onConditionsChangedCallback = new WeakMap(), _UmbBaseExtensionInitializer_instances = new WeakSet(), _UmbBaseExtensionInitializer_cleanConditions = function _UmbBaseExtensionInitializer_cleanConditions() {
167
- if (__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_conditionControllers, "f").length === 0)
193
+ if (__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_conditionControllers, "f") === undefined || __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_conditionControllers, "f").length === 0)
168
194
  return;
169
195
  __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_conditionControllers, "f").forEach((controller) => controller.destroy());
170
196
  __classPrivateFieldSet(this, _UmbBaseExtensionInitializer_conditionControllers, [], "f");
171
197
  this.removeControllerByAlias('_observeConditions');
172
198
  }, _UmbBaseExtensionInitializer_gotManifest = function _UmbBaseExtensionInitializer_gotManifest() {
173
- const conditionConfigs = __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_manifest, "f")?.conditions ?? [];
199
+ if (!__classPrivateFieldGet(this, _UmbBaseExtensionInitializer_manifest, "f"))
200
+ return;
201
+ const conditionConfigs = __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_manifest, "f").conditions ?? [];
174
202
  // As conditionConfigs might have been configured as something else than an array, then we ignorer them.
175
203
  if (conditionConfigs.length === 0) {
176
204
  __classPrivateFieldGet(this, _UmbBaseExtensionInitializer_instances, "m", _UmbBaseExtensionInitializer_cleanConditions).call(this);
@@ -18,11 +18,11 @@ export type PermittedControllerType<ControllerType extends {
18
18
  export declare abstract class UmbBaseExtensionsInitializer<ManifestTypes extends ManifestBase, ManifestTypeName extends keyof ManifestTypeMap<ManifestTypes> | string, ManifestType extends ManifestBase = SpecificManifestTypeOrManifestBase<ManifestTypes, ManifestTypeName>, ControllerType extends UmbBaseExtensionInitializer<ManifestType> = UmbBaseExtensionInitializer<ManifestType>, MyPermittedControllerType extends ControllerType = PermittedControllerType<ControllerType>> extends UmbBaseController {
19
19
  #private;
20
20
  protected _extensions: Array<ControllerType>;
21
- private _permittedExts;
22
21
  asPromise(): Promise<void>;
23
- constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry<ManifestType>, type: ManifestTypeName | Array<ManifestTypeName>, filter: undefined | null | ((manifest: ManifestType) => boolean), onChange?: (permittedManifests: Array<MyPermittedControllerType>) => void);
22
+ constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry<ManifestType>, type: ManifestTypeName | Array<ManifestTypeName>, filter: undefined | null | ((manifest: ManifestType) => boolean), onChange?: (permittedManifests: Array<MyPermittedControllerType>) => void, controllerAlias?: string);
24
23
  protected _init(): void;
25
24
  protected abstract _createController(manifest: ManifestType): ControllerType;
26
25
  protected _extensionChanged: (isPermitted: boolean, controller: ControllerType) => void;
26
+ hostDisconnected(): void;
27
27
  destroy(): void;
28
28
  }
@@ -9,7 +9,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
10
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
11
  };
12
- var _UmbBaseExtensionsInitializer_instances, _UmbBaseExtensionsInitializer_promiseResolvers, _UmbBaseExtensionsInitializer_extensionRegistry, _UmbBaseExtensionsInitializer_type, _UmbBaseExtensionsInitializer_filter, _UmbBaseExtensionsInitializer_onChange, _UmbBaseExtensionsInitializer_gotManifests, _UmbBaseExtensionsInitializer_removeOverwrittenExtensions;
12
+ var _UmbBaseExtensionsInitializer_instances, _UmbBaseExtensionsInitializer_promiseResolvers, _UmbBaseExtensionsInitializer_extensionRegistry, _UmbBaseExtensionsInitializer_type, _UmbBaseExtensionsInitializer_filter, _UmbBaseExtensionsInitializer_onChange, _UmbBaseExtensionsInitializer_permittedExts, _UmbBaseExtensionsInitializer_exposedPermittedExts, _UmbBaseExtensionsInitializer_changeDebounce, _UmbBaseExtensionsInitializer_gotManifests, _UmbBaseExtensionsInitializer_notifyChange, _UmbBaseExtensionsInitializer_removeOverwrittenExtensions;
13
13
  import { map } from '../../../external/rxjs/index.js';
14
14
  import { UmbBaseController } from '../../class-api/index.js';
15
15
  /**
@@ -23,11 +23,11 @@ import { UmbBaseController } from '../../class-api/index.js';
23
23
  export class UmbBaseExtensionsInitializer extends UmbBaseController {
24
24
  asPromise() {
25
25
  return new Promise((resolve) => {
26
- this._permittedExts.length > 0 ? resolve() : __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_promiseResolvers, "f").push(resolve);
26
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_permittedExts, "f").length > 0 ? resolve() : __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_promiseResolvers, "f").push(resolve);
27
27
  });
28
28
  }
29
- constructor(host, extensionRegistry, type, filter, onChange) {
30
- super(host, 'extensionsInitializer_' + (Array.isArray(type) ? type.join('_') : type));
29
+ constructor(host, extensionRegistry, type, filter, onChange, controllerAlias) {
30
+ super(host, controllerAlias ?? 'extensionsInitializer_' + (Array.isArray(type) ? type.join('_') : type));
31
31
  _UmbBaseExtensionsInitializer_instances.add(this);
32
32
  _UmbBaseExtensionsInitializer_promiseResolvers.set(this, []);
33
33
  _UmbBaseExtensionsInitializer_extensionRegistry.set(this, void 0);
@@ -35,7 +35,9 @@ export class UmbBaseExtensionsInitializer extends UmbBaseController {
35
35
  _UmbBaseExtensionsInitializer_filter.set(this, void 0);
36
36
  _UmbBaseExtensionsInitializer_onChange.set(this, void 0);
37
37
  this._extensions = [];
38
- this._permittedExts = [];
38
+ _UmbBaseExtensionsInitializer_permittedExts.set(this, []);
39
+ _UmbBaseExtensionsInitializer_exposedPermittedExts.set(this, []);
40
+ _UmbBaseExtensionsInitializer_changeDebounce.set(this, void 0);
39
41
  _UmbBaseExtensionsInitializer_gotManifests.set(this, (manifests) => {
40
42
  if (!manifests) {
41
43
  // Clean up:
@@ -44,6 +46,7 @@ export class UmbBaseExtensionsInitializer extends UmbBaseController {
44
46
  });
45
47
  this._extensions.length = 0;
46
48
  // _permittedExts should have been cleared via the destroy callbacks.
49
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_permittedExts, "f").length = 0;
47
50
  return;
48
51
  }
49
52
  // Clean up extensions that are no longer.
@@ -69,41 +72,49 @@ export class UmbBaseExtensionsInitializer extends UmbBaseController {
69
72
  });
70
73
  this._extensionChanged = (isPermitted, controller) => {
71
74
  let hasChanged = false;
72
- const existingIndex = this._permittedExts.indexOf(controller);
75
+ // This might be called after this is destroyed, so we need to check if the _permittedExts is still available:
76
+ const existingIndex = __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_permittedExts, "f")?.indexOf(controller);
73
77
  if (isPermitted) {
74
78
  if (existingIndex === -1) {
75
- this._permittedExts.push(controller);
79
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_permittedExts, "f").push(controller);
76
80
  hasChanged = true;
77
81
  }
78
82
  }
79
83
  else {
80
- if (existingIndex !== -1) {
81
- this._permittedExts.splice(existingIndex, 1);
84
+ if (existingIndex >= 0) {
85
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_permittedExts, "f").splice(existingIndex, 1);
82
86
  hasChanged = true;
83
87
  }
84
88
  }
85
89
  if (hasChanged) {
86
- // The final list of permitted extensions to be displayed, this will be stripped from extensions that are overwritten by another extension and sorted accordingly.
87
- const exposedPermittedExts = [...this._permittedExts];
88
- // Removal of overwritten extensions:
89
- this._permittedExts.forEach((extCtrl) => {
90
- // Check if it overwrites another extension:
91
- // if so, look up the extension it overwrites, and remove it from the list. and check that for if it overwrites another extension and so on.
92
- if (extCtrl.overwrites.length > 0) {
93
- extCtrl.overwrites.forEach((overwrite) => {
94
- __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_instances, "m", _UmbBaseExtensionsInitializer_removeOverwrittenExtensions).call(this, exposedPermittedExts, overwrite);
95
- });
96
- }
97
- });
98
- // Sorting:
99
- exposedPermittedExts.sort((a, b) => b.weight - a.weight);
100
- if (exposedPermittedExts.length > 0) {
101
- __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_promiseResolvers, "f").forEach((x) => x());
102
- __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_promiseResolvers, [], "f");
90
+ if (!__classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_changeDebounce, "f")) {
91
+ __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_changeDebounce, requestAnimationFrame(__classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_notifyChange, "f")), "f");
103
92
  }
104
- __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_onChange, "f")?.call(this, exposedPermittedExts);
105
93
  }
106
94
  };
95
+ _UmbBaseExtensionsInitializer_notifyChange.set(this, () => {
96
+ __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_changeDebounce, undefined, "f");
97
+ // The final list of permitted extensions to be displayed, this will be stripped from extensions that are overwritten by another extension and sorted accordingly.
98
+ __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_exposedPermittedExts, [...__classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_permittedExts, "f")], "f");
99
+ // Removal of overwritten extensions:
100
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_permittedExts, "f").forEach((extCtrl) => {
101
+ // Check if it overwrites another extension:
102
+ // if so, look up the extension it overwrites, and remove it from the list. and check that for if it overwrites another extension and so on.
103
+ if (extCtrl.overwrites.length > 0) {
104
+ extCtrl.overwrites.forEach((overwrite) => {
105
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_instances, "m", _UmbBaseExtensionsInitializer_removeOverwrittenExtensions).call(this, __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_exposedPermittedExts, "f"), overwrite);
106
+ });
107
+ }
108
+ });
109
+ // Sorting:
110
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_exposedPermittedExts, "f").sort((a, b) => b.weight - a.weight);
111
+ if (__classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_exposedPermittedExts, "f").length > 0) {
112
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_promiseResolvers, "f").forEach((x) => x());
113
+ __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_promiseResolvers, [], "f");
114
+ }
115
+ // Collect change calls.
116
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_onChange, "f")?.call(this, __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_exposedPermittedExts, "f"));
117
+ });
107
118
  __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_extensionRegistry, extensionRegistry, "f");
108
119
  __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_type, type, "f");
109
120
  __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_filter, filter, "f");
@@ -118,22 +129,35 @@ export class UmbBaseExtensionsInitializer extends UmbBaseController {
118
129
  }
119
130
  this.observe(source, __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_gotManifests, "f"), '_observeManifests');
120
131
  }
132
+ hostDisconnected() {
133
+ super.hostDisconnected();
134
+ if (__classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_changeDebounce, "f")) {
135
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_notifyChange, "f").call(this);
136
+ }
137
+ }
121
138
  destroy() {
122
139
  // The this.#extensionRegistry is an indication of wether this is already destroyed.
123
140
  if (!__classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_extensionRegistry, "f"))
124
141
  return;
125
- const oldPermittedExtsLength = this._permittedExts.length;
126
- this._extensions.length = 0;
127
- this._permittedExts.length = 0;
142
+ const oldPermittedExtsLength = __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_exposedPermittedExts, "f").length;
143
+ this._extensions = undefined;
144
+ __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_permittedExts, undefined, "f");
145
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_exposedPermittedExts, "f").length = 0;
146
+ if (__classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_changeDebounce, "f")) {
147
+ cancelAnimationFrame(__classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_changeDebounce, "f"));
148
+ __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_changeDebounce, undefined, "f");
149
+ }
128
150
  if (oldPermittedExtsLength > 0) {
129
- __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_onChange, "f")?.call(this, this._permittedExts);
151
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_onChange, "f")?.call(this, __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_exposedPermittedExts, "f"));
130
152
  }
153
+ __classPrivateFieldGet(this, _UmbBaseExtensionsInitializer_promiseResolvers, "f").length = 0;
154
+ __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_filter, undefined, "f");
131
155
  __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_onChange, undefined, "f");
132
156
  __classPrivateFieldSet(this, _UmbBaseExtensionsInitializer_extensionRegistry, undefined, "f");
133
157
  super.destroy();
134
158
  }
135
159
  }
136
- _UmbBaseExtensionsInitializer_promiseResolvers = new WeakMap(), _UmbBaseExtensionsInitializer_extensionRegistry = new WeakMap(), _UmbBaseExtensionsInitializer_type = new WeakMap(), _UmbBaseExtensionsInitializer_filter = new WeakMap(), _UmbBaseExtensionsInitializer_onChange = new WeakMap(), _UmbBaseExtensionsInitializer_gotManifests = new WeakMap(), _UmbBaseExtensionsInitializer_instances = new WeakSet(), _UmbBaseExtensionsInitializer_removeOverwrittenExtensions = function _UmbBaseExtensionsInitializer_removeOverwrittenExtensions(list, alias) {
160
+ _UmbBaseExtensionsInitializer_promiseResolvers = new WeakMap(), _UmbBaseExtensionsInitializer_extensionRegistry = new WeakMap(), _UmbBaseExtensionsInitializer_type = new WeakMap(), _UmbBaseExtensionsInitializer_filter = new WeakMap(), _UmbBaseExtensionsInitializer_onChange = new WeakMap(), _UmbBaseExtensionsInitializer_permittedExts = new WeakMap(), _UmbBaseExtensionsInitializer_exposedPermittedExts = new WeakMap(), _UmbBaseExtensionsInitializer_changeDebounce = new WeakMap(), _UmbBaseExtensionsInitializer_gotManifests = new WeakMap(), _UmbBaseExtensionsInitializer_notifyChange = new WeakMap(), _UmbBaseExtensionsInitializer_instances = new WeakSet(), _UmbBaseExtensionsInitializer_removeOverwrittenExtensions = function _UmbBaseExtensionsInitializer_removeOverwrittenExtensions(list, alias) {
137
161
  const index = list.findIndex((a) => a.alias === alias);
138
162
  if (index !== -1) {
139
163
  const entry = list[index];
@@ -39,4 +39,5 @@ export declare class UmbExtensionApiInitializer<ManifestType extends ManifestApi
39
39
  constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry<ManifestCondition>, alias: string, constructorArguments: Array<unknown> | undefined, onPermissionChanged?: (isPermitted: boolean, controller: ControllerType) => void);
40
40
  protected _conditionsAreGood(): Promise<boolean>;
41
41
  protected _conditionsAreBad(): Promise<void>;
42
+ destroy(): void;
42
43
  }
@@ -98,5 +98,9 @@ export class UmbExtensionApiInitializer extends UmbBaseExtensionInitializer {
98
98
  __classPrivateFieldSet(this, _UmbExtensionApiInitializer_api, undefined, "f");
99
99
  }
100
100
  }
101
+ destroy() {
102
+ super.destroy();
103
+ __classPrivateFieldSet(this, _UmbExtensionApiInitializer_constructorArguments, undefined, "f");
104
+ }
101
105
  }
102
106
  _UmbExtensionApiInitializer_api = new WeakMap(), _UmbExtensionApiInitializer_constructorArguments = new WeakMap();
@@ -26,4 +26,5 @@ export declare class UmbExtensionElementInitializer<ManifestType extends Manifes
26
26
  constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry<ManifestCondition>, alias: string, onPermissionChanged: (isPermitted: boolean, controller: ControllerType) => void, defaultElement?: string);
27
27
  protected _conditionsAreGood(): Promise<boolean>;
28
28
  protected _conditionsAreBad(): Promise<void>;
29
+ destroy(): void;
29
30
  }
@@ -97,5 +97,9 @@ export class UmbExtensionElementInitializer extends UmbBaseExtensionInitializer
97
97
  __classPrivateFieldSet(this, _UmbExtensionElementInitializer_component, undefined, "f");
98
98
  }
99
99
  }
100
+ destroy() {
101
+ super.destroy();
102
+ __classPrivateFieldSet(this, _UmbExtensionElementInitializer_properties, undefined, "f");
103
+ }
100
104
  }
101
105
  _UmbExtensionElementInitializer_defaultElement = new WeakMap(), _UmbExtensionElementInitializer_component = new WeakMap(), _UmbExtensionElementInitializer_properties = new WeakMap(), _UmbExtensionElementInitializer_assignProperties = new WeakMap();
@@ -17,6 +17,7 @@ TODO: Correct this, start using builder pattern:
17
17
  */
18
18
  export declare class UmbExtensionsApiInitializer<ManifestTypes extends ManifestApi, ManifestTypeName extends keyof ManifestTypeMap<ManifestTypes> | string = string, ManifestType extends ManifestBase = SpecificManifestTypeOrManifestBase<ManifestTypes, ManifestTypeName>, ManifestTypeAsApi extends ManifestApi = ManifestType extends ManifestApi ? ManifestType : never, ControllerType extends UmbExtensionApiInitializer<ManifestTypeAsApi> = UmbExtensionApiInitializer<ManifestTypeAsApi>, MyPermittedControllerType extends ControllerType = PermittedControllerType<ControllerType>> extends UmbBaseExtensionsInitializer<ManifestTypes, ManifestTypeName, ManifestTypeAsApi, ControllerType, MyPermittedControllerType> {
19
19
  #private;
20
- constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry<ManifestTypes>, type: ManifestTypeName | Array<ManifestTypeName>, constructorArguments: Array<unknown> | undefined, filter?: undefined | null | ((manifest: ManifestTypeAsApi) => boolean), onChange?: (permittedManifests: Array<MyPermittedControllerType>) => void);
20
+ constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry<ManifestTypes>, type: ManifestTypeName | Array<ManifestTypeName>, constructorArguments: Array<unknown> | undefined, filter?: undefined | null | ((manifest: ManifestTypeAsApi) => boolean), onChange?: (permittedManifests: Array<MyPermittedControllerType>) => void, controllerAlias?: string);
21
21
  protected _createController(manifest: ManifestTypeAsApi): ControllerType;
22
+ destroy(): void;
22
23
  }
@@ -25,8 +25,8 @@ TODO: Correct this, start using builder pattern:
25
25
  * @class UmbExtensionsApiInitializer
26
26
  */
27
27
  export class UmbExtensionsApiInitializer extends UmbBaseExtensionsInitializer {
28
- constructor(host, extensionRegistry, type, constructorArguments, filter, onChange) {
29
- super(host, extensionRegistry, type, filter, onChange);
28
+ constructor(host, extensionRegistry, type, constructorArguments, filter, onChange, controllerAlias) {
29
+ super(host, extensionRegistry, type, filter, onChange, controllerAlias);
30
30
  //
31
31
  _UmbExtensionsApiInitializer_extensionRegistry.set(this, void 0);
32
32
  /*
@@ -51,5 +51,10 @@ export class UmbExtensionsApiInitializer extends UmbBaseExtensionsInitializer {
51
51
  const extController = new UmbExtensionApiInitializer(this, __classPrivateFieldGet(this, _UmbExtensionsApiInitializer_extensionRegistry, "f"), manifest.alias, __classPrivateFieldGet(this, _UmbExtensionsApiInitializer_constructorArgs, "f"), this._extensionChanged);
52
52
  return extController;
53
53
  }
54
+ destroy() {
55
+ super.destroy();
56
+ __classPrivateFieldSet(this, _UmbExtensionsApiInitializer_constructorArgs, undefined, "f");
57
+ __classPrivateFieldSet(this, _UmbExtensionsApiInitializer_extensionRegistry, undefined, "f");
58
+ }
54
59
  }
55
60
  _UmbExtensionsApiInitializer_extensionRegistry = new WeakMap(), _UmbExtensionsApiInitializer_constructorArgs = new WeakMap();
@@ -10,6 +10,7 @@ export declare class UmbExtensionsElementInitializer<ManifestTypes extends Manif
10
10
  #private;
11
11
  get properties(): Record<string, unknown> | undefined;
12
12
  set properties(props: Record<string, unknown> | undefined);
13
- constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry<ManifestTypes>, type: ManifestTypeName | Array<ManifestTypeName>, filter: undefined | null | ((manifest: ManifestType) => boolean), onChange: (permittedManifests: Array<MyPermittedControllerType>) => void, defaultElement?: string);
13
+ constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry<ManifestTypes>, type: ManifestTypeName | Array<ManifestTypeName>, filter: undefined | null | ((manifest: ManifestType) => boolean), onChange: (permittedManifests: Array<MyPermittedControllerType>) => void, controllerAlias?: string, defaultElement?: string);
14
14
  protected _createController(manifest: ManifestType): ControllerType;
15
+ destroy(): void;
15
16
  }
@@ -24,8 +24,8 @@ export class UmbExtensionsElementInitializer extends UmbBaseExtensionsInitialize
24
24
  controller.properties = props;
25
25
  });
26
26
  }
27
- constructor(host, extensionRegistry, type, filter, onChange, defaultElement) {
28
- super(host, extensionRegistry, type, filter, onChange);
27
+ constructor(host, extensionRegistry, type, filter, onChange, controllerAlias, defaultElement) {
28
+ super(host, extensionRegistry, type, filter, onChange, controllerAlias);
29
29
  //
30
30
  _UmbExtensionsElementInitializer_extensionRegistry.set(this, void 0);
31
31
  _UmbExtensionsElementInitializer_defaultElement.set(this, void 0);
@@ -39,5 +39,10 @@ export class UmbExtensionsElementInitializer extends UmbBaseExtensionsInitialize
39
39
  extController.properties = __classPrivateFieldGet(this, _UmbExtensionsElementInitializer_props, "f");
40
40
  return extController;
41
41
  }
42
+ destroy() {
43
+ super.destroy();
44
+ __classPrivateFieldSet(this, _UmbExtensionsElementInitializer_props, undefined, "f");
45
+ __classPrivateFieldSet(this, _UmbExtensionsElementInitializer_extensionRegistry, undefined, "f");
46
+ }
42
47
  }
43
48
  _UmbExtensionsElementInitializer_extensionRegistry = new WeakMap(), _UmbExtensionsElementInitializer_defaultElement = new WeakMap(), _UmbExtensionsElementInitializer_props = new WeakMap();
@@ -7,6 +7,7 @@ import type { UmbControllerHost } from '../../controller-api/index.js';
7
7
  */
8
8
  export declare class UmbExtensionsManifestInitializer<ManifestTypes extends ManifestBase, ManifestTypeName extends keyof ManifestTypeMap<ManifestTypes> | string, ManifestType extends ManifestBase = SpecificManifestTypeOrManifestBase<ManifestTypes, ManifestTypeName>, ControllerType extends UmbExtensionManifestInitializer<ManifestType> = UmbExtensionManifestInitializer<ManifestType>, MyPermittedControllerType extends ControllerType = PermittedControllerType<ControllerType>> extends UmbBaseExtensionsInitializer<ManifestTypes, ManifestTypeName, ManifestType, ControllerType, MyPermittedControllerType> {
9
9
  #private;
10
- constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry<ManifestTypes>, type: ManifestTypeName | Array<ManifestTypeName>, filter: null | ((manifest: ManifestType) => boolean), onChange: (permittedManifests: Array<MyPermittedControllerType>) => void);
10
+ constructor(host: UmbControllerHost, extensionRegistry: UmbExtensionRegistry<ManifestTypes>, type: ManifestTypeName | Array<ManifestTypeName>, filter: null | ((manifest: ManifestType) => boolean), onChange: (permittedManifests: Array<MyPermittedControllerType>) => void, controllerAlias?: string);
11
11
  protected _createController(manifest: ManifestType): ControllerType;
12
+ destroy(): void;
12
13
  }
@@ -15,8 +15,8 @@ import { UmbBaseExtensionsInitializer, } from './base-extensions-initializer.con
15
15
  /**
16
16
  */
17
17
  export class UmbExtensionsManifestInitializer extends UmbBaseExtensionsInitializer {
18
- constructor(host, extensionRegistry, type, filter, onChange) {
19
- super(host, extensionRegistry, type, filter, onChange);
18
+ constructor(host, extensionRegistry, type, filter, onChange, controllerAlias) {
19
+ super(host, extensionRegistry, type, filter, onChange, controllerAlias);
20
20
  //
21
21
  _UmbExtensionsManifestInitializer_extensionRegistry.set(this, void 0);
22
22
  __classPrivateFieldSet(this, _UmbExtensionsManifestInitializer_extensionRegistry, extensionRegistry, "f");
@@ -25,5 +25,9 @@ export class UmbExtensionsManifestInitializer extends UmbBaseExtensionsInitializ
25
25
  _createController(manifest) {
26
26
  return new UmbExtensionManifestInitializer(this, __classPrivateFieldGet(this, _UmbExtensionsManifestInitializer_extensionRegistry, "f"), manifest.alias, this._extensionChanged);
27
27
  }
28
+ destroy() {
29
+ super.destroy();
30
+ __classPrivateFieldSet(this, _UmbExtensionsManifestInitializer_extensionRegistry, undefined, "f");
31
+ }
28
32
  }
29
33
  _UmbExtensionsManifestInitializer_extensionRegistry = new WeakMap();
@@ -47,7 +47,7 @@ export class UmbLocalizationController {
47
47
  umbLocalizationManager.removeConsumer(this);
48
48
  }
49
49
  destroy() {
50
- __classPrivateFieldGet(this, _UmbLocalizationController_host, "f").removeController(this);
50
+ __classPrivateFieldGet(this, _UmbLocalizationController_host, "f")?.removeController(this);
51
51
  __classPrivateFieldSet(this, _UmbLocalizationController_hostEl, undefined, "f");
52
52
  }
53
53
  documentUpdate() {
@@ -32,8 +32,9 @@ export class UmbObserverController extends UmbObserver {
32
32
  host.addController(this);
33
33
  }
34
34
  destroy() {
35
+ __classPrivateFieldGet(this, _UmbObserverController_host, "f")?.removeController(this);
36
+ __classPrivateFieldSet(this, _UmbObserverController_host, undefined, "f");
35
37
  super.destroy();
36
- __classPrivateFieldGet(this, _UmbObserverController_host, "f").removeController(this);
37
38
  }
38
39
  }
39
40
  _UmbObserverController_host = new WeakMap(), _UmbObserverController_alias = new WeakMap();
@@ -52,8 +52,9 @@ export class UmbObserver {
52
52
  }
53
53
  }
54
54
  hostDisconnected() {
55
- // No cause then it cant re-connect, if the same element just was moved in DOM.
56
- //this.#subscription.unsubscribe();
55
+ // No cause then it cant re-connect, if the same element just was moved in DOM. [NL]
56
+ // I do not agree with my self anymore ^^. I think we should unsubscribe here, to help garbage collector and prevent unforeseen side effects of observations continuing while element are out of the DOM. [NL]
57
+ __classPrivateFieldGet(this, _UmbObserver_subscription, "f")?.unsubscribe();
57
58
  }
58
59
  destroy() {
59
60
  if (__classPrivateFieldGet(this, _UmbObserver_subscription, "f")) {
@@ -151,4 +151,5 @@ export declare class UmbArrayState<T> extends UmbDeepState<T[]> {
151
151
  * myState.updateOne(2, {value: 'updated-bar'});
152
152
  */
153
153
  updateOne(unique: unknown, entry: Partial<T>): this;
154
+ destroy(): void;
154
155
  }
@@ -246,5 +246,10 @@ export class UmbArrayState extends UmbDeepState {
246
246
  this.setValue(partialUpdateFrozenArray(this.getValue(), entry, (x) => unique === this.getUniqueMethod(x)));
247
247
  return this;
248
248
  }
249
+ destroy() {
250
+ super.destroy();
251
+ __classPrivateFieldSet(this, _UmbArrayState_sortMethod, undefined, "f");
252
+ this.getUniqueMethod = undefined;
253
+ }
249
254
  }
250
255
  _UmbArrayState_sortMethod = new WeakMap();
@@ -50,7 +50,8 @@ export class UmbBasicState {
50
50
  * @description - Destroys this state and completes all observations made to it.
51
51
  */
52
52
  destroy() {
53
- this._subject.complete();
53
+ this._subject?.complete();
54
+ this._subject = undefined;
54
55
  }
55
56
  /**
56
57
  * @method setValue
@@ -63,7 +64,7 @@ export class UmbBasicState {
63
64
  * // myState.value is equal 'Goodnight'.
64
65
  */
65
66
  setValue(data) {
66
- if (data !== this._subject.getValue()) {
67
+ if (this._subject && data !== this._subject.getValue()) {
67
68
  this._subject.next(data);
68
69
  }
69
70
  }
@@ -15,6 +15,8 @@ export class UmbClassState extends UmbBasicState {
15
15
  * @description - Set the data of this state, if data is different than current this will trigger observations to update.
16
16
  */
17
17
  setValue(data) {
18
+ if (!this._subject)
19
+ return;
18
20
  const oldValue = this._subject.getValue();
19
21
  if (data && oldValue?.equal(data))
20
22
  return;