@omegagrid/bucket 0.10.2 → 0.10.4

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 (93) hide show
  1. package/dist/constants.d.ts +54 -0
  2. package/dist/constants.d.ts.map +1 -0
  3. package/dist/constants.js +12 -0
  4. package/dist/constants.js.map +1 -0
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +3 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/options.d.ts +12 -0
  10. package/dist/options.d.ts.map +1 -0
  11. package/dist/options.js +16 -0
  12. package/dist/options.js.map +1 -0
  13. package/dist/types.d.ts +87 -0
  14. package/dist/types.d.ts.map +1 -0
  15. package/dist/types.js +2 -0
  16. package/dist/types.js.map +1 -0
  17. package/dist/ui/bucket.alerts.d.ts +17 -0
  18. package/dist/ui/bucket.alerts.d.ts.map +1 -0
  19. package/dist/ui/bucket.alerts.js +47 -0
  20. package/dist/ui/bucket.alerts.js.map +1 -0
  21. package/dist/ui/bucket.components.d.ts +24 -0
  22. package/dist/ui/bucket.components.d.ts.map +1 -0
  23. package/dist/ui/bucket.components.js +111 -0
  24. package/dist/ui/bucket.components.js.map +1 -0
  25. package/dist/ui/bucket.d.ts +83 -0
  26. package/dist/ui/bucket.d.ts.map +1 -0
  27. package/dist/ui/bucket.dialogs.d.ts +11 -0
  28. package/dist/ui/bucket.dialogs.d.ts.map +1 -0
  29. package/dist/ui/bucket.dialogs.js +46 -0
  30. package/dist/ui/bucket.dialogs.js.map +1 -0
  31. package/dist/ui/bucket.js +372 -0
  32. package/dist/ui/bucket.js.map +1 -0
  33. package/dist/ui/bucket.sidebars.d.ts +15 -0
  34. package/dist/ui/bucket.sidebars.d.ts.map +1 -0
  35. package/dist/ui/bucket.sidebars.js +77 -0
  36. package/dist/ui/bucket.sidebars.js.map +1 -0
  37. package/dist/ui/bucket.style.d.ts +3 -0
  38. package/dist/ui/bucket.style.d.ts.map +1 -0
  39. package/dist/ui/bucket.style.js +90 -0
  40. package/dist/ui/bucket.style.js.map +1 -0
  41. package/dist/ui/bucketAlert.d.ts +20 -0
  42. package/dist/ui/bucketAlert.d.ts.map +1 -0
  43. package/dist/ui/bucketAlert.js +114 -0
  44. package/dist/ui/bucketAlert.js.map +1 -0
  45. package/dist/ui/bucketAlert.style.d.ts +2 -0
  46. package/dist/ui/bucketAlert.style.d.ts.map +1 -0
  47. package/dist/ui/bucketAlert.style.js +58 -0
  48. package/dist/ui/bucketAlert.style.js.map +1 -0
  49. package/dist/ui/bucketButton.d.ts +12 -0
  50. package/dist/ui/bucketButton.d.ts.map +1 -0
  51. package/dist/ui/bucketButton.js +105 -0
  52. package/dist/ui/bucketButton.js.map +1 -0
  53. package/dist/ui/commonMenus.d.ts +4 -0
  54. package/dist/ui/commonMenus.d.ts.map +1 -0
  55. package/dist/ui/commonMenus.js +7 -0
  56. package/dist/ui/commonMenus.js.map +1 -0
  57. package/dist/ui/componentHost.d.ts +19 -0
  58. package/dist/ui/componentHost.d.ts.map +1 -0
  59. package/dist/ui/componentHost.js +119 -0
  60. package/dist/ui/componentHost.js.map +1 -0
  61. package/dist/ui/index.d.ts +11 -0
  62. package/dist/ui/index.d.ts.map +1 -0
  63. package/dist/ui/index.js +11 -0
  64. package/dist/ui/index.js.map +1 -0
  65. package/dist/ui/modalSidebar.d.ts +22 -0
  66. package/dist/ui/modalSidebar.d.ts.map +1 -0
  67. package/dist/ui/modalSidebar.js +85 -0
  68. package/dist/ui/modalSidebar.js.map +1 -0
  69. package/dist/ui/modalSidebar.style.d.ts +3 -0
  70. package/dist/ui/modalSidebar.style.d.ts.map +1 -0
  71. package/dist/ui/modalSidebar.style.js +58 -0
  72. package/dist/ui/modalSidebar.style.js.map +1 -0
  73. package/dist/ui/path.d.ts +17 -0
  74. package/dist/ui/path.d.ts.map +1 -0
  75. package/dist/ui/path.js +97 -0
  76. package/dist/ui/path.js.map +1 -0
  77. package/dist/ui/sidebar.d.ts +15 -0
  78. package/dist/ui/sidebar.d.ts.map +1 -0
  79. package/dist/ui/sidebar.js +62 -0
  80. package/dist/ui/sidebar.js.map +1 -0
  81. package/dist/ui/sidemenu.d.ts +23 -0
  82. package/dist/ui/sidemenu.d.ts.map +1 -0
  83. package/dist/ui/sidemenu.js +135 -0
  84. package/dist/ui/sidemenu.js.map +1 -0
  85. package/dist/ui/top.d.ts +14 -0
  86. package/dist/ui/top.d.ts.map +1 -0
  87. package/dist/ui/top.js +64 -0
  88. package/dist/ui/top.js.map +1 -0
  89. package/dist/ui/top.style.d.ts +3 -0
  90. package/dist/ui/top.style.d.ts.map +1 -0
  91. package/dist/ui/top.style.js +35 -0
  92. package/dist/ui/top.style.js.map +1 -0
  93. package/package.json +6 -6
@@ -0,0 +1,54 @@
1
+ declare const _default: {
2
+ PREFIX: string;
3
+ DEFAULT_ACCENT_COLOR: string;
4
+ DEFAULT_ACCENT_COLOR_2: import("color")<string | number | import("color")<string | number | import("color")<string | number | import("color")<string | number | import("color")<string | number | import("color")<string | number | import("color")<string | number | import("color")<string | number | import("color")<string | number | import("color")<string | number | import("color")<string | number | import("color")<string | number | any | ArrayLike<number> | {
5
+ [key: string]: any;
6
+ }> | ArrayLike<number> | {
7
+ [key: string]: any;
8
+ }> | ArrayLike<number> | {
9
+ [key: string]: any;
10
+ }> | ArrayLike<number> | {
11
+ [key: string]: any;
12
+ }> | ArrayLike<number> | {
13
+ [key: string]: any;
14
+ }> | ArrayLike<number> | {
15
+ [key: string]: any;
16
+ }> | ArrayLike<number> | {
17
+ [key: string]: any;
18
+ }> | ArrayLike<number> | {
19
+ [key: string]: any;
20
+ }> | ArrayLike<number> | {
21
+ [key: string]: any;
22
+ }> | ArrayLike<number> | {
23
+ [key: string]: any;
24
+ }> | ArrayLike<number> | {
25
+ [key: string]: any;
26
+ }> | ArrayLike<number> | {
27
+ [key: string]: any;
28
+ }>;
29
+ SIZER_SIZE: number;
30
+ SLIDER_SIZE: number;
31
+ SLIDER_MIN_LENGTH: number;
32
+ EXPANDER_SIZE: number;
33
+ LIST_ITEM_HEIGHT: number;
34
+ LIST_RENDERING_TRESHOLD: number;
35
+ LIST_AUTOSCROLL_TRESHOLD: number;
36
+ LIST_AUTOSCROLL_DELAY: number;
37
+ DEFAULT_TEXT_HIGHLIGHT_COLOR: string;
38
+ TOOLTIP_MARGIN: number;
39
+ MENU_ITEM_HEIGHT: number;
40
+ COLORPICKER_COLOR_SIZE: number;
41
+ DEFAULT_NUMBER_FORMAT: string;
42
+ BUTTON_HEIGHT: number;
43
+ FONT_SIZE: number;
44
+ FLOATING_WINDOW_MAX_WIDTH: number;
45
+ TOP_HEIGHT: number;
46
+ SIDEMENU_WIDTH: number;
47
+ SIDEBAR_WIDTH: number;
48
+ SIZER_TRESHOLD: number;
49
+ SIDEBAR_HEADER_HEIGHT: number;
50
+ ALERT_DEFAULT_HEIGHT: number;
51
+ ALERT_MAX_HEIGHT: number;
52
+ };
53
+ export default _default;
54
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBASE"}
@@ -0,0 +1,12 @@
1
+ import { constants as coreConstants } from '@omegagrid/core';
2
+ export default {
3
+ TOP_HEIGHT: 41,
4
+ SIDEMENU_WIDTH: 41,
5
+ SIDEBAR_WIDTH: 250,
6
+ SIZER_TRESHOLD: 5,
7
+ SIDEBAR_HEADER_HEIGHT: 30,
8
+ ALERT_DEFAULT_HEIGHT: 30,
9
+ ALERT_MAX_HEIGHT: 300,
10
+ ...coreConstants
11
+ };
12
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7D,eAAe;IACd,UAAU,EAAE,EAAE;IACd,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,GAAG;IAClB,cAAc,EAAE,CAAC;IACjB,qBAAqB,EAAE,EAAE;IACzB,oBAAoB,EAAE,EAAE;IACxB,gBAAgB,EAAE,GAAG;IACrB,GAAG,aAAa;CAChB,CAAC","sourcesContent":["import { constants as coreConstants } from '@omegagrid/core';\n\nexport default {\n\tTOP_HEIGHT: 41,\n\tSIDEMENU_WIDTH: 41,\n\tSIDEBAR_WIDTH: 250,\n\tSIZER_TRESHOLD: 5,\n\tSIDEBAR_HEADER_HEIGHT: 30,\n\tALERT_DEFAULT_HEIGHT: 30,\n\tALERT_MAX_HEIGHT: 300,\n\t...coreConstants\n};"]}
@@ -0,0 +1,3 @@
1
+ export * from './ui';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from './ui';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,SAAS,CAAC","sourcesContent":["export * from './ui';\nexport * from './types';"]}
@@ -0,0 +1,12 @@
1
+ import { CommonOptions } from "@omegagrid/core";
2
+ import { PathResolver } from "./types";
3
+ export type AlertsOptions = {
4
+ maxItems: number;
5
+ timeout: number;
6
+ };
7
+ export type BucketOptions = {
8
+ alerts?: AlertsOptions;
9
+ pathResolver?: PathResolver;
10
+ } & CommonOptions;
11
+ export declare function initOptions(options?: Partial<BucketOptions>, origOptions?: BucketOptions): BucketOptions;
12
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC3B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC5B,GAAG,aAAa,CAAA;AAUjB,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,WAAW,GAAE,aAAoB,GAAG,aAAa,CAO9G"}
@@ -0,0 +1,16 @@
1
+ import { initCommonOptions } from "@omegagrid/core";
2
+ const DEFAULT_OPTIONS = {
3
+ alerts: {
4
+ maxItems: 5,
5
+ timeout: 5000,
6
+ },
7
+ };
8
+ export function initOptions(options, origOptions = null) {
9
+ return {
10
+ ...initCommonOptions(options, origOptions),
11
+ ...DEFAULT_OPTIONS,
12
+ ...origOptions,
13
+ ...options,
14
+ };
15
+ }
16
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAanE,MAAM,eAAe,GAAkB;IACtC,MAAM,EAAE;QACP,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,IAAI;KACb;CACD,CAAA;AAGD,MAAM,UAAU,WAAW,CAAC,OAAgC,EAAE,cAA6B,IAAI;IAC9F,OAAO;QACN,GAAG,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC;QAC1C,GAAG,eAAe;QAClB,GAAG,WAAW;QACd,GAAG,OAAO;KACV,CAAC;AACH,CAAC","sourcesContent":["import { initCommonOptions, CommonOptions } from \"@omegagrid/core\";\nimport { PathResolver } from \"./types\";\n\nexport type AlertsOptions = {\n\tmaxItems: number,\n\ttimeout: number,\n}\n\nexport type BucketOptions = {\n\talerts?: AlertsOptions,\n\tpathResolver?: PathResolver,\n} & CommonOptions\n\nconst DEFAULT_OPTIONS: BucketOptions = {\n\talerts: {\n\t\tmaxItems: 5,\n\t\ttimeout: 5000,\n\t},\n}\n\n\nexport function initOptions(options?: Partial<BucketOptions>, origOptions: BucketOptions = null): BucketOptions {\n\treturn {\n\t\t...initCommonOptions(options, origOptions),\n\t\t...DEFAULT_OPTIONS,\n\t\t...origOptions,\n\t\t...options,\n\t};\n}"]}
@@ -0,0 +1,87 @@
1
+ import { ComponentId, ComponentState, HorizontalPosition, IconSpec } from "@omegagrid/core";
2
+ import { Dialog } from "@omegagrid/dialog";
3
+ import { ContainerTabItem, TabSplitContainerSource } from "@omegagrid/tabs";
4
+ import { DialogOptions } from "@omegagrid/dialog";
5
+ import { TemplateResult } from "lit";
6
+ import { BucketOptions } from "./options";
7
+ export type SidemenuItem = {
8
+ id: string;
9
+ icon: string;
10
+ statusIcon?: string;
11
+ statusColor?: string;
12
+ text?: string;
13
+ tooltip?: string;
14
+ color?: string;
15
+ };
16
+ export type SidemenuSettings = {
17
+ items: SidemenuItem[];
18
+ activeIndex?: number;
19
+ };
20
+ export type SidebarSettings = {
21
+ width?: number;
22
+ collapsed?: boolean;
23
+ };
24
+ export type ModalSidebarOptions = {
25
+ id?: ComponentId;
26
+ component?: HTMLElement;
27
+ width?: number;
28
+ caption?: string;
29
+ closable?: boolean;
30
+ position?: HorizontalPosition;
31
+ };
32
+ export type ComponentOptions = Record<string, unknown>;
33
+ export type PathSegment = {
34
+ id: string;
35
+ label?: string;
36
+ icon?: string;
37
+ clickable?: boolean;
38
+ };
39
+ export type PathSegments = (PathSegment | string)[];
40
+ export type PathResolver = (id: ComponentId) => PathSegments | Promise<PathSegments>;
41
+ export type ComponentUpdateOptions = {
42
+ id?: ComponentId;
43
+ title?: string;
44
+ };
45
+ export type TopItem = {
46
+ id: ComponentId;
47
+ };
48
+ export type TopSettings = {
49
+ rightItems: TopItem[];
50
+ };
51
+ export type BucketSource = {
52
+ top?: TopSettings;
53
+ sidemenu?: SidemenuSettings;
54
+ sidebar?: SidebarSettings;
55
+ editorLayout?: TabSplitContainerSource;
56
+ options?: BucketOptions;
57
+ };
58
+ export type BucketDialog = Dialog & {
59
+ componentId: ComponentId;
60
+ };
61
+ export type BucketState = {
62
+ sidebar?: {
63
+ selectedItem?: ComponentId;
64
+ width?: number;
65
+ collapsed?: boolean;
66
+ };
67
+ layout?: TabSplitContainerSource;
68
+ dialogs?: OpenDialogOptions[];
69
+ components?: Record<ComponentId, ComponentState>;
70
+ };
71
+ export type OpenDialogOptions = DialogOptions & {
72
+ id?: ComponentId;
73
+ component?: HTMLElement;
74
+ maximizable?: boolean;
75
+ };
76
+ export type OpenTabOptions = ContainerTabItem & {
77
+ component?: HTMLElement;
78
+ };
79
+ export type BucketAlertType = 'danger' | 'warning' | 'info' | 'success';
80
+ export type BucketAlertOptions = {
81
+ title?: string | TemplateResult<1>;
82
+ icon?: string | IconSpec;
83
+ type?: BucketAlertType;
84
+ content?: string | TemplateResult<1>;
85
+ timeout?: number;
86
+ };
87
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { ComponentId, ComponentState, HorizontalPosition, IconSpec } from \"@omegagrid/core\";\nimport { Dialog } from \"@omegagrid/dialog\";\nimport { ContainerTabItem, TabSplitContainerSource } from \"@omegagrid/tabs\";\nimport { DialogOptions } from \"@omegagrid/dialog\";\nimport { TemplateResult } from \"lit\";\nimport { BucketOptions } from \"./options\";\n\nexport type SidemenuItem = {\n\tid: string,\n\ticon: string,\n\tstatusIcon?: string,\n\tstatusColor?: string,\n\ttext?: string,\n\ttooltip?: string,\n\tcolor?: string\n}\n\nexport type SidemenuSettings = {\n\titems: SidemenuItem[];\n\tactiveIndex?: number;\n}\n\nexport type SidebarSettings = {\n\twidth?: number,\n\tcollapsed?: boolean\n}\n\nexport type ModalSidebarOptions = {\n\tid?: ComponentId,\n\tcomponent?: HTMLElement,\n\twidth?: number,\n\tcaption?: string,\n\tclosable?: boolean,\n\tposition?: HorizontalPosition\n}\n\nexport type ComponentOptions = Record<string, unknown>;\n\nexport type PathSegment = {\n\tid: string,\n\tlabel?: string,\n\ticon?: string,\n\tclickable?: boolean,\n}\n\nexport type PathSegments = (PathSegment|string)[];\n\nexport type PathResolver = (id: ComponentId) => PathSegments|Promise<PathSegments>;\n\nexport type ComponentUpdateOptions = {\n\tid?: ComponentId,\n\ttitle?: string\n}\n\nexport type TopItem = {\n\tid: ComponentId\n}\n\nexport type TopSettings = {\n\trightItems: TopItem[]\n}\n\nexport type BucketSource = {\n\ttop?: TopSettings,\n\tsidemenu?: SidemenuSettings,\n\tsidebar?: SidebarSettings,\n\teditorLayout?: TabSplitContainerSource,\n\toptions?: BucketOptions,\n}\n\nexport type BucketDialog = Dialog & {componentId: ComponentId};\n\nexport type BucketState = {\n\tsidebar?: {\n\t\tselectedItem?: ComponentId\n\t\twidth?: number,\n\t\tcollapsed?: boolean\n\t},\n\tlayout?: TabSplitContainerSource,\n\tdialogs?: OpenDialogOptions[],\n\tcomponents?: Record<ComponentId, ComponentState>\n}\n\nexport type OpenDialogOptions = DialogOptions & {\n\tid?: ComponentId,\n\tcomponent?: HTMLElement,\n\tmaximizable?: boolean\n}\n\nexport type OpenTabOptions = ContainerTabItem & {\n\tcomponent?: HTMLElement,\n\t// path?: PathSegments,\n}\n\nexport type BucketAlertType = 'danger'|'warning'|'info'|'success';\n\nexport type BucketAlertOptions = {\n\ttitle?: string|TemplateResult<1>,\n\ticon?: string|IconSpec,\n\ttype?: BucketAlertType,\n\tcontent?: string|TemplateResult<1>,\n\ttimeout?: number\n};\n"]}
@@ -0,0 +1,17 @@
1
+ import { ComponentSlice } from "@omegagrid/core";
2
+ import { BucketAlertOptions } from "../types";
3
+ import { Bucket } from "./bucket";
4
+ import { BucketAlert } from "./bucketAlert";
5
+ type AlertItem = {
6
+ options: BucketAlertOptions;
7
+ component: BucketAlert;
8
+ timer?: number;
9
+ };
10
+ export declare class BucketAlerts extends ComponentSlice<Bucket> {
11
+ private items;
12
+ addAlert(options: BucketAlertOptions): Promise<void>;
13
+ updatePositions(): void;
14
+ removeAlert(item: AlertItem): void;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=bucket.alerts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket.alerts.d.ts","sourceRoot":"","sources":["../../src/ui/bucket.alerts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAO,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,KAAK,SAAS,GAAG;IAChB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAC;AAEF,qBAAa,YAAa,SAAQ,cAAc,CAAC,MAAM,CAAC;IAEvD,OAAO,CAAC,KAAK,CAAmB;IAE1B,QAAQ,CAAC,OAAO,EAAE,kBAAkB;IAwB1C,eAAe;IASf,WAAW,CAAC,IAAI,EAAE,SAAS;CAU3B"}
@@ -0,0 +1,47 @@
1
+ import { ComponentSlice, dom } from "@omegagrid/core";
2
+ export class BucketAlerts extends ComponentSlice {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.items = [];
6
+ }
7
+ async addAlert(options) {
8
+ const alert = dom.createElement('og-bucket-alert');
9
+ const item = { options, component: alert };
10
+ alert.options = options;
11
+ alert.addEventListener('close', () => this.removeAlert(item));
12
+ this.component.shadowRoot.appendChild(alert);
13
+ this.items.push(item);
14
+ if (this.items.length > this.component.options.alerts.maxItems) {
15
+ this.removeAlert(this.items[0]);
16
+ }
17
+ const timeout = options.timeout ?? this.component.options.alerts.timeout;
18
+ if (timeout > 0) {
19
+ item.timer = window.setTimeout(() => {
20
+ item.timer = undefined;
21
+ this.removeAlert(item);
22
+ }, timeout);
23
+ }
24
+ await this.component.updateComplete;
25
+ this.updatePositions();
26
+ }
27
+ updatePositions() {
28
+ [...this.items].reverse().forEach((item, i) => {
29
+ dom.setPosition(item.component, {
30
+ r: 10,
31
+ b: 10 + i * (item.component.offsetHeight + 10),
32
+ });
33
+ });
34
+ }
35
+ removeAlert(item) {
36
+ const index = this.items.indexOf(item);
37
+ if (index == -1)
38
+ return;
39
+ this.items[index].component.remove();
40
+ this.items.splice(index, 1);
41
+ if (item.timer != null)
42
+ window.clearTimeout(item.timer);
43
+ item.timer = undefined;
44
+ this.updatePositions();
45
+ }
46
+ }
47
+ //# sourceMappingURL=bucket.alerts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket.alerts.js","sourceRoot":"","sources":["../../src/ui/bucket.alerts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAWtD,MAAM,OAAO,YAAa,SAAQ,cAAsB;IAAxD;;QAES,UAAK,GAAgB,EAAE,CAAC;IA6CjC,CAAC;IA3CA,KAAK,CAAC,QAAQ,CAAC,OAA2B;QACzC,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAc,iBAAiB,CAAC,CAAC;QAChE,MAAM,IAAI,GAAc,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACtD,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QACzE,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBACnC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;QACb,CAAC;QAED,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;QACpC,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAED,eAAe;QACd,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC7C,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE;gBAC/B,CAAC,EAAE,EAAE;gBACL,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE,CAAC;aAC9C,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,IAAe;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,IAAI,CAAC,CAAC;YAAE,OAAO;QACxB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;CAED","sourcesContent":["import { ComponentSlice, dom } from \"@omegagrid/core\";\nimport { BucketAlertOptions } from \"../types\";\nimport { Bucket } from \"./bucket\";\nimport { BucketAlert } from \"./bucketAlert\";\n\ntype AlertItem = {\n\toptions: BucketAlertOptions,\n\tcomponent: BucketAlert,\n\ttimer?: number\n};\n\nexport class BucketAlerts extends ComponentSlice<Bucket> {\n\n\tprivate items: AlertItem[] = [];\n\n\tasync addAlert(options: BucketAlertOptions) {\n\t\tconst alert = dom.createElement<BucketAlert>('og-bucket-alert');\n\t\tconst item: AlertItem = { options, component: alert };\n\t\talert.options = options;\n\t\talert.addEventListener('close', () => this.removeAlert(item));\n\t\tthis.component.shadowRoot.appendChild(alert);\n\t\tthis.items.push(item);\n\n\t\tif (this.items.length > this.component.options.alerts.maxItems) {\n\t\t\tthis.removeAlert(this.items[0]);\n\t\t}\n\t\t\n\t\tconst timeout = options.timeout ?? this.component.options.alerts.timeout;\n\t\tif (timeout > 0) {\n\t\t\titem.timer = window.setTimeout(() => {\n\t\t\t\titem.timer = undefined;\n\t\t\t\tthis.removeAlert(item);\n\t\t\t}, timeout);\n\t\t}\n\n\t\tawait this.component.updateComplete;\n\t\tthis.updatePositions();\n\t}\n\n\tupdatePositions() {\n\t\t[...this.items].reverse().forEach((item, i) => {\n\t\t\tdom.setPosition(item.component, {\n\t\t\t\tr: 10,\n\t\t\t\tb: 10 + i * (item.component.offsetHeight + 10),\n\t\t\t});\n\t\t});\n\t}\n\n\tremoveAlert(item: AlertItem) {\n\t\tconst index = this.items.indexOf(item);\n\t\tif (index == -1) return;\n\t\tthis.items[index].component.remove();\n\t\tthis.items.splice(index, 1);\n\t\tif (item.timer != null) window.clearTimeout(item.timer);\n\t\titem.timer = undefined;\n\t\tthis.updatePositions();\n\t}\n\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import { ComponentId, ComponentSlice, ComponentState } from "@omegagrid/core";
2
+ import { ComponentUpdateOptions, PathSegments } from "../types";
3
+ import { Bucket } from "./bucket";
4
+ export declare class BucketComponents extends ComponentSlice<Bucket> {
5
+ private _componentPromiseResolutions;
6
+ private _resolvingComponentIds;
7
+ readonly paths: Map<ComponentId, PathSegments>;
8
+ readonly components: Map<ComponentId, HTMLElement>;
9
+ readonly anonymousComponents: Map<ComponentId, HTMLElement>;
10
+ readonly unsavedComponents: Set<ComponentId>;
11
+ get hasUnsavedComponents(): boolean;
12
+ get bucket(): Bucket;
13
+ readonly states: Map<ComponentId, ComponentState>;
14
+ setState(id: ComponentId, state: ComponentState): void;
15
+ has(id: ComponentId): boolean;
16
+ get(id: ComponentId): HTMLElement | Promise<HTMLElement>;
17
+ private resolveComponentPromises;
18
+ enqueueComponentResolution(id: ComponentId, resolve: (component: HTMLElement) => void, reject: () => void): void;
19
+ update(id: ComponentId, options: ComponentUpdateOptions): HTMLElement;
20
+ register(id: ComponentId, component: HTMLElement): ComponentId;
21
+ unregister(id: ComponentId): void;
22
+ getPath(id: ComponentId): Promise<PathSegments>;
23
+ }
24
+ //# sourceMappingURL=bucket.components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket.components.d.ts","sourceRoot":"","sources":["../../src/ui/bucket.components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAkB,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,MAAM,EAAe,MAAM,UAAU,CAAC;AAE/C,qBAAa,gBAAiB,SAAQ,cAAc,CAAC,MAAM,CAAC;IAE3D,OAAO,CAAC,4BAA4B,CAG7B;IAEP,OAAO,CAAC,sBAAsB,CAA0B;IAExD,QAAQ,CAAC,KAAK,iCAAwC;IACtD,QAAQ,CAAC,UAAU,gCAAuC;IAC1D,QAAQ,CAAC,mBAAmB,gCAAuC;IACnE,QAAQ,CAAC,iBAAiB,mBAA0B;IACpD,IAAI,oBAAoB,YAA6C;IAErE,IAAI,MAAM,WAA4B;IAEtC,QAAQ,CAAC,MAAM,mCAA0C;IAEzD,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc;IAS/C,GAAG,CAAC,EAAE,EAAE,WAAW;IAInB,GAAG,CAAC,EAAE,EAAE,WAAW;IA6BnB,OAAO,CAAC,wBAAwB;IAYhC,0BAA0B,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,KAAK,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI;IAKzG,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,sBAAsB;IAWvD,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW;IAahD,UAAU,CAAC,EAAE,EAAE,WAAW;IAOpB,OAAO,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAQrD"}
@@ -0,0 +1,111 @@
1
+ import { ComponentSlice } from "@omegagrid/core";
2
+ import { Bucket, BucketEvent } from "./bucket";
3
+ export class BucketComponents extends ComponentSlice {
4
+ constructor() {
5
+ super(...arguments);
6
+ this._componentPromiseResolutions = new Map();
7
+ this._resolvingComponentIds = new Set();
8
+ this.paths = new Map();
9
+ this.components = new Map();
10
+ this.anonymousComponents = new Map();
11
+ this.unsavedComponents = new Set();
12
+ this.states = new Map();
13
+ }
14
+ get hasUnsavedComponents() { return this.unsavedComponents.size > 0; }
15
+ get bucket() { return this.component; }
16
+ setState(id, state) {
17
+ const component = this.components.get(id);
18
+ if (component && component.setState) {
19
+ component.setState(state);
20
+ }
21
+ else {
22
+ this.states.set(id, state);
23
+ }
24
+ }
25
+ has(id) {
26
+ return this.components.has(id) || this.anonymousComponents.has(id) || this._resolvingComponentIds.has(id);
27
+ }
28
+ get(id) {
29
+ let component = this.components.get(id);
30
+ component ?? (component = this.anonymousComponents.get(id));
31
+ if (component) {
32
+ this.resolveComponentPromises(id, component);
33
+ return component;
34
+ }
35
+ return new Promise((resolve, reject) => {
36
+ const component = this.components.get(id);
37
+ this.enqueueComponentResolution(id, resolve, reject);
38
+ if (this._resolvingComponentIds.has(id))
39
+ return;
40
+ if (component)
41
+ return this.resolveComponentPromises(id, component);
42
+ this._resolvingComponentIds.add(id);
43
+ Promise.all([this.component.createComponent(id)]).then(item => {
44
+ const component = item[0];
45
+ if (component) {
46
+ this.register(id, component);
47
+ const state = this.bucket.state;
48
+ if (state?.components && state?.components[id] && component.setState) {
49
+ component.setState(state.components[id]);
50
+ }
51
+ }
52
+ this.resolveComponentPromises(id, component);
53
+ });
54
+ });
55
+ }
56
+ resolveComponentPromises(id, component) {
57
+ if (this._componentPromiseResolutions.has(id)) {
58
+ this._componentPromiseResolutions.get(id).forEach(res => res.resolve(component));
59
+ // if (component) {
60
+ // } else {
61
+ // this._componentPromiseResolutions.get(id).forEach(res => res.reject());
62
+ // }
63
+ this._componentPromiseResolutions.delete(id);
64
+ }
65
+ this._resolvingComponentIds.delete(id);
66
+ }
67
+ enqueueComponentResolution(id, resolve, reject) {
68
+ if (!this._componentPromiseResolutions.has(id))
69
+ this._componentPromiseResolutions.set(id, []);
70
+ this._componentPromiseResolutions.get(id).push({ resolve, reject });
71
+ }
72
+ update(id, options) {
73
+ const newId = options.id ?? id;
74
+ this.bucket.editorContainer.updateTab(id, { id: newId, title: options.title ?? undefined });
75
+ if (this.components.has(id) && newId != id) {
76
+ const c = this.components.get(id);
77
+ this.unregister(id);
78
+ this.register(newId, c);
79
+ }
80
+ return this.components.get(newId);
81
+ }
82
+ register(id, component) {
83
+ if (id == null) {
84
+ id = `temp_${Bucket.getUniqueId()}`;
85
+ this.anonymousComponents.set(id, component);
86
+ }
87
+ else {
88
+ this.components.set(id, component);
89
+ if (this.has(id))
90
+ return id;
91
+ }
92
+ this.bucket.dispatchEvent(new BucketEvent('register', { componentId: id }));
93
+ return id;
94
+ }
95
+ unregister(id) {
96
+ this.components.delete(id);
97
+ this.anonymousComponents.delete(id);
98
+ this.paths.delete(id);
99
+ this.bucket.dispatchEvent(new BucketEvent('unregister', { componentId: id }));
100
+ }
101
+ async getPath(id) {
102
+ if (this.paths.has(id))
103
+ return this.paths.get(id);
104
+ if (!this.bucket.options.pathResolver)
105
+ return [];
106
+ const path = await this.bucket.options.pathResolver(id);
107
+ this.paths.set(id, path);
108
+ return path;
109
+ }
110
+ }
111
+ //# sourceMappingURL=bucket.components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket.components.js","sourceRoot":"","sources":["../../src/ui/bucket.components.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentId, ComponentSlice, ComponentState, OmegaComponent } from \"@omegagrid/core\";\nimport { ComponentUpdateOptions, PathSegments } from \"../types\";\nimport { Bucket, BucketEvent } from \"./bucket\";\n\nexport class BucketComponents extends ComponentSlice<Bucket> {\n\n\tprivate _componentPromiseResolutions = new Map<ComponentId, {\n\t\tresolve: (component: HTMLElement) => void,\n\t\treject: () => void\n\t}[]>();\n\n\tprivate _resolvingComponentIds = new Set<ComponentId>();\n\t\n\treadonly paths = new Map<ComponentId, PathSegments>();\n\treadonly components = new Map<ComponentId, HTMLElement>();\n\treadonly anonymousComponents = new Map<ComponentId, HTMLElement>();\n\treadonly unsavedComponents = new Set<ComponentId>();\n\tget hasUnsavedComponents() { return this.unsavedComponents.size > 0 }\n\n\tget bucket() { return this.component }\n\n\treadonly states = new Map<ComponentId, ComponentState>();\n\n\tsetState(id: ComponentId, state: ComponentState) {\n\t\tconst component = this.components.get(id) as OmegaComponent;\n\t\tif (component && component.setState) {\n\t\t\tcomponent.setState(state);\n\t\t} else {\n\t\t\tthis.states.set(id, state);\n\t\t}\n\t}\n\n\thas(id: ComponentId) {\n\t\treturn this.components.has(id) || this.anonymousComponents.has(id) || this._resolvingComponentIds.has(id);\n\t}\n\n\tget(id: ComponentId) {\n\t\tlet component = this.components.get(id);\n\t\tcomponent ??= this.anonymousComponents.get(id);\n\n\t\tif (component) {\n\t\t\tthis.resolveComponentPromises(id, component);\n\t\t\treturn component;\n\t\t}\n\t\t\n\t\treturn new Promise<HTMLElement>((resolve, reject) => {\n\t\t\tconst component = this.components.get(id) as OmegaComponent;\n\t\t\tthis.enqueueComponentResolution(id, resolve, reject);\n\t\t\tif (this._resolvingComponentIds.has(id)) return;\n\t\t\tif (component) return this.resolveComponentPromises(id, component);\n\t\t\tthis._resolvingComponentIds.add(id);\n\t\t\tPromise.all([this.component.createComponent(id)]).then(item => {\n\t\t\t\tconst component = item[0] as OmegaComponent;\n\t\t\t\tif (component) {\n\t\t\t\t\tthis.register(id, component);\n\t\t\t\t\tconst state = this.bucket.state;\n\t\t\t\t\tif (state?.components && state?.components[id] && component.setState) {\n\t\t\t\t\t\tcomponent.setState(state.components[id]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.resolveComponentPromises(id, component);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate resolveComponentPromises(id: ComponentId, component?: HTMLElement) {\n\t\tif (this._componentPromiseResolutions.has(id)) {\n\t\t\tthis._componentPromiseResolutions.get(id).forEach(res => res.resolve(component));\n\t\t\t// if (component) {\n\t\t\t// } else {\n\t\t\t// \tthis._componentPromiseResolutions.get(id).forEach(res => res.reject());\n\t\t\t// }\n\t\t\tthis._componentPromiseResolutions.delete(id);\n\t\t}\n\t\tthis._resolvingComponentIds.delete(id);\n\t}\n\n\tenqueueComponentResolution(id: ComponentId, resolve: (component: HTMLElement) => void, reject: () => void) {\n\t\tif (!this._componentPromiseResolutions.has(id)) this._componentPromiseResolutions.set(id, []);\n\t\tthis._componentPromiseResolutions.get(id).push({ resolve, reject });\n\t}\n\n\tupdate(id: ComponentId, options: ComponentUpdateOptions) {\n\t\tconst newId = options.id ?? id;\n\t\tthis.bucket.editorContainer.updateTab(id, {id: newId, title: options.title ?? undefined});\n\t\tif (this.components.has(id) && newId != id) {\n\t\t\tconst c = this.components.get(id);\n\t\t\tthis.unregister(id);\n\t\t\tthis.register(newId, c);\n\t\t}\n\t\treturn this.components.get(newId);\n\t}\n\n\tregister(id: ComponentId, component: HTMLElement) {\n\t\tif (id == null) {\n\t\t\tid = `temp_${Bucket.getUniqueId()}`;\n\t\t\tthis.anonymousComponents.set(id, component);\n\t\t} else {\n\t\t\tthis.components.set(id, component);\n\t\t\tif (this.has(id)) return id;\n\t\t}\n\t\t\n\t\tthis.bucket.dispatchEvent(new BucketEvent('register', {componentId: id}));\n\t\treturn id;\n\t}\n\n\tunregister(id: ComponentId) {\n\t\tthis.components.delete(id);\n\t\tthis.anonymousComponents.delete(id);\n\t\tthis.paths.delete(id);\n\t\tthis.bucket.dispatchEvent(new BucketEvent('unregister', {componentId: id}));\n\t}\n\n\tasync getPath(id: ComponentId): Promise<PathSegments> {\n\t\tif (this.paths.has(id)) return this.paths.get(id);\n\t\tif (!this.bucket.options.pathResolver) return [];\n\t\tconst path = await this.bucket.options.pathResolver(id);\n\t\tthis.paths.set(id, path);\n\t\treturn path;\n\t}\n\n}\n"]}
@@ -0,0 +1,83 @@
1
+ import { Layout, ListSelectEvent, ComponentFactory, SplitContainer, log, ComponentId, Overlay, OmegaComponent, ShortcutManager } from '@omegagrid/core';
2
+ import { TabEvent, TabItem, TabSplitContainer } from '@omegagrid/tabs';
3
+ import { CommandManager, CommandResult, OpenCommandsOptions } from '@omegagrid/commands';
4
+ import { BucketAlertOptions, BucketSource, BucketState, ModalSidebarOptions, OpenDialogOptions, OpenTabOptions } from '../types';
5
+ import { Sidemenu } from './sidemenu';
6
+ import { BucketTop } from './top';
7
+ import { ComponentHost } from './componentHost';
8
+ import { BucketAlerts } from './bucket.alerts';
9
+ import { BucketOptions } from '../options';
10
+ import { Sidebar } from './sidebar';
11
+ import { BucketComponents } from './bucket.components';
12
+ import { BucketSidebars } from './bucket.sidebars';
13
+ import { BucketDialogs } from './bucket.dialogs';
14
+ export declare class BucketEvent extends Event {
15
+ tab: TabItem;
16
+ componentId: ComponentId;
17
+ constructor(type: string, args?: Partial<BucketEvent>);
18
+ }
19
+ export declare class Bucket extends OmegaComponent<BucketState> implements Layout {
20
+ static styles: import("lit").CSSResult[];
21
+ static uniqueId: number;
22
+ static getUniqueId: () => number;
23
+ overlay: Overlay;
24
+ top: BucketTop;
25
+ sidemenu: Sidemenu;
26
+ body: HTMLDivElement;
27
+ main: HTMLDivElement;
28
+ createComponent: ComponentFactory;
29
+ sourceData: BucketSource;
30
+ options: BucketOptions;
31
+ logger: log.Logger;
32
+ compact: boolean;
33
+ sidebar1ComponentId: string;
34
+ readonly components: BucketComponents;
35
+ readonly sidebars: BucketSidebars;
36
+ readonly alerts: BucketAlerts;
37
+ readonly dialogs: BucketDialogs;
38
+ readonly commands: CommandManager;
39
+ readonly shortcuts: ShortcutManager;
40
+ private _activeComponentId;
41
+ get activeComponentId(): ComponentId;
42
+ private _container;
43
+ get container(): SplitContainer;
44
+ private _editorContainer;
45
+ get editorContainer(): TabSplitContainer;
46
+ private _sidebarHost;
47
+ get sidebarHost(): Sidebar;
48
+ updateContainerVisibility: {
49
+ (this: unknown, ...args: [] & any[]): Promise<void>;
50
+ cancel: (reason?: any) => void;
51
+ };
52
+ constructor();
53
+ showOverlay: () => void;
54
+ hideOverlay: () => HTMLElement;
55
+ _onWindowBeforeUnload: (e: BeforeUnloadEvent) => void;
56
+ connectedCallback(): void;
57
+ disconnectedCallback(): void;
58
+ layout(): void;
59
+ setSourceData(sourceData: BucketSource): void;
60
+ updated(): Promise<void>;
61
+ open(item: OpenTabOptions): Promise<HTMLElement>;
62
+ openDialog(options: OpenDialogOptions): Promise<import("../types").BucketDialog>;
63
+ openMenu(options: OpenCommandsOptions): Promise<CommandResult | null>;
64
+ openModalSidebar(options: ModalSidebarOptions): Promise<HTMLElement>;
65
+ toggleSidebar(open?: boolean): Promise<void>;
66
+ hideSidebar(): Promise<void>;
67
+ showSidebar(): Promise<void>;
68
+ showAlert(options: BucketAlertOptions): Promise<void>;
69
+ createEditorComponent: (id: ComponentId) => ComponentHost;
70
+ _createSplitContainerComponent: ComponentFactory;
71
+ getState(): BucketState;
72
+ setState(state: BucketState): Promise<void>;
73
+ _onSplitContainerResize: () => void;
74
+ _onTabRemove: (e: TabEvent) => void;
75
+ _onTabBeforeRemove: (e: TabEvent) => void;
76
+ _onTabSelect: (e: TabEvent) => void;
77
+ _onSidemenuSelect(e: ListSelectEvent): void;
78
+ updateSidebarComponent(): void;
79
+ updateMainComponent(): void;
80
+ openSidebarComponent(id: ComponentId): Promise<void>;
81
+ render: () => import("lit-html").TemplateResult<1>;
82
+ }
83
+ //# sourceMappingURL=bucket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket.d.ts","sourceRoot":"","sources":["../../src/ui/bucket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ComponentId, ComponentSlice } from "@omegagrid/core";
2
+ import { Bucket } from "./bucket";
3
+ import { BucketDialog, OpenDialogOptions } from "../types";
4
+ export declare class BucketDialogs extends ComponentSlice<Bucket> {
5
+ readonly items: Map<ComponentId, BucketDialog>;
6
+ get bucket(): Bucket;
7
+ register(id: ComponentId, dialog: BucketDialog): void;
8
+ unregister(id: ComponentId): void;
9
+ open(options: OpenDialogOptions): Promise<BucketDialog>;
10
+ }
11
+ //# sourceMappingURL=bucket.dialogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket.dialogs.d.ts","sourceRoot":"","sources":["../../src/ui/bucket.dialogs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAO,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG3D,qBAAa,aAAc,SAAQ,cAAc,CAAC,MAAM,CAAC;IAExD,QAAQ,CAAC,KAAK,iCAAwC;IAEtD,IAAI,MAAM,WAA4B;IAEtC,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY;IAI9C,UAAU,CAAC,EAAE,EAAE,WAAW;IAMpB,IAAI,CAAC,OAAO,EAAE,iBAAiB;CAmCrC"}
@@ -0,0 +1,46 @@
1
+ import { ComponentSlice, dom } from "@omegagrid/core";
2
+ export class BucketDialogs extends ComponentSlice {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.items = new Map();
6
+ }
7
+ get bucket() { return this.component; }
8
+ register(id, dialog) {
9
+ this.items.set(id, dialog);
10
+ }
11
+ unregister(id) {
12
+ this.items.delete(id);
13
+ this.bucket.components.unregister(id);
14
+ this.bucket.dispatchStateEvent();
15
+ }
16
+ async open(options) {
17
+ const dialog = dom.createElement('og-dialog', {
18
+ componentId: options.id,
19
+ maximizable: options.maximizable ?? true,
20
+ listeners: [
21
+ ['dialog.move', () => this.bucket.dispatchStateEvent()],
22
+ ['dialog.resize', () => this.bucket.dispatchStateEvent()],
23
+ ['dialog.close', (e) => this.unregister(e.dialog.componentId)]
24
+ ]
25
+ });
26
+ dialog.setOptions(options);
27
+ dialog.open(this.bucket);
28
+ dialog.showLoader();
29
+ let component = options.component;
30
+ delete options.component;
31
+ if (!component && options.id) {
32
+ component = await this.bucket.createComponent(options.id);
33
+ this.register(options.id, dialog);
34
+ }
35
+ dialog.hideLoader();
36
+ dialog.component = component;
37
+ // dialog without component id cannot be registered and included in state
38
+ if (options.id) {
39
+ this.register(options.id, dialog);
40
+ this.bucket.dispatchStateEvent();
41
+ }
42
+ // TODO - fix dialog position;
43
+ return dialog;
44
+ }
45
+ }
46
+ //# sourceMappingURL=bucket.dialogs.js.map