@theseam/ui-common 1.0.0-beta.5 → 1.0.0-beta.7
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.
- package/breadcrumbs/index.d.ts +1 -2
- package/buttons/index.d.ts +20 -13
- package/datatable/index.d.ts +8 -8
- package/dynamic/index.d.ts +5 -5
- package/fesm2022/theseam-ui-common-asset-reader.mjs +28 -29
- package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs +25 -31
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-buttons.mjs +108 -66
- package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-card.mjs +21 -21
- package/fesm2022/theseam-ui-common-card.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-carousel.mjs +28 -30
- package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-checkbox.mjs +27 -27
- package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs +23 -27
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-core.mjs +31 -11
- package/fesm2022/theseam-ui-common-core.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-data-exporter.mjs +18 -19
- package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-data-filters.mjs +80 -64
- package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +51 -49
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +145 -112
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable.mjs +581 -385
- package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +12 -14
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-dynamic.mjs +60 -48
- package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-footer-bar.mjs +9 -15
- package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-form-field-error.mjs +60 -43
- package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-form-field.mjs +120 -74
- package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-framework.mjs +669 -543
- package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-google-maps.mjs +206 -149
- package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-graphql.mjs +252 -195
- package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-icon.mjs +125 -89
- package/fesm2022/theseam-ui-common-icon.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-layout.mjs +18 -26
- package/fesm2022/theseam-ui-common-layout.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-loading.mjs +19 -28
- package/fesm2022/theseam-ui-common-loading.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-menu.mjs +124 -95
- package/fesm2022/theseam-ui-common-menu.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-modal.mjs +177 -129
- package/fesm2022/theseam-ui-common-modal.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-models.mjs +3 -3
- package/fesm2022/theseam-ui-common-models.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-navigation-reload.mjs +13 -11
- package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-popover.mjs +81 -88
- package/fesm2022/theseam-ui-common-popover.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-progress.mjs +15 -19
- package/fesm2022/theseam-ui-common-progress.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-rich-text.mjs +65 -52
- package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-scrollbar.mjs +12 -9
- package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-services.mjs +41 -26
- package/fesm2022/theseam-ui-common-services.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-shared.mjs +123 -68
- package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-storage.mjs +9 -6
- package/fesm2022/theseam-ui-common-storage.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-story-helpers.mjs +148 -86
- package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tabbed.mjs +43 -39
- package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table-cell-type.mjs +34 -38
- package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table-cell-types.mjs +182 -144
- package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-table.mjs +50 -39
- package/fesm2022/theseam-ui-common-table.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tel-input.mjs +98 -63
- package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-testing.mjs +13 -10
- package/fesm2022/theseam-ui-common-testing.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tiled-select.mjs +54 -50
- package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-toggle-edit.mjs +41 -37
- package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-toggle-group.mjs +30 -31
- package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-tooltip.mjs +225 -66
- package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +14 -12
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-utils.mjs +113 -77
- package/fesm2022/theseam-ui-common-utils.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-validators.mjs +10 -9
- package/fesm2022/theseam-ui-common-validators.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +39 -17
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-viewers.mjs +80 -53
- package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-widget.mjs +288 -314
- package/fesm2022/theseam-ui-common-widget.mjs.map +1 -1
- package/framework/base-layout/base-layout.component.scss +9 -4
- package/framework/base-layout/styles/_variables.scss +4 -9
- package/framework/dashboard/dashboard-widgets/dashboard-widgets.component.scss +6 -4
- package/framework/index.d.ts +6 -6
- package/framework/nav/nav-item/nav-item.component.scss +7 -6
- package/framework/nav/styles/_themes/light/_variables.scss +21 -5
- package/framework/nav/styles/_themes/primary/_variables.scss +21 -5
- package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -2
- package/framework/side-nav/styles/_themes/light/_variables.scss +5 -1
- package/framework/side-nav/styles/_themes/primary/_variables.scss +25 -5
- package/graphql/index.d.ts +5 -5
- package/modal/README.md +5 -5
- package/modal/index.d.ts +1 -1
- package/models/index.d.ts +1 -1
- package/package.json +65 -65
- package/popover/index.d.ts +0 -2
- package/progress/progress-circle/styles/_variables.scss +15 -3
- package/story-helpers/index.d.ts +11 -1
- package/styles/bootstrap/_bootstrap.scss +34 -34
- package/styles/bootstrap/_bs-styles.scss +4 -8
- package/styles/bootstrap/_bs-utilities.scss +4 -4
- package/styles/bootstrap/_bs-variables.scss +65 -70
- package/styles/common/_forms.scss +9 -10
- package/styles/common/_global.scss +0 -1
- package/styles/common/_hacks.scss +1 -1
- package/styles/common/_table.scss +0 -1
- package/styles/common/_text.scss +3 -1
- package/styles/theme.scss +1 -1
- package/styles/vendor/ng-select/_ng-select-bs4.scss +292 -294
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +63 -32
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +37 -10
- package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +3 -1
- package/styles/vendor/quill/_quill.scss +15 -9
- package/tel-input/README.md +27 -27
- package/utils/index.d.ts +3 -3
- package/viewers/index.d.ts +9 -2
- package/widget/_widget-theme.scss +1 -1
- package/widget/styles/_variables.scss +2 -2
- package/widget/widget/widget.component.scss +0 -2
- package/widget/widget-content-components/widget-tile/widget-tile.component.scss +1 -3
- package/widget/widget-footer/widget-footer.component.scss +0 -1
|
@@ -11,6 +11,7 @@ import * as i2 from '@theseam/ui-common/scrollbar';
|
|
|
11
11
|
import { TheSeamOverlayScrollbarDirective } from '@theseam/ui-common/scrollbar';
|
|
12
12
|
import { of, Subject, ReplaySubject, combineLatest } from 'rxjs';
|
|
13
13
|
import { ModalRef, MODAL_DATA } from '@theseam/ui-common/modal';
|
|
14
|
+
import { applicationConfig } from '@storybook/angular';
|
|
14
15
|
|
|
15
16
|
// import { ArgType } from '@storybook/addons'
|
|
16
17
|
const themeArgType = {
|
|
@@ -18,28 +19,28 @@ const themeArgType = {
|
|
|
18
19
|
control: {
|
|
19
20
|
type: 'select',
|
|
20
21
|
},
|
|
21
|
-
description: `Theme style
|
|
22
|
+
description: `Theme style.`,
|
|
22
23
|
};
|
|
23
24
|
const themeWithOutlineArgType = {
|
|
24
25
|
options: [...ThemeNames, ...OutlineThemeNames],
|
|
25
26
|
control: {
|
|
26
27
|
type: 'select',
|
|
27
28
|
},
|
|
28
|
-
description: `Theme style
|
|
29
|
+
description: `Theme style.`,
|
|
29
30
|
};
|
|
30
31
|
const sizeArgType = {
|
|
31
32
|
options: [undefined, 'sm', 'lg'],
|
|
32
33
|
control: {
|
|
33
34
|
type: 'select',
|
|
34
35
|
},
|
|
35
|
-
description: `Size
|
|
36
|
+
description: `Size.`,
|
|
36
37
|
};
|
|
37
38
|
const buttonTypeArgType = {
|
|
38
39
|
options: ['button', 'submit'],
|
|
39
40
|
control: {
|
|
40
41
|
type: 'select',
|
|
41
42
|
},
|
|
42
|
-
description: `Button type
|
|
43
|
+
description: `Button type.`,
|
|
43
44
|
};
|
|
44
45
|
|
|
45
46
|
/**
|
|
@@ -82,7 +83,7 @@ const buttonTypeArgType = {
|
|
|
82
83
|
// }
|
|
83
84
|
function removeDuplicates(arr) {
|
|
84
85
|
const seen = {};
|
|
85
|
-
return arr.filter(item => {
|
|
86
|
+
return arr.filter((item) => {
|
|
86
87
|
if (!seen[item]) {
|
|
87
88
|
seen[item] = true;
|
|
88
89
|
return true;
|
|
@@ -104,20 +105,17 @@ function argsToTpl(options) {
|
|
|
104
105
|
...(options?.exclude || []),
|
|
105
106
|
];
|
|
106
107
|
const alwaysBind = context?.parameters?.argsToTplOptions?.alwaysBind || [];
|
|
107
|
-
const props = removeDuplicates([
|
|
108
|
-
...alwaysBind,
|
|
109
|
-
...Object.keys(context.args),
|
|
110
|
-
]);
|
|
108
|
+
const props = removeDuplicates([...alwaysBind, ...Object.keys(context.args)]);
|
|
111
109
|
const parts = props
|
|
112
|
-
.filter(k => exclude.indexOf(k) === -1)
|
|
113
|
-
.map(k => {
|
|
110
|
+
.filter((k) => exclude.indexOf(k) === -1)
|
|
111
|
+
.map((k) => {
|
|
114
112
|
// Outputs
|
|
115
113
|
if (context.argTypes[k]?.hasOwnProperty('action') &&
|
|
116
114
|
(context.args.hasOwnProperty(k) || alwaysBind.indexOf(k) !== -1)) {
|
|
117
115
|
return `(${k})="${k}($event)"`;
|
|
118
116
|
}
|
|
119
117
|
// Inputs
|
|
120
|
-
if (
|
|
118
|
+
if (context.args.hasOwnProperty(k) || alwaysBind.indexOf(k) !== -1) {
|
|
121
119
|
return `[${k}]="${k}"`;
|
|
122
120
|
}
|
|
123
121
|
});
|
|
@@ -125,10 +123,10 @@ function argsToTpl(options) {
|
|
|
125
123
|
}
|
|
126
124
|
|
|
127
125
|
class StoryEmptyComponent {
|
|
128
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
129
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
126
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryEmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
127
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.6", type: StoryEmptyComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: ``, isInline: true });
|
|
130
128
|
}
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryEmptyComponent, decorators: [{
|
|
132
130
|
type: Component,
|
|
133
131
|
args: [{ template: ``, standalone: true }]
|
|
134
132
|
}] });
|
|
@@ -150,14 +148,17 @@ class StoryInitialRouteService {
|
|
|
150
148
|
_router.navigateByUrl(url);
|
|
151
149
|
}
|
|
152
150
|
else {
|
|
153
|
-
_router.events
|
|
154
|
-
.
|
|
151
|
+
_router.events
|
|
152
|
+
.pipe(filter((e) => e instanceof NavigationEnd), take(1))
|
|
153
|
+
.subscribe(() => {
|
|
154
|
+
_router.navigateByUrl(url);
|
|
155
|
+
});
|
|
155
156
|
}
|
|
156
157
|
}
|
|
157
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
158
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
158
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryInitialRouteService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
159
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryInitialRouteService });
|
|
159
160
|
}
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryInitialRouteService, decorators: [{
|
|
161
162
|
type: Injectable
|
|
162
163
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
163
164
|
|
|
@@ -171,17 +172,17 @@ class StoryInitialRouteModule {
|
|
|
171
172
|
provide: APP_INITIALIZER,
|
|
172
173
|
useFactory: storyInitialRouteFactory,
|
|
173
174
|
deps: [StoryInitialRouteService],
|
|
174
|
-
multi: true
|
|
175
|
+
multi: true,
|
|
175
176
|
},
|
|
176
|
-
{ provide: STORY_INITIAL_ROUTE_URL, useValue: url }
|
|
177
|
-
]
|
|
177
|
+
{ provide: STORY_INITIAL_ROUTE_URL, useValue: url },
|
|
178
|
+
],
|
|
178
179
|
};
|
|
179
180
|
}
|
|
180
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
181
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
182
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
181
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryInitialRouteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
182
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.6", ngImport: i0, type: StoryInitialRouteModule });
|
|
183
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryInitialRouteModule });
|
|
183
184
|
}
|
|
184
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryInitialRouteModule, decorators: [{
|
|
185
186
|
type: NgModule
|
|
186
187
|
}] });
|
|
187
188
|
|
|
@@ -198,7 +199,9 @@ function routeButton(buttonKnob, url) {
|
|
|
198
199
|
}
|
|
199
200
|
|
|
200
201
|
// import { ArgType } from '@storybook/addons'
|
|
201
|
-
function goToHashUrl(url) {
|
|
202
|
+
function goToHashUrl(url) {
|
|
203
|
+
location.hash = `#${url}`;
|
|
204
|
+
}
|
|
202
205
|
// __STORYBOOK_ADDONS.getChannel().on('custom/go-to-hash', (data: { hash: string }) => {
|
|
203
206
|
// goToHashUrl(data.hash)
|
|
204
207
|
// })
|
|
@@ -211,29 +214,38 @@ function routesArgType(routes) {
|
|
|
211
214
|
control: {
|
|
212
215
|
type: 'select',
|
|
213
216
|
// Runs in the 'manager', so I am emitting to a channel in the 'preview'.
|
|
214
|
-
onChange: (e, a) => {
|
|
215
|
-
|
|
217
|
+
onChange: (e, a) => {
|
|
218
|
+
__STORYBOOK_ADDONS.getChannel().emit('custom/go-to-hash', { hash: e });
|
|
219
|
+
return e;
|
|
220
|
+
},
|
|
221
|
+
},
|
|
216
222
|
};
|
|
217
223
|
}
|
|
218
224
|
|
|
219
225
|
class StoryEmptyWithRouteComponent {
|
|
220
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
221
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
226
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryEmptyWithRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
227
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.6", type: StoryEmptyWithRouteComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: `<router-outlet></router-outlet>`, isInline: true, dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
222
228
|
}
|
|
223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
229
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryEmptyWithRouteComponent, decorators: [{
|
|
224
230
|
type: Component,
|
|
225
231
|
args: [{ template: `<router-outlet></router-outlet>`, standalone: false }]
|
|
226
232
|
}] });
|
|
227
233
|
|
|
228
234
|
class FakeModalRef {
|
|
229
|
-
afterOpened() {
|
|
235
|
+
afterOpened() {
|
|
236
|
+
return of(undefined);
|
|
237
|
+
}
|
|
230
238
|
close(dialogResult) { }
|
|
231
239
|
}
|
|
232
240
|
class StoryModalContainerComponent {
|
|
233
241
|
_injector;
|
|
234
242
|
_ngUnsubscribe = new Subject();
|
|
235
|
-
set component(c) {
|
|
236
|
-
|
|
243
|
+
set component(c) {
|
|
244
|
+
this._component.next(c);
|
|
245
|
+
}
|
|
246
|
+
set data(d) {
|
|
247
|
+
this._data.next(d);
|
|
248
|
+
}
|
|
237
249
|
modalConfig;
|
|
238
250
|
_component = new ReplaySubject(1);
|
|
239
251
|
_data = new ReplaySubject(1);
|
|
@@ -242,10 +254,10 @@ class StoryModalContainerComponent {
|
|
|
242
254
|
this._injector = _injector;
|
|
243
255
|
this._outletData$ = combineLatest([
|
|
244
256
|
this._component.asObservable(),
|
|
245
|
-
this._data.asObservable().pipe(startWith(undefined))
|
|
257
|
+
this._data.asObservable().pipe(startWith(undefined)),
|
|
246
258
|
]).pipe(auditTime(0), map(([component, data]) => ({
|
|
247
259
|
component,
|
|
248
|
-
injector: this._createInjector(data)
|
|
260
|
+
injector: this._createInjector(data),
|
|
249
261
|
})), takeUntil(this._ngUnsubscribe));
|
|
250
262
|
}
|
|
251
263
|
ngOnDestroy() {
|
|
@@ -256,25 +268,40 @@ class StoryModalContainerComponent {
|
|
|
256
268
|
return Injector.create({
|
|
257
269
|
providers: [
|
|
258
270
|
{ provide: ModalRef, useClass: FakeModalRef, deps: [] },
|
|
259
|
-
{ provide: MODAL_DATA, useValue: data }
|
|
271
|
+
{ provide: MODAL_DATA, useValue: data },
|
|
260
272
|
],
|
|
261
|
-
parent: this._injector
|
|
273
|
+
parent: this._injector,
|
|
262
274
|
});
|
|
263
275
|
}
|
|
264
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
265
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
276
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryModalContainerComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
277
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.6", type: StoryModalContainerComponent, isStandalone: false, selector: "story-modal-container-component", inputs: { component: "component", data: "data", modalConfig: "modalConfig" }, ngImport: i0, template: `
|
|
266
278
|
<div class="cdk-overlay-container">
|
|
267
|
-
<div
|
|
268
|
-
|
|
279
|
+
<div
|
|
280
|
+
class="cdk-overlay-backdrop cdk-overlay-dark-backdrop cdk-overlay-backdrop-showing"
|
|
281
|
+
></div>
|
|
282
|
+
<div
|
|
283
|
+
class="cdk-global-overlay-wrapper"
|
|
269
284
|
dir="ltr"
|
|
270
285
|
style="justify-content: flex-start; align-items: center; pointer-events: auto"
|
|
271
|
-
seamOverlayScrollbar
|
|
272
|
-
|
|
286
|
+
seamOverlayScrollbar
|
|
287
|
+
>
|
|
288
|
+
<div
|
|
289
|
+
class="seam-modal-container modal-dialog modal-dialog-centered {{
|
|
290
|
+
modalConfig?.modalSize
|
|
291
|
+
? 'modal-' + modalConfig?.modalSize
|
|
292
|
+
: 'modal-lg'
|
|
293
|
+
}}"
|
|
273
294
|
tabindex="-1"
|
|
274
|
-
[class.modal-lg]="!modalConfig"
|
|
295
|
+
[class.modal-lg]="!modalConfig"
|
|
296
|
+
>
|
|
275
297
|
<div class="modal-content">
|
|
276
298
|
<ng-container *ngIf="_outletData$ | async as outletData">
|
|
277
|
-
<ng-container
|
|
299
|
+
<ng-container
|
|
300
|
+
*ngComponentOutlet="
|
|
301
|
+
outletData.component;
|
|
302
|
+
injector: outletData.injector
|
|
303
|
+
"
|
|
304
|
+
></ng-container>
|
|
278
305
|
</ng-container>
|
|
279
306
|
</div>
|
|
280
307
|
</div>
|
|
@@ -282,21 +309,36 @@ class StoryModalContainerComponent {
|
|
|
282
309
|
</div>
|
|
283
310
|
`, isInline: true, styles: [".seam-modal-container[tabindex=\"-1\"]:focus{outline:0!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TheSeamOverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] });
|
|
284
311
|
}
|
|
285
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
312
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryModalContainerComponent, decorators: [{
|
|
286
313
|
type: Component,
|
|
287
314
|
args: [{ selector: 'story-modal-container-component', template: `
|
|
288
315
|
<div class="cdk-overlay-container">
|
|
289
|
-
<div
|
|
290
|
-
|
|
316
|
+
<div
|
|
317
|
+
class="cdk-overlay-backdrop cdk-overlay-dark-backdrop cdk-overlay-backdrop-showing"
|
|
318
|
+
></div>
|
|
319
|
+
<div
|
|
320
|
+
class="cdk-global-overlay-wrapper"
|
|
291
321
|
dir="ltr"
|
|
292
322
|
style="justify-content: flex-start; align-items: center; pointer-events: auto"
|
|
293
|
-
seamOverlayScrollbar
|
|
294
|
-
|
|
323
|
+
seamOverlayScrollbar
|
|
324
|
+
>
|
|
325
|
+
<div
|
|
326
|
+
class="seam-modal-container modal-dialog modal-dialog-centered {{
|
|
327
|
+
modalConfig?.modalSize
|
|
328
|
+
? 'modal-' + modalConfig?.modalSize
|
|
329
|
+
: 'modal-lg'
|
|
330
|
+
}}"
|
|
295
331
|
tabindex="-1"
|
|
296
|
-
[class.modal-lg]="!modalConfig"
|
|
332
|
+
[class.modal-lg]="!modalConfig"
|
|
333
|
+
>
|
|
297
334
|
<div class="modal-content">
|
|
298
335
|
<ng-container *ngIf="_outletData$ | async as outletData">
|
|
299
|
-
<ng-container
|
|
336
|
+
<ng-container
|
|
337
|
+
*ngComponentOutlet="
|
|
338
|
+
outletData.component;
|
|
339
|
+
injector: outletData.injector
|
|
340
|
+
"
|
|
341
|
+
></ng-container>
|
|
300
342
|
</ng-container>
|
|
301
343
|
</div>
|
|
302
344
|
</div>
|
|
@@ -312,31 +354,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
312
354
|
}] } });
|
|
313
355
|
|
|
314
356
|
class StoryHelperComponentsModule {
|
|
315
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
316
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
317
|
-
|
|
318
|
-
RouterModule,
|
|
319
|
-
TheSeamOverlayScrollbarDirective], exports: [StoryEmptyWithRouteComponent,
|
|
320
|
-
StoryModalContainerComponent] });
|
|
321
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: StoryHelperComponentsModule, imports: [CommonModule,
|
|
322
|
-
RouterModule] });
|
|
357
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryHelperComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
358
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.6", ngImport: i0, type: StoryHelperComponentsModule, declarations: [StoryEmptyWithRouteComponent, StoryModalContainerComponent], imports: [CommonModule, RouterModule, TheSeamOverlayScrollbarDirective], exports: [StoryEmptyWithRouteComponent, StoryModalContainerComponent] });
|
|
359
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryHelperComponentsModule, imports: [CommonModule, RouterModule] });
|
|
323
360
|
}
|
|
324
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryHelperComponentsModule, decorators: [{
|
|
325
362
|
type: NgModule,
|
|
326
363
|
args: [{
|
|
327
|
-
declarations: [
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
],
|
|
331
|
-
imports: [
|
|
332
|
-
CommonModule,
|
|
333
|
-
RouterModule,
|
|
334
|
-
TheSeamOverlayScrollbarDirective
|
|
335
|
-
],
|
|
336
|
-
exports: [
|
|
337
|
-
StoryEmptyWithRouteComponent,
|
|
338
|
-
StoryModalContainerComponent
|
|
339
|
-
]
|
|
364
|
+
declarations: [StoryEmptyWithRouteComponent, StoryModalContainerComponent],
|
|
365
|
+
imports: [CommonModule, RouterModule, TheSeamOverlayScrollbarDirective],
|
|
366
|
+
exports: [StoryEmptyWithRouteComponent, StoryModalContainerComponent],
|
|
340
367
|
}]
|
|
341
368
|
}] });
|
|
342
369
|
|
|
@@ -368,10 +395,10 @@ class StoryToastrService {
|
|
|
368
395
|
* Determines if toast message is already shown
|
|
369
396
|
*/
|
|
370
397
|
findDuplicate(message, resetOnDuplicate, countDuplicates) { }
|
|
371
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
372
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
398
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryToastrService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
399
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryToastrService });
|
|
373
400
|
}
|
|
374
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
401
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryToastrService, decorators: [{
|
|
375
402
|
type: Injectable
|
|
376
403
|
}] });
|
|
377
404
|
|
|
@@ -469,7 +496,7 @@ function onStoryBootstrappedTrigger(targetSelector, eventName) {
|
|
|
469
496
|
return {
|
|
470
497
|
provide: APP_BOOTSTRAP_LISTENER,
|
|
471
498
|
useValue: bootstrapped,
|
|
472
|
-
multi: true
|
|
499
|
+
multi: true,
|
|
473
500
|
};
|
|
474
501
|
}
|
|
475
502
|
|
|
@@ -479,7 +506,7 @@ class StoryPreferencesAccessorService {
|
|
|
479
506
|
* Gets a preference.
|
|
480
507
|
*/
|
|
481
508
|
get(name) {
|
|
482
|
-
console.log('get', name)
|
|
509
|
+
// console.log('get', name)
|
|
483
510
|
return of(localStorage.getItem(`${ACCESSOR_PREFIX}-${name}`) || '{}');
|
|
484
511
|
}
|
|
485
512
|
/**
|
|
@@ -497,16 +524,51 @@ class StoryPreferencesAccessorService {
|
|
|
497
524
|
localStorage.removeItem(`${ACCESSOR_PREFIX}-${name}`);
|
|
498
525
|
return of(true);
|
|
499
526
|
}
|
|
500
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
501
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
527
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryPreferencesAccessorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
528
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryPreferencesAccessorService });
|
|
502
529
|
}
|
|
503
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
530
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: StoryPreferencesAccessorService, decorators: [{
|
|
504
531
|
type: Injectable
|
|
505
532
|
}] });
|
|
506
533
|
|
|
534
|
+
const INJECTOR_TO_ARGS_PROPERTY_NAME = '__getInjector';
|
|
535
|
+
// TODO: Decide a better way to persist the injector reference than poluting
|
|
536
|
+
// args with a value that isn't really meant to be an arg.
|
|
537
|
+
/**
|
|
538
|
+
* Storybook decorator that stores the Angular Injector in
|
|
539
|
+
* args, for retrieval in play function.
|
|
540
|
+
*/
|
|
541
|
+
const addInjectorGetterToArgs = (argName = INJECTOR_TO_ARGS_PROPERTY_NAME) => (story, context) => {
|
|
542
|
+
// TODO: Test this more thoroughly.
|
|
543
|
+
let injector = null;
|
|
544
|
+
context.args[argName] = () => injector;
|
|
545
|
+
return applicationConfig({
|
|
546
|
+
providers: [
|
|
547
|
+
{
|
|
548
|
+
provide: APP_INITIALIZER,
|
|
549
|
+
useFactory: (injectorService) => () => {
|
|
550
|
+
injector = injectorService;
|
|
551
|
+
},
|
|
552
|
+
deps: [Injector],
|
|
553
|
+
multi: true,
|
|
554
|
+
},
|
|
555
|
+
],
|
|
556
|
+
})(story, context);
|
|
557
|
+
};
|
|
558
|
+
const getInjectorFromArgs = (args, argName = INJECTOR_TO_ARGS_PROPERTY_NAME) => {
|
|
559
|
+
if (!args || typeof args[argName] !== 'function') {
|
|
560
|
+
throw Error(`Injector getter function '${argName}' not found.`);
|
|
561
|
+
}
|
|
562
|
+
const injector = args[argName]();
|
|
563
|
+
if (!injector) {
|
|
564
|
+
throw Error(`Injector not found. Did you add 'addInjectorGetterToArgs' to your story dectorators?`);
|
|
565
|
+
}
|
|
566
|
+
return injector;
|
|
567
|
+
};
|
|
568
|
+
|
|
507
569
|
/**
|
|
508
570
|
* Generated bundle index. Do not edit.
|
|
509
571
|
*/
|
|
510
572
|
|
|
511
|
-
export { STORY_INITIAL_ROUTE_URL, StoryEmptyComponent, StoryEmptyWithRouteComponent, StoryHelperComponentsModule, StoryInitialRouteModule, StoryInitialRouteService, StoryModalContainerComponent, StoryPreferencesAccessorService, StoryToastrService, argsToTpl, buttonTypeArgType, onStoryBootstrappedTrigger, routeButton, routesArgType, sizeArgType, storyInitialRouteFactory, themeArgType, themeWithOutlineArgType };
|
|
573
|
+
export { INJECTOR_TO_ARGS_PROPERTY_NAME, STORY_INITIAL_ROUTE_URL, StoryEmptyComponent, StoryEmptyWithRouteComponent, StoryHelperComponentsModule, StoryInitialRouteModule, StoryInitialRouteService, StoryModalContainerComponent, StoryPreferencesAccessorService, StoryToastrService, addInjectorGetterToArgs, argsToTpl, buttonTypeArgType, getInjectorFromArgs, onStoryBootstrappedTrigger, routeButton, routesArgType, sizeArgType, storyInitialRouteFactory, themeArgType, themeWithOutlineArgType };
|
|
512
574
|
//# sourceMappingURL=theseam-ui-common-story-helpers.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-story-helpers.mjs","sources":["../../../projects/ui-common/story-helpers/arg-type-helpers.ts","../../../projects/ui-common/story-helpers/args-to-tpl.ts","../../../projects/ui-common/story-helpers/story-empty.component.ts","../../../projects/ui-common/story-helpers/initial-route-factory.ts","../../../projects/ui-common/story-helpers/initial-route.service.ts","../../../projects/ui-common/story-helpers/story-initial-route.ts","../../../projects/ui-common/story-helpers/route-button.ts","../../../projects/ui-common/story-helpers/routes-arg-type.ts","../../../projects/ui-common/story-helpers/story-empty-with-route.component.ts","../../../projects/ui-common/story-helpers/story-modal-container.component.ts","../../../projects/ui-common/story-helpers/story-helper-components.module.ts","../../../projects/ui-common/story-helpers/story-toastr.service.ts","../../../projects/ui-common/story-helpers/on-story-bootstrapped-exec.ts","../../../projects/ui-common/story-helpers/on-story-bootstrapped-trigger.ts","../../../projects/ui-common/story-helpers/story-preferences-accessor.service.ts","../../../projects/ui-common/story-helpers/theseam-ui-common-story-helpers.ts"],"sourcesContent":["// import { ArgType } from '@storybook/addons'\n\nimport { OutlineThemeNames, ThemeNames } from '@theseam/ui-common/models'\n\ndeclare type ArgType = any\n\nexport const themeArgType: ArgType = {\n options: ThemeNames,\n control: {\n type: 'select',\n },\n description: `Theme style.`\n}\n\nexport const themeWithOutlineArgType: ArgType = {\n options: [ ...ThemeNames, ...OutlineThemeNames ],\n control: {\n type: 'select',\n },\n description: `Theme style.`\n}\n\nexport const sizeArgType: ArgType = {\n options: [ undefined, 'sm', 'lg' ],\n control: {\n type: 'select',\n },\n description: `Size.`\n}\n\nexport const buttonTypeArgType: ArgType = {\n options: [ 'button', 'submit' ],\n control: {\n type: 'select',\n },\n description: `Button type.`\n}\n","/* eslint-disable no-prototype-builtins */\nimport { action, HandlerFunction } from 'storybook/actions'\nimport { AngularRenderer, ArgTypes } from '@storybook/angular'\nimport { useStoryContext } from 'storybook/preview-api'\n\nexport interface ArgsTplParts {\n actions: { [prop: string]: HandlerFunction }\n tplfragment: string\n}\n\n/**\n * This is an attempt at simplifying the use of auto-generated args in stories\n * defined with `template`, since Angular doesn't have a way to simply use a\n * spread operator syntax.\n *\n * @experimental\n */\n// export function argsToTplParts(args: any, argTypes: ArgTypes): ArgsTplParts {\n// // console.log({ args, argTypes })\n// const parts: ArgsTplParts = {\n// actions: {},\n// tplfragment: ''\n// }\n\n// Object.keys(argTypes).forEach(k => {\n// // Inputs\n// if (\n// // Is in the inputs category\n// argTypes[k].table.category === 'inputs' &&\n// // Needs a control to be able to change from auto-generated args.\n// argTypes[k]?.hasOwnProperty('control') &&\n// // Assuming the arg might not be in props if there isn't an arg value.\n// args.hasOwnProperty(k)\n// ) {\n// parts.tplfragment += `[${k}]=\"${k}\" `\n// }\n\n// // Outputs\n// if (\n// // Is in the outputs category\n// argTypes[k]?.table?.category === 'outputs'\n// ) {\n// // Without access to props, I don't know if I can get an action into the\n// // template context like this.\n// parts.tplfragment += `(${k})=\"${k}($event)\" `\n// parts.actions[k] = action(k)\n// }\n// })\n\n// return parts\n// }\n\nfunction removeDuplicates(arr: string[]) {\n const seen: { [k: string]: boolean } = {}\n return arr.filter(item => {\n if (!seen[item]) {\n seen[item] = true\n return true\n }\n return false\n })\n}\n\nexport interface ArgsTplOptions {\n /**\n * Properties to always bind to the template.\n */\n alwaysBind?: string[]\n /**\n * Properties to exclude from bidning to the template.\n */\n exclude?: string[]\n}\n\n/**\n * This is an attempt at simplifying the use of auto-generated args in stories\n * defined with `template`, since Angular doesn't have a way to simply use a\n * spread operator syntax.\n *\n * @experimental\n */\nexport function argsToTpl(options?: ArgsTplOptions) {\n const context = useStoryContext<AngularRenderer>()\n\n const exclude = [\n ...(context?.parameters?.argsToTplOptions?.exclude || []),\n ...(options?.exclude || []),\n ]\n\n const alwaysBind = context?.parameters?.argsToTplOptions?.alwaysBind || []\n\n const props = removeDuplicates([\n ...alwaysBind,\n ...Object.keys(context.args),\n ])\n\n const parts = props\n .filter(k => exclude.indexOf(k) === -1)\n .map(k => {\n // Outputs\n if (\n context.argTypes[k]?.hasOwnProperty('action') &&\n (context.args.hasOwnProperty(k) || alwaysBind.indexOf(k) !== -1)\n ) {\n return `(${k})=\"${k}($event)\"`\n }\n\n // Inputs\n if (\n (context.args.hasOwnProperty(k) || alwaysBind.indexOf(k) !== -1)\n ) {\n return `[${k}]=\"${k}\"`\n }\n })\n\n return parts.length > 0 ? parts.join(' ') : ''\n}\n","import { Component } from '@angular/core'\n\n@Component({ template: ``, standalone: true })\nexport class StoryEmptyComponent { }\n","import { StoryInitialRouteService } from './initial-route.service'\n\nexport function storyInitialRouteFactory(_storyInitialRouteService: StoryInitialRouteService) {\n return () => _storyInitialRouteService.setInitialRoute()\n}\n","import { Injectable, InjectionToken, Injector } from '@angular/core'\nimport { NavigationEnd, Router } from '@angular/router'\nimport { filter, take } from 'rxjs/operators'\n\nexport const STORY_INITIAL_ROUTE_URL = new InjectionToken<any>('STORY_INITIAL_ROUTE_URL')\n\n@Injectable()\nexport class StoryInitialRouteService {\n\n constructor(\n private _injector: Injector\n ) { }\n\n public setInitialRoute() {\n const _router = this._injector.get(Router)\n const url = this._injector.get(STORY_INITIAL_ROUTE_URL)\n if (_router.navigated) {\n _router.navigateByUrl(url)\n } else {\n _router.events.pipe(\n filter(e => e instanceof NavigationEnd),\n take(1)\n )\n .subscribe(() => { _router.navigateByUrl(url) })\n }\n }\n\n}\n","import { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core'\n\nimport { storyInitialRouteFactory } from './initial-route-factory'\nimport { StoryInitialRouteService, STORY_INITIAL_ROUTE_URL } from './initial-route.service'\n\n@NgModule()\nexport class StoryInitialRouteModule {\n static forRoot(url: string): ModuleWithProviders<StoryInitialRouteModule> {\n return {\n ngModule: StoryInitialRouteModule,\n providers: [\n StoryInitialRouteService,\n {\n provide: APP_INITIALIZER,\n useFactory: storyInitialRouteFactory,\n deps: [ StoryInitialRouteService ],\n multi: true\n },\n { provide: STORY_INITIAL_ROUTE_URL, useValue: url }\n ]\n }\n }\n\n}\n","// import { button } from '@storybook/addon-knobs'\n\n/**\n * Until I find a way to avoid '@storybook/addon-knobs' from interfering with\n * NgZone I can't import it in the knob when built by ng-packagr.\n */\nexport function routeButton(buttonKnob: any, url: string) {\n return buttonKnob(url, () => {\n location.hash = `#${url}`\n return false\n })\n}\n","// import { ArgType } from '@storybook/addons'\n\ndeclare const __STORYBOOK_ADDONS: any\n\nfunction goToHashUrl(url: string): void { location.hash = `#${url}` }\n\n// __STORYBOOK_ADDONS.getChannel().on('custom/go-to-hash', (data: { hash: string }) => {\n\n// goToHashUrl(data.hash)\n// })\n\n// __STORYBOOK_ADDONS.getChannel().on('storyArgsUpdated', (data: { hash: string }) => {\n// console.log('storyArgsUpdated')\n// })\n\nexport function routesArgType(routes: string[])/*: ArgType*/ {\n return {\n options: routes,\n control: {\n type: 'select',\n // Runs in the 'manager', so I am emitting to a channel in the 'preview'.\n onChange: (e: any, a: any) => { __STORYBOOK_ADDONS.getChannel().emit('custom/go-to-hash', { hash: e }); return e }\n }\n }\n}\n","import { Component } from '@angular/core'\n\n@Component({ template: `<router-outlet></router-outlet>`, standalone: false })\nexport class StoryEmptyWithRouteComponent { }\n","import { Component, Injector, Input, OnDestroy } from '@angular/core'\nimport { combineLatest, Observable, of, ReplaySubject, Subject } from 'rxjs'\nimport { auditTime, map, startWith, takeUntil } from 'rxjs/operators'\n\nimport { ModalConfig, ModalRef, MODAL_DATA } from '@theseam/ui-common/modal'\nimport type { ComponentType } from '@theseam/ui-common/models'\n\nclass FakeModalRef<T, R = any> implements Partial<ModalRef<T, R>> {\n\n afterOpened() { return of(undefined) }\n\n close(dialogResult?: R): void { }\n\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'story-modal-container-component',\n template: `\n <div class=\"cdk-overlay-container\">\n <div class=\"cdk-overlay-backdrop cdk-overlay-dark-backdrop cdk-overlay-backdrop-showing\"></div>\n <div class=\"cdk-global-overlay-wrapper\"\n dir=\"ltr\"\n style=\"justify-content: flex-start; align-items: center; pointer-events: auto\"\n seamOverlayScrollbar>\n <div class=\"seam-modal-container modal-dialog modal-dialog-centered {{ modalConfig?.modalSize ? 'modal-' + modalConfig?.modalSize : 'modal-lg' }}\"\n tabindex=\"-1\"\n [class.modal-lg]=\"!modalConfig\">\n <div class=\"modal-content\">\n <ng-container *ngIf=\"_outletData$ | async as outletData\">\n <ng-container *ngComponentOutlet=\"outletData.component; injector: outletData.injector;\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n `,\n styles: [`\n .seam-modal-container[tabindex=\"-1\"]:focus {\n outline: 0 !important;\n }\n `],\n standalone: false,\n})\nexport class StoryModalContainerComponent<T, D = any> implements OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n @Input() set component(c: ComponentType<T>) { this._component.next(c) }\n @Input() set data(d: D) { this._data.next(d) }\n\n @Input() modalConfig?: ModalConfig<D>\n\n _component = new ReplaySubject<ComponentType<T>>(1)\n _data = new ReplaySubject<D>(1)\n\n _outletData$: Observable<{ component: ComponentType<T>, injector: Injector } | null>\n\n constructor(\n private _injector: Injector\n ) {\n this._outletData$ = combineLatest([\n this._component.asObservable(),\n this._data.asObservable().pipe(startWith(undefined))\n ]).pipe(\n auditTime(0),\n map(([ component, data ]) => ({\n component,\n injector: this._createInjector(data)\n })),\n takeUntil(this._ngUnsubscribe)\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n private _createInjector(data?: D): Injector {\n return Injector.create({\n providers: [\n { provide: ModalRef, useClass: FakeModalRef, deps: [] },\n { provide: MODAL_DATA, useValue: data }\n ],\n parent: this._injector\n })\n }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { TheSeamOverlayScrollbarDirective } from '@theseam/ui-common/scrollbar'\n\nimport { StoryEmptyWithRouteComponent } from './story-empty-with-route.component'\nimport { StoryModalContainerComponent } from './story-modal-container.component'\n\n@NgModule({\n declarations: [\n StoryEmptyWithRouteComponent,\n StoryModalContainerComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n TheSeamOverlayScrollbarDirective\n ],\n exports: [\n StoryEmptyWithRouteComponent,\n StoryModalContainerComponent\n ]\n})\nexport class StoryHelperComponentsModule { }\n","import { Injectable } from '@angular/core'\n\nimport { ActiveToast, GlobalConfig, IndividualConfig, ToastContainerDirective } from 'ngx-toastr'\n\n@Injectable()\nexport class StoryToastrService {\n toastrConfig?: GlobalConfig\n currentlyActive = 0\n toasts: ActiveToast<any>[] = []\n overlayContainer?: ToastContainerDirective\n previousToastMessage: string | undefined\n\n /** show toast */\n show(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {},\n type = ''\n ) { }\n\n /** show successful toast */\n success(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show error toast */\n error(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show info toast */\n info(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show warning toast */\n warning(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /**\n * Remove all or a single toast by id\n */\n clear(toastId?: number) { }\n\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId: number) { }\n\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(message: string, resetOnDuplicate: boolean, countDuplicates: boolean) { }\n\n}\n","import { APP_BOOTSTRAP_LISTENER, ComponentRef } from '@angular/core'\n// import { STORY } from '@storybook/angular/dist/ts3.9/client/preview/angular/app.token'\n// import { StoryFnAngularReturnType } from '@storybook/angular/dist/ts3.9/client/preview/types'\nimport { Observable } from 'rxjs'\nimport { first } from 'rxjs/operators'\n\n/**\n * Can be used to access a stories component after the story has been bootstrapped.\n *\n * Example:\n * ```ts\n * @Component({\n * selector: 'story-example',\n * template: `Touched: {{ exControl.touched }}`\n * })\n * class StoryExampleComponent {\n * exControl = new FormControl('')\n * }\n *\n * export const TouchExample2 = () => ({\n * moduleMetadata: {\n * declarations: [ StoryExampleComponent ],\n * providers: [ onStoryBootstrappedExec((c: StoryExampleComponent) => c.exControl.markAsTouched()) ]\n * },\n * props: { },\n * component: StoryExampleComponent\n * })\n * ```\n */\n// export function onStoryBootstrappedExec<T = any>(callback: (component: T) => void) {\n// function bootstrapped(componentRef: ComponentRef<any>) {\n// const data = componentRef.instance.target.injector.get(STORY, null) as Observable<StoryFnAngularReturnType> | null\n// if (!data) {\n// console.warn(`STORY provider not found.`)\n// return\n// }\n// data?.pipe(first()).subscribe(story => {\n// if (!story.component) {\n// console.warn(`'onStoryBootstrappedExec' only supported on stories that provide 'component' property.`)\n// return\n// }\n\n// let c = null\n// for (let i = 0; i < componentRef.instance.target.length; i++) {\n// const tmp = componentRef.instance.target._embeddedViews[i].nodes?.find((f: any) => f?.instance instanceof story.component)\n// const comp = tmp?.instance\n// if (comp) {\n// c = comp\n// break\n// }\n// }\n\n// if (!c) {\n// console.warn(`Story component instance not found.`)\n// return\n// }\n\n// if (c) {\n// callback(c)\n// }\n// })\n// }\n\n// return {\n// provide: APP_BOOTSTRAP_LISTENER,\n// useValue: bootstrapped,\n// multi: true\n// }\n// }\n","import { APP_BOOTSTRAP_LISTENER, ComponentRef, ElementRef } from '@angular/core'\n\n// TODO: Consider supporting a target selection function, so that complex\n// selections that can't be expressed by a simple selector can be used.\n\n/**\n * Can be used to trigger an event on a target element when the story component has been bootstrapped.\n *\n * Example:\n * ```\n * export const TouchExample1 = () => ({\n * moduleMetadata: {\n * providers: [ onStoryBootstrappedTrigger('input', 'blur') ]\n * },\n * props: { control: new FormControl('') },\n * template: `\n * <input type=\"text\" [formControl]=\"control\">\n * Touched: {{ control.touched }}\n * `\n * })\n * ```\n */\nexport function onStoryBootstrappedTrigger(targetSelector: string, eventName: string) {\n function bootstrapped(componentRef: ComponentRef<any>) {\n const elementRef = componentRef.injector.get(ElementRef, null)\n const target = elementRef?.nativeElement.querySelector(targetSelector)\n if (!target) {\n // eslint-disable-next-line no-console\n console.warn(`Unable to trigger event '${eventName}'. Target '${targetSelector}' not found.`)\n }\n\n const e = document.createEvent('HTMLEvents')\n e.initEvent('blur', false, true)\n target.dispatchEvent(e)\n }\n\n return {\n provide: APP_BOOTSTRAP_LISTENER,\n useValue: bootstrapped,\n multi: true\n }\n}\n","import { Injectable } from '@angular/core'\nimport { Observable, of } from 'rxjs'\n\nimport { TheSeamPreferencesAccessor } from '@theseam/ui-common/services'\n\nconst ACCESSOR_PREFIX = 'story-pref'\n\n@Injectable()\nexport class StoryPreferencesAccessorService implements TheSeamPreferencesAccessor {\n\n /**\n * Gets a preference.\n */\n public get(name: string): Observable<string> {\n console.log('get', name)\n return of(localStorage.getItem(`${ACCESSOR_PREFIX}-${name}`) || '{}')\n }\n\n /**\n * Update a preference.\n */\n public update(name: string, value: string): Observable<string> {\n // console.log('update', name)\n localStorage.setItem(`${ACCESSOR_PREFIX}-${name}`, value)\n return this.get(name)\n }\n\n /**\n * Delete a preference.\n */\n public delete(name: string): Observable<boolean> {\n localStorage.removeItem(`${ACCESSOR_PREFIX}-${name}`)\n return of(true)\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theseam-ui-common-story-helpers.mjs","sources":["../../../projects/ui-common/story-helpers/arg-type-helpers.ts","../../../projects/ui-common/story-helpers/args-to-tpl.ts","../../../projects/ui-common/story-helpers/story-empty.component.ts","../../../projects/ui-common/story-helpers/initial-route-factory.ts","../../../projects/ui-common/story-helpers/initial-route.service.ts","../../../projects/ui-common/story-helpers/story-initial-route.ts","../../../projects/ui-common/story-helpers/route-button.ts","../../../projects/ui-common/story-helpers/routes-arg-type.ts","../../../projects/ui-common/story-helpers/story-empty-with-route.component.ts","../../../projects/ui-common/story-helpers/story-modal-container.component.ts","../../../projects/ui-common/story-helpers/story-helper-components.module.ts","../../../projects/ui-common/story-helpers/story-toastr.service.ts","../../../projects/ui-common/story-helpers/on-story-bootstrapped-exec.ts","../../../projects/ui-common/story-helpers/on-story-bootstrapped-trigger.ts","../../../projects/ui-common/story-helpers/story-preferences-accessor.service.ts","../../../projects/ui-common/story-helpers/add-injector-to-args.ts","../../../projects/ui-common/story-helpers/theseam-ui-common-story-helpers.ts"],"sourcesContent":["// import { ArgType } from '@storybook/addons'\n\nimport { OutlineThemeNames, ThemeNames } from '@theseam/ui-common/models'\n\ndeclare type ArgType = any\n\nexport const themeArgType: ArgType = {\n options: ThemeNames,\n control: {\n type: 'select',\n },\n description: `Theme style.`,\n}\n\nexport const themeWithOutlineArgType: ArgType = {\n options: [...ThemeNames, ...OutlineThemeNames],\n control: {\n type: 'select',\n },\n description: `Theme style.`,\n}\n\nexport const sizeArgType: ArgType = {\n options: [undefined, 'sm', 'lg'],\n control: {\n type: 'select',\n },\n description: `Size.`,\n}\n\nexport const buttonTypeArgType: ArgType = {\n options: ['button', 'submit'],\n control: {\n type: 'select',\n },\n description: `Button type.`,\n}\n","/* eslint-disable no-prototype-builtins */\nimport { action, HandlerFunction } from 'storybook/actions'\nimport { AngularRenderer, ArgTypes } from '@storybook/angular'\nimport { useStoryContext } from 'storybook/preview-api'\n\nexport interface ArgsTplParts {\n actions: { [prop: string]: HandlerFunction }\n tplfragment: string\n}\n\n/**\n * This is an attempt at simplifying the use of auto-generated args in stories\n * defined with `template`, since Angular doesn't have a way to simply use a\n * spread operator syntax.\n *\n * @experimental\n */\n// export function argsToTplParts(args: any, argTypes: ArgTypes): ArgsTplParts {\n// // console.log({ args, argTypes })\n// const parts: ArgsTplParts = {\n// actions: {},\n// tplfragment: ''\n// }\n\n// Object.keys(argTypes).forEach(k => {\n// // Inputs\n// if (\n// // Is in the inputs category\n// argTypes[k].table.category === 'inputs' &&\n// // Needs a control to be able to change from auto-generated args.\n// argTypes[k]?.hasOwnProperty('control') &&\n// // Assuming the arg might not be in props if there isn't an arg value.\n// args.hasOwnProperty(k)\n// ) {\n// parts.tplfragment += `[${k}]=\"${k}\" `\n// }\n\n// // Outputs\n// if (\n// // Is in the outputs category\n// argTypes[k]?.table?.category === 'outputs'\n// ) {\n// // Without access to props, I don't know if I can get an action into the\n// // template context like this.\n// parts.tplfragment += `(${k})=\"${k}($event)\" `\n// parts.actions[k] = action(k)\n// }\n// })\n\n// return parts\n// }\n\nfunction removeDuplicates(arr: string[]) {\n const seen: { [k: string]: boolean } = {}\n return arr.filter((item) => {\n if (!seen[item]) {\n seen[item] = true\n return true\n }\n return false\n })\n}\n\nexport interface ArgsTplOptions {\n /**\n * Properties to always bind to the template.\n */\n alwaysBind?: string[]\n /**\n * Properties to exclude from bidning to the template.\n */\n exclude?: string[]\n}\n\n/**\n * This is an attempt at simplifying the use of auto-generated args in stories\n * defined with `template`, since Angular doesn't have a way to simply use a\n * spread operator syntax.\n *\n * @experimental\n */\nexport function argsToTpl(options?: ArgsTplOptions) {\n const context = useStoryContext<AngularRenderer>()\n\n const exclude = [\n ...(context?.parameters?.argsToTplOptions?.exclude || []),\n ...(options?.exclude || []),\n ]\n\n const alwaysBind = context?.parameters?.argsToTplOptions?.alwaysBind || []\n\n const props = removeDuplicates([...alwaysBind, ...Object.keys(context.args)])\n\n const parts = props\n .filter((k) => exclude.indexOf(k) === -1)\n .map((k) => {\n // Outputs\n if (\n context.argTypes[k]?.hasOwnProperty('action') &&\n (context.args.hasOwnProperty(k) || alwaysBind.indexOf(k) !== -1)\n ) {\n return `(${k})=\"${k}($event)\"`\n }\n\n // Inputs\n if (context.args.hasOwnProperty(k) || alwaysBind.indexOf(k) !== -1) {\n return `[${k}]=\"${k}\"`\n }\n })\n\n return parts.length > 0 ? parts.join(' ') : ''\n}\n","import { Component } from '@angular/core'\n\n@Component({ template: ``, standalone: true })\nexport class StoryEmptyComponent {}\n","import { StoryInitialRouteService } from './initial-route.service'\n\nexport function storyInitialRouteFactory(\n _storyInitialRouteService: StoryInitialRouteService,\n) {\n return () => _storyInitialRouteService.setInitialRoute()\n}\n","import { Injectable, InjectionToken, Injector } from '@angular/core'\nimport { NavigationEnd, Router } from '@angular/router'\nimport { filter, take } from 'rxjs/operators'\n\nexport const STORY_INITIAL_ROUTE_URL = new InjectionToken<any>(\n 'STORY_INITIAL_ROUTE_URL',\n)\n\n@Injectable()\nexport class StoryInitialRouteService {\n constructor(private _injector: Injector) {}\n\n public setInitialRoute() {\n const _router = this._injector.get(Router)\n const url = this._injector.get(STORY_INITIAL_ROUTE_URL)\n if (_router.navigated) {\n _router.navigateByUrl(url)\n } else {\n _router.events\n .pipe(\n filter((e) => e instanceof NavigationEnd),\n take(1),\n )\n .subscribe(() => {\n _router.navigateByUrl(url)\n })\n }\n }\n}\n","import { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core'\n\nimport { storyInitialRouteFactory } from './initial-route-factory'\nimport {\n StoryInitialRouteService,\n STORY_INITIAL_ROUTE_URL,\n} from './initial-route.service'\n\n@NgModule()\nexport class StoryInitialRouteModule {\n static forRoot(url: string): ModuleWithProviders<StoryInitialRouteModule> {\n return {\n ngModule: StoryInitialRouteModule,\n providers: [\n StoryInitialRouteService,\n {\n provide: APP_INITIALIZER,\n useFactory: storyInitialRouteFactory,\n deps: [StoryInitialRouteService],\n multi: true,\n },\n { provide: STORY_INITIAL_ROUTE_URL, useValue: url },\n ],\n }\n }\n}\n","// import { button } from '@storybook/addon-knobs'\n\n/**\n * Until I find a way to avoid '@storybook/addon-knobs' from interfering with\n * NgZone I can't import it in the knob when built by ng-packagr.\n */\nexport function routeButton(buttonKnob: any, url: string) {\n return buttonKnob(url, () => {\n location.hash = `#${url}`\n return false\n })\n}\n","// import { ArgType } from '@storybook/addons'\n\ndeclare const __STORYBOOK_ADDONS: any\n\nfunction goToHashUrl(url: string): void {\n location.hash = `#${url}`\n}\n\n// __STORYBOOK_ADDONS.getChannel().on('custom/go-to-hash', (data: { hash: string }) => {\n\n// goToHashUrl(data.hash)\n// })\n\n// __STORYBOOK_ADDONS.getChannel().on('storyArgsUpdated', (data: { hash: string }) => {\n// console.log('storyArgsUpdated')\n// })\n\nexport function routesArgType(routes: string[]) /*: ArgType*/ {\n return {\n options: routes,\n control: {\n type: 'select',\n // Runs in the 'manager', so I am emitting to a channel in the 'preview'.\n onChange: (e: any, a: any) => {\n __STORYBOOK_ADDONS.getChannel().emit('custom/go-to-hash', { hash: e })\n return e\n },\n },\n }\n}\n","import { Component } from '@angular/core'\n\n@Component({ template: `<router-outlet></router-outlet>`, standalone: false })\nexport class StoryEmptyWithRouteComponent {}\n","import { Component, Injector, Input, OnDestroy } from '@angular/core'\nimport { combineLatest, Observable, of, ReplaySubject, Subject } from 'rxjs'\nimport { auditTime, map, startWith, takeUntil } from 'rxjs/operators'\n\nimport { ModalConfig, ModalRef, MODAL_DATA } from '@theseam/ui-common/modal'\nimport type { ComponentType } from '@theseam/ui-common/models'\n\nclass FakeModalRef<T, R = any> implements Partial<ModalRef<T, R>> {\n afterOpened() {\n return of(undefined)\n }\n\n close(dialogResult?: R): void {}\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'story-modal-container-component',\n template: `\n <div class=\"cdk-overlay-container\">\n <div\n class=\"cdk-overlay-backdrop cdk-overlay-dark-backdrop cdk-overlay-backdrop-showing\"\n ></div>\n <div\n class=\"cdk-global-overlay-wrapper\"\n dir=\"ltr\"\n style=\"justify-content: flex-start; align-items: center; pointer-events: auto\"\n seamOverlayScrollbar\n >\n <div\n class=\"seam-modal-container modal-dialog modal-dialog-centered {{\n modalConfig?.modalSize\n ? 'modal-' + modalConfig?.modalSize\n : 'modal-lg'\n }}\"\n tabindex=\"-1\"\n [class.modal-lg]=\"!modalConfig\"\n >\n <div class=\"modal-content\">\n <ng-container *ngIf=\"_outletData$ | async as outletData\">\n <ng-container\n *ngComponentOutlet=\"\n outletData.component;\n injector: outletData.injector\n \"\n ></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n `,\n styles: [\n `\n .seam-modal-container[tabindex='-1']:focus {\n outline: 0 !important;\n }\n `,\n ],\n standalone: false,\n})\nexport class StoryModalContainerComponent<T, D = any> implements OnDestroy {\n private readonly _ngUnsubscribe = new Subject<void>()\n\n @Input() set component(c: ComponentType<T>) {\n this._component.next(c)\n }\n @Input() set data(d: D) {\n this._data.next(d)\n }\n\n @Input() modalConfig?: ModalConfig<D>\n\n _component = new ReplaySubject<ComponentType<T>>(1)\n _data = new ReplaySubject<D>(1)\n\n _outletData$: Observable<{\n component: ComponentType<T>\n injector: Injector\n } | null>\n\n constructor(private _injector: Injector) {\n this._outletData$ = combineLatest([\n this._component.asObservable(),\n this._data.asObservable().pipe(startWith(undefined)),\n ]).pipe(\n auditTime(0),\n map(([component, data]) => ({\n component,\n injector: this._createInjector(data),\n })),\n takeUntil(this._ngUnsubscribe),\n )\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n private _createInjector(data?: D): Injector {\n return Injector.create({\n providers: [\n { provide: ModalRef, useClass: FakeModalRef, deps: [] },\n { provide: MODAL_DATA, useValue: data },\n ],\n parent: this._injector,\n })\n }\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { TheSeamOverlayScrollbarDirective } from '@theseam/ui-common/scrollbar'\n\nimport { StoryEmptyWithRouteComponent } from './story-empty-with-route.component'\nimport { StoryModalContainerComponent } from './story-modal-container.component'\n\n@NgModule({\n declarations: [StoryEmptyWithRouteComponent, StoryModalContainerComponent],\n imports: [CommonModule, RouterModule, TheSeamOverlayScrollbarDirective],\n exports: [StoryEmptyWithRouteComponent, StoryModalContainerComponent],\n})\nexport class StoryHelperComponentsModule {}\n","import { Injectable } from '@angular/core'\n\nimport {\n ActiveToast,\n GlobalConfig,\n IndividualConfig,\n ToastContainerDirective,\n} from 'ngx-toastr'\n\n@Injectable()\nexport class StoryToastrService {\n toastrConfig?: GlobalConfig\n currentlyActive = 0\n toasts: ActiveToast<any>[] = []\n overlayContainer?: ToastContainerDirective\n previousToastMessage: string | undefined\n\n /** show toast */\n show(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {},\n type = '',\n ) {}\n\n /** show successful toast */\n success(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {},\n ) {}\n\n /** show error toast */\n error(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {},\n ) {}\n\n /** show info toast */\n info(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {},\n ) {}\n\n /** show warning toast */\n warning(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {},\n ) {}\n\n /**\n * Remove all or a single toast by id\n */\n clear(toastId?: number) {}\n\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId: number) {}\n\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(\n message: string,\n resetOnDuplicate: boolean,\n countDuplicates: boolean,\n ) {}\n}\n","import { APP_BOOTSTRAP_LISTENER, ComponentRef } from '@angular/core'\n// import { STORY } from '@storybook/angular/dist/ts3.9/client/preview/angular/app.token'\n// import { StoryFnAngularReturnType } from '@storybook/angular/dist/ts3.9/client/preview/types'\nimport { Observable } from 'rxjs'\nimport { first } from 'rxjs/operators'\n\n/**\n * Can be used to access a stories component after the story has been bootstrapped.\n *\n * Example:\n * ```ts\n * @Component({\n * selector: 'story-example',\n * template: `Touched: {{ exControl.touched }}`\n * })\n * class StoryExampleComponent {\n * exControl = new FormControl('')\n * }\n *\n * export const TouchExample2 = () => ({\n * moduleMetadata: {\n * declarations: [ StoryExampleComponent ],\n * providers: [ onStoryBootstrappedExec((c: StoryExampleComponent) => c.exControl.markAsTouched()) ]\n * },\n * props: { },\n * component: StoryExampleComponent\n * })\n * ```\n */\n// export function onStoryBootstrappedExec<T = any>(callback: (component: T) => void) {\n// function bootstrapped(componentRef: ComponentRef<any>) {\n// const data = componentRef.instance.target.injector.get(STORY, null) as Observable<StoryFnAngularReturnType> | null\n// if (!data) {\n// console.warn(`STORY provider not found.`)\n// return\n// }\n// data?.pipe(first()).subscribe(story => {\n// if (!story.component) {\n// console.warn(`'onStoryBootstrappedExec' only supported on stories that provide 'component' property.`)\n// return\n// }\n\n// let c = null\n// for (let i = 0; i < componentRef.instance.target.length; i++) {\n// const tmp = componentRef.instance.target._embeddedViews[i].nodes?.find((f: any) => f?.instance instanceof story.component)\n// const comp = tmp?.instance\n// if (comp) {\n// c = comp\n// break\n// }\n// }\n\n// if (!c) {\n// console.warn(`Story component instance not found.`)\n// return\n// }\n\n// if (c) {\n// callback(c)\n// }\n// })\n// }\n\n// return {\n// provide: APP_BOOTSTRAP_LISTENER,\n// useValue: bootstrapped,\n// multi: true\n// }\n// }\n","import { APP_BOOTSTRAP_LISTENER, ComponentRef, ElementRef } from '@angular/core'\n\n// TODO: Consider supporting a target selection function, so that complex\n// selections that can't be expressed by a simple selector can be used.\n\n/**\n * Can be used to trigger an event on a target element when the story component has been bootstrapped.\n *\n * Example:\n * ```\n * export const TouchExample1 = () => ({\n * moduleMetadata: {\n * providers: [ onStoryBootstrappedTrigger('input', 'blur') ]\n * },\n * props: { control: new FormControl('') },\n * template: `\n * <input type=\"text\" [formControl]=\"control\">\n * Touched: {{ control.touched }}\n * `\n * })\n * ```\n */\nexport function onStoryBootstrappedTrigger(\n targetSelector: string,\n eventName: string,\n) {\n function bootstrapped(componentRef: ComponentRef<any>) {\n const elementRef = componentRef.injector.get(ElementRef, null)\n const target = elementRef?.nativeElement.querySelector(targetSelector)\n if (!target) {\n // eslint-disable-next-line no-console\n console.warn(\n `Unable to trigger event '${eventName}'. Target '${targetSelector}' not found.`,\n )\n }\n\n const e = document.createEvent('HTMLEvents')\n e.initEvent('blur', false, true)\n target.dispatchEvent(e)\n }\n\n return {\n provide: APP_BOOTSTRAP_LISTENER,\n useValue: bootstrapped,\n multi: true,\n }\n}\n","import { Injectable } from '@angular/core'\nimport { Observable, of } from 'rxjs'\n\nimport { TheSeamPreferencesAccessor } from '@theseam/ui-common/services'\n\nconst ACCESSOR_PREFIX = 'story-pref'\n\n@Injectable()\nexport class StoryPreferencesAccessorService\n implements TheSeamPreferencesAccessor\n{\n /**\n * Gets a preference.\n */\n public get(name: string): Observable<string> {\n // console.log('get', name)\n return of(localStorage.getItem(`${ACCESSOR_PREFIX}-${name}`) || '{}')\n }\n\n /**\n * Update a preference.\n */\n public update(name: string, value: string): Observable<string> {\n // console.log('update', name)\n localStorage.setItem(`${ACCESSOR_PREFIX}-${name}`, value)\n return this.get(name)\n }\n\n /**\n * Delete a preference.\n */\n public delete(name: string): Observable<boolean> {\n localStorage.removeItem(`${ACCESSOR_PREFIX}-${name}`)\n return of(true)\n }\n}\n","import { APP_INITIALIZER, Injector } from '@angular/core'\n\nimport { AngularRenderer, applicationConfig } from '@storybook/angular'\nimport { DecoratorFunction } from 'storybook/internal/csf'\n\nexport const INJECTOR_TO_ARGS_PROPERTY_NAME = '__getInjector'\n\n// TODO: Decide a better way to persist the injector reference than poluting\n// args with a value that isn't really meant to be an arg.\n\n/**\n * Storybook decorator that stores the Angular Injector in\n * args, for retrieval in play function.\n */\nexport const addInjectorGetterToArgs =\n (\n argName: string = INJECTOR_TO_ARGS_PROPERTY_NAME,\n ): DecoratorFunction<AngularRenderer> =>\n (story: any, context: any) => {\n // TODO: Test this more thoroughly.\n let injector: Injector | null = null\n context.args[argName] = () => injector\n return applicationConfig({\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: (injectorService: Injector) => () => {\n injector = injectorService\n },\n deps: [Injector],\n multi: true,\n },\n ],\n })(story, context)\n }\n\nexport const getInjectorFromArgs = (\n args: any,\n argName: string = INJECTOR_TO_ARGS_PROPERTY_NAME,\n): Injector => {\n if (!args || typeof args[argName] !== 'function') {\n throw Error(`Injector getter function '${argName}' not found.`)\n }\n const injector = args[argName]()\n if (!injector) {\n throw Error(\n `Injector not found. Did you add 'addInjectorGetterToArgs' to your story dectorators?`,\n )\n }\n\n return injector\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;AAAA;AAMO,MAAM,YAAY,GAAY;AACnC,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,QAAQ;AACf,KAAA;AACD,IAAA,WAAW,EAAE,CAAA,YAAA,CAAc;;AAGtB,MAAM,uBAAuB,GAAY;AAC9C,IAAA,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,iBAAiB,CAAC;AAC9C,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,QAAQ;AACf,KAAA;AACD,IAAA,WAAW,EAAE,CAAA,YAAA,CAAc;;AAGtB,MAAM,WAAW,GAAY;AAClC,IAAA,OAAO,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;AAChC,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,QAAQ;AACf,KAAA;AACD,IAAA,WAAW,EAAE,CAAA,KAAA,CAAO;;AAGf,MAAM,iBAAiB,GAAY;AACxC,IAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC7B,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,QAAQ;AACf,KAAA;AACD,IAAA,WAAW,EAAE,CAAA,YAAA,CAAc;;;ACzB7B;;;;;;AAMG;AACH;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA,SAAS,gBAAgB,CAAC,GAAa,EAAA;IACrC,MAAM,IAAI,GAA6B,EAAE;AACzC,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AACjB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,CAAC;AACJ;AAaA;;;;;;AAMG;AACG,SAAU,SAAS,CAAC,OAAwB,EAAA;AAChD,IAAA,MAAM,OAAO,GAAG,eAAe,EAAmB;AAElD,IAAA,MAAM,OAAO,GAAG;QACd,IAAI,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;KAC5B;IAED,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,IAAI,EAAE;AAE1E,IAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7E,MAAM,KAAK,GAAG;AACX,SAAA,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACvC,SAAA,GAAG,CAAC,CAAC,CAAC,KAAI;;QAET,IACE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC;aAC5C,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAChE;AACA,YAAA,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,GAAA,EAAM,CAAC,WAAW;QAChC;;AAGA,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAClE,YAAA,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,GAAA,EAAM,CAAC,GAAG;QACxB;AACF,IAAA,CAAC,CAAC;AAEJ,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AAChD;;MC5Ga,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,wEADT,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FACZ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,CAAA,CAAE,EAAE,UAAU,EAAE,IAAI,EAAE;;;ACAvC,SAAU,wBAAwB,CACtC,yBAAmD,EAAA;AAEnD,IAAA,OAAO,MAAM,yBAAyB,CAAC,eAAe,EAAE;AAC1D;;MCFa,uBAAuB,GAAG,IAAI,cAAc,CACvD,yBAAyB;MAId,wBAAwB,CAAA;AACf,IAAA,SAAA;AAApB,IAAA,WAAA,CAAoB,SAAmB,EAAA;QAAnB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAa;IAEnC,eAAe,GAAA;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC;AACvD,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE;AACrB,YAAA,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;QAC5B;aAAO;AACL,YAAA,OAAO,CAAC;AACL,iBAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,aAAa,CAAC,EACzC,IAAI,CAAC,CAAC,CAAC;iBAER,SAAS,CAAC,MAAK;AACd,gBAAA,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AAC5B,YAAA,CAAC,CAAC;QACN;IACF;uGAlBW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAxB,wBAAwB,EAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;MCCY,uBAAuB,CAAA;IAClC,OAAO,OAAO,CAAC,GAAW,EAAA;QACxB,OAAO;AACL,YAAA,QAAQ,EAAE,uBAAuB;AACjC,YAAA,SAAS,EAAE;gBACT,wBAAwB;AACxB,gBAAA;AACE,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,UAAU,EAAE,wBAAwB;oBACpC,IAAI,EAAE,CAAC,wBAAwB,CAAC;AAChC,oBAAA,KAAK,EAAE,IAAI;AACZ,iBAAA;AACD,gBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,GAAG,EAAE;AACpD,aAAA;SACF;IACH;uGAfW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAvB,uBAAuB,EAAA,CAAA;wGAAvB,uBAAuB,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;ACRD;AAEA;;;AAGG;AACG,SAAU,WAAW,CAAC,UAAe,EAAE,GAAW,EAAA;AACtD,IAAA,OAAO,UAAU,CAAC,GAAG,EAAE,MAAK;AAC1B,QAAA,QAAQ,CAAC,IAAI,GAAG,CAAA,CAAA,EAAI,GAAG,EAAE;AACzB,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,CAAC;AACJ;;ACXA;AAIA,SAAS,WAAW,CAAC,GAAW,EAAA;AAC9B,IAAA,QAAQ,CAAC,IAAI,GAAG,CAAA,CAAA,EAAI,GAAG,EAAE;AAC3B;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEM,SAAU,aAAa,CAAC,MAAgB,EAAA;IAC5C,OAAO;AACL,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,QAAQ;;AAEd,YAAA,QAAQ,EAAE,CAAC,CAAM,EAAE,CAAM,KAAI;AAC3B,gBAAA,kBAAkB,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACtE,gBAAA,OAAO,CAAC;YACV,CAAC;AACF,SAAA;KACF;AACH;;MC1Ba,4BAA4B,CAAA;uGAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,yEADlB,CAAA,+BAAA,CAAiC,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAC3C,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,CAAA,+BAAA,CAAiC,EAAE,UAAU,EAAE,KAAK,EAAE;;;ACK7E,MAAM,YAAY,CAAA;IAChB,WAAW,GAAA;AACT,QAAA,OAAO,EAAE,CAAC,SAAS,CAAC;IACtB;IAEA,KAAK,CAAC,YAAgB,EAAA,EAAS;AAChC;MAgDY,4BAA4B,CAAA;AAoBnB,IAAA,SAAA;AAnBH,IAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;IAErD,IAAa,SAAS,CAAC,CAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB;IACA,IAAa,IAAI,CAAC,CAAI,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACpB;AAES,IAAA,WAAW;AAEpB,IAAA,UAAU,GAAG,IAAI,aAAa,CAAmB,CAAC,CAAC;AACnD,IAAA,KAAK,GAAG,IAAI,aAAa,CAAI,CAAC,CAAC;AAE/B,IAAA,YAAY;AAKZ,IAAA,WAAA,CAAoB,SAAmB,EAAA;QAAnB,IAAA,CAAA,SAAS,GAAT,SAAS;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAC9B,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACrD,SAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,CAAC,EACZ,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM;YAC1B,SAAS;AACT,YAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;SACrC,CAAC,CAAC,EACH,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAC/B;IACH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEQ,IAAA,eAAe,CAAC,IAAQ,EAAA;QAC9B,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE;AACvD,gBAAA,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;AACxC,aAAA;YACD,MAAM,EAAE,IAAI,CAAC,SAAS;AACvB,SAAA,CAAC;IACJ;uGA/CW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3C7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,kCAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;2FAUU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA9CxC,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,QAAA,EACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA,EAAA,UAAA,EAQW,KAAK,EAAA,MAAA,EAAA,CAAA,qEAAA,CAAA,EAAA;;sBAKhB;;sBAGA;;sBAIA;;;MCzDU,2BAA2B,CAAA;uGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,CAJvB,4BAA4B,EAAE,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAC/D,YAAY,EAAE,YAAY,EAAE,gCAAgC,CAAA,EAAA,OAAA,EAAA,CAC5D,4BAA4B,EAAE,4BAA4B,CAAA,EAAA,CAAA;wGAEzD,2BAA2B,EAAA,OAAA,EAAA,CAH5B,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA;;2FAGzB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;AAC1E,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,gCAAgC,CAAC;AACvE,oBAAA,OAAO,EAAE,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;AACtE,iBAAA;;;MCHY,kBAAkB,CAAA;AAC7B,IAAA,YAAY;IACZ,eAAe,GAAG,CAAC;IACnB,MAAM,GAAuB,EAAE;AAC/B,IAAA,gBAAgB;AAChB,IAAA,oBAAoB;;AAGpB,IAAA,IAAI,CACF,OAAgB,EAChB,KAAc,EACd,QAAA,GAAsC,EAAE,EACxC,IAAI,GAAG,EAAE,EAAA,EACR;;IAGH,OAAO,CACL,OAAgB,EAChB,KAAc,EACd,QAAA,GAAsC,EAAE,IACvC;;IAGH,KAAK,CACH,OAAgB,EAChB,KAAc,EACd,QAAA,GAAsC,EAAE,IACvC;;IAGH,IAAI,CACF,OAAgB,EAChB,KAAc,EACd,QAAA,GAAsC,EAAE,IACvC;;IAGH,OAAO,CACL,OAAgB,EAChB,KAAc,EACd,QAAA,GAAsC,EAAE,IACvC;AAEH;;AAEG;IACH,KAAK,CAAC,OAAgB,EAAA,EAAG;AAEzB;;AAEG;IACH,MAAM,CAAC,OAAe,EAAA,EAAG;AAEzB;;AAEG;AACH,IAAA,aAAa,CACX,OAAe,EACf,gBAAyB,EACzB,eAAwB,IACvB;uGA5DQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAlB,kBAAkB,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACHD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AAEA;;;;;;;;;;;;;;;;AAgBG;AACG,SAAU,0BAA0B,CACxC,cAAsB,EACtB,SAAiB,EAAA;IAEjB,SAAS,YAAY,CAAC,YAA+B,EAAA;AACnD,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;QAC9D,MAAM,MAAM,GAAG,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC;QACtE,IAAI,CAAC,MAAM,EAAE;;YAEX,OAAO,CAAC,IAAI,CACV,CAAA,yBAAA,EAA4B,SAAS,CAAA,WAAA,EAAc,cAAc,CAAA,YAAA,CAAc,CAChF;QACH;QAEA,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;AAChC,QAAA,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IACzB;IAEA,OAAO;AACL,QAAA,OAAO,EAAE,sBAAsB;AAC/B,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,KAAK,EAAE,IAAI;KACZ;AACH;;ACzCA,MAAM,eAAe,GAAG,YAAY;MAGvB,+BAA+B,CAAA;AAG1C;;AAEG;AACI,IAAA,GAAG,CAAC,IAAY,EAAA;;AAErB,QAAA,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAC,IAAI,IAAI,CAAC;IACvE;AAEA;;AAEG;IACI,MAAM,CAAC,IAAY,EAAE,KAAa,EAAA;;QAEvC,YAAY,CAAC,OAAO,CAAC,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,EAAE,KAAK,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;AAEA;;AAEG;AACI,IAAA,MAAM,CAAC,IAAY,EAAA;QACxB,YAAY,CAAC,UAAU,CAAC,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAC;AACrD,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;IACjB;uGA1BW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAA/B,+BAA+B,EAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C;;;ACFM,MAAM,8BAA8B,GAAG;AAE9C;AACA;AAEA;;;AAGG;AACI,MAAM,uBAAuB,GAClC,CACE,OAAA,GAAkB,8BAA8B,KAElD,CAAC,KAAU,EAAE,OAAY,KAAI;;IAE3B,IAAI,QAAQ,GAAoB,IAAI;IACpC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,QAAQ;AACtC,IAAA,OAAO,iBAAiB,CAAC;AACvB,QAAA,SAAS,EAAE;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,UAAU,EAAE,CAAC,eAAyB,KAAK,MAAK;oBAC9C,QAAQ,GAAG,eAAe;gBAC5B,CAAC;gBACD,IAAI,EAAE,CAAC,QAAQ,CAAC;AAChB,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA;AACF,KAAA,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC;AACpB;AAEK,MAAM,mBAAmB,GAAG,CACjC,IAAS,EACT,OAAA,GAAkB,8BAA8B,KACpC;IACZ,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE;AAChD,QAAA,MAAM,KAAK,CAAC,CAAA,0BAAA,EAA6B,OAAO,CAAA,YAAA,CAAc,CAAC;IACjE;AACA,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE;IAChC,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,MAAM,KAAK,CACT,CAAA,oFAAA,CAAsF,CACvF;IACH;AAEA,IAAA,OAAO,QAAQ;AACjB;;ACnDA;;AAEG;;;;"}
|