@umbraco-cms/backoffice 14.0.0--preview007-772eb996 → 14.0.0--preview007-bcd459cf

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 (47) hide show
  1. package/dist-cms/custom-elements.json +98 -0
  2. package/dist-cms/mocks/data/dictionary/dictionary.data.js +6 -6
  3. package/dist-cms/mocks/data/document/document.db.js +1 -1
  4. package/dist-cms/mocks/data/language/language.data.js +2 -2
  5. package/dist-cms/mocks/handlers/dictionary/import-export.handlers.js +2 -2
  6. package/dist-cms/packages/core/components/index.d.ts +1 -0
  7. package/dist-cms/packages/core/components/index.js +1 -0
  8. package/dist-cms/packages/core/components/split-panel/index.d.ts +2 -0
  9. package/dist-cms/packages/core/components/split-panel/index.js +2 -0
  10. package/dist-cms/packages/core/components/split-panel/split-panel.element.d.ts +47 -0
  11. package/dist-cms/packages/core/components/split-panel/split-panel.element.js +298 -0
  12. package/dist-cms/packages/core/debug/debug.element.d.ts +1 -1
  13. package/dist-cms/packages/core/debug/debug.element.js +17 -16
  14. package/dist-cms/packages/core/extension-registry/collection/repository/extension-collection.repository.d.ts +8 -2
  15. package/dist-cms/packages/core/extension-registry/collection/repository/extension-collection.repository.js +4 -1
  16. package/dist-cms/packages/core/section/section-default.element.js +25 -10
  17. package/dist-cms/packages/documents/documents/entity-actions/manifests.js +2 -2
  18. package/dist-cms/packages/documents/documents/entity-actions/publish.action.d.ts +1 -0
  19. package/dist-cms/packages/documents/documents/entity-actions/publish.action.js +21 -3
  20. package/dist-cms/packages/documents/documents/entity-actions/unpublish.action.d.ts +1 -0
  21. package/dist-cms/packages/documents/documents/entity-actions/unpublish.action.js +21 -3
  22. package/dist-cms/packages/documents/documents/global-contexts/document-variant-manager.context.d.ts +34 -0
  23. package/dist-cms/packages/documents/documents/global-contexts/document-variant-manager.context.js +104 -0
  24. package/dist-cms/packages/documents/documents/global-contexts/index.d.ts +1 -0
  25. package/dist-cms/packages/documents/documents/global-contexts/index.js +1 -0
  26. package/dist-cms/packages/documents/documents/global-contexts/manifests.d.ts +2 -0
  27. package/dist-cms/packages/documents/documents/global-contexts/manifests.js +8 -0
  28. package/dist-cms/packages/documents/documents/manifests.js +2 -0
  29. package/dist-cms/packages/documents/documents/modals/variant-picker/document-variant-picker-modal.element.js +5 -0
  30. package/dist-cms/packages/documents/documents/modals/variant-picker/document-variant-picker-modal.token.js +0 -1
  31. package/dist-cms/packages/documents/documents/workspace/document-workspace-split-view.element.js +20 -12
  32. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.d.ts +1 -1
  33. package/dist-cms/packages/documents/documents/workspace/document-workspace.context.js +18 -42
  34. package/dist-cms/packages/language/app-language-select/app-language-select.element.js +2 -2
  35. package/dist-cms/packages/language/app-language-select/manifests.js +0 -6
  36. package/dist-cms/packages/language/{app-language-select → global-contexts}/app-language.context.d.ts +1 -0
  37. package/dist-cms/packages/language/{app-language-select → global-contexts}/app-language.context.js +1 -0
  38. package/dist-cms/packages/language/global-contexts/index.d.ts +1 -0
  39. package/dist-cms/packages/language/global-contexts/index.js +1 -0
  40. package/dist-cms/packages/language/global-contexts/manifests.d.ts +2 -0
  41. package/dist-cms/packages/language/global-contexts/manifests.js +8 -0
  42. package/dist-cms/packages/language/index.d.ts +1 -0
  43. package/dist-cms/packages/language/index.js +1 -0
  44. package/dist-cms/packages/language/manifests.js +2 -0
  45. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  46. package/dist-cms/vscode-html-custom-data.json +30 -0
  47. package/package.json +1 -1
@@ -2876,6 +2876,104 @@
2876
2876
  }
2877
2877
  ]
2878
2878
  },
2879
+ {
2880
+ "name": "umb-split-panel",
2881
+ "path": "./../src/packages/core/components/split-panel/split-panel.element.ts",
2882
+ "description": "Custom element for a split panel with adjustable divider.",
2883
+ "attributes": [
2884
+ {
2885
+ "name": "snap",
2886
+ "description": "Snap points for the divider position.\nPixel or percent space-separated values: e.g., \"100px 50% -75% -200px\".\nNegative values are relative to the end of the container.",
2887
+ "type": "string | undefined"
2888
+ },
2889
+ {
2890
+ "name": "lock",
2891
+ "description": "Locking mode for the split panel.\nPossible values: \"start\", \"end\", \"none\" (default).",
2892
+ "type": "\"start\" | \"end\" | \"none\"",
2893
+ "default": "\"none\""
2894
+ },
2895
+ {
2896
+ "name": "position",
2897
+ "description": "Initial position of the divider.\nPixel or percent value: e.g., \"100px\" or \"25%\".\nDefaults to a CSS variable if not set: \"var(--umb-split-panel-initial-position) which defaults to 50%\".",
2898
+ "type": "string",
2899
+ "default": "\"var(--umb-split-panel-initial-position)\""
2900
+ }
2901
+ ],
2902
+ "properties": [
2903
+ {
2904
+ "name": "mainElement",
2905
+ "type": "HTMLElement"
2906
+ },
2907
+ {
2908
+ "name": "dividerTouchAreaElement",
2909
+ "type": "HTMLElement"
2910
+ },
2911
+ {
2912
+ "name": "dividerElement",
2913
+ "type": "HTMLElement"
2914
+ },
2915
+ {
2916
+ "name": "snap",
2917
+ "attribute": "snap",
2918
+ "description": "Snap points for the divider position.\nPixel or percent space-separated values: e.g., \"100px 50% -75% -200px\".\nNegative values are relative to the end of the container.",
2919
+ "type": "string | undefined"
2920
+ },
2921
+ {
2922
+ "name": "lock",
2923
+ "attribute": "lock",
2924
+ "description": "Locking mode for the split panel.\nPossible values: \"start\", \"end\", \"none\" (default).",
2925
+ "type": "\"start\" | \"end\" | \"none\"",
2926
+ "default": "\"none\""
2927
+ },
2928
+ {
2929
+ "name": "position",
2930
+ "attribute": "position",
2931
+ "description": "Initial position of the divider.\nPixel or percent value: e.g., \"100px\" or \"25%\".\nDefaults to a CSS variable if not set: \"var(--umb-split-panel-initial-position) which defaults to 50%\".",
2932
+ "type": "string",
2933
+ "default": "\"var(--umb-split-panel-initial-position)\""
2934
+ },
2935
+ {
2936
+ "name": "styles",
2937
+ "default": "\"css`\\n\\t\\t:host {\\n\\t\\t\\tdisplay: contents;\\n\\t\\t\\t--umb-split-panel-initial-position: 50%;\\n\\t\\t\\t--umb-split-panel-start-min-width: 0;\\n\\t\\t\\t--umb-split-panel-end-min-width: 0;\\n\\n\\t\\t\\t--umb-split-panel-divider-touch-area-width: 20px;\\n\\t\\t\\t--umb-split-panel-divider-width: 1px;\\n\\t\\t\\t--umb-split-panel-divider-color: transparent;\\n\\t\\t}\\n\\t\\tslot {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\t\\t#main {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tz-index: 0;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t}\\n\\t\\t#divider {\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tz-index: 999999;\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t\\t#divider-touch-area {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\twidth: var(--umb-split-panel-divider-touch-area-width);\\n\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\tcursor: col-resize;\\n\\t\\t}\\n\\t\\t/* Do we want a line that shows the divider? */\\n\\t\\t#divider::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\twidth: var(--umb-split-panel-divider-width);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\ttransform: round(translateX(-50%));\\n\\t\\t\\tbackground-color: var(--umb-split-panel-divider-color);\\n\\t\\t\\tz-index: -1;\\n\\t\\t}\\n\\t`\""
2938
+ }
2939
+ ],
2940
+ "slots": [
2941
+ {
2942
+ "name": "start",
2943
+ "description": "Content for the start panel."
2944
+ },
2945
+ {
2946
+ "name": "end",
2947
+ "description": "Content for the end panel."
2948
+ }
2949
+ ],
2950
+ "cssProperties": [
2951
+ {
2952
+ "name": "--umb-split-panel-initial-position",
2953
+ "description": "Initial position of the divider."
2954
+ },
2955
+ {
2956
+ "name": "--umb-split-panel-start-min-width",
2957
+ "description": "Minimum width of the start panel."
2958
+ },
2959
+ {
2960
+ "name": "--umb-split-panel-end-min-width",
2961
+ "description": "Minimum width of the end panel."
2962
+ },
2963
+ {
2964
+ "name": "--umb-split-panel-divider-touch-area-width",
2965
+ "description": "Width of the divider touch area."
2966
+ },
2967
+ {
2968
+ "name": "--umb-split-panel-divider-width",
2969
+ "description": "Width of the divider."
2970
+ },
2971
+ {
2972
+ "name": "--umb-split-panel-divider-color",
2973
+ "description": "Color of the divider."
2974
+ }
2975
+ ]
2976
+ },
2879
2977
  {
2880
2978
  "name": "umb-table",
2881
2979
  "path": "./../src/packages/core/components/table/table.element.ts",
@@ -4,10 +4,10 @@ export const data = [
4
4
  id: 'aae7d0ab-53ba-485d-b8bd-12537f9925cb',
5
5
  parent: null,
6
6
  hasChildren: false,
7
- translatedIsoCodes: ['en'],
7
+ translatedIsoCodes: ['en-us'],
8
8
  translations: [
9
9
  {
10
- isoCode: 'en',
10
+ isoCode: 'en-us',
11
11
  translation: 'hello in en',
12
12
  },
13
13
  {
@@ -21,10 +21,10 @@ export const data = [
21
21
  id: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb',
22
22
  parent: null,
23
23
  hasChildren: true,
24
- translatedIsoCodes: ['en', 'da'],
24
+ translatedIsoCodes: ['en-us', 'da'],
25
25
  translations: [
26
26
  {
27
- isoCode: 'en',
27
+ isoCode: 'en-us',
28
28
  translation: 'Hello again in en',
29
29
  },
30
30
  {
@@ -38,10 +38,10 @@ export const data = [
38
38
  id: '438b8693-2156-482b-84af-ccdae0c2df6e',
39
39
  parent: { id: 'bbe7d0ab-53bb-485d-b8bd-12537f9925cb' },
40
40
  hasChildren: false,
41
- translatedIsoCodes: ['en', 'da'],
41
+ translatedIsoCodes: ['en-us', 'da'],
42
42
  translations: [
43
43
  {
44
- isoCode: 'en',
44
+ isoCode: 'en-us',
45
45
  translation: 'Nested Hello again in en',
46
46
  },
47
47
  {
@@ -24,7 +24,7 @@ export class UmbDocumentMockDB extends UmbEntityMockDbBase {
24
24
  return [];
25
25
  }
26
26
  getDomainsForDocument(id) {
27
- return { defaultIsoCode: 'en', domains: [] };
27
+ return { defaultIsoCode: 'en-us', domains: [] };
28
28
  }
29
29
  }
30
30
  const treeItemMapper = (model) => {
@@ -1,7 +1,7 @@
1
1
  export const data = [
2
2
  {
3
3
  name: 'English',
4
- isoCode: 'en',
4
+ isoCode: 'en-us',
5
5
  isDefault: true,
6
6
  isMandatory: true,
7
7
  },
@@ -10,6 +10,6 @@ export const data = [
10
10
  isoCode: 'da',
11
11
  isDefault: false,
12
12
  isMandatory: false,
13
- fallbackIsoCode: 'en',
13
+ fallbackIsoCode: 'en-us',
14
14
  },
15
15
  ];
@@ -7,10 +7,10 @@ const importResponse = {
7
7
  name: 'Uploaded dictionary',
8
8
  id: 'b7e7d0ab-53ba-485d-dddd-12537f9925cb',
9
9
  hasChildren: false,
10
- translatedIsoCodes: ['en', 'da'],
10
+ translatedIsoCodes: ['en-us', 'da'],
11
11
  translations: [
12
12
  {
13
- isoCode: 'en',
13
+ isoCode: 'en-us',
14
14
  translation: 'I am an imported US value',
15
15
  },
16
16
  {
@@ -27,5 +27,6 @@ export * from './input-upload-field/index.js';
27
27
  export * from './multiple-color-picker-input/index.js';
28
28
  export * from './multiple-text-string-input/index.js';
29
29
  export * from './popover-layout/index.js';
30
+ export * from './split-panel/index.js';
30
31
  export * from './table/index.js';
31
32
  export * from './tooltip-menu/index.js';
@@ -29,5 +29,6 @@ export * from './input-upload-field/index.js';
29
29
  export * from './multiple-color-picker-input/index.js';
30
30
  export * from './multiple-text-string-input/index.js';
31
31
  export * from './popover-layout/index.js';
32
+ export * from './split-panel/index.js';
32
33
  export * from './table/index.js';
33
34
  export * from './tooltip-menu/index.js';
@@ -0,0 +1,2 @@
1
+ import './split-panel.element.js';
2
+ export * from './split-panel.element.js';
@@ -0,0 +1,2 @@
1
+ import './split-panel.element.js';
2
+ export * from './split-panel.element.js';
@@ -0,0 +1,47 @@
1
+ import { type PropertyValueMap, LitElement } from '../../../../external/lit/index.js';
2
+ /**
3
+ * Custom element for a split panel with adjustable divider.
4
+ * @element umb-split-panel
5
+ * @slot start - Content for the start panel.
6
+ * @slot end - Content for the end panel.
7
+ * @cssprop --umb-split-panel-initial-position - Initial position of the divider.
8
+ * @cssprop --umb-split-panel-start-min-width - Minimum width of the start panel.
9
+ * @cssprop --umb-split-panel-end-min-width - Minimum width of the end panel.
10
+ * @cssprop --umb-split-panel-divider-touch-area-width - Width of the divider touch area.
11
+ * @cssprop --umb-split-panel-divider-width - Width of the divider.
12
+ * @cssprop --umb-split-panel-divider-color - Color of the divider.
13
+ */
14
+ export declare class UmbSplitPanelElement extends LitElement {
15
+ #private;
16
+ mainElement: HTMLElement;
17
+ dividerTouchAreaElement: HTMLElement;
18
+ dividerElement: HTMLElement;
19
+ /**
20
+ * Snap points for the divider position.
21
+ * Pixel or percent space-separated values: e.g., "100px 50% -75% -200px".
22
+ * Negative values are relative to the end of the container.
23
+ */
24
+ snap?: string;
25
+ /**
26
+ * Locking mode for the split panel.
27
+ * Possible values: "start", "end", "none" (default).
28
+ */
29
+ lock: 'start' | 'end' | 'none';
30
+ /**
31
+ * Initial position of the divider.
32
+ * Pixel or percent value: e.g., "100px" or "25%".
33
+ * Defaults to a CSS variable if not set: "var(--umb-split-panel-initial-position) which defaults to 50%".
34
+ */
35
+ position: string;
36
+ _hasStartPanel: boolean;
37
+ _hasEndPanel: boolean;
38
+ disconnectedCallback(): void;
39
+ protected updated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
40
+ render(): import("lit-html").TemplateResult<1>;
41
+ static styles: import("@lit/reactive-element/css-tag.js").CSSResult;
42
+ }
43
+ declare global {
44
+ interface HTMLElementTagNameMap {
45
+ 'umb-split-panel': UmbSplitPanelElement;
46
+ }
47
+ }
@@ -0,0 +1,298 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
13
+ if (kind === "m") throw new TypeError("Private method is not writable");
14
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
15
+ 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");
16
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
17
+ };
18
+ var _UmbSplitPanelElement_instances, _UmbSplitPanelElement_lockedPanelWidth, _UmbSplitPanelElement_resizeObserver, _UmbSplitPanelElement_SNAP_THRESHOLD, _UmbSplitPanelElement_hasBothPanels_get, _UmbSplitPanelElement_hasInitialized, _UmbSplitPanelElement_clamp, _UmbSplitPanelElement_onResize, _UmbSplitPanelElement_setPosition, _UmbSplitPanelElement_updateSplit, _UmbSplitPanelElement_onDragStart, _UmbSplitPanelElement_disconnect, _UmbSplitPanelElement_connect, _UmbSplitPanelElement_onSlotChanged;
19
+ import { LitElement, css, customElement, html, property, query, state, } from '../../../../external/lit/index.js';
20
+ /**
21
+ * Custom element for a split panel with adjustable divider.
22
+ * @element umb-split-panel
23
+ * @slot start - Content for the start panel.
24
+ * @slot end - Content for the end panel.
25
+ * @cssprop --umb-split-panel-initial-position - Initial position of the divider.
26
+ * @cssprop --umb-split-panel-start-min-width - Minimum width of the start panel.
27
+ * @cssprop --umb-split-panel-end-min-width - Minimum width of the end panel.
28
+ * @cssprop --umb-split-panel-divider-touch-area-width - Width of the divider touch area.
29
+ * @cssprop --umb-split-panel-divider-width - Width of the divider.
30
+ * @cssprop --umb-split-panel-divider-color - Color of the divider.
31
+ */
32
+ let UmbSplitPanelElement = class UmbSplitPanelElement extends LitElement {
33
+ constructor() {
34
+ super(...arguments);
35
+ _UmbSplitPanelElement_instances.add(this);
36
+ /**
37
+ * Locking mode for the split panel.
38
+ * Possible values: "start", "end", "none" (default).
39
+ */
40
+ this.lock = 'none';
41
+ /**
42
+ * Initial position of the divider.
43
+ * Pixel or percent value: e.g., "100px" or "25%".
44
+ * Defaults to a CSS variable if not set: "var(--umb-split-panel-initial-position) which defaults to 50%".
45
+ */
46
+ this.position = 'var(--umb-split-panel-initial-position)';
47
+ //TODO: Add support for negative values (relative to end of container) similar to snap points.
48
+ /** Width of the locked panel when in "start" or "end" lock mode */
49
+ _UmbSplitPanelElement_lockedPanelWidth.set(this, 0);
50
+ /** Resize observer for tracking container size changes. */
51
+ _UmbSplitPanelElement_resizeObserver.set(this, void 0);
52
+ /** Pixel value for the snap threshold. Determines how close the divider needs to be to a snap point to snap to it. */
53
+ _UmbSplitPanelElement_SNAP_THRESHOLD.set(this, 25);
54
+ this._hasStartPanel = false;
55
+ this._hasEndPanel = false;
56
+ _UmbSplitPanelElement_hasInitialized.set(this, false);
57
+ _UmbSplitPanelElement_onDragStart.set(this, (event) => {
58
+ event.preventDefault();
59
+ const move = (event) => {
60
+ const { clientX } = event;
61
+ const { left, width } = this.mainElement.getBoundingClientRect();
62
+ const localPos = __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_clamp).call(this, clientX - left, 0, width);
63
+ const mappedPos = mapXAxisToSnap(localPos, width);
64
+ __classPrivateFieldSet(this, _UmbSplitPanelElement_lockedPanelWidth, this.lock === 'start' ? mappedPos : width - mappedPos, "f");
65
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_setPosition).call(this, mappedPos);
66
+ };
67
+ function stop() {
68
+ document.removeEventListener('pointermove', move);
69
+ document.removeEventListener('pointerup', stop);
70
+ }
71
+ const mapXAxisToSnap = (xPos, containerWidth) => {
72
+ const snaps = this.snap?.split(' ');
73
+ if (!snaps)
74
+ return xPos;
75
+ const snapsInPixels = snaps.map((snap) => {
76
+ let snapPx = parseFloat(snap);
77
+ if (snap.endsWith('%')) {
78
+ snapPx = (snapPx / 100) * containerWidth;
79
+ }
80
+ if (snap.startsWith('-')) {
81
+ snapPx = containerWidth + snapPx;
82
+ }
83
+ return snapPx;
84
+ });
85
+ const closestSnap = snapsInPixels.reduce((prev, curr) => {
86
+ return Math.abs(curr - xPos) < Math.abs(prev - xPos) ? curr : prev;
87
+ });
88
+ if (closestSnap < xPos + __classPrivateFieldGet(this, _UmbSplitPanelElement_SNAP_THRESHOLD, "f") && closestSnap > xPos - __classPrivateFieldGet(this, _UmbSplitPanelElement_SNAP_THRESHOLD, "f")) {
89
+ xPos = closestSnap;
90
+ }
91
+ return xPos;
92
+ };
93
+ document.addEventListener('pointermove', move, { passive: true });
94
+ document.addEventListener('pointerup', stop);
95
+ });
96
+ }
97
+ disconnectedCallback() {
98
+ super.disconnectedCallback();
99
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_disconnect).call(this);
100
+ }
101
+ updated(_changedProperties) {
102
+ super.updated(_changedProperties);
103
+ if (!__classPrivateFieldGet(this, _UmbSplitPanelElement_hasInitialized, "f"))
104
+ return;
105
+ if (_changedProperties.has('position')) {
106
+ if (this.lock !== 'none') {
107
+ const { width } = this.mainElement.getBoundingClientRect();
108
+ let pos = parseFloat(this.position);
109
+ if (this.position.endsWith('%')) {
110
+ pos = (pos / 100) * width;
111
+ }
112
+ const lockedPanelWidth = this.lock === 'start' ? pos : width - pos;
113
+ __classPrivateFieldSet(this, _UmbSplitPanelElement_lockedPanelWidth, lockedPanelWidth, "f");
114
+ }
115
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_updateSplit).call(this);
116
+ }
117
+ }
118
+ render() {
119
+ console.log('render', this._hasStartPanel, this._hasEndPanel);
120
+ return html `
121
+ <div id="main">
122
+ <slot
123
+ name="start"
124
+ @slotchange=${__classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_onSlotChanged)}
125
+ style="width: ${this._hasStartPanel ? '100%' : '0'}"></slot>
126
+ <div id="divider">
127
+ <div id="divider-touch-area" tabindex="0"></div>
128
+ </div>
129
+ <slot name="end" @slotchange=${__classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_onSlotChanged)} style="width: ${this._hasEndPanel ? '100%' : '0'}"></slot>
130
+ </div>
131
+ `;
132
+ }
133
+ };
134
+ _UmbSplitPanelElement_lockedPanelWidth = new WeakMap();
135
+ _UmbSplitPanelElement_resizeObserver = new WeakMap();
136
+ _UmbSplitPanelElement_SNAP_THRESHOLD = new WeakMap();
137
+ _UmbSplitPanelElement_hasInitialized = new WeakMap();
138
+ _UmbSplitPanelElement_onDragStart = new WeakMap();
139
+ _UmbSplitPanelElement_instances = new WeakSet();
140
+ _UmbSplitPanelElement_hasBothPanels_get = function _UmbSplitPanelElement_hasBothPanels_get() {
141
+ return this._hasStartPanel && this._hasEndPanel;
142
+ };
143
+ _UmbSplitPanelElement_clamp = function _UmbSplitPanelElement_clamp(value, min, max) {
144
+ return Math.min(Math.max(value, min), max);
145
+ };
146
+ _UmbSplitPanelElement_onResize = function _UmbSplitPanelElement_onResize(entries) {
147
+ const mainContainerWidth = entries[0].contentRect.width;
148
+ if (this.lock === 'start') {
149
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_setPosition).call(this, __classPrivateFieldGet(this, _UmbSplitPanelElement_lockedPanelWidth, "f"));
150
+ }
151
+ if (this.lock === 'end') {
152
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_setPosition).call(this, mainContainerWidth - __classPrivateFieldGet(this, _UmbSplitPanelElement_lockedPanelWidth, "f"));
153
+ }
154
+ };
155
+ _UmbSplitPanelElement_setPosition = function _UmbSplitPanelElement_setPosition(pos) {
156
+ const { width } = this.mainElement.getBoundingClientRect();
157
+ const localPos = __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_clamp).call(this, pos, 0, width);
158
+ const percentagePos = (localPos / width) * 100;
159
+ this.position = percentagePos + '%';
160
+ };
161
+ _UmbSplitPanelElement_updateSplit = function _UmbSplitPanelElement_updateSplit() {
162
+ // If lock is none
163
+ let maxStartWidth = this.position;
164
+ let maxEndWidth = '1fr';
165
+ if (this.lock === 'start') {
166
+ maxStartWidth = __classPrivateFieldGet(this, _UmbSplitPanelElement_lockedPanelWidth, "f") + 'px';
167
+ maxEndWidth = `1fr`;
168
+ }
169
+ if (this.lock === 'end') {
170
+ maxStartWidth = `1fr`;
171
+ maxEndWidth = __classPrivateFieldGet(this, _UmbSplitPanelElement_lockedPanelWidth, "f") + 'px';
172
+ }
173
+ this.mainElement.style.gridTemplateColumns = `
174
+ minmax(var(--umb-split-panel-start-min-width), ${maxStartWidth})
175
+ 0px
176
+ minmax(var(--umb-split-panel-end-min-width), ${maxEndWidth})
177
+ `;
178
+ };
179
+ _UmbSplitPanelElement_disconnect = function _UmbSplitPanelElement_disconnect() {
180
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_resizeObserver, "f")?.unobserve(this);
181
+ this.dividerTouchAreaElement.removeEventListener('pointerdown', __classPrivateFieldGet(this, _UmbSplitPanelElement_onDragStart, "f"));
182
+ this.dividerTouchAreaElement.removeEventListener('touchstart', __classPrivateFieldGet(this, _UmbSplitPanelElement_onDragStart, "f"));
183
+ this.dividerElement.style.display = 'none';
184
+ this.mainElement.style.display = 'flex';
185
+ __classPrivateFieldSet(this, _UmbSplitPanelElement_hasInitialized, false, "f");
186
+ };
187
+ _UmbSplitPanelElement_connect = async function _UmbSplitPanelElement_connect() {
188
+ __classPrivateFieldSet(this, _UmbSplitPanelElement_hasInitialized, true, "f");
189
+ __classPrivateFieldSet(this, _UmbSplitPanelElement_resizeObserver, new ResizeObserver(__classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_onResize).bind(this)), "f");
190
+ this.mainElement.style.display = 'grid';
191
+ this.mainElement.style.gridTemplateColumns = `${this.position} 0px 1fr`;
192
+ this.dividerElement.style.display = 'unset';
193
+ this.dividerTouchAreaElement.addEventListener('pointerdown', __classPrivateFieldGet(this, _UmbSplitPanelElement_onDragStart, "f"));
194
+ this.dividerTouchAreaElement.addEventListener('touchstart', __classPrivateFieldGet(this, _UmbSplitPanelElement_onDragStart, "f"), { passive: false });
195
+ // Wait for the next frame to get the correct position of the divider.
196
+ await new Promise((resolve) => requestAnimationFrame(resolve));
197
+ const { left: dividerLeft } = this.shadowRoot.querySelector('#divider').getBoundingClientRect();
198
+ const { left: mainLeft, width: mainWidth } = this.mainElement.getBoundingClientRect();
199
+ const percentagePos = ((dividerLeft - mainLeft) / mainWidth) * 100;
200
+ this.position = `${percentagePos}%`;
201
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_resizeObserver, "f")?.observe(this);
202
+ };
203
+ _UmbSplitPanelElement_onSlotChanged = function _UmbSplitPanelElement_onSlotChanged(event) {
204
+ const slot = event.target;
205
+ const name = slot.name;
206
+ if (name === 'start') {
207
+ this._hasStartPanel = slot.assignedElements().length > 0;
208
+ }
209
+ if (name === 'end') {
210
+ this._hasEndPanel = slot.assignedElements().length > 0;
211
+ }
212
+ if (!__classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "a", _UmbSplitPanelElement_hasBothPanels_get)) {
213
+ if (__classPrivateFieldGet(this, _UmbSplitPanelElement_hasInitialized, "f")) {
214
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_disconnect).call(this);
215
+ }
216
+ return;
217
+ }
218
+ __classPrivateFieldGet(this, _UmbSplitPanelElement_instances, "m", _UmbSplitPanelElement_connect).call(this);
219
+ };
220
+ UmbSplitPanelElement.styles = css `
221
+ :host {
222
+ display: contents;
223
+ --umb-split-panel-initial-position: 50%;
224
+ --umb-split-panel-start-min-width: 0;
225
+ --umb-split-panel-end-min-width: 0;
226
+
227
+ --umb-split-panel-divider-touch-area-width: 20px;
228
+ --umb-split-panel-divider-width: 1px;
229
+ --umb-split-panel-divider-color: transparent;
230
+ }
231
+ slot {
232
+ overflow: hidden;
233
+ display: block;
234
+ }
235
+ #main {
236
+ width: 100%;
237
+ height: 100%;
238
+ display: flex;
239
+ position: relative;
240
+ z-index: 0;
241
+ overflow: hidden;
242
+ }
243
+ #divider {
244
+ height: 100%;
245
+ position: relative;
246
+ z-index: 999999;
247
+ display: none;
248
+ }
249
+ #divider-touch-area {
250
+ position: absolute;
251
+ top: 0;
252
+ left: 0;
253
+ height: 100%;
254
+ width: var(--umb-split-panel-divider-touch-area-width);
255
+ transform: translateX(-50%);
256
+ cursor: col-resize;
257
+ }
258
+ /* Do we want a line that shows the divider? */
259
+ #divider::after {
260
+ content: '';
261
+ position: absolute;
262
+ top: 0;
263
+ left: 50%;
264
+ width: var(--umb-split-panel-divider-width);
265
+ height: 100%;
266
+ transform: round(translateX(-50%));
267
+ background-color: var(--umb-split-panel-divider-color);
268
+ z-index: -1;
269
+ }
270
+ `;
271
+ __decorate([
272
+ query('#main')
273
+ ], UmbSplitPanelElement.prototype, "mainElement", void 0);
274
+ __decorate([
275
+ query('#divider-touch-area')
276
+ ], UmbSplitPanelElement.prototype, "dividerTouchAreaElement", void 0);
277
+ __decorate([
278
+ query('#divider')
279
+ ], UmbSplitPanelElement.prototype, "dividerElement", void 0);
280
+ __decorate([
281
+ property({ type: String })
282
+ ], UmbSplitPanelElement.prototype, "snap", void 0);
283
+ __decorate([
284
+ property({ type: String })
285
+ ], UmbSplitPanelElement.prototype, "lock", void 0);
286
+ __decorate([
287
+ property({ type: String, reflect: true })
288
+ ], UmbSplitPanelElement.prototype, "position", void 0);
289
+ __decorate([
290
+ state()
291
+ ], UmbSplitPanelElement.prototype, "_hasStartPanel", void 0);
292
+ __decorate([
293
+ state()
294
+ ], UmbSplitPanelElement.prototype, "_hasEndPanel", void 0);
295
+ UmbSplitPanelElement = __decorate([
296
+ customElement('umb-split-panel')
297
+ ], UmbSplitPanelElement);
298
+ export { UmbSplitPanelElement };
@@ -9,8 +9,8 @@ export declare class UmbDebugElement extends UmbLitElement {
9
9
  private _debugPaneOpen;
10
10
  private _modalContext?;
11
11
  constructor();
12
- connectedCallback(): void;
13
12
  render(): TemplateResult<1> | typeof nothing;
13
+ private _update;
14
14
  private _toggleDebugPane;
15
15
  private _openDialog;
16
16
  private _renderDialog;
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { UmbTextStyles } from '../../../shared/style/index.js';
8
- import { css, html, nothing, customElement, property, state } from '../../../external/lit/index.js';
8
+ import { css, html, nothing, customElement, property, state, repeat } from '../../../external/lit/index.js';
9
9
  import { contextData, UmbContextDebugRequest } from '../../../libs/context-api/index.js';
10
10
  import { UmbLitElement } from '../lit-element/index.js';
11
11
  import { UMB_CONTEXT_DEBUGGER_MODAL, UMB_MODAL_MANAGER_CONTEXT } from '../modal/index.js';
@@ -20,8 +20,15 @@ let UmbDebugElement = class UmbDebugElement extends UmbLitElement {
20
20
  this._modalContext = instance;
21
21
  });
22
22
  }
23
- connectedCallback() {
24
- super.connectedCallback();
23
+ render() {
24
+ if (this.visible) {
25
+ return this.dialog ? this._renderDialog() : this._renderPanel();
26
+ }
27
+ else {
28
+ return nothing;
29
+ }
30
+ }
31
+ _update() {
25
32
  // Dispatch it
26
33
  this.dispatchEvent(new UmbContextDebugRequest((contexts) => {
27
34
  // The Contexts are collected
@@ -32,18 +39,14 @@ let UmbDebugElement = class UmbDebugElement extends UmbLitElement {
32
39
  // Massage the data into a simplier array of objects
33
40
  // From a function in the context-api '
34
41
  this.contextData = contextData(contexts);
42
+ this.requestUpdate('contextData');
35
43
  }));
36
44
  }
37
- render() {
38
- if (this.visible) {
39
- return this.dialog ? this._renderDialog() : this._renderPanel();
40
- }
41
- else {
42
- return nothing;
43
- }
44
- }
45
45
  _toggleDebugPane() {
46
46
  this._debugPaneOpen = !this._debugPaneOpen;
47
+ if (this._debugPaneOpen) {
48
+ this._update();
49
+ }
47
50
  }
48
51
  _openDialog() {
49
52
  this._modalContext?.open(UMB_CONTEXT_DEBUGGER_MODAL, {
@@ -76,17 +79,15 @@ let UmbDebugElement = class UmbDebugElement extends UmbLitElement {
76
79
  </div>`;
77
80
  }
78
81
  _renderContextAliases() {
79
- const contextsTemplates = [];
80
- this.contextData.forEach((contextData) => {
81
- contextsTemplates.push(html ` <li>
82
+ return repeat(this.contextData, (contextData) => contextData.alias, (contextData) => {
83
+ return html ` <li>
82
84
  Context: <strong>${contextData.alias}</strong>
83
85
  <em>(${contextData.type})</em>
84
86
  <ul>
85
87
  ${this._renderInstance(contextData.data)}
86
88
  </ul>
87
- </li>`);
89
+ </li>`;
88
90
  });
89
- return contextsTemplates;
90
91
  }
91
92
  _renderInstance(instance) {
92
93
  const instanceTemplates = [];
@@ -1,10 +1,16 @@
1
+ import type { ManifestTypes } from '../../models/index.js';
1
2
  import { UmbRepositoryBase, type UmbCollectionRepository } from '../../../repository/index.js';
2
3
  import type { UmbControllerHost } from '../../../../../libs/controller-api/index.js';
4
+ export interface UmbExtensionCollectionFilter {
5
+ skip: number;
6
+ take: number;
7
+ type?: ManifestTypes['type'];
8
+ }
3
9
  export declare class UmbExtensionCollectionRepository extends UmbRepositoryBase implements UmbCollectionRepository {
4
10
  constructor(host: UmbControllerHost);
5
- requestCollection(filter: any): Promise<{
11
+ requestCollection(filter: UmbExtensionCollectionFilter): Promise<{
6
12
  data: {
7
- items: import("../../index.js").ManifestTypes[];
13
+ items: ManifestTypes[];
8
14
  total: number;
9
15
  };
10
16
  }>;