@daffodil/design 0.60.0 → 0.62.0
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/accordion/examples/package.json +1 -1
- package/article/examples/package.json +1 -1
- package/atoms/button/button.component.d.ts +18 -2
- package/atoms/button/button.module.d.ts +2 -1
- package/atoms/form/error-message/error-message.component.d.ts +1 -0
- package/atoms/form/form-label/form-label.directive.d.ts +6 -0
- package/atoms/form/form-label/form-label.module.d.ts +7 -0
- package/atoms/form/form-label/public_api.d.ts +2 -0
- package/atoms/form/{select/select/select.component.d.ts → native-select/native-select.component.d.ts} +1 -1
- package/atoms/form/{select/select.module.d.ts → native-select/native-select.module.d.ts} +1 -1
- package/atoms/form/native-select/public_api.d.ts +2 -0
- package/atoms/form/quantity-field/quantity-field.module.d.ts +1 -1
- package/atoms/form/quantity-field/quantity-select/quantity-select.component.d.ts +1 -1
- package/atoms/loading-icon/loading-icon.component.d.ts +3 -3
- package/button/examples/examples.d.ts +4 -0
- package/button/examples/flat-button/flat-button.component.d.ts +7 -0
- package/button/examples/flat-button/flat-button.module.d.ts +9 -0
- package/button/examples/package.json +1 -1
- package/button/examples/public_api.d.ts +10 -9
- package/callout/examples/package.json +1 -1
- package/card/examples/package.json +1 -1
- package/checkbox/examples/package.json +1 -1
- package/container/examples/package.json +1 -1
- package/core/animation/animation-state-with-params.d.ts +8 -0
- package/core/public_api.d.ts +3 -2
- package/core/statusable/public_api.d.ts +2 -0
- package/esm2020/atoms/button/button.component.mjs +62 -5
- package/esm2020/atoms/button/button.module.mjs +6 -2
- package/esm2020/atoms/form/error-message/error-message.component.mjs +10 -4
- package/esm2020/atoms/form/form-label/form-label.directive.mjs +19 -0
- package/esm2020/atoms/form/form-label/form-label.module.mjs +20 -0
- package/esm2020/atoms/form/form-label/public_api.mjs +3 -0
- package/esm2020/atoms/form/native-select/native-select.component.mjs +64 -0
- package/esm2020/atoms/form/{select/select.module.mjs → native-select/native-select.module.mjs} +2 -2
- package/esm2020/atoms/form/native-select/public_api.mjs +3 -0
- package/esm2020/atoms/form/quantity-field/quantity-field.module.mjs +2 -2
- package/esm2020/atoms/form/quantity-field/quantity-select/quantity-select.component.mjs +3 -3
- package/esm2020/atoms/image/image.component.mjs +2 -2
- package/esm2020/atoms/loading-icon/loading-icon.component.mjs +4 -5
- package/esm2020/button/examples/basic-button/basic-button.component.mjs +7 -6
- package/esm2020/button/examples/examples.mjs +19 -0
- package/esm2020/button/examples/flat-button/flat-button.component.mjs +24 -0
- package/esm2020/button/examples/flat-button/flat-button.module.mjs +30 -0
- package/esm2020/button/examples/icon-button/icon-button.component.mjs +6 -5
- package/esm2020/button/examples/public_api.mjs +11 -18
- package/esm2020/button/examples/raised-button/raised-button.component.mjs +7 -6
- package/esm2020/button/examples/sizeable-button/sizeable-button.component.mjs +3 -7
- package/esm2020/button/examples/statusable-button/statusable-button.component.mjs +3 -11
- package/esm2020/button/examples/stroked-button/stroked-button.component.mjs +7 -6
- package/esm2020/button/examples/underline-button/underline-button.component.mjs +7 -6
- package/esm2020/button/examples/underline-button/underline-button.module.mjs +1 -1
- package/esm2020/callout/examples/callout-text-alignment/callout-text-alignment.component.mjs +1 -1
- package/esm2020/callout/examples/callout-theming/callout-theming.component.mjs +1 -1
- package/esm2020/callout/examples/callout-with-grid/callout-with-grid.component.mjs +1 -1
- package/esm2020/callout/examples/compact-callout/compact-callout.component.mjs +1 -1
- package/esm2020/card/examples/basic-card/basic-card.component.mjs +1 -1
- package/esm2020/card/examples/card-orientation/card-orientation.component.mjs +1 -1
- package/esm2020/checkbox/examples/basic-checkbox/basic-checkbox.component.mjs +1 -1
- package/esm2020/checkbox/examples/checkbox-set/checkbox-set.component.mjs +1 -1
- package/esm2020/core/animation/animation-state-with-params.mjs +2 -0
- package/esm2020/core/public_api.mjs +4 -3
- package/esm2020/core/statusable/public_api.mjs +3 -0
- package/esm2020/hero/examples/compact-hero/compact-hero.component.mjs +1 -1
- package/esm2020/hero/examples/hero-text-alignment/hero-text-alignment.component.mjs +1 -1
- package/esm2020/hero/examples/hero-theming/hero-theming.component.mjs +1 -1
- package/esm2020/hero/examples/hero-with-grid/hero-with-grid.component.mjs +1 -1
- package/esm2020/menu/examples/basic-menu/basic-menu.component.mjs +1 -1
- package/esm2020/modal/examples/basic-modal/basic-modal.component.mjs +1 -1
- package/esm2020/modal/examples/basic-modal/modal-content.component.mjs +1 -1
- package/esm2020/molecules/backdrop/animation/backdrop-animation-state.mjs +2 -0
- package/esm2020/molecules/backdrop/animation/backdrop-animation.mjs +6 -2
- package/esm2020/molecules/backdrop/backdrop/backdrop.component.mjs +40 -5
- package/esm2020/molecules/media-gallery/media-gallery.component.mjs +2 -2
- package/esm2020/molecules/qty-dropdown/qty-dropdown.component.mjs +1 -1
- package/esm2020/molecules/qty-dropdown/qty-dropdown.module.mjs +2 -2
- package/esm2020/molecules/sidebar/animation/sidebar-animation-state.mjs +2 -2
- package/esm2020/molecules/sidebar/animation/sidebar-animation-width.mjs +2 -0
- package/esm2020/molecules/sidebar/animation/sidebar-animation.mjs +21 -4
- package/esm2020/molecules/sidebar/animation/sidebar-viewport-animation-state.mjs +3 -0
- package/esm2020/molecules/sidebar/helper/sidebar-mode.mjs +1 -1
- package/esm2020/molecules/sidebar/helper/sidebar-side.mjs +2 -0
- package/esm2020/molecules/sidebar/public_api.mjs +1 -2
- package/esm2020/molecules/sidebar/sidebar/sidebar.component.mjs +62 -10
- package/esm2020/molecules/sidebar/sidebar-viewport/backdrop-interactable.mjs +5 -0
- package/esm2020/molecules/sidebar/sidebar-viewport/content-pad.mjs +17 -0
- package/esm2020/molecules/sidebar/sidebar-viewport/content-shift.mjs +21 -0
- package/esm2020/molecules/sidebar/sidebar-viewport/sidebar-viewport.component.mjs +83 -81
- package/esm2020/navbar/examples/basic-navbar/basic-navbar.component.mjs +1 -1
- package/esm2020/navbar/examples/contained-navbar/contained-navbar.component.mjs +1 -1
- package/esm2020/navbar/examples/navbar-theming/navbar-theming.component.mjs +1 -1
- package/esm2020/navbar/examples/raised-navbar/raised-navbar.component.mjs +1 -1
- package/esm2020/public_api.mjs +3 -2
- package/esm2020/sidebar/examples/basic-sidebar/basic-sidebar.component.mjs +12 -0
- package/esm2020/sidebar/examples/basic-sidebar/basic-sidebar.module.mjs +29 -0
- package/esm2020/sidebar/examples/daffodil-design-sidebar-examples.mjs +5 -0
- package/esm2020/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.component.mjs +21 -0
- package/esm2020/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.module.mjs +32 -0
- package/esm2020/sidebar/examples/index.mjs +2 -0
- package/esm2020/sidebar/examples/public_api.mjs +18 -0
- package/esm2020/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.component.mjs +12 -0
- package/esm2020/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.module.mjs +29 -0
- package/esm2020/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.component.mjs +12 -0
- package/esm2020/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.module.mjs +29 -0
- package/esm2020/sidebar/examples/under-sidebar/under-sidebar.component.mjs +26 -0
- package/esm2020/sidebar/examples/under-sidebar/under-sidebar.module.mjs +32 -0
- package/esm2020/tree/daffodil-design-tree.mjs +5 -0
- package/esm2020/tree/examples/basic-tree/basic-tree.component.mjs +39 -0
- package/esm2020/tree/examples/basic-tree/basic-tree.module.mjs +34 -0
- package/esm2020/tree/examples/daffodil-design-tree-examples.mjs +5 -0
- package/esm2020/tree/examples/index.mjs +2 -0
- package/esm2020/tree/examples/public_api.mjs +7 -0
- package/esm2020/tree/index.mjs +2 -0
- package/esm2020/tree/interfaces/recursive-key.mjs +2 -0
- package/esm2020/tree/interfaces/tree-data.mjs +2 -0
- package/esm2020/tree/interfaces/tree-ui.mjs +2 -0
- package/esm2020/tree/public_api.mjs +5 -0
- package/esm2020/tree/tree/tree-notifier.service.mjs +45 -0
- package/esm2020/tree/tree/tree.component.mjs +106 -0
- package/esm2020/tree/tree-item/tree-item.directive.mjs +154 -0
- package/esm2020/tree/tree.module.mjs +31 -0
- package/esm2020/tree/utils/flatten-tree.mjs +47 -0
- package/esm2020/tree/utils/hydrate-tree.mjs +31 -0
- package/esm2020/tree/utils/transform-in-place.mjs +23 -0
- package/esm2020/tree/utils/traverse-tree.mjs +21 -0
- package/fesm2015/daffodil-design-button-examples.mjs +160 -122
- package/fesm2015/daffodil-design-button-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-callout-examples.mjs +4 -4
- package/fesm2015/daffodil-design-callout-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-card-examples.mjs +2 -2
- package/fesm2015/daffodil-design-card-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-checkbox-examples.mjs +2 -2
- package/fesm2015/daffodil-design-checkbox-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-hero-examples.mjs +4 -4
- package/fesm2015/daffodil-design-hero-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-menu-examples.mjs +1 -1
- package/fesm2015/daffodil-design-menu-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-modal-examples.mjs +2 -2
- package/fesm2015/daffodil-design-modal-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-navbar-examples.mjs +4 -4
- package/fesm2015/daffodil-design-navbar-examples.mjs.map +1 -1
- package/fesm2015/daffodil-design-sidebar-examples.mjs +218 -0
- package/fesm2015/daffodil-design-sidebar-examples.mjs.map +1 -0
- package/fesm2015/daffodil-design-tree-examples.mjs +81 -0
- package/fesm2015/daffodil-design-tree-examples.mjs.map +1 -0
- package/fesm2015/daffodil-design-tree.mjs +443 -0
- package/fesm2015/daffodil-design-tree.mjs.map +1 -0
- package/fesm2015/daffodil-design.mjs +440 -191
- package/fesm2015/daffodil-design.mjs.map +1 -1
- package/fesm2020/daffodil-design-button-examples.mjs +160 -122
- package/fesm2020/daffodil-design-button-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-callout-examples.mjs +4 -4
- package/fesm2020/daffodil-design-callout-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-card-examples.mjs +2 -2
- package/fesm2020/daffodil-design-card-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-checkbox-examples.mjs +2 -2
- package/fesm2020/daffodil-design-checkbox-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-hero-examples.mjs +4 -4
- package/fesm2020/daffodil-design-hero-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-menu-examples.mjs +1 -1
- package/fesm2020/daffodil-design-menu-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-modal-examples.mjs +2 -2
- package/fesm2020/daffodil-design-modal-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-navbar-examples.mjs +4 -4
- package/fesm2020/daffodil-design-navbar-examples.mjs.map +1 -1
- package/fesm2020/daffodil-design-sidebar-examples.mjs +218 -0
- package/fesm2020/daffodil-design-sidebar-examples.mjs.map +1 -0
- package/fesm2020/daffodil-design-tree-examples.mjs +81 -0
- package/fesm2020/daffodil-design-tree-examples.mjs.map +1 -0
- package/fesm2020/daffodil-design-tree.mjs +448 -0
- package/fesm2020/daffodil-design-tree.mjs.map +1 -0
- package/fesm2020/daffodil-design.mjs +440 -191
- package/fesm2020/daffodil-design.mjs.map +1 -1
- package/hero/examples/package.json +1 -1
- package/image/examples/package.json +1 -1
- package/input/examples/package.json +1 -1
- package/list/examples/package.json +1 -1
- package/loading-icon/examples/package.json +1 -1
- package/media-gallery/examples/package.json +1 -1
- package/menu/examples/package.json +1 -1
- package/modal/examples/package.json +1 -1
- package/molecules/backdrop/animation/backdrop-animation-state.d.ts +2 -0
- package/molecules/backdrop/backdrop/backdrop.component.d.ts +17 -3
- package/molecules/qty-dropdown/qty-dropdown.module.d.ts +1 -1
- package/molecules/sidebar/animation/sidebar-animation-state.d.ts +2 -1
- package/molecules/sidebar/animation/sidebar-animation-width.d.ts +2 -0
- package/molecules/sidebar/animation/sidebar-animation.d.ts +3 -1
- package/molecules/sidebar/animation/sidebar-viewport-animation-state.d.ts +6 -0
- package/molecules/sidebar/helper/sidebar-mode.d.ts +27 -1
- package/molecules/sidebar/helper/sidebar-side.d.ts +12 -0
- package/molecules/sidebar/public_api.d.ts +2 -1
- package/molecules/sidebar/sidebar/sidebar.component.d.ts +37 -5
- package/molecules/sidebar/sidebar-viewport/backdrop-interactable.d.ts +6 -0
- package/molecules/sidebar/sidebar-viewport/content-pad.d.ts +7 -0
- package/molecules/sidebar/sidebar-viewport/content-shift.d.ts +8 -0
- package/molecules/sidebar/sidebar-viewport/sidebar-viewport.component.d.ts +47 -44
- package/navbar/examples/package.json +1 -1
- package/package.json +1 -1
- package/paginator/examples/package.json +1 -1
- package/public_api.d.ts +2 -1
- package/quantity-field/examples/package.json +1 -1
- package/radio/examples/package.json +1 -1
- package/scss/global.scss +1 -0
- package/scss/state/skeleton/_mixins.scss +1 -0
- package/scss/theme.scss +4 -2
- package/scss/theming/_color-palettes.scss +5 -5
- package/sidebar/examples/basic-sidebar/basic-sidebar.component.d.ts +5 -0
- package/sidebar/examples/basic-sidebar/basic-sidebar.module.d.ts +8 -0
- package/sidebar/examples/daffodil-design-sidebar-examples.d.ts +5 -0
- package/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.component.d.ts +8 -0
- package/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.module.d.ts +8 -0
- package/sidebar/examples/index.d.ts +1 -0
- package/sidebar/examples/package.json +1 -0
- package/sidebar/examples/public_api.d.ts +2 -0
- package/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.component.d.ts +5 -0
- package/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.module.d.ts +8 -0
- package/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.component.d.ts +5 -0
- package/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.module.d.ts +8 -0
- package/sidebar/examples/under-sidebar/under-sidebar.component.d.ts +10 -0
- package/sidebar/examples/under-sidebar/under-sidebar.module.d.ts +8 -0
- package/src/atoms/button/button-theme-variants/button.scss +9 -18
- package/src/atoms/button/button-theme-variants/flat.scss +25 -0
- package/src/atoms/button/button-theme-variants/raised.scss +6 -26
- package/src/atoms/button/button-theme-variants/stroked.scss +12 -20
- package/src/atoms/button/button-theme.scss +121 -117
- package/src/atoms/form/{select → native-select}/README.md +1 -1
- package/src/atoms/form/{select/select/select-theme.scss → native-select/native-select-theme.scss} +3 -3
- package/src/atoms/loading-icon/loading-icon-theme.scss +4 -0
- package/src/molecules/sidebar/README.md +10 -0
- package/src/molecules/sidebar/helper/_variables.scss +7 -0
- package/src/molecules/sidebar/sidebar/sidebar-theme.scss +3 -3
- package/src/molecules/sidebar/sidebar-viewport/sidebar-viewport-theme.scss +5 -0
- package/tree/README.md +38 -0
- package/tree/daffodil-design-tree.d.ts +5 -0
- package/tree/examples/basic-tree/basic-tree.component.d.ts +7 -0
- package/tree/examples/basic-tree/basic-tree.module.d.ts +10 -0
- package/tree/examples/daffodil-design-tree-examples.d.ts +5 -0
- package/tree/examples/index.d.ts +1 -0
- package/tree/examples/package.json +1 -0
- package/tree/examples/public_api.d.ts +4 -0
- package/tree/index.d.ts +1 -0
- package/tree/interfaces/recursive-key.d.ts +3 -0
- package/tree/interfaces/tree-data.d.ts +13 -0
- package/tree/interfaces/tree-ui.d.ts +11 -0
- package/tree/package.json +1 -0
- package/tree/public_api.d.ts +6 -0
- package/tree/src/tree-theme.scss +38 -0
- package/tree/tree/tree-notifier.service.d.ts +32 -0
- package/tree/tree/tree.component.d.ts +75 -0
- package/tree/tree-item/tree-item.directive.d.ts +102 -0
- package/tree/tree.module.d.ts +9 -0
- package/tree/utils/flatten-tree.d.ts +19 -0
- package/tree/utils/hydrate-tree.d.ts +8 -0
- package/tree/utils/transform-in-place.d.ts +15 -0
- package/tree/utils/traverse-tree.d.ts +5 -0
- package/atoms/form/select/public_api.d.ts +0 -2
- package/esm2020/atoms/form/select/public_api.mjs +0 -3
- package/esm2020/atoms/form/select/select/select.component.mjs +0 -64
- package/src/atoms/button/button-theme-variants/focus.scss +0 -6
@@ -0,0 +1,13 @@
|
|
1
|
+
/**
|
2
|
+
* A basic tree type supporting supplemental data on a tree node.
|
3
|
+
*
|
4
|
+
* Tree elements are often slightly more than just basic titles and child items.
|
5
|
+
* There may be other important data that needs to be available at render time.
|
6
|
+
*/
|
7
|
+
export interface DaffTreeData<T> {
|
8
|
+
title: string;
|
9
|
+
url: string;
|
10
|
+
id: string;
|
11
|
+
items: DaffTreeData<T>[];
|
12
|
+
data: T;
|
13
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { DaffTreeData } from './tree-data';
|
2
|
+
/**
|
3
|
+
* A DaffTreeUi is the internal data structure used during tree rendering.
|
4
|
+
*
|
5
|
+
* This is an internal implementation detail type that.
|
6
|
+
*/
|
7
|
+
export interface DaffTreeUi<T> extends DaffTreeData<T> {
|
8
|
+
open: boolean;
|
9
|
+
items: DaffTreeUi<T>[];
|
10
|
+
parent: DaffTreeUi<T>;
|
11
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"name":"@daffodil/design/tree","module":"../fesm2015/daffodil-design-tree.mjs","es2020":"../fesm2020/daffodil-design-tree.mjs","esm2020":"../esm2020/tree/daffodil-design-tree.mjs","fesm2020":"../fesm2020/daffodil-design-tree.mjs","fesm2015":"../fesm2015/daffodil-design-tree.mjs","typings":"daffodil-design-tree.d.ts","sideEffects":false,"version":"0.62.0"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
export { DaffTreeModule } from './tree.module';
|
2
|
+
export { DaffTreeComponent } from './tree/tree.component';
|
3
|
+
export { DaffTreeItemDirective } from './tree-item/tree-item.directive';
|
4
|
+
export { DaffTreeData } from './interfaces/tree-data';
|
5
|
+
export { DaffTreeUi } from './interfaces/tree-ui';
|
6
|
+
export { daffTransformTreeInPlace } from './utils/transform-in-place';
|
@@ -0,0 +1,38 @@
|
|
1
|
+
@use 'sass:map';
|
2
|
+
@use '../../scss/theming';
|
3
|
+
@use '../../scss/core';
|
4
|
+
|
5
|
+
@mixin daff-tree-theme($theme) {
|
6
|
+
$primary: map.get($theme, primary);
|
7
|
+
$secondary: map.get($theme, secondary);
|
8
|
+
$tertiary: map.get($theme, tertiary);
|
9
|
+
$base: core.daff-map-deep-get($theme, 'core.base');
|
10
|
+
$base-contrast: core.daff-map-deep-get($theme, 'core.base-contrast');
|
11
|
+
$white: core.daff-map-deep-get($theme, 'core.white');
|
12
|
+
$black: core.daff-map-deep-get($theme, 'core.black');
|
13
|
+
$gray: core.daff-map-deep-get($theme, 'core.gray');
|
14
|
+
|
15
|
+
.daff-tree-item {
|
16
|
+
$root: &;
|
17
|
+
|
18
|
+
background-color: $base;
|
19
|
+
color: theming.daff-illuminate($base-contrast, $gray, 2);
|
20
|
+
|
21
|
+
&:hover {
|
22
|
+
background-color: theming.daff-illuminate($base, $gray, 2);
|
23
|
+
}
|
24
|
+
|
25
|
+
&:after {
|
26
|
+
border-color: currentColor;
|
27
|
+
}
|
28
|
+
|
29
|
+
&.selected {
|
30
|
+
background-color: theming.daff-illuminate($base, $gray, 2);
|
31
|
+
color: $base-contrast;
|
32
|
+
|
33
|
+
&:before {
|
34
|
+
background-color: theming.daff-color($primary);
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}
|
38
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
2
|
+
/**
|
3
|
+
* This service is used by tree-items to notify their parent
|
4
|
+
* that the tree has to be re-computed.
|
5
|
+
*
|
6
|
+
* This service is a multiton associated with each tree instance.
|
7
|
+
* It follows the same lifecycle has the tree it is associated with.
|
8
|
+
*/
|
9
|
+
export declare class DaffTreeNotifierService implements OnDestroy {
|
10
|
+
/**
|
11
|
+
* @docs-private
|
12
|
+
*/
|
13
|
+
private _notice;
|
14
|
+
/**
|
15
|
+
* An observable that emits when the tree needs to be re-computed.
|
16
|
+
*/
|
17
|
+
notice$: import("rxjs").Observable<boolean>;
|
18
|
+
/**
|
19
|
+
* `notify` can be called to trigger a re-computation of the tree
|
20
|
+
* if data has changed unexpectedly and a re-render did not occur.
|
21
|
+
*
|
22
|
+
* This should be used sparingly. Instead, prefer updating `data` on the tree
|
23
|
+
* itself for performance reasons.
|
24
|
+
*/
|
25
|
+
notify(): void;
|
26
|
+
/**
|
27
|
+
* Cleanup when the tree is destroyed.
|
28
|
+
*
|
29
|
+
* @docs-private
|
30
|
+
*/
|
31
|
+
ngOnDestroy(): void;
|
32
|
+
}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
import { OnInit, TemplateRef } from '@angular/core';
|
2
|
+
import { DaffTreeData } from '../interfaces/tree-data';
|
3
|
+
import { DaffTreeFlatNode } from '../utils/flatten-tree';
|
4
|
+
import { DaffTreeNotifierService } from './tree-notifier.service';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
/**
|
7
|
+
* The `DaffTreeComponent` allows you to render tree structures as interactable ui.
|
8
|
+
*
|
9
|
+
* They can be used like:
|
10
|
+
*
|
11
|
+
* ```html
|
12
|
+
* <ul daff-tree [tree]="tree">
|
13
|
+
* <ng-template #daffTreeItemWithChildrenTpl let-node>
|
14
|
+
* <button daffTreeItem [node]="node">{{ node.title }} </button>
|
15
|
+
* </ng-template>
|
16
|
+
*
|
17
|
+
* <ng-template #daffTreeItemTpl let-node>
|
18
|
+
* <a daffTreeItem [node]="node" [routerLink]="node.url">{{ node.title }}</a>
|
19
|
+
* </ng-template>
|
20
|
+
* </ul>
|
21
|
+
* ```
|
22
|
+
*
|
23
|
+
* where `tree` is a {@link DaffTreeData}.
|
24
|
+
*
|
25
|
+
*/
|
26
|
+
export declare class DaffTreeComponent implements OnInit {
|
27
|
+
private notifier;
|
28
|
+
/**
|
29
|
+
* The css class of the daff-tree.
|
30
|
+
*
|
31
|
+
* @docs-private
|
32
|
+
*/
|
33
|
+
class: boolean;
|
34
|
+
/**
|
35
|
+
* The internal tree element.
|
36
|
+
*/
|
37
|
+
private tree;
|
38
|
+
/**
|
39
|
+
* The flattened tree data. You can iterate through this if you want to inspect
|
40
|
+
* the resulting array structure we computed to render the tree.
|
41
|
+
*/
|
42
|
+
flatTree: DaffTreeFlatNode[];
|
43
|
+
/**
|
44
|
+
* @docs-private
|
45
|
+
*/
|
46
|
+
private _dataTree;
|
47
|
+
/**
|
48
|
+
* The tree data you would like to render.
|
49
|
+
*/
|
50
|
+
get dataTree(): DaffTreeData<unknown>;
|
51
|
+
set dataTree(dataTree: DaffTreeData<unknown>);
|
52
|
+
/**
|
53
|
+
* The template used to render tree-nodes that themselves have children.
|
54
|
+
*
|
55
|
+
* @docs-private
|
56
|
+
*/
|
57
|
+
withChildrenTemplate: TemplateRef<any>;
|
58
|
+
/**
|
59
|
+
* The template used to render tree-nodes that have no children.
|
60
|
+
*
|
61
|
+
* @docs-private
|
62
|
+
*/
|
63
|
+
treeItemTemplate: TemplateRef<any>;
|
64
|
+
constructor(notifier: DaffTreeNotifierService);
|
65
|
+
/**
|
66
|
+
* The track-by function used to reduce tree-item re-renders
|
67
|
+
*/
|
68
|
+
trackByTreeElement(index: number, el: any): any;
|
69
|
+
/**
|
70
|
+
* @docs-private
|
71
|
+
*/
|
72
|
+
ngOnInit(): void;
|
73
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DaffTreeComponent, never>;
|
74
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DaffTreeComponent, "ul[daff-tree]", never, { "dataTree": "tree"; }, {}, ["withChildrenTemplate", "treeItemTemplate"], never>;
|
75
|
+
}
|
@@ -0,0 +1,102 @@
|
|
1
|
+
import { DaffTreeNotifierService } from '../tree/tree-notifier.service';
|
2
|
+
import { DaffTreeFlatNode } from '../utils/flatten-tree';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
/**
|
5
|
+
* The `DaffTreeItemDirective` allows you to demarcate the elements which are
|
6
|
+
* tree-children that interact with the parent tree.
|
7
|
+
*
|
8
|
+
* They can be used like:
|
9
|
+
*
|
10
|
+
* ```html
|
11
|
+
* <ul daff-tree [tree]="tree">
|
12
|
+
* <ng-template #daffTreeItemWithChildrenTpl let-node>
|
13
|
+
* <button daffTreeItem [node]="node">{{ node.title }} </button>
|
14
|
+
* </ng-template>
|
15
|
+
*
|
16
|
+
* <ng-template #daffTreeItemTpl let-node>
|
17
|
+
* <a daffTreeItem [node]="node" [routerLink]="node.url">{{ node.title }}</a>
|
18
|
+
* </ng-template>
|
19
|
+
* </ul>
|
20
|
+
* ```
|
21
|
+
*
|
22
|
+
* where `tree` is a {@link DaffTreeData} and `daff-tree` is a {@link DaffTreeComponent}.
|
23
|
+
*
|
24
|
+
*/
|
25
|
+
export declare class DaffTreeItemDirective {
|
26
|
+
private document;
|
27
|
+
private treeNotifier;
|
28
|
+
/**
|
29
|
+
* The css class of the daff-tree.
|
30
|
+
*
|
31
|
+
* @docs-private
|
32
|
+
*/
|
33
|
+
class: boolean;
|
34
|
+
/**
|
35
|
+
* The css class of a DaffTreeItemDirective that has children.
|
36
|
+
*
|
37
|
+
* @docs-private
|
38
|
+
*/
|
39
|
+
classParent: boolean;
|
40
|
+
/**
|
41
|
+
* The html `id` of the tree item. This is derived from the {@link DaffTreeData}.
|
42
|
+
*
|
43
|
+
* @docs-private
|
44
|
+
*/
|
45
|
+
id: any;
|
46
|
+
/**
|
47
|
+
* Accessibility property, notifying users about whether
|
48
|
+
* or not the tree item is open.
|
49
|
+
*
|
50
|
+
* @docs-private
|
51
|
+
*/
|
52
|
+
ariaExpanded: string;
|
53
|
+
/**
|
54
|
+
* A css variable indicating the depth of the tree.
|
55
|
+
* You can use this to style your templates if you want to
|
56
|
+
* use different designs at different depths.
|
57
|
+
*/
|
58
|
+
depth: number;
|
59
|
+
/**
|
60
|
+
* The CSS class indicating whether or not the tree is `selected`.
|
61
|
+
*/
|
62
|
+
get selectedClass(): boolean;
|
63
|
+
/**
|
64
|
+
* The CSS class indicating whether or not the tree is `open`.
|
65
|
+
*/
|
66
|
+
openClass: boolean;
|
67
|
+
/**
|
68
|
+
* The {@link DaffTreeFlatNode} associated with this specific tree item.
|
69
|
+
*
|
70
|
+
* @docs-private
|
71
|
+
*/
|
72
|
+
private _node;
|
73
|
+
/**
|
74
|
+
* The {@link DaffTreeFlatNode} associated with this specific tree item.
|
75
|
+
*/
|
76
|
+
get node(): DaffTreeFlatNode;
|
77
|
+
set node(val: DaffTreeFlatNode);
|
78
|
+
/**
|
79
|
+
* Whether or not the tree item is the currently active item.
|
80
|
+
* Note that there is no requirement there there only be one active item at a time.
|
81
|
+
*/
|
82
|
+
selected: boolean;
|
83
|
+
constructor(document: any, treeNotifier: DaffTreeNotifierService);
|
84
|
+
/**
|
85
|
+
* @docs-private
|
86
|
+
*/
|
87
|
+
onEscape(): void;
|
88
|
+
/**
|
89
|
+
* @docs-private
|
90
|
+
*/
|
91
|
+
onClick(): void;
|
92
|
+
/**
|
93
|
+
* Toggle the open state of the tree's parent.
|
94
|
+
*/
|
95
|
+
toggleParent(node: DaffTreeFlatNode): void;
|
96
|
+
/**
|
97
|
+
* Toggle the open state of this specific subtree tree.
|
98
|
+
*/
|
99
|
+
toggleTree(node: DaffTreeFlatNode): void;
|
100
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DaffTreeItemDirective, never>;
|
101
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DaffTreeItemDirective, "[daffTreeItem]", never, { "node": "node"; "selected": "selected"; }, {}, never>;
|
102
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
import * as i1 from "./tree/tree.component";
|
3
|
+
import * as i2 from "./tree-item/tree-item.directive";
|
4
|
+
import * as i3 from "@angular/common";
|
5
|
+
export declare class DaffTreeModule {
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DaffTreeModule, never>;
|
7
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DaffTreeModule, [typeof i1.DaffTreeComponent, typeof i2.DaffTreeItemDirective], [typeof i3.CommonModule], [typeof i1.DaffTreeComponent, typeof i2.DaffTreeItemDirective]>;
|
8
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<DaffTreeModule>;
|
9
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { DaffTreeUi } from '../interfaces/tree-ui';
|
2
|
+
/**
|
3
|
+
* A flattened node of a tree. This is used when translating the tree data
|
4
|
+
* structure into an array.
|
5
|
+
*/
|
6
|
+
export interface DaffTreeFlatNode {
|
7
|
+
id: number | string;
|
8
|
+
title: string;
|
9
|
+
url: string;
|
10
|
+
level: number;
|
11
|
+
hasChildren: boolean;
|
12
|
+
data: unknown;
|
13
|
+
_treeRef: DaffTreeUi<unknown>;
|
14
|
+
}
|
15
|
+
/**
|
16
|
+
* Flatten a DaffTreeUi<unknown> into an array, removing elements from the array
|
17
|
+
* below nodes in the tree that are not open.
|
18
|
+
*/
|
19
|
+
export declare const flattenTree: (daffUiTree: DaffTreeUi<unknown>) => DaffTreeFlatNode[];
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { DaffTreeData } from '../interfaces/tree-data';
|
2
|
+
import { DaffTreeUi } from '../interfaces/tree-ui';
|
3
|
+
export declare const daffDataTreeToUiTree: <T>(data: DaffTreeData<T>, parent: DaffTreeUi<T>, open?: boolean) => DaffTreeUi<T>;
|
4
|
+
/**
|
5
|
+
* This function translates the original data given to us by the client
|
6
|
+
* to the internal representation of the tree used by the {@link DaffTreeComponent}
|
7
|
+
*/
|
8
|
+
export declare const hydrateTree: <T>(data: DaffTreeData<T>) => DaffTreeUi<T>;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';
|
2
|
+
import { DaffTreeData } from '../interfaces/tree-data';
|
3
|
+
/**
|
4
|
+
* Transform a tree-like structure in-place into a {@link DaffTreeData}.
|
5
|
+
*
|
6
|
+
* This will mutate the original object, hydrating with additional properties.
|
7
|
+
*
|
8
|
+
* @param tree - The data structure representing tree-like data.
|
9
|
+
* @param transformFn - A user-supplied function that will transform the user
|
10
|
+
* type into a {@link DaffTreeData}
|
11
|
+
* @param key - The property of the your tree that indicates which
|
12
|
+
* key contains the "children" of your tree structure.
|
13
|
+
*
|
14
|
+
*/
|
15
|
+
export declare const daffTransformTreeInPlace: <T extends Record<any, any>>(tree: T, transformFn: (type: T) => T & DaffTreeData<unknown>, key: keyof { [P in keyof T as T[P] extends T[] ? P : never]: T[]; }) => DaffTreeData<unknown>;
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';
|
2
|
+
/**
|
3
|
+
* Traverse the tree, pre-order, right-to-left
|
4
|
+
*/
|
5
|
+
export declare const traverse: <T extends Record<any, any>, V extends Record<any, any> = T>(tree: T, visit: (tree: T) => V, key: keyof { [P in keyof T as T[P] extends T[] ? P : never]: T[]; }) => V;
|
@@ -1,3 +0,0 @@
|
|
1
|
-
export * from './select/select.component';
|
2
|
-
export { DaffNativeSelectModule } from './select.module';
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduL3NyYy9hdG9tcy9mb3JtL3NlbGVjdC9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCB7IERhZmZOYXRpdmVTZWxlY3RNb2R1bGUgfSBmcm9tICcuL3NlbGVjdC5tb2R1bGUnO1xuIl19
|
@@ -1,64 +0,0 @@
|
|
1
|
-
import { Component, ViewEncapsulation, Optional, Self, Input, ElementRef, HostListener, HostBinding, ChangeDetectionStrategy, } from '@angular/core';
|
2
|
-
import { NgControl } from '@angular/forms';
|
3
|
-
import { DaffFormFieldControl } from '../../form-field/form-field-control';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "@angular/forms";
|
6
|
-
export class DaffNativeSelectComponent {
|
7
|
-
constructor(
|
8
|
-
/**
|
9
|
-
* @docs-private
|
10
|
-
*/
|
11
|
-
ngControl, _elementRef) {
|
12
|
-
this.ngControl = ngControl;
|
13
|
-
this._elementRef = _elementRef;
|
14
|
-
/**
|
15
|
-
* @docs-private
|
16
|
-
*/
|
17
|
-
this.controlType = 'native-select';
|
18
|
-
this.class = true;
|
19
|
-
this.focused = false;
|
20
|
-
}
|
21
|
-
/**
|
22
|
-
* @docs-private
|
23
|
-
*/
|
24
|
-
focus() {
|
25
|
-
this.focused = true;
|
26
|
-
}
|
27
|
-
/**
|
28
|
-
* @docs-private
|
29
|
-
*/
|
30
|
-
blur() {
|
31
|
-
this.focused = false;
|
32
|
-
}
|
33
|
-
onFocus() {
|
34
|
-
this._elementRef.nativeElement.focus();
|
35
|
-
}
|
36
|
-
}
|
37
|
-
/** @nocollapse */ DaffNativeSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffNativeSelectComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
38
|
-
/** @nocollapse */ DaffNativeSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffNativeSelectComponent, selector: "select[daff-native-select]", inputs: { formSubmitted: "formSubmitted" }, host: { listeners: { "focus": "focus()", "blur": "blur()" }, properties: { "class.daff-native-select": "this.class" } }, providers: [
|
39
|
-
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
40
|
-
{ provide: DaffFormFieldControl, useExisting: DaffNativeSelectComponent },
|
41
|
-
], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".daff-native-select{-webkit-appearance:none;appearance:none;background:transparent;background-clip:padding-box;border:0;box-shadow:none;font-size:1rem;line-height:1.5rem;margin:0;min-width:45px;width:100%}.daff-native-select:focus{border:0;box-shadow:none;outline:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffNativeSelectComponent, decorators: [{
|
43
|
-
type: Component,
|
44
|
-
args: [{ selector: 'select[daff-native-select]', template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
45
|
-
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
46
|
-
{ provide: DaffFormFieldControl, useExisting: DaffNativeSelectComponent },
|
47
|
-
], styles: [".daff-native-select{-webkit-appearance:none;appearance:none;background:transparent;background-clip:padding-box;border:0;box-shadow:none;font-size:1rem;line-height:1.5rem;margin:0;min-width:45px;width:100%}.daff-native-select:focus{border:0;box-shadow:none;outline:none}\n"] }]
|
48
|
-
}], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
|
49
|
-
type: Optional
|
50
|
-
}, {
|
51
|
-
type: Self
|
52
|
-
}] }, { type: i0.ElementRef }]; }, propDecorators: { class: [{
|
53
|
-
type: HostBinding,
|
54
|
-
args: ['class.daff-native-select']
|
55
|
-
}], formSubmitted: [{
|
56
|
-
type: Input
|
57
|
-
}], focus: [{
|
58
|
-
type: HostListener,
|
59
|
-
args: ['focus']
|
60
|
-
}], blur: [{
|
61
|
-
type: HostListener,
|
62
|
-
args: ['blur']
|
63
|
-
}] } });
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduL3NyYy9hdG9tcy9mb3JtL3NlbGVjdC9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsSUFBSSxFQUNKLEtBQUssRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCx1QkFBdUIsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFlM0UsTUFBTSxPQUFPLHlCQUF5QjtJQTRCcEM7SUFDRTs7T0FFRztJQUN3QixTQUFvQixFQUN2QyxXQUF5QztRQUR0QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3ZDLGdCQUFXLEdBQVgsV0FBVyxDQUE4QjtRQWhDbkQ7O1dBRUc7UUFDSCxnQkFBVyxHQUFHLGVBQWUsQ0FBQztRQUVXLFVBQUssR0FBRyxJQUFJLENBQUM7UUFNdEQsWUFBTyxHQUFHLEtBQUssQ0FBQztJQXNCYixDQUFDO0lBcEJKOztPQUVHO0lBQ29CLEtBQUs7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ21CLElBQUk7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQVVELE9BQU87UUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QyxDQUFDOzt5SUF0Q1UseUJBQXlCOzZIQUF6Qix5QkFBeUIsME5BTnpCO1FBQ1QsbUVBQW1FO1FBQ25FLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSx5QkFBeUIsRUFBRTtLQUMxRSwwQkFQUywyQkFBMkI7MkZBVTFCLHlCQUF5QjtrQkFickMsU0FBUzsrQkFFRSw0QkFBNEIsWUFDNUIsMkJBQTJCLGlCQUV0QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNULG1FQUFtRTt3QkFDbkUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVywyQkFBMkIsRUFBRTtxQkFDMUU7OzBCQW1DRSxRQUFROzswQkFBSSxJQUFJO3FFQTFCc0IsS0FBSztzQkFBN0MsV0FBVzt1QkFBQywwQkFBMEI7Z0JBSzlCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTWlCLEtBQUs7c0JBQTNCLFlBQVk7dUJBQUMsT0FBTztnQkFPQyxJQUFJO3NCQUF6QixZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBPcHRpb25hbCxcbiAgU2VsZixcbiAgSW5wdXQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSG9zdEJpbmRpbmcsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRGFmZkZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICcuLi8uLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udHJvbCc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3NlbGVjdFtkYWZmLW5hdGl2ZS1zZWxlY3RdJyxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgeyBwcm92aWRlOiBEYWZmRm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IERhZmZOYXRpdmVTZWxlY3RDb21wb25lbnQgfSxcbiAgXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBEYWZmTmF0aXZlU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgRGFmZkZvcm1GaWVsZENvbnRyb2wge1xuICAvKipcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgY29udHJvbFR5cGUgPSAnbmF0aXZlLXNlbGVjdCc7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYWZmLW5hdGl2ZS1zZWxlY3QnKSBjbGFzcyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEhhcyB0aGUgZm9ybSBiZWVuIHN1Ym1pdHRlZC5cbiAgICovXG4gIEBJbnB1dCgpIGZvcm1TdWJtaXR0ZWQ6IGJvb2xlYW47XG4gIGZvY3VzZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKSBmb2N1cygpIHtcblx0ICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKSBibHVyKCkge1xuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICkge31cblxuICBvbkZvY3VzKCkge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbn1cbiJdfQ==
|