@geoit/ui 0.0.7 → 0.1.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/ai/AGENTS.md +4 -0
- package/ai/README.md +4 -1
- package/ai/catalog.json +194 -64
- package/ai/components/geo-accordion.md +92 -0
- package/ai/components/geo-detail-view.md +91 -0
- package/ai/components/geo-map-admin-filter.md +0 -1
- package/ai/components/geo-map-legend.md +0 -1
- package/ai/components/geo-map-shell.md +0 -7
- package/ai/components/geo-switch.md +76 -0
- package/ai/components/geo-tree.md +0 -2
- package/ai/mockup.html +2 -2
- package/esm2022/lib/figma/geo-accordion/geo-accordion.component.mjs +67 -0
- package/esm2022/lib/figma/geo-accordion/geo-accordion.types.mjs +2 -0
- package/esm2022/lib/figma/geo-chart/geo-chart.component.mjs +3 -14
- package/esm2022/lib/figma/geo-detail-view/geo-detail-view.component.mjs +47 -0
- package/esm2022/lib/figma/geo-detail-view/geo-detail-view.types.mjs +2 -0
- package/esm2022/lib/figma/geo-list-page/geo-list-page.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs +3 -5
- package/esm2022/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.mjs +3 -5
- package/esm2022/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.mjs +3 -22
- package/esm2022/lib/figma/geo-map/geo-map.constants.mjs +1 -13
- package/esm2022/lib/figma/geo-switch/geo-switch.component.mjs +44 -0
- package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +3 -17
- package/esm2022/lib/figma/index.mjs +6 -1
- package/fesm2022/geoit-ui.mjs +173 -87
- package/fesm2022/geoit-ui.mjs.map +1 -1
- package/lib/figma/geo-accordion/geo-accordion.component.d.ts +34 -0
- package/lib/figma/geo-accordion/geo-accordion.types.d.ts +7 -0
- package/lib/figma/geo-chart/geo-chart.component.d.ts +0 -9
- package/lib/figma/geo-detail-view/geo-detail-view.component.d.ts +30 -0
- package/lib/figma/geo-detail-view/geo-detail-view.types.d.ts +8 -0
- package/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.d.ts +1 -3
- package/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.d.ts +1 -3
- package/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.d.ts +2 -19
- package/lib/figma/geo-map/geo-map.constants.d.ts +0 -6
- package/lib/figma/geo-switch/geo-switch.component.d.ts +25 -0
- package/lib/figma/geo-tree/geo-tree.component.d.ts +1 -5
- package/lib/figma/index.d.ts +5 -0
- package/package.json +1 -1
package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs
CHANGED
|
@@ -14,8 +14,6 @@ export class GeoMapAdminFilterComponent {
|
|
|
14
14
|
open = model(false);
|
|
15
15
|
title = input('Đơn vị hành chính');
|
|
16
16
|
nodes = input([]);
|
|
17
|
-
/** `single` — chọn đúng 1 xã/phường (BR-06-03); `multi` — checkbox nhiều cấp (mặc định). */
|
|
18
|
-
selectionMode = input('multi');
|
|
19
17
|
checkedKeys = model([]);
|
|
20
18
|
expandedKeys = model([]);
|
|
21
19
|
apply = output();
|
|
@@ -42,13 +40,13 @@ export class GeoMapAdminFilterComponent {
|
|
|
42
40
|
this.closed.emit();
|
|
43
41
|
}
|
|
44
42
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapAdminFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapAdminFilterComponent, isStandalone: true, selector: "geo-map-admin-filter", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null },
|
|
43
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapAdminFilterComponent, isStandalone: true, selector: "geo-map-admin-filter", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null }, checkedKeys: { classPropertyName: "checkedKeys", publicName: "checkedKeys", isSignal: true, isRequired: false, transformFunction: null }, expandedKeys: { classPropertyName: "expandedKeys", publicName: "expandedKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", checkedKeys: "checkedKeysChange", expandedKeys: "expandedKeysChange", apply: "apply", reset: "reset", fitProvince: "fitProvince", closed: "closed", selectionChange: "selectionChange" }, host: { properties: { "class.geo-map-admin-filter-host--open": "open()" }, classAttribute: "geo-map-admin-filter-host" }, ngImport: i0, template: "@if (open()) {\n <section class=\"geo-map-admin-filter\" aria-label=\"L\u1ECDc \u0111\u01A1n v\u1ECB h\u00E0nh ch\u00EDnh\">\n <header class=\"geo-map-admin-filter__header\">\n <h3 class=\"geo-map-admin-filter__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-admin-filter__icon-btn\"\n aria-label=\"\u0110\u00F3ng b\u1ED9 l\u1ECDc\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-admin-filter__body\">\n <geo-tree\n [nodes]=\"nodes()\"\n [checkable]=\"true\"\n [checkedKeys]=\"checkedKeys()\"\n [expandedKeys]=\"expandedKeys()\"\n (checkedKeysChange)=\"onCheckedChange($event)\"\n (expandedKeysChange)=\"expandedKeys.set($event)\"\n />\n </div>\n\n <footer class=\"geo-map-admin-filter__footer\">\n <geo-button appearance=\"secondary\" (clicked)=\"onFitProvince()\">\n Xem to\u00E0n t\u1EC9nh\n </geo-button>\n <div class=\"geo-map-admin-filter__footer-end\">\n <geo-button appearance=\"secondary\" (clicked)=\"onReset()\">\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n <geo-button appearance=\"primary\" (clicked)=\"onApply()\">\n \u00C1p d\u1EE5ng\n </geo-button>\n </div>\n </footer>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-admin-filter-host{display:none}.geo-map-admin-filter-host--open{display:block}.geo-map-admin-filter{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(320px,100vw - 32px);max-height:min(520px,75vh);display:flex;flex-direction:column;overflow:hidden}.geo-map-admin-filter__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-admin-filter__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-admin-filter__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-admin-filter__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-admin-filter__icon-btn--active,.geo-map-admin-filter__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn--icon-only{width:40px;padding:0}.geo-map-admin-filter__body{padding:8px 10px;overflow:auto;flex:1;min-height:160px}.geo-map-admin-filter__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__footer-end{display:flex;gap:8px;margin-left:auto}\n"], dependencies: [{ kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }, { kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "component", type: GeoTreeComponent, selector: "geo-tree", inputs: ["nodes", "checkable", "checkedKeys", "expandedKeys", "showLine", "blockNode"], outputs: ["checkedKeysChange", "expandedKeysChange", "nodeClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
46
44
|
}
|
|
47
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapAdminFilterComponent, decorators: [{
|
|
48
46
|
type: Component,
|
|
49
47
|
args: [{ selector: 'geo-map-admin-filter', standalone: true, imports: [GeoButtonComponent, GeoIconComponent, GeoTreeComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
50
48
|
class: 'geo-map-admin-filter-host',
|
|
51
49
|
'[class.geo-map-admin-filter-host--open]': 'open()',
|
|
52
|
-
}, template: "@if (open()) {\n <section class=\"geo-map-admin-filter\" aria-label=\"L\u1ECDc \u0111\u01A1n v\u1ECB h\u00E0nh ch\u00EDnh\">\n <header class=\"geo-map-admin-filter__header\">\n <h3 class=\"geo-map-admin-filter__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-admin-filter__icon-btn\"\n aria-label=\"\u0110\u00F3ng b\u1ED9 l\u1ECDc\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-admin-filter__body\">\n <geo-tree\n [nodes]=\"nodes()\"\n [
|
|
50
|
+
}, template: "@if (open()) {\n <section class=\"geo-map-admin-filter\" aria-label=\"L\u1ECDc \u0111\u01A1n v\u1ECB h\u00E0nh ch\u00EDnh\">\n <header class=\"geo-map-admin-filter__header\">\n <h3 class=\"geo-map-admin-filter__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-admin-filter__icon-btn\"\n aria-label=\"\u0110\u00F3ng b\u1ED9 l\u1ECDc\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-admin-filter__body\">\n <geo-tree\n [nodes]=\"nodes()\"\n [checkable]=\"true\"\n [checkedKeys]=\"checkedKeys()\"\n [expandedKeys]=\"expandedKeys()\"\n (checkedKeysChange)=\"onCheckedChange($event)\"\n (expandedKeysChange)=\"expandedKeys.set($event)\"\n />\n </div>\n\n <footer class=\"geo-map-admin-filter__footer\">\n <geo-button appearance=\"secondary\" (clicked)=\"onFitProvince()\">\n Xem to\u00E0n t\u1EC9nh\n </geo-button>\n <div class=\"geo-map-admin-filter__footer-end\">\n <geo-button appearance=\"secondary\" (clicked)=\"onReset()\">\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n <geo-button appearance=\"primary\" (clicked)=\"onApply()\">\n \u00C1p d\u1EE5ng\n </geo-button>\n </div>\n </footer>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-admin-filter-host{display:none}.geo-map-admin-filter-host--open{display:block}.geo-map-admin-filter{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(320px,100vw - 32px);max-height:min(520px,75vh);display:flex;flex-direction:column;overflow:hidden}.geo-map-admin-filter__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-admin-filter__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-admin-filter__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-admin-filter__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-admin-filter__icon-btn--active,.geo-map-admin-filter__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn--icon-only{width:40px;padding:0}.geo-map-admin-filter__body{padding:8px 10px;overflow:auto;flex:1;min-height:160px}.geo-map-admin-filter__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__footer-end{display:flex;gap:8px;margin-left:auto}\n"] }]
|
|
53
51
|
}] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1hZG1pbi1maWx0ZXIvZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1hZG1pbi1maWx0ZXIvZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQUd4RTs7Ozs7O0dBTUc7QUFjSCxNQUFNLE9BQU8sMEJBQTBCO0lBQzVCLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25DLEtBQUssR0FBRyxLQUFLLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFdBQVcsR0FBRyxLQUFLLENBQXlCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELFlBQVksR0FBRyxLQUFLLENBQXlCLEVBQUUsQ0FBQyxDQUFDO0lBRWpELEtBQUssR0FBRyxNQUFNLEVBQTBCLENBQUM7SUFDekMsS0FBSyxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBQ3ZCLFdBQVcsR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUM3QixNQUFNLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDeEIsZUFBZSxHQUFHLE1BQU0sRUFBMEIsQ0FBQztJQUU1RCxlQUFlLENBQUMsSUFBNEI7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO3dHQWxDVSwwQkFBMEI7NEZBQTFCLDBCQUEwQiwyaUNDakN2QyxzM0NBd0NBLHdrRURqQlksa0JBQWtCLHNPQUFFLGdCQUFnQix5R0FBRSxnQkFBZ0I7OzRGQVVyRCwwQkFBMEI7a0JBYnRDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLG1CQUdoRCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSwyQkFBMkI7d0JBQ2xDLHlDQUF5QyxFQUFFLFFBQVE7cUJBQ3BEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBvdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdlb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dlby1idXR0b24vZ2VvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2VvSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dlby1pY29uL2dlby1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW9UcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VvLXRyZWUvZ2VvLXRyZWUuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgR2VvVHJlZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9nZW8tdHJlZS9nZW8tdHJlZS50eXBlcyc7XG5cbi8qKlxuICogQWRtaW5pc3RyYXRpdmUgdW5pdCBmaWx0ZXIgdHJlZSAoVENRSC4xNCDigJQgY+G6pXAgeMOjKS5cbiAqXG4gKiBAc3VtbWFyeSBQYW5lbCBs4buNYyBjw6J5IMSRxqFuIHbhu4sgaMOgbmggY2jDrW5oIGPhuqVwIHjDoyB0csOqbiBi4bqjbiDEkeG7ky5cbiAqIEB3aGVuVG9Vc2UgVHJhIGPhu6l1IGLhuqNuIMSR4buTIGPhuqduIGzhu41jIHRoZW8geMOjIC8gcGjGsOG7nW5nLlxuICogQGRvTm90VXNlV2hlbiBHbG9iYWwgb3JnIGNoYXJ0cyBvdXRzaWRlIG1hcCBjb250ZXh0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tbWFwLWFkbWluLWZpbHRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtHZW9CdXR0b25Db21wb25lbnQsIEdlb0ljb25Db21wb25lbnQsIEdlb1RyZWVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZ2VvLW1hcC1hZG1pbi1maWx0ZXItaG9zdCcsXG4gICAgJ1tjbGFzcy5nZW8tbWFwLWFkbWluLWZpbHRlci1ob3N0LS1vcGVuXSc6ICdvcGVuKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9NYXBBZG1pbkZpbHRlckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IG9wZW4gPSBtb2RlbChmYWxzZSk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoJ8SQxqFuIHbhu4sgaMOgbmggY2jDrW5oJyk7XG4gIHJlYWRvbmx5IG5vZGVzID0gaW5wdXQ8R2VvVHJlZU5vZGVbXT4oW10pO1xuICByZWFkb25seSBjaGVja2VkS2V5cyA9IG1vZGVsPEFycmF5PHN0cmluZyB8IG51bWJlcj4+KFtdKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWRLZXlzID0gbW9kZWw8QXJyYXk8c3RyaW5nIHwgbnVtYmVyPj4oW10pO1xuXG4gIHJlYWRvbmx5IGFwcGx5ID0gb3V0cHV0PEFycmF5PHN0cmluZyB8IG51bWJlcj4+KCk7XG4gIHJlYWRvbmx5IHJlc2V0ID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IGZpdFByb3ZpbmNlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IGNsb3NlZCA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBvdXRwdXQ8QXJyYXk8c3RyaW5nIHwgbnVtYmVyPj4oKTtcblxuICBvbkNoZWNrZWRDaGFuZ2Uoa2V5czogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPik6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZEtleXMuc2V0KGtleXMpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoa2V5cyk7XG4gIH1cblxuICBvbkFwcGx5KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHkuZW1pdCh0aGlzLmNoZWNrZWRLZXlzKCkpO1xuICB9XG5cbiAgb25SZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrZWRLZXlzLnNldChbXSk7XG4gICAgdGhpcy5yZXNldC5lbWl0KCk7XG4gIH1cblxuICBvbkZpdFByb3ZpbmNlKCk6IHZvaWQge1xuICAgIHRoaXMuZml0UHJvdmluY2UuZW1pdCgpO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG59XG4iLCJAaWYgKG9wZW4oKSkge1xuICA8c2VjdGlvbiBjbGFzcz1cImdlby1tYXAtYWRtaW4tZmlsdGVyXCIgYXJpYS1sYWJlbD1cIkzhu41jIMSRxqFuIHbhu4sgaMOgbmggY2jDrW5oXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImdlby1tYXAtYWRtaW4tZmlsdGVyX19oZWFkZXJcIj5cbiAgICAgIDxoMyBjbGFzcz1cImdlby1tYXAtYWRtaW4tZmlsdGVyX190aXRsZVwiPnt7IHRpdGxlKCkgfX08L2gzPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJnZW8tbWFwLWFkbWluLWZpbHRlcl9faWNvbi1idG5cIlxuICAgICAgICBhcmlhLWxhYmVsPVwixJDDs25nIGLhu5kgbOG7jWNcIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIDxnZW8taWNvbiB0eXBlPVwiY2xvc2VcIiBzaXplPVwic21cIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJfX2JvZHlcIj5cbiAgICAgIDxnZW8tdHJlZVxuICAgICAgICBbbm9kZXNdPVwibm9kZXMoKVwiXG4gICAgICAgIFtjaGVja2FibGVdPVwidHJ1ZVwiXG4gICAgICAgIFtjaGVja2VkS2V5c109XCJjaGVja2VkS2V5cygpXCJcbiAgICAgICAgW2V4cGFuZGVkS2V5c109XCJleHBhbmRlZEtleXMoKVwiXG4gICAgICAgIChjaGVja2VkS2V5c0NoYW5nZSk9XCJvbkNoZWNrZWRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChleHBhbmRlZEtleXNDaGFuZ2UpPVwiZXhwYW5kZWRLZXlzLnNldCgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8Zm9vdGVyIGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJfX2Zvb3RlclwiPlxuICAgICAgPGdlby1idXR0b24gYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiIChjbGlja2VkKT1cIm9uRml0UHJvdmluY2UoKVwiPlxuICAgICAgICBYZW0gdG/DoG4gdOG7iW5oXG4gICAgICA8L2dlby1idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJfX2Zvb3Rlci1lbmRcIj5cbiAgICAgICAgPGdlby1idXR0b24gYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiIChjbGlja2VkKT1cIm9uUmVzZXQoKVwiPlxuICAgICAgICAgIMSQ4bq3dCBs4bqhaVxuICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICAgIDxnZW8tYnV0dG9uIGFwcGVhcmFuY2U9XCJwcmltYXJ5XCIgKGNsaWNrZWQpPVwib25BcHBseSgpXCI+XG4gICAgICAgICAgw4FwIGThu6VuZ1xuICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9zZWN0aW9uPlxufVxuIl19
|
|
@@ -11,8 +11,6 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
export class GeoMapLegendComponent {
|
|
12
12
|
title = input('Chú giải');
|
|
13
13
|
items = input([]);
|
|
14
|
-
/** True khi danh mục chú giải không tải được (`ERR_MAP_LEGEND_CATALOG_MISSING`). */
|
|
15
|
-
catalogMissing = input(false);
|
|
16
14
|
open = model(false);
|
|
17
15
|
closed = output();
|
|
18
16
|
onClose() {
|
|
@@ -20,13 +18,13 @@ export class GeoMapLegendComponent {
|
|
|
20
18
|
this.closed.emit();
|
|
21
19
|
}
|
|
22
20
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapLegendComponent, isStandalone: true, selector: "geo-map-legend", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null },
|
|
21
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapLegendComponent, isStandalone: true, selector: "geo-map-legend", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", closed: "closed" }, host: { properties: { "class.geo-map-legend-host--open": "open()" }, classAttribute: "geo-map-legend-host" }, ngImport: i0, template: "@if (open()) {\n <aside class=\"geo-map-legend\" role=\"dialog\" [attr.aria-label]=\"title()\">\n <header class=\"geo-map-legend__header\">\n <h3 class=\"geo-map-legend__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-legend__close\"\n aria-label=\"\u0110\u00F3ng ch\u00FA gi\u1EA3i\"\n (click)=\"onClose()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <ul class=\"geo-map-legend__list\">\n @for (item of items(); track item.code || item.label) {\n <li class=\"geo-map-legend__item\">\n @if (item.swatchUrl) {\n <img class=\"geo-map-legend__swatch\" [src]=\"item.swatchUrl\" alt=\"\" />\n } @else {\n <span\n class=\"geo-map-legend__swatch geo-map-legend__swatch--color\"\n [style.background]=\"item.color || 'var(--geo-color-neutral-300)'\"\n ></span>\n }\n <span class=\"geo-map-legend__text\">\n @if (item.code) {\n <span class=\"geo-map-legend__code\">{{ item.code }}</span>\n }\n <span class=\"geo-map-legend__label\">{{ item.label }}</span>\n </span>\n </li>\n } @empty {\n <li class=\"geo-map-legend__empty\">Ch\u01B0a c\u00F3 m\u1EE5c ch\u00FA gi\u1EA3i.</li>\n }\n </ul>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-legend-host{display:none;max-width:min(320px,100%)}.geo-map-legend-host--open{display:block}.geo-map-legend{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(320px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden}.geo-map-legend__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px 10px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-legend__title{margin:0;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-legend__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-legend__close:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-legend__close:active:not(:disabled){transform:scale(.98)}.geo-map-legend__close:disabled{opacity:.45;cursor:not-allowed}.geo-map-legend__close--active,.geo-map-legend__close--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-legend__close--icon-only{width:40px;padding:0}.geo-map-legend__list{margin:0;padding:8px 12px 12px;list-style:none;overflow:auto}.geo-map-legend__item{display:flex;align-items:center;gap:10px;padding:6px 4px}.geo-map-legend__swatch{flex-shrink:0;width:20px;height:20px;border-radius:var(--geo-radius-sm);border:1px solid var(--geo-color-neutral-200);object-fit:cover}.geo-map-legend__swatch--color{display:inline-block}.geo-map-legend__text{display:flex;flex-direction:column;gap:1px;min-width:0}.geo-map-legend__code{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-500)}.geo-map-legend__label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-800)}.geo-map-legend__empty{padding:8px 4px;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}\n"], dependencies: [{ kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
24
22
|
}
|
|
25
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLegendComponent, decorators: [{
|
|
26
24
|
type: Component,
|
|
27
25
|
args: [{ selector: 'geo-map-legend', standalone: true, imports: [GeoIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
28
26
|
class: 'geo-map-legend-host',
|
|
29
27
|
'[class.geo-map-legend-host--open]': 'open()',
|
|
30
|
-
}, template: "@if (open()) {\n <aside class=\"geo-map-legend\" role=\"dialog\" [attr.aria-label]=\"title()\">\n <header class=\"geo-map-legend__header\">\n <h3 class=\"geo-map-legend__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-legend__close\"\n aria-label=\"\u0110\u00F3ng ch\u00FA gi\u1EA3i\"\n (click)=\"onClose()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n
|
|
28
|
+
}, template: "@if (open()) {\n <aside class=\"geo-map-legend\" role=\"dialog\" [attr.aria-label]=\"title()\">\n <header class=\"geo-map-legend__header\">\n <h3 class=\"geo-map-legend__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-legend__close\"\n aria-label=\"\u0110\u00F3ng ch\u00FA gi\u1EA3i\"\n (click)=\"onClose()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <ul class=\"geo-map-legend__list\">\n @for (item of items(); track item.code || item.label) {\n <li class=\"geo-map-legend__item\">\n @if (item.swatchUrl) {\n <img class=\"geo-map-legend__swatch\" [src]=\"item.swatchUrl\" alt=\"\" />\n } @else {\n <span\n class=\"geo-map-legend__swatch geo-map-legend__swatch--color\"\n [style.background]=\"item.color || 'var(--geo-color-neutral-300)'\"\n ></span>\n }\n <span class=\"geo-map-legend__text\">\n @if (item.code) {\n <span class=\"geo-map-legend__code\">{{ item.code }}</span>\n }\n <span class=\"geo-map-legend__label\">{{ item.label }}</span>\n </span>\n </li>\n } @empty {\n <li class=\"geo-map-legend__empty\">Ch\u01B0a c\u00F3 m\u1EE5c ch\u00FA gi\u1EA3i.</li>\n }\n </ul>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-legend-host{display:none;max-width:min(320px,100%)}.geo-map-legend-host--open{display:block}.geo-map-legend{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(320px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden}.geo-map-legend__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px 10px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-legend__title{margin:0;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-legend__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-legend__close:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-legend__close:active:not(:disabled){transform:scale(.98)}.geo-map-legend__close:disabled{opacity:.45;cursor:not-allowed}.geo-map-legend__close--active,.geo-map-legend__close--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-legend__close--icon-only{width:40px;padding:0}.geo-map-legend__list{margin:0;padding:8px 12px 12px;list-style:none;overflow:auto}.geo-map-legend__item{display:flex;align-items:center;gap:10px;padding:6px 4px}.geo-map-legend__swatch{flex-shrink:0;width:20px;height:20px;border-radius:var(--geo-radius-sm);border:1px solid var(--geo-color-neutral-200);object-fit:cover}.geo-map-legend__swatch--color{display:inline-block}.geo-map-legend__text{display:flex;flex-direction:column;gap:1px;min-width:0}.geo-map-legend__code{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-500)}.geo-map-legend__label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-800)}.geo-map-legend__empty{padding:8px 4px;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}\n"] }]
|
|
31
29
|
}] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1sZWdlbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1sZWdlbmQvZ2VvLW1hcC1sZWdlbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1sZWdlbmQvZ2VvLW1hcC1sZWdlbmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQUd4RTs7Ozs7O0dBTUc7QUFjSCxNQUFNLE9BQU8scUJBQXFCO0lBQ3ZCLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUIsS0FBSyxHQUFHLEtBQUssQ0FBcUIsRUFBRSxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQixNQUFNLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFFakMsT0FBTztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQzt3R0FWVSxxQkFBcUI7NEZBQXJCLHFCQUFxQiw0bEJDL0JsQywrM0NBc0NBLHloRkRqQlksZ0JBQWdCOzs0RkFVZixxQkFBcUI7a0JBYmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUMsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUscUJBQXFCO3dCQUM1QixtQ0FBbUMsRUFBRSxRQUFRO3FCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHZW9JY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VvLWljb24vZ2VvLWljb24uY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgR2VvTWFwTGVnZW5kSXRlbSB9IGZyb20gJy4uLy4uL2dlby1tYXAudHlwZXMnO1xuXG4vKipcbiAqIEZsb2F0aW5nIGxlZ2VuZCBwb3BvdmVyIChjb2xvci9zd2F0Y2ggKyBsYWJlbCkuXG4gKlxuICogQHN1bW1hcnkgUG9wb3ZlciBjaMO6IGdp4bqjaSBsb+G6oWkgxJHhuqV0LlxuICogQHdoZW5Ub1VzZSBPcGVuZWQgZnJvbSB0b29sYmFyIGxlZ2VuZCBhY3Rpb24uXG4gKiBAZG9Ob3RVc2VXaGVuIEZvcm0gZmllbGQgbGFiZWxzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tbWFwLWxlZ2VuZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtHZW9JY29uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1tYXAtbGVnZW5kLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dlby1tYXAtbGVnZW5kLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2dlby1tYXAtbGVnZW5kLWhvc3QnLFxuICAgICdbY2xhc3MuZ2VvLW1hcC1sZWdlbmQtaG9zdC0tb3Blbl0nOiAnb3BlbigpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgR2VvTWFwTGVnZW5kQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dCgnQ2jDuiBnaeG6o2knKTtcbiAgcmVhZG9ubHkgaXRlbXMgPSBpbnB1dDxHZW9NYXBMZWdlbmRJdGVtW10+KFtdKTtcbiAgcmVhZG9ubHkgb3BlbiA9IG1vZGVsKGZhbHNlKTtcblxuICByZWFkb25seSBjbG9zZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMub3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgfVxufVxuIiwiQGlmIChvcGVuKCkpIHtcbiAgPGFzaWRlIGNsYXNzPVwiZ2VvLW1hcC1sZWdlbmRcIiByb2xlPVwiZGlhbG9nXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0aXRsZSgpXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImdlby1tYXAtbGVnZW5kX19oZWFkZXJcIj5cbiAgICAgIDxoMyBjbGFzcz1cImdlby1tYXAtbGVnZW5kX190aXRsZVwiPnt7IHRpdGxlKCkgfX08L2gzPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJnZW8tbWFwLWxlZ2VuZF9fY2xvc2VcIlxuICAgICAgICBhcmlhLWxhYmVsPVwixJDDs25nIGNow7ogZ2nhuqNpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIDxnZW8taWNvbiB0eXBlPVwiY2xvc2VcIiBzaXplPVwic21cIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8dWwgY2xhc3M9XCJnZW8tbWFwLWxlZ2VuZF9fbGlzdFwiPlxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtLmNvZGUgfHwgaXRlbS5sYWJlbCkge1xuICAgICAgICA8bGkgY2xhc3M9XCJnZW8tbWFwLWxlZ2VuZF9faXRlbVwiPlxuICAgICAgICAgIEBpZiAoaXRlbS5zd2F0Y2hVcmwpIHtcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJnZW8tbWFwLWxlZ2VuZF9fc3dhdGNoXCIgW3NyY109XCJpdGVtLnN3YXRjaFVybFwiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImdlby1tYXAtbGVnZW5kX19zd2F0Y2ggZ2VvLW1hcC1sZWdlbmRfX3N3YXRjaC0tY29sb3JcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJpdGVtLmNvbG9yIHx8ICd2YXIoLS1nZW8tY29sb3ItbmV1dHJhbC0zMDApJ1wiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1tYXAtbGVnZW5kX190ZXh0XCI+XG4gICAgICAgICAgICBAaWYgKGl0ZW0uY29kZSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1tYXAtbGVnZW5kX19jb2RlXCI+e3sgaXRlbS5jb2RlIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnZW8tbWFwLWxlZ2VuZF9fbGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICAgIH0gQGVtcHR5IHtcbiAgICAgICAgPGxpIGNsYXNzPVwiZ2VvLW1hcC1sZWdlbmRfX2VtcHR5XCI+Q2jGsGEgY8OzIG3hu6VjIGNow7ogZ2nhuqNpLjwvbGk+XG4gICAgICB9XG4gICAgPC91bD5cbiAgPC9hc2lkZT5cbn1cbiJdfQ==
|