@theseam/ui-common 0.3.0 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/breadcrumbs/_breadcrumbs-theme.scss +3 -0
  2. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +10 -0
  3. package/breadcrumbs/styles/_utilities.scss +3 -0
  4. package/breadcrumbs/styles/_variables.scss +1 -0
  5. package/breadcrumbs/theseam-ui-common-breadcrumbs.metadata.json +1 -1
  6. package/bundles/theseam-ui-common-breadcrumbs.umd.js +2 -1
  7. package/bundles/theseam-ui-common-breadcrumbs.umd.js.map +1 -1
  8. package/bundles/theseam-ui-common-dynamic.umd.js +1 -0
  9. package/bundles/theseam-ui-common-dynamic.umd.js.map +1 -1
  10. package/bundles/theseam-ui-common-form-field.umd.js +1 -1
  11. package/bundles/theseam-ui-common-form-field.umd.js.map +1 -1
  12. package/bundles/theseam-ui-common-framework.umd.js +18 -15
  13. package/bundles/theseam-ui-common-framework.umd.js.map +1 -1
  14. package/bundles/theseam-ui-common-google-maps.umd.js +2202 -0
  15. package/bundles/theseam-ui-common-google-maps.umd.js.map +1 -0
  16. package/bundles/theseam-ui-common-menu.umd.js +1 -0
  17. package/bundles/theseam-ui-common-menu.umd.js.map +1 -1
  18. package/bundles/theseam-ui-common-modal.umd.js +21 -1
  19. package/bundles/theseam-ui-common-modal.umd.js.map +1 -1
  20. package/bundles/theseam-ui-common-utils.umd.js +610 -136
  21. package/bundles/theseam-ui-common-utils.umd.js.map +1 -1
  22. package/bundles/theseam-ui-common-widget.umd.js +4 -2
  23. package/bundles/theseam-ui-common-widget.umd.js.map +1 -1
  24. package/esm2015/breadcrumbs/breadcrumbs/breadcrumbs.component.js +4 -3
  25. package/esm2015/dynamic/evaluators/jexl-evaluator/jexl-evaluator.js +2 -1
  26. package/esm2015/form-field/input.directive.js +2 -2
  27. package/esm2015/framework/base-layout/base-layout.component.js +3 -3
  28. package/esm2015/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.js +5 -5
  29. package/esm2015/framework/top-bar/top-bar-title/top-bar-title.component.js +4 -3
  30. package/esm2015/framework/top-bar/top-bar.component.js +10 -8
  31. package/esm2015/google-maps/google-maps/google-maps.component.js +261 -0
  32. package/esm2015/google-maps/google-maps-contextmenu.js +113 -0
  33. package/esm2015/google-maps/google-maps-controls.service.js +70 -0
  34. package/esm2015/google-maps/google-maps-feature-helpers.js +177 -0
  35. package/esm2015/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.js +195 -0
  36. package/esm2015/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.js +163 -0
  37. package/esm2015/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.js +57 -0
  38. package/esm2015/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.js +119 -0
  39. package/esm2015/google-maps/google-maps.module.js +45 -0
  40. package/esm2015/google-maps/google-maps.service.js +344 -0
  41. package/esm2015/google-maps/map-control.component.js +65 -0
  42. package/esm2015/google-maps/map-controls-service.js +4 -0
  43. package/esm2015/google-maps/map-file-drop/map-file-drop.component.js +135 -0
  44. package/esm2015/google-maps/map-value-manager.service.js +46 -0
  45. package/esm2015/google-maps/public-api.js +14 -0
  46. package/esm2015/google-maps/theseam-ui-common-google-maps.js +6 -0
  47. package/esm2015/menu/menu-toggle.directive.js +2 -1
  48. package/esm2015/modal/modal-ref.js +22 -2
  49. package/esm2015/utils/geo-json/coerce-feature-collection.js +44 -0
  50. package/esm2015/utils/geo-json/geo-json-to-area.js +11 -0
  51. package/esm2015/utils/geo-json/is-feature-collection.validator.js +21 -0
  52. package/esm2015/utils/geo-json/is-only-geometry-types.js +23 -0
  53. package/esm2015/utils/geo-json/is-only-geometry-types.validator.js +32 -0
  54. package/esm2015/utils/geo-json/merge-polygons.js +35 -0
  55. package/esm2015/utils/geo-json/no-inner-rings.validator.js +63 -0
  56. package/esm2015/utils/geo-json/no-kinks.validator.js +39 -0
  57. package/esm2015/utils/geo-json/read-geo-file.js +99 -0
  58. package/esm2015/utils/geo-json/split-multi-polygons.js +29 -0
  59. package/esm2015/utils/is-null-or-undefined.js +1 -1
  60. package/esm2015/utils/public-api.js +11 -1
  61. package/esm2015/widget/widget/widget.component.js +1 -1
  62. package/esm2015/widget/widget-content-components/widget-tile/widget-tile.component.js +4 -2
  63. package/fesm2015/theseam-ui-common-breadcrumbs.js +3 -2
  64. package/fesm2015/theseam-ui-common-breadcrumbs.js.map +1 -1
  65. package/fesm2015/theseam-ui-common-dynamic.js +1 -0
  66. package/fesm2015/theseam-ui-common-dynamic.js.map +1 -1
  67. package/fesm2015/theseam-ui-common-form-field.js +1 -1
  68. package/fesm2015/theseam-ui-common-form-field.js.map +1 -1
  69. package/fesm2015/theseam-ui-common-framework.js +15 -12
  70. package/fesm2015/theseam-ui-common-framework.js.map +1 -1
  71. package/fesm2015/theseam-ui-common-google-maps.js +1729 -0
  72. package/fesm2015/theseam-ui-common-google-maps.js.map +1 -0
  73. package/fesm2015/theseam-ui-common-menu.js +1 -0
  74. package/fesm2015/theseam-ui-common-menu.js.map +1 -1
  75. package/fesm2015/theseam-ui-common-modal.js +21 -1
  76. package/fesm2015/theseam-ui-common-modal.js.map +1 -1
  77. package/fesm2015/theseam-ui-common-utils.js +477 -94
  78. package/fesm2015/theseam-ui-common-utils.js.map +1 -1
  79. package/fesm2015/theseam-ui-common-widget.js +4 -2
  80. package/fesm2015/theseam-ui-common-widget.js.map +1 -1
  81. package/form-field/theseam-ui-common-form-field.metadata.json +1 -1
  82. package/framework/base-layout/base-layout.component.scss +14 -0
  83. package/framework/base-layout/styles/_variables.scss +14 -0
  84. package/framework/theseam-ui-common-framework.metadata.json +1 -1
  85. package/framework/top-bar/_top-bar-theme.scss +5 -0
  86. package/framework/top-bar/styles/_utilities.scss +3 -0
  87. package/framework/top-bar/styles/_variables.scss +18 -0
  88. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +3 -1
  89. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.scss +15 -0
  90. package/framework/top-bar/top-bar-title/top-bar-title.component.scss +6 -0
  91. package/framework/top-bar/top-bar.component.d.ts +3 -0
  92. package/framework/top-bar/top-bar.component.scss +39 -0
  93. package/google-maps/google-maps/google-maps.component.d.ts +89 -0
  94. package/google-maps/google-maps-contextmenu.d.ts +15 -0
  95. package/google-maps/google-maps-controls.service.d.ts +23 -0
  96. package/google-maps/google-maps-feature-helpers.d.ts +37 -0
  97. package/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.d.ts +104 -0
  98. package/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.d.ts +80 -0
  99. package/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.d.ts +21 -0
  100. package/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.d.ts +34 -0
  101. package/google-maps/google-maps.module.d.ts +2 -0
  102. package/google-maps/google-maps.service.d.ts +53 -0
  103. package/google-maps/map-control.component.d.ts +20 -0
  104. package/google-maps/map-controls-service.d.ts +13 -0
  105. package/google-maps/map-file-drop/map-file-drop.component.d.ts +34 -0
  106. package/google-maps/map-value-manager.service.d.ts +18 -0
  107. package/google-maps/package.json +11 -0
  108. package/google-maps/public-api.d.ts +13 -0
  109. package/google-maps/theseam-ui-common-google-maps.d.ts +5 -0
  110. package/google-maps/theseam-ui-common-google-maps.metadata.json +1 -0
  111. package/modal/modal-ref.d.ts +1 -0
  112. package/modal/theseam-ui-common-modal.metadata.json +1 -1
  113. package/package.json +17 -10
  114. package/utils/geo-json/coerce-feature-collection.d.ts +2 -0
  115. package/utils/geo-json/geo-json-to-area.d.ts +6 -0
  116. package/utils/geo-json/is-feature-collection.validator.d.ts +3 -0
  117. package/utils/geo-json/is-only-geometry-types.d.ts +5 -0
  118. package/utils/geo-json/is-only-geometry-types.validator.d.ts +4 -0
  119. package/utils/geo-json/merge-polygons.d.ts +9 -0
  120. package/utils/geo-json/no-inner-rings.validator.d.ts +10 -0
  121. package/utils/geo-json/no-kinks.validator.d.ts +3 -0
  122. package/utils/geo-json/read-geo-file.d.ts +7 -0
  123. package/utils/geo-json/split-multi-polygons.d.ts +8 -0
  124. package/utils/is-null-or-undefined.d.ts +1 -1
  125. package/utils/public-api.d.ts +10 -0
  126. package/utils/theseam-ui-common-utils.metadata.json +1 -1
  127. package/widget/styles/_variables.scss +3 -0
  128. package/widget/theseam-ui-common-widget.metadata.json +1 -1
  129. package/widget/widget/widget.component.scss +2 -0
  130. package/widget/widget-content-components/widget-tile/widget-tile.component.d.ts +2 -0
  131. package/widget/widget-content-components/widget-tile/widget-tile.component.scss +1 -1
@@ -0,0 +1,99 @@
1
+ import { __awaiter } from "tslib";
2
+ import { isDevMode } from '@angular/core';
3
+ import fileType from '@marklb/file-type';
4
+ const Buffer = require('buffer/').Buffer;
5
+ import shp from 'shpjs';
6
+ import { readFileAsync } from '../file-utils';
7
+ import { withoutProperty } from '../obj-utils';
8
+ /**
9
+ * Reads a File, or buffer of file content, in GeoJSON or ESRI Shapefile format
10
+ * and returns a GeoJSON `FeatureCollection`.
11
+ */
12
+ export function readGeoFile(fileOrBuffer) {
13
+ var _a;
14
+ return __awaiter(this, void 0, void 0, function* () {
15
+ const buffer = yield coerceFileOrBufferToBuffer(fileOrBuffer);
16
+ if (isShpFile(buffer)) {
17
+ return yield parseShpFile(buffer);
18
+ }
19
+ else if (((_a = fileType(buffer)) === null || _a === void 0 ? void 0 : _a.mime) === 'application/zip') {
20
+ try {
21
+ return yield parseShpZip(buffer);
22
+ }
23
+ catch (e) {
24
+ // NOTE: If 'shpjs' updates or we switch to a fork, where it doesn't use
25
+ // node buffers, then we can remove this rethrow.
26
+ if (isDevMode()) {
27
+ if (e.message === 'nodebuffer is not supported by this platform') {
28
+ console.warn('Try adding Buffer polyfill.\n' +
29
+ 'Install: npm install buffer\n' +
30
+ 'Add `global.Buffer = global.Buffer || require(\'buffer\').Buffer` to "src/polyfills.ts"');
31
+ }
32
+ }
33
+ throw e;
34
+ }
35
+ }
36
+ return parseGeoJson(buffer);
37
+ });
38
+ }
39
+ function coerceFileOrBufferToBuffer(fileOrBuffer) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ if (fileOrBuffer instanceof File) {
42
+ const arrBuf = yield readFileAsync(fileOrBuffer);
43
+ return Buffer.from(arrBuf);
44
+ }
45
+ return Buffer.from(fileOrBuffer);
46
+ });
47
+ }
48
+ // NOTE: Our current version of file-type does not detect shp files. We can
49
+ // remove this function when file-types is upgraded.
50
+ function isShpFile(buffer) {
51
+ const header = [0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];
52
+ const offset = 2;
53
+ if (buffer.length < (header.length + offset)) {
54
+ return false;
55
+ }
56
+ for (let i = 0; i < header.length; i++) {
57
+ if (header[i] !== buffer[i + offset]) {
58
+ return false;
59
+ }
60
+ }
61
+ return true;
62
+ }
63
+ function parseShpFile(buffer) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ const geometries = yield shp.parseShp(buffer, undefined);
66
+ const featCollection = {
67
+ type: 'FeatureCollection',
68
+ features: geometries.map(geom => ({
69
+ type: 'Feature',
70
+ geometry: geom,
71
+ properties: {}
72
+ }))
73
+ };
74
+ return featCollection;
75
+ });
76
+ }
77
+ function parseShpZip(buffer) {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ let featCollection = yield shp.parseZip(buffer, undefined);
80
+ if (Array.isArray(featCollection)) {
81
+ if (featCollection.length === 0) {
82
+ throw Error(`Shape data not found.`);
83
+ }
84
+ else if (featCollection.length > 1) {
85
+ throw Error(`Multiple shape files not supported.`);
86
+ }
87
+ featCollection = featCollection[0];
88
+ }
89
+ return withoutProperty(featCollection, 'fileName');
90
+ });
91
+ }
92
+ function parseGeoJson(buffer) {
93
+ const json = JSON.parse(buffer.toString());
94
+ if ((json === null || json === void 0 ? void 0 : json.type) === 'FeatureCollection' && Array.isArray(json === null || json === void 0 ? void 0 : json.features)) {
95
+ return json;
96
+ }
97
+ throw Error(`Unable to parse as GeoJSON.`);
98
+ }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1nZW8tZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi91dGlscy9nZW8tanNvbi9yZWFkLWdlby1maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLG1CQUFtQixDQUFBO0FBRXhDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUE7QUFDeEMsT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFBO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUU5Qzs7O0dBR0c7QUFDSCxNQUFNLFVBQWdCLFdBQVcsQ0FBQyxZQUF5Qzs7O1FBQ3pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sMEJBQTBCLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFN0QsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckIsT0FBTyxNQUFNLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUNsQzthQUFNLElBQUksQ0FBQSxNQUFBLFFBQVEsQ0FBQyxNQUFNLENBQUMsMENBQUUsSUFBSSxNQUFLLGlCQUFpQixFQUFFO1lBQ3ZELElBQUk7Z0JBQ0YsT0FBTyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUNqQztZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLHdFQUF3RTtnQkFDeEUsaURBQWlEO2dCQUNqRCxJQUFJLFNBQVMsRUFBRSxFQUFFO29CQUNmLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyw4Q0FBOEMsRUFBRTt3QkFDaEUsT0FBTyxDQUFDLElBQUksQ0FDViwrQkFBK0I7NEJBQy9CLCtCQUErQjs0QkFDL0IseUZBQXlGLENBQzFGLENBQUE7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QUFJLHVCQUFKLElBQUksQ0FBRSxRQUFRLENBQUMsRUFBRTtRQUN2RSxPQUFPLElBQXlCLENBQUE7S0FDakM7SUFFRCxNQUFNLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IGZpbGVUeXBlIGZyb20gJ0BtYXJrbGIvZmlsZS10eXBlJ1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICdnZW9qc29uJ1xuY29uc3QgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyLycpLkJ1ZmZlclxuaW1wb3J0IHNocCBmcm9tICdzaHBqcydcblxuaW1wb3J0IHsgcmVhZEZpbGVBc3luYyB9IGZyb20gJy4uL2ZpbGUtdXRpbHMnXG5pbXBvcnQgeyB3aXRob3V0UHJvcGVydHkgfSBmcm9tICcuLi9vYmotdXRpbHMnXG5cbi8qKlxuICogUmVhZHMgYSBGaWxlLCBvciBidWZmZXIgb2YgZmlsZSBjb250ZW50LCBpbiBHZW9KU09OIG9yIEVTUkkgU2hhcGVmaWxlIGZvcm1hdFxuICogYW5kIHJldHVybnMgYSBHZW9KU09OIGBGZWF0dXJlQ29sbGVjdGlvbmAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkR2VvRmlsZShmaWxlT3JCdWZmZXI6IEZpbGUgfCBBcnJheUJ1ZmZlciB8IEJ1ZmZlcik6IFByb21pc2U8RmVhdHVyZUNvbGxlY3Rpb24+IHtcbiAgY29uc3QgYnVmZmVyID0gYXdhaXQgY29lcmNlRmlsZU9yQnVmZmVyVG9CdWZmZXIoZmlsZU9yQnVmZmVyKVxuXG4gIGlmIChpc1NocEZpbGUoYnVmZmVyKSkge1xuICAgIHJldHVybiBhd2FpdCBwYXJzZVNocEZpbGUoYnVmZmVyKVxuICB9IGVsc2UgaWYgKGZpbGVUeXBlKGJ1ZmZlcik/Lm1pbWUgPT09ICdhcHBsaWNhdGlvbi96aXAnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBwYXJzZVNocFppcChidWZmZXIpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gTk9URTogSWYgJ3NocGpzJyB1cGRhdGVzIG9yIHdlIHN3aXRjaCB0byBhIGZvcmssIHdoZXJlIGl0IGRvZXNuJ3QgdXNlXG4gICAgICAvLyBub2RlIGJ1ZmZlcnMsIHRoZW4gd2UgY2FuIHJlbW92ZSB0aGlzIHJldGhyb3cuXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgaWYgKGUubWVzc2FnZSA9PT0gJ25vZGVidWZmZXIgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIHBsYXRmb3JtJykge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICdUcnkgYWRkaW5nIEJ1ZmZlciBwb2x5ZmlsbC5cXG4nICtcbiAgICAgICAgICAgICdJbnN0YWxsOiBucG0gaW5zdGFsbCBidWZmZXJcXG4nICtcbiAgICAgICAgICAgICdBZGQgYGdsb2JhbC5CdWZmZXIgPSBnbG9iYWwuQnVmZmVyIHx8IHJlcXVpcmUoXFwnYnVmZmVyXFwnKS5CdWZmZXJgIHRvIFwic3JjL3BvbHlmaWxscy50c1wiJ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJzZUdlb0pzb24oYnVmZmVyKVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb2VyY2VGaWxlT3JCdWZmZXJUb0J1ZmZlcihmaWxlT3JCdWZmZXI6IEZpbGUgfCBBcnJheUJ1ZmZlciB8IEJ1ZmZlcik6IFByb21pc2U8QnVmZmVyPiB7XG4gIGlmIChmaWxlT3JCdWZmZXIgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgY29uc3QgYXJyQnVmID0gYXdhaXQgcmVhZEZpbGVBc3luYyhmaWxlT3JCdWZmZXIpXG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGFyckJ1ZilcbiAgfVxuXG4gIHJldHVybiBCdWZmZXIuZnJvbShmaWxlT3JCdWZmZXIpXG59XG5cbi8vIE5PVEU6IE91ciBjdXJyZW50IHZlcnNpb24gb2YgZmlsZS10eXBlIGRvZXMgbm90IGRldGVjdCBzaHAgZmlsZXMuIFdlIGNhblxuLy8gcmVtb3ZlIHRoaXMgZnVuY3Rpb24gd2hlbiBmaWxlLXR5cGVzIGlzIHVwZ3JhZGVkLlxuZnVuY3Rpb24gaXNTaHBGaWxlKGJ1ZmZlcjogQnVmZmVyKTogYm9vbGVhbiB7XG4gIGNvbnN0IGhlYWRlciA9IFsgMHgyNywgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCBdXG4gIGNvbnN0IG9mZnNldCA9IDJcblxuICBpZiAoYnVmZmVyLmxlbmd0aCA8IChoZWFkZXIubGVuZ3RoICsgb2Zmc2V0KSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWFkZXIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoaGVhZGVyW2ldICE9PSBidWZmZXJbaSArIG9mZnNldF0pIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlU2hwRmlsZShidWZmZXI6IEJ1ZmZlcik6IFByb21pc2U8RmVhdHVyZUNvbGxlY3Rpb24+IHtcbiAgY29uc3QgZ2VvbWV0cmllcyA9IGF3YWl0IHNocC5wYXJzZVNocChidWZmZXIsIHVuZGVmaW5lZCBhcyBhbnkpXG4gIGNvbnN0IGZlYXRDb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgIGZlYXR1cmVzOiBnZW9tZXRyaWVzLm1hcChnZW9tID0+ICh7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBnZW9tZXRyeTogZ2VvbSxcbiAgICAgIHByb3BlcnRpZXM6IHsgfVxuICAgIH0pKVxuICB9XG4gIHJldHVybiBmZWF0Q29sbGVjdGlvblxufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZVNocFppcChidWZmZXI6IEJ1ZmZlcik6IFByb21pc2U8RmVhdHVyZUNvbGxlY3Rpb24+IHtcbiAgbGV0IGZlYXRDb2xsZWN0aW9uID0gYXdhaXQgc2hwLnBhcnNlWmlwKGJ1ZmZlciwgdW5kZWZpbmVkIGFzIGFueSlcbiAgaWYgKEFycmF5LmlzQXJyYXkoZmVhdENvbGxlY3Rpb24pKSB7XG4gICAgaWYgKGZlYXRDb2xsZWN0aW9uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgRXJyb3IoYFNoYXBlIGRhdGEgbm90IGZvdW5kLmApXG4gICAgfSBlbHNlIGlmIChmZWF0Q29sbGVjdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihgTXVsdGlwbGUgc2hhcGUgZmlsZXMgbm90IHN1cHBvcnRlZC5gKVxuICAgIH1cbiAgICBmZWF0Q29sbGVjdGlvbiA9IGZlYXRDb2xsZWN0aW9uWzBdXG4gIH1cbiAgcmV0dXJuIHdpdGhvdXRQcm9wZXJ0eShmZWF0Q29sbGVjdGlvbiwgJ2ZpbGVOYW1lJylcbn1cblxuZnVuY3Rpb24gcGFyc2VHZW9Kc29uKGJ1ZmZlcjogQnVmZmVyKTogRmVhdHVyZUNvbGxlY3Rpb24ge1xuICBjb25zdCBqc29uID0gSlNPTi5wYXJzZShidWZmZXIudG9TdHJpbmcoKSlcblxuICBpZiAoanNvbj8udHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJyAmJiBBcnJheS5pc0FycmF5KGpzb24/LmZlYXR1cmVzKSkge1xuICAgIHJldHVybiBqc29uIGFzIEZlYXR1cmVDb2xsZWN0aW9uXG4gIH1cblxuICB0aHJvdyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIGFzIEdlb0pTT04uYClcbn1cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Split all MultiPolygon into Polygon. Any properties, other than
3
+ * 'coordinates', of the MultiPolygons will be lost.
4
+ *
5
+ * NOTE: MultiPolygons in a GeometryCollection will not be split.
6
+ */
7
+ export function splitMultiPolygons(featureCollection) {
8
+ for (let i = 0; i < featureCollection.features.length; i++) {
9
+ if (featureCollection.features[i]) {
10
+ const geometry = featureCollection.features[i].geometry;
11
+ if (geometry.type === 'MultiPolygon') {
12
+ const features = splitMultPolygon(geometry).map(p => ({
13
+ type: 'Feature',
14
+ geometry: p,
15
+ properties: {},
16
+ }));
17
+ featureCollection.features.splice(i, 1, ...features);
18
+ i += Math.max(features.length - 1, 0);
19
+ }
20
+ }
21
+ }
22
+ }
23
+ function splitMultPolygon(multiPolygon) {
24
+ return multiPolygon.coordinates.map(c => ({
25
+ type: 'Polygon',
26
+ coordinates: c,
27
+ }));
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtbXVsdGktcG9seWdvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdXRpbHMvZ2VvLWpzb24vc3BsaXQtbXVsdGktcG9seWdvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsaUJBQW9DO0lBQ3JFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzFELElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUE7WUFDdkQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtnQkFDcEMsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDcEQsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsUUFBUSxFQUFFLENBQUM7b0JBQ1gsVUFBVSxFQUFFLEVBQUc7aUJBQ0osQ0FBQSxDQUFDLENBQUE7Z0JBQ2QsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUE7Z0JBQ3BELENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO2FBQ3RDO1NBQ0Y7S0FDRjtBQUNILENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFlBQTBCO0lBQ2xELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLENBQUM7S0FDZixDQUFDLENBQUMsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2x5Z29uIH0gZnJvbSAnQHR1cmYvaGVscGVycydcbmltcG9ydCB7XG4gIEZlYXR1cmUsXG4gIEZlYXR1cmVDb2xsZWN0aW9uLFxuICBNdWx0aVBvbHlnb24sXG59IGZyb20gJ2dlb2pzb24nXG5cbi8qKlxuICogU3BsaXQgYWxsIE11bHRpUG9seWdvbiBpbnRvIFBvbHlnb24uIEFueSBwcm9wZXJ0aWVzLCBvdGhlciB0aGFuXG4gKiAnY29vcmRpbmF0ZXMnLCBvZiB0aGUgTXVsdGlQb2x5Z29ucyB3aWxsIGJlIGxvc3QuXG4gKlxuICogTk9URTogTXVsdGlQb2x5Z29ucyBpbiBhIEdlb21ldHJ5Q29sbGVjdGlvbiB3aWxsIG5vdCBiZSBzcGxpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0TXVsdGlQb2x5Z29ucyhmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24pOiB2b2lkIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlc1tpXSkge1xuICAgICAgY29uc3QgZ2VvbWV0cnkgPSBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlc1tpXS5nZW9tZXRyeVxuICAgICAgaWYgKGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nKSB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gc3BsaXRNdWx0UG9seWdvbihnZW9tZXRyeSkubWFwKHAgPT4gKHtcbiAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgZ2VvbWV0cnk6IHAsXG4gICAgICAgICAgcHJvcGVydGllczogeyB9LFxuICAgICAgICB9IGFzIEZlYXR1cmUpKVxuICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5zcGxpY2UoaSwgMSwgLi4uZmVhdHVyZXMpXG4gICAgICAgIGkgKz0gTWF0aC5tYXgoZmVhdHVyZXMubGVuZ3RoIC0gMSwgMClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3BsaXRNdWx0UG9seWdvbihtdWx0aVBvbHlnb246IE11bHRpUG9seWdvbik6IFBvbHlnb25bXSB7XG4gIHJldHVybiBtdWx0aVBvbHlnb24uY29vcmRpbmF0ZXMubWFwKGMgPT4gKHtcbiAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgY29vcmRpbmF0ZXM6IGMsXG4gIH0pKVxufVxuIl19
@@ -1,4 +1,4 @@
1
1
  export function isNullOrUndefined(value) {
2
2
  return value === undefined || value === null;
3
3
  }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtbnVsbC1vci11bmRlZmluZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdXRpbHMvaXMtbnVsbC1vci11bmRlZmluZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQVU7SUFDMUMsT0FBTyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUE7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZCh2YWx1ZTogYW55KSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsXG59XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtbnVsbC1vci11bmRlZmluZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdXRpbHMvaXMtbnVsbC1vci11bmRlZmluZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGlCQUFpQixDQUFJLEtBQTJCO0lBQzlELE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFBO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQ8VD4odmFsdWU6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgKG51bGwgfCB1bmRlZmluZWQpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGxcbn1cbiJdfQ==
@@ -11,6 +11,16 @@ export * from './form/has-required-control';
11
11
  export * from './form/is-empty-input-value';
12
12
  export * from './operators/index';
13
13
  export * from './router/index';
14
+ export * from './geo-json/coerce-feature-collection';
15
+ export * from './geo-json/geo-json-to-area';
16
+ export * from './geo-json/is-feature-collection.validator';
17
+ export * from './geo-json/is-only-geometry-types';
18
+ export * from './geo-json/is-only-geometry-types.validator';
19
+ export * from './geo-json/merge-polygons';
20
+ export * from './geo-json/no-inner-rings.validator';
21
+ export * from './geo-json/no-kinks.validator';
22
+ export * from './geo-json/read-geo-file';
23
+ export * from './geo-json/split-multi-polygons';
14
24
  export * from './array-move';
15
25
  export * from './calc-percentage';
16
26
  export * from './toggle-attribute';
@@ -36,4 +46,4 @@ export * from './pad-start';
36
46
  export * from './create-padding';
37
47
  export * from './is-numeric';
38
48
  export * from './fractional-digits-count';
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi91dGlscy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUNBQW1DLENBQUE7QUFFakQsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMscUNBQXFDLENBQUE7QUFDbkQsY0FBYywrQkFBK0IsQ0FBQTtBQUM3QyxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMscUNBQXFDLENBQUE7QUFDbkQsY0FBYyw4QkFBOEIsQ0FBQTtBQUM1QyxjQUFjLG1DQUFtQyxDQUFBO0FBQ2pELGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyw2QkFBNkIsQ0FBQTtBQUUzQyxjQUFjLG1CQUFtQixDQUFBO0FBRWpDLGNBQWMsZ0JBQWdCLENBQUE7QUFFOUIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxlQUFlLENBQUE7QUFDN0IsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLGtCQUFrQixDQUFBO0FBQ2hDLGNBQWMsZUFBZSxDQUFBO0FBQzdCLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsYUFBYSxDQUFBO0FBQzNCLGNBQWMsa0JBQWtCLENBQUE7QUFDaEMsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYywyQkFBMkIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2RrL2dldC1jbG9zZXN0LXdpZGdldC1jZGstZHJhZydcblxuZXhwb3J0ICogZnJvbSAnLi9mb3JtL2dldC1jb250cm9sLW5hbWUnXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vZ2V0LWNvbnRyb2wtcGF0aCdcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS9vYnNlcnZlLWNvbnRyb2wtaXMtZGlmZmVyZW50J1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtL29ic2VydmUtY29udHJvbC1zdGF0dXMnXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vb2JzZXJ2ZS1jb250cm9sLXZhbGlkJ1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtL29ic2VydmUtY29udHJvbC12YWx1ZS1jaGFuZ2UnXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vb2JzZXJ2ZS1jb250cm9sLXZhbHVlJ1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtL3dhaXQtb24tbm9uLXBlbmRpbmctc3RhdHVzJ1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtL2hhcy1yZXF1aXJlZC1jb250cm9sJ1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtL2lzLWVtcHR5LWlucHV0LXZhbHVlJ1xuXG5leHBvcnQgKiBmcm9tICcuL29wZXJhdG9ycy9pbmRleCdcblxuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXIvaW5kZXgnXG5cbmV4cG9ydCAqIGZyb20gJy4vYXJyYXktbW92ZSdcbmV4cG9ydCAqIGZyb20gJy4vY2FsYy1wZXJjZW50YWdlJ1xuZXhwb3J0ICogZnJvbSAnLi90b2dnbGUtYXR0cmlidXRlJ1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtYXR0cmlidXRlJ1xuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1tYXNrcydcbmV4cG9ydCAqIGZyb20gJy4vaXMtbnVsbC1vci11bmRlZmluZWQnXG5leHBvcnQgKiBmcm9tICcuL2xvYWQtc3R5bGUnXG5leHBvcnQgKiBmcm9tICcuL2xvYWQtc3R5bGUtc2hlZXQnXG5leHBvcnQgKiBmcm9tICcuL29iai11dGlscydcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS11dGlscydcbmV4cG9ydCAqIGZyb20gJy4vbm90LW51bGwtb3ItdW5kZWZpbmVkJ1xuZXhwb3J0ICogZnJvbSAnLi93YWl0LW9uLWNvbmRpdGlvbi1hc3luYydcbmV4cG9ydCAqIGZyb20gJy4vcG9sbGluZy10aWNrZXInXG5leHBvcnQgKiBmcm9tICcuL3JlZnJlc2hhYmxlJ1xuZXhwb3J0ICogZnJvbSAnLi93cmFwLWludG8tb2JzZXJ2YWJsZSdcbmV4cG9ydCAqIGZyb20gJy4vaXMtYWJzb2x1dGUtdXJsJ1xuZXhwb3J0ICogZnJvbSAnLi9zdWJzY3JpYmVyLWNvdW50J1xuZXhwb3J0ICogZnJvbSAnLi9oYXMtcHJvcGVydHknXG5leHBvcnQgKiBmcm9tICcuL2hhcy1hdHRyaWJ1dGUnXG5leHBvcnQgKiBmcm9tICcuL29ic2VydmUtcXVlcnktbGlzdCdcbmV4cG9ydCAqIGZyb20gJy4vcGFkLWVuZCdcbmV4cG9ydCAqIGZyb20gJy4vcGFkLXN0YXJ0J1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGUtcGFkZGluZydcbmV4cG9ydCAqIGZyb20gJy4vaXMtbnVtZXJpYydcbmV4cG9ydCAqIGZyb20gJy4vZnJhY3Rpb25hbC1kaWdpdHMtY291bnQnXG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi91dGlscy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUNBQW1DLENBQUE7QUFFakQsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMscUNBQXFDLENBQUE7QUFDbkQsY0FBYywrQkFBK0IsQ0FBQTtBQUM3QyxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMscUNBQXFDLENBQUE7QUFDbkQsY0FBYyw4QkFBOEIsQ0FBQTtBQUM1QyxjQUFjLG1DQUFtQyxDQUFBO0FBQ2pELGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyw2QkFBNkIsQ0FBQTtBQUUzQyxjQUFjLG1CQUFtQixDQUFBO0FBRWpDLGNBQWMsZ0JBQWdCLENBQUE7QUFFOUIsY0FBYyxzQ0FBc0MsQ0FBQTtBQUNwRCxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsNENBQTRDLENBQUE7QUFDMUQsY0FBYyxtQ0FBbUMsQ0FBQTtBQUNqRCxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyxxQ0FBcUMsQ0FBQTtBQUNuRCxjQUFjLCtCQUErQixDQUFBO0FBQzdDLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYyxpQ0FBaUMsQ0FBQTtBQUUvQyxjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUE7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGVBQWUsQ0FBQTtBQUM3QixjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsb0JBQW9CLENBQUE7QUFDbEMsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsa0JBQWtCLENBQUE7QUFDaEMsY0FBYyxlQUFlLENBQUE7QUFDN0IsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUE7QUFDbEMsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLDJCQUEyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jZGsvZ2V0LWNsb3Nlc3Qtd2lkZ2V0LWNkay1kcmFnJ1xuXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vZ2V0LWNvbnRyb2wtbmFtZSdcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS9nZXQtY29udHJvbC1wYXRoJ1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtL29ic2VydmUtY29udHJvbC1pcy1kaWZmZXJlbnQnXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vb2JzZXJ2ZS1jb250cm9sLXN0YXR1cydcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS9vYnNlcnZlLWNvbnRyb2wtdmFsaWQnXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vb2JzZXJ2ZS1jb250cm9sLXZhbHVlLWNoYW5nZSdcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS9vYnNlcnZlLWNvbnRyb2wtdmFsdWUnXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vd2FpdC1vbi1ub24tcGVuZGluZy1zdGF0dXMnXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vaGFzLXJlcXVpcmVkLWNvbnRyb2wnXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0vaXMtZW1wdHktaW5wdXQtdmFsdWUnXG5cbmV4cG9ydCAqIGZyb20gJy4vb3BlcmF0b3JzL2luZGV4J1xuXG5leHBvcnQgKiBmcm9tICcuL3JvdXRlci9pbmRleCdcblxuZXhwb3J0ICogZnJvbSAnLi9nZW8tanNvbi9jb2VyY2UtZmVhdHVyZS1jb2xsZWN0aW9uJ1xuZXhwb3J0ICogZnJvbSAnLi9nZW8tanNvbi9nZW8tanNvbi10by1hcmVhJ1xuZXhwb3J0ICogZnJvbSAnLi9nZW8tanNvbi9pcy1mZWF0dXJlLWNvbGxlY3Rpb24udmFsaWRhdG9yJ1xuZXhwb3J0ICogZnJvbSAnLi9nZW8tanNvbi9pcy1vbmx5LWdlb21ldHJ5LXR5cGVzJ1xuZXhwb3J0ICogZnJvbSAnLi9nZW8tanNvbi9pcy1vbmx5LWdlb21ldHJ5LXR5cGVzLnZhbGlkYXRvcidcbmV4cG9ydCAqIGZyb20gJy4vZ2VvLWpzb24vbWVyZ2UtcG9seWdvbnMnXG5leHBvcnQgKiBmcm9tICcuL2dlby1qc29uL25vLWlubmVyLXJpbmdzLnZhbGlkYXRvcidcbmV4cG9ydCAqIGZyb20gJy4vZ2VvLWpzb24vbm8ta2lua3MudmFsaWRhdG9yJ1xuZXhwb3J0ICogZnJvbSAnLi9nZW8tanNvbi9yZWFkLWdlby1maWxlJ1xuZXhwb3J0ICogZnJvbSAnLi9nZW8tanNvbi9zcGxpdC1tdWx0aS1wb2x5Z29ucydcblxuZXhwb3J0ICogZnJvbSAnLi9hcnJheS1tb3ZlJ1xuZXhwb3J0ICogZnJvbSAnLi9jYWxjLXBlcmNlbnRhZ2UnXG5leHBvcnQgKiBmcm9tICcuL3RvZ2dsZS1hdHRyaWJ1dGUnXG5leHBvcnQgKiBmcm9tICcuL2dldC1hdHRyaWJ1dGUnXG5leHBvcnQgKiBmcm9tICcuL2lucHV0LW1hc2tzJ1xuZXhwb3J0ICogZnJvbSAnLi9pcy1udWxsLW9yLXVuZGVmaW5lZCdcbmV4cG9ydCAqIGZyb20gJy4vbG9hZC1zdHlsZSdcbmV4cG9ydCAqIGZyb20gJy4vbG9hZC1zdHlsZS1zaGVldCdcbmV4cG9ydCAqIGZyb20gJy4vb2JqLXV0aWxzJ1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXV0aWxzJ1xuZXhwb3J0ICogZnJvbSAnLi9ub3QtbnVsbC1vci11bmRlZmluZWQnXG5leHBvcnQgKiBmcm9tICcuL3dhaXQtb24tY29uZGl0aW9uLWFzeW5jJ1xuZXhwb3J0ICogZnJvbSAnLi9wb2xsaW5nLXRpY2tlcidcbmV4cG9ydCAqIGZyb20gJy4vcmVmcmVzaGFibGUnXG5leHBvcnQgKiBmcm9tICcuL3dyYXAtaW50by1vYnNlcnZhYmxlJ1xuZXhwb3J0ICogZnJvbSAnLi9pcy1hYnNvbHV0ZS11cmwnXG5leHBvcnQgKiBmcm9tICcuL3N1YnNjcmliZXItY291bnQnXG5leHBvcnQgKiBmcm9tICcuL2hhcy1wcm9wZXJ0eSdcbmV4cG9ydCAqIGZyb20gJy4vaGFzLWF0dHJpYnV0ZSdcbmV4cG9ydCAqIGZyb20gJy4vb2JzZXJ2ZS1xdWVyeS1saXN0J1xuZXhwb3J0ICogZnJvbSAnLi9wYWQtZW5kJ1xuZXhwb3J0ICogZnJvbSAnLi9wYWQtc3RhcnQnXG5leHBvcnQgKiBmcm9tICcuL2NyZWF0ZS1wYWRkaW5nJ1xuZXhwb3J0ICogZnJvbSAnLi9pcy1udW1lcmljJ1xuZXhwb3J0ICogZnJvbSAnLi9mcmFjdGlvbmFsLWRpZ2l0cy1jb3VudCdcbiJdfQ==
@@ -87,7 +87,7 @@ WidgetComponent.decorators = [
87
87
  ])
88
88
  ])
89
89
  ],
90
- styles: ["seam-widget{display:block;font-size:15px}seam-widget .seam-widget{background:#FFFFFF}seam-widget .widget-header{display:flex;flex-direction:row;border-bottom:1px solid #dee2e6;background:#F4F4F4;font-size:17px}seam-widget .widget-header .widget-header-content{flex:1 1 100%}seam-widget .widget-header .widget-header-btns-container{display:flex;flex-direction:row}seam-widget .widget-header .widget-header-btns-container>div{display:flex;flex-direction:column;justify-content:center;padding:4px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:25px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:15px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-title{font-size:17px}seam-widget .widget-header-icon{display:inline-block;vertical-align:top;max-height:20px;max-width:20px;height:20px;width:20px}seam-widget .widget-header-icon .widget-header-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;max-height:20px;max-width:20px;height:20px;width:20px}seam-widget .widget-header-icon .widget-header-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header-icon .widget-header-icon--img{height:100%;max-height:20px;max-width:20px}\n"]
90
+ styles: ["seam-widget{display:block;font-size:15px}seam-widget .seam-widget{background:#FFFFFF;box-shadow:none}seam-widget .widget-header{display:flex;flex-direction:row;border-bottom:1px solid #dee2e6;background:#F4F4F4;font-size:17px}seam-widget .widget-header .widget-header-content{flex:1 1 100%}seam-widget .widget-header .widget-header-btns-container{display:flex;flex-direction:row}seam-widget .widget-header .widget-header-btns-container>div{display:flex;flex-direction:column;justify-content:center;padding:4px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:25px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-config .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;height:15px;width:30px}seam-widget .widget-header .widget-header-btns-container .widget-header-btn-collapse .seam-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header .widget-header-title{font-size:17px}seam-widget .widget-header-icon{display:inline-block;vertical-align:top;max-height:20px;max-width:20px;height:20px;width:20px;color:currentColor}seam-widget .widget-header-icon .widget-header-icon--fa{display:flex;flex-direction:row;justify-content:center;text-align:center;max-height:20px;max-width:20px;height:20px;width:20px}seam-widget .widget-header-icon .widget-header-icon--fa .svg-inline--fa{max-width:100%;height:100%;width:100%}seam-widget .widget-header-icon .widget-header-icon--img{height:100%;max-height:20px;max-width:20px}\n"]
91
91
  },] }
92
92
  ];
93
93
  WidgetComponent.ctorParameters = () => [];
@@ -35,6 +35,7 @@ export class WidgetTileComponent extends _TheSeamWidgetTileMixinBase {
35
35
  constructor(_elementRef, _focusMonitor, _renderer) {
36
36
  super(_elementRef, _focusMonitor, _renderer);
37
37
  this.grayscaleOnDisable = true;
38
+ this.iconType = 'styled-square';
38
39
  this._haltDisabledEvents = (event) => {
39
40
  // A disabled button shouldn't apply any actions
40
41
  if (this.disabled) {
@@ -75,7 +76,7 @@ export class WidgetTileComponent extends _TheSeamWidgetTileMixinBase {
75
76
  WidgetTileComponent.decorators = [
76
77
  { type: Component, args: [{
77
78
  selector: 'seam-widget-tile, a[seam-widget-tile], button[seam-widget-tile]',
78
- template: "<div class=\"d-flex flex-row\">\n <div style=\"position: relative\">\n <seam-icon\n [icon]=\"icon\"\n iconType=\"styled-square\"\n [iconClass]=\"iconClass\"\n [disabled]=\"disabled\">\n </seam-icon>\n\n <seam-icon *ngIf=\"notificationIcon\"\n class=\"widget-tile--notification-icon\"\n [icon]=\"notificationIcon\"\n iconType=\"image-fill\"\n [iconClass]=\"notificationIconClass\"\n [disabled]=\"disabled\">\n </seam-icon>\n </div>\n <div class=\"flex-grow-1 text-left pl-2\" style=\"margin: auto 0;\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"secondaryIcon\">\n <ng-template [ngTemplateOutlet]=\"secondaryIcon.template\"></ng-template>\n </div>\n</div>\n",
79
+ template: "<div class=\"d-flex flex-row\">\n <div style=\"position: relative\">\n <seam-icon\n [icon]=\"icon\"\n [iconType]=\"iconType\"\n [iconClass]=\"iconClass\"\n [disabled]=\"disabled\">\n </seam-icon>\n\n <seam-icon *ngIf=\"notificationIcon\"\n class=\"widget-tile--notification-icon\"\n [icon]=\"notificationIcon\"\n iconType=\"image-fill\"\n [iconClass]=\"notificationIconClass\"\n [disabled]=\"disabled\">\n </seam-icon>\n </div>\n <div class=\"flex-grow-1 text-left pl-2\" style=\"margin: auto 0;\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"secondaryIcon\">\n <ng-template [ngTemplateOutlet]=\"secondaryIcon.template\"></ng-template>\n </div>\n</div>\n",
79
80
  inputs: ['disabled'],
80
81
  exportAs: 'seamWidgetTile',
81
82
  encapsulation: ViewEncapsulation.None,
@@ -98,6 +99,7 @@ WidgetTileComponent.propDecorators = {
98
99
  icon: [{ type: Input }],
99
100
  grayscaleOnDisable: [{ type: Input }],
100
101
  iconClass: [{ type: Input }],
102
+ iconType: [{ type: Input }],
101
103
  notificationIcon: [{ type: Input }],
102
104
  notificationIconClass: [{ type: Input }],
103
105
  secondaryIcon: [{ type: ContentChild, args: [WidgetTileSecondaryIconDirective, { static: true },] }]
@@ -105,4 +107,4 @@ WidgetTileComponent.propDecorators = {
105
107
  __decorate([
106
108
  InputBoolean()
107
109
  ], WidgetTileComponent.prototype, "grayscaleOnDisable", void 0);
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3dpZGdldC93aWRnZXQtY29udGVudC1jb21wb25lbnRzL3dpZGdldC10aWxlL3dpZGdldC10aWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFJeEksT0FBTyxFQUtMLFlBQVksRUFDWixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0seUJBQXlCLENBQUE7QUFFaEMsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFFekYsTUFFTSxxQkFBcUI7SUFDekIsWUFDUyxXQUF1QixFQUN2QixhQUEyQixFQUMzQixTQUFvQjtRQUZwQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRTNCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixLQUFLO1FBQ0gsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQTtJQUN2QyxD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QUVnRSxTQUFTOzs7d0JBNEQzRixXQUFXLFNBQUMsV0FBVztzQkFLdkIsV0FBVyxTQUFDLFdBQVc7MkJBR3ZCLFdBQVcsU0FBQyxnQkFBZ0I7NEJBRzVCLFdBQVcsU0FBQyxvQkFBb0I7NEJBR2hDLFdBQVcsU0FBQyxlQUFlOzRCQUczQixXQUFXLFNBQUMsZUFBZTttQkFHM0IsS0FBSzttQkFHTCxLQUFLO2lDQUVMLEtBQUs7d0JBRUwsS0FBSzsrQkFFTCxLQUFLO29DQUNMLEtBQUs7NEJBRUwsWUFBWSxTQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7QUFQdkM7SUFBZixZQUFZLEVBQUU7K0RBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IEljb25Qcm9wIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlJ1xuXG5pbXBvcnQge1xuICBDYW5EaXNhYmxlQ3RvcixcbiAgSGFzRWxlbWVudFJlZixcbiAgSGFzUmVuZGVyZXIyLFxuICBIYXNUYWJJbmRleEN0b3IsXG4gIElucHV0Qm9vbGVhbixcbiAgbWl4aW5EaXNhYmxlZCxcbiAgbWl4aW5UYWJJbmRleCxcbn0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5cbmltcG9ydCB7IFdpZGdldFRpbGVTZWNvbmRhcnlJY29uRGlyZWN0aXZlIH0gZnJvbSAnLi93aWRnZXQtdGlsZS1zZWNvbmRhcnktaWNvbi5kaXJlY3RpdmUnXG5cbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY29tcG9uZW50LWNsYXNzLXN1ZmZpeFxuY2xhc3MgVGhlU2VhbVdpZGdldFRpbGVCYXNlIGltcGxlbWVudHMgT25EZXN0cm95LCBIYXNSZW5kZXJlcjIsIEhhc0VsZW1lbnRSZWYge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwdWJsaWMgX3JlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7XG4gICAgdGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwgdHJ1ZSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKVxuICB9XG5cbiAgLyoqIEZvY3VzZXMgdGhlIGJ1dHRvbi4gKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5mb2N1cygpXG4gIH1cblxuICBfZ2V0SG9zdEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICB9XG59XG5cbmNvbnN0IF9UaGVTZWFtV2lkZ2V0VGlsZU1peGluQmFzZTogQ2FuRGlzYWJsZUN0b3IgJiBIYXNUYWJJbmRleEN0b3IgJlxuICAgIHR5cGVvZiBUaGVTZWFtV2lkZ2V0VGlsZUJhc2UgPSBtaXhpblRhYkluZGV4KG1peGluRGlzYWJsZWQoVGhlU2VhbVdpZGdldFRpbGVCYXNlKSlcblxuLy8gVE9ETzogU2hvdWxkIHRoaXMgY29tcG9uZW50IGJlIHNwbGl0IGludG8gc2VwYXJhdGUgY29tcG9uZW50cyBmb3IgYnV0dG9uIGFuZCBhbmNob3IuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLXdpZGdldC10aWxlLCBhW3NlYW0td2lkZ2V0LXRpbGVdLCBidXR0b25bc2VhbS13aWRnZXQtdGlsZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LXRpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93aWRnZXQtdGlsZS5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IFsgJ2Rpc2FibGVkJyBdLFxuICBleHBvcnRBczogJ3NlYW1XaWRnZXRUaWxlJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRUaWxlQ29tcG9uZW50IGV4dGVuZHMgX1RoZVNlYW1XaWRnZXRUaWxlTWl4aW5CYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZ3JheXNjYWxlT25EaXNhYmxlOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIF9jbGlja1VuTGlzdGVuOiAoKCkgPT4gdm9pZCB8IHVuZGVmaW5lZCB8IG51bGwpIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudHlwZScpXG4gIGdldCBfYXR0clR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGUgfHwgdGhpcy5faXNCdXR0b24oKSA/ICdidXR0b24nIDogdW5kZWZpbmVkXG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bicpXG4gIGdldCBfYnRuQ3NzKCkgeyByZXR1cm4gdGhpcy5faXNCdXR0b24oKSA/IHRydWUgOiBmYWxzZSB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gIGdldCBfZGlzYWJsZWRDc3MoKSB7IHJldHVybiB0aGlzLmRpc2FibGVkIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpXG4gIGdldCBfYXJpYURpc2FibGVkKCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZC50b1N0cmluZygpIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBnZXQgX2F0dHJEaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgbnVsbCB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgZ2V0IF9hdHRyVGFiSW5kZXgoKSB7IHJldHVybiB0aGlzLmRpc2FibGVkID8gLTEgOiAodGhpcy50YWJJbmRleCB8fCAwKSB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7IHJldHVybiB0aGlzLl90eXBlIH1cblxuICBASW5wdXQoKSBpY29uOiBzdHJpbmcgfCBJY29uUHJvcCB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZ3JheXNjYWxlT25EaXNhYmxlOiBib29sZWFuID0gdHJ1ZVxuXG4gIEBJbnB1dCgpIGljb25DbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIG5vdGlmaWNhdGlvbkljb246IHN0cmluZyB8IEljb25Qcm9wIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBub3RpZmljYXRpb25JY29uQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBAQ29udGVudENoaWxkKFdpZGdldFRpbGVTZWNvbmRhcnlJY29uRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWNvbmRhcnlJY29uPzogV2lkZ2V0VGlsZVNlY29uZGFyeUljb25EaXJlY3RpdmVcblxuICBjb25zdHJ1Y3RvcihcbiAgICBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudCB8IEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBfcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHsgc3VwZXIoX2VsZW1lbnRSZWYsIF9mb2N1c01vbml0b3IsIF9yZW5kZXJlcikgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLl9pc0FuY2hvcigpKSB7XG4gICAgICB0aGlzLl9jbGlja1VuTGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuX2dldEhvc3RFbGVtZW50KCksICdjbGljaycsIHRoaXMuX2hhbHREaXNhYmxlZEV2ZW50cylcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpXG4gICAgaWYgKHRoaXMuX2NsaWNrVW5MaXN0ZW4pIHtcbiAgICAgIHRoaXMuX2NsaWNrVW5MaXN0ZW4oKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBjb21wb25lbnQgaG9zdCBpcyBhIGJ1dHRvbi4gKi9cbiAgcHJpdmF0ZSBfaXNCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYnV0dG9uJ1xuICB9XG5cbiAgLyoqIERldGVybWluZXMgaWYgdGhlIGNvbXBvbmVudCBob3N0IGlzIGFuIGFuY2hvci4gKi9cbiAgcHJpdmF0ZSBfaXNBbmNob3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYSdcbiAgfVxuXG4gIF9oYWx0RGlzYWJsZWRFdmVudHMgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgLy8gQSBkaXNhYmxlZCBidXR0b24gc2hvdWxkbid0IGFwcGx5IGFueSBhY3Rpb25zXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXRpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3dpZGdldC93aWRnZXQtY29udGVudC1jb21wb25lbnRzL3dpZGdldC10aWxlL3dpZGdldC10aWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFJeEksT0FBTyxFQUtMLFlBQVksRUFDWixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0seUJBQXlCLENBQUE7QUFHaEMsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFFekYsTUFFTSxxQkFBcUI7SUFDekIsWUFDUyxXQUF1QixFQUN2QixhQUEyQixFQUMzQixTQUFvQjtRQUZwQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRTNCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixLQUFLO1FBQ0gsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQTtJQUN2QyxD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Ozs7WUFyRGlDLFVBQVU7WUFGbkMsWUFBWTtZQUVnRSxTQUFTOzs7d0JBNkQzRixXQUFXLFNBQUMsV0FBVztzQkFLdkIsV0FBVyxTQUFDLFdBQVc7MkJBR3ZCLFdBQVcsU0FBQyxnQkFBZ0I7NEJBRzVCLFdBQVcsU0FBQyxvQkFBb0I7NEJBR2hDLFdBQVcsU0FBQyxlQUFlOzRCQUczQixXQUFXLFNBQUMsZUFBZTttQkFHM0IsS0FBSzttQkFHTCxLQUFLO2lDQUVMLEtBQUs7d0JBRUwsS0FBSzt1QkFFTCxLQUFLOytCQUVMLEtBQUs7b0NBQ0wsS0FBSzs0QkFFTCxZQUFZLFNBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztBQVR2QztJQUFmLFlBQVksRUFBRTsrREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSdcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgSWNvblByb3AgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnXG5cbmltcG9ydCB7XG4gIENhbkRpc2FibGVDdG9yLFxuICBIYXNFbGVtZW50UmVmLFxuICBIYXNSZW5kZXJlcjIsXG4gIEhhc1RhYkluZGV4Q3RvcixcbiAgSW5wdXRCb29sZWFuLFxuICBtaXhpbkRpc2FibGVkLFxuICBtaXhpblRhYkluZGV4LFxufSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vY29yZSdcbmltcG9ydCB7IFRoZVNlYW1JY29uVHlwZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuXG5pbXBvcnQgeyBXaWRnZXRUaWxlU2Vjb25kYXJ5SWNvbkRpcmVjdGl2ZSB9IGZyb20gJy4vd2lkZ2V0LXRpbGUtc2Vjb25kYXJ5LWljb24uZGlyZWN0aXZlJ1xuXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1jbGFzcy1zdWZmaXhcbmNsYXNzIFRoZVNlYW1XaWRnZXRUaWxlQmFzZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgSGFzUmVuZGVyZXIyLCBIYXNFbGVtZW50UmVmIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgcHVibGljIF9yZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsIHRydWUpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZilcbiAgfVxuXG4gIC8qKiBGb2N1c2VzIHRoZSBidXR0b24uICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2dldEhvc3RFbGVtZW50KCkuZm9jdXMoKVxuICB9XG5cbiAgX2dldEhvc3RFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgfVxufVxuXG5jb25zdCBfVGhlU2VhbVdpZGdldFRpbGVNaXhpbkJhc2U6IENhbkRpc2FibGVDdG9yICYgSGFzVGFiSW5kZXhDdG9yICZcbiAgICB0eXBlb2YgVGhlU2VhbVdpZGdldFRpbGVCYXNlID0gbWl4aW5UYWJJbmRleChtaXhpbkRpc2FibGVkKFRoZVNlYW1XaWRnZXRUaWxlQmFzZSkpXG5cbi8vIFRPRE86IFNob3VsZCB0aGlzIGNvbXBvbmVudCBiZSBzcGxpdCBpbnRvIHNlcGFyYXRlIGNvbXBvbmVudHMgZm9yIGJ1dHRvbiBhbmQgYW5jaG9yLlxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS13aWRnZXQtdGlsZSwgYVtzZWFtLXdpZGdldC10aWxlXSwgYnV0dG9uW3NlYW0td2lkZ2V0LXRpbGVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC10aWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2lkZ2V0LXRpbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBbICdkaXNhYmxlZCcgXSxcbiAgZXhwb3J0QXM6ICdzZWFtV2lkZ2V0VGlsZScsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0VGlsZUNvbXBvbmVudCBleHRlbmRzIF9UaGVTZWFtV2lkZ2V0VGlsZU1peGluQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2dyYXlzY2FsZU9uRGlzYWJsZTogQm9vbGVhbklucHV0XG5cbiAgcHJpdmF0ZSBfY2xpY2tVbkxpc3RlbjogKCgpID0+IHZvaWQgfCB1bmRlZmluZWQgfCBudWxsKSB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBwcml2YXRlIF90eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnR5cGUnKVxuICBnZXQgX2F0dHJUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl90eXBlIHx8IHRoaXMuX2lzQnV0dG9uKCkgPyAnYnV0dG9uJyA6IHVuZGVmaW5lZFxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4nKVxuICBnZXQgX2J0bkNzcygpIHsgcmV0dXJuIHRoaXMuX2lzQnV0dG9uKCkgPyB0cnVlIDogZmFsc2UgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKVxuICBnZXQgX2Rpc2FibGVkQ3NzKCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZCB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGlzYWJsZWQnKVxuICBnZXQgX2FyaWFEaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuZGlzYWJsZWQudG9TdHJpbmcoKSB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgZ2V0IF9hdHRyRGlzYWJsZWQoKSB7IHJldHVybiB0aGlzLmRpc2FibGVkIHx8IG51bGwgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIGdldCBfYXR0clRhYkluZGV4KCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IC0xIDogKHRoaXMudGFiSW5kZXggfHwgMCkgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCB0eXBlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgeyByZXR1cm4gdGhpcy5fdHlwZSB9XG5cbiAgQElucHV0KCkgaWNvbjogc3RyaW5nIHwgSWNvblByb3AgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIGdyYXlzY2FsZU9uRGlzYWJsZTogYm9vbGVhbiA9IHRydWVcblxuICBASW5wdXQoKSBpY29uQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBpY29uVHlwZTogVGhlU2VhbUljb25UeXBlIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdzdHlsZWQtc3F1YXJlJ1xuXG4gIEBJbnB1dCgpIG5vdGlmaWNhdGlvbkljb246IHN0cmluZyB8IEljb25Qcm9wIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBub3RpZmljYXRpb25JY29uQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBAQ29udGVudENoaWxkKFdpZGdldFRpbGVTZWNvbmRhcnlJY29uRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWNvbmRhcnlJY29uPzogV2lkZ2V0VGlsZVNlY29uZGFyeUljb25EaXJlY3RpdmVcblxuICBjb25zdHJ1Y3RvcihcbiAgICBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudCB8IEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgIF9mb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBfcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHsgc3VwZXIoX2VsZW1lbnRSZWYsIF9mb2N1c01vbml0b3IsIF9yZW5kZXJlcikgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLl9pc0FuY2hvcigpKSB7XG4gICAgICB0aGlzLl9jbGlja1VuTGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuX2dldEhvc3RFbGVtZW50KCksICdjbGljaycsIHRoaXMuX2hhbHREaXNhYmxlZEV2ZW50cylcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpXG4gICAgaWYgKHRoaXMuX2NsaWNrVW5MaXN0ZW4pIHtcbiAgICAgIHRoaXMuX2NsaWNrVW5MaXN0ZW4oKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBjb21wb25lbnQgaG9zdCBpcyBhIGJ1dHRvbi4gKi9cbiAgcHJpdmF0ZSBfaXNCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYnV0dG9uJ1xuICB9XG5cbiAgLyoqIERldGVybWluZXMgaWYgdGhlIGNvbXBvbmVudCBob3N0IGlzIGFuIGFuY2hvci4gKi9cbiAgcHJpdmF0ZSBfaXNBbmNob3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYSdcbiAgfVxuXG4gIF9oYWx0RGlzYWJsZWRFdmVudHMgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgLy8gQSBkaXNhYmxlZCBidXR0b24gc2hvdWxkbid0IGFwcGx5IGFueSBhY3Rpb25zXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
2
+ import { Injectable, Component, ViewEncapsulation, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/router';
4
4
  import { NavigationEnd, Router, ActivatedRoute, RouterModule } from '@angular/router';
5
5
  import { combineLatest, of } from 'rxjs';
@@ -169,8 +169,9 @@ BreadcrumbsComponent.decorators = [
169
169
  { type: Component, args: [{
170
170
  selector: 'seam-breadcrumbs',
171
171
  template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n",
172
+ encapsulation: ViewEncapsulation.None,
172
173
  changeDetection: ChangeDetectionStrategy.OnPush,
173
- styles: [""]
174
+ styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:inherit}\n"]
174
175
  },] }
175
176
  ];
176
177
  BreadcrumbsComponent.ctorParameters = () => [
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-breadcrumbs.js","sources":["../../../projects/ui-common/breadcrumbs/breadcrumbs.service.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs/breadcrumbs.component.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs.module.ts","../../../projects/ui-common/breadcrumbs/theseam-ui-common-breadcrumbs.ts"],"sourcesContent":["import { Injectable, isDevMode } from '@angular/core'\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router'\nimport { combineLatest, Observable, of } from 'rxjs'\nimport { filter, map, startWith, switchMap } from 'rxjs/operators'\n\nimport {\n activatedRoutesWithDataProperty,\n hasProperty,\n IActivatedRouteWithData,\n isEmptyUrlRoute,\n leafChildRoute,\n notNullOrUndefined,\n routeSnapshotPathFull,\n willHaveDataProp\n} from '@theseam/ui-common/utils'\n\nimport { TheSeamBreadcrumb } from './breadcrumb'\n\ninterface BreadcrumbDataExtras {\n dataProps?: string[]\n}\n\ninterface ExtrasPropRef {\n prop: string\n value: Observable<string>\n}\n\ninterface BreadcrumbData {\n breadcrumb?: string\n breadcrumbExtras?: BreadcrumbDataExtras\n\n activatedRoute: ActivatedRoute\n extrasPropRefs: ExtrasPropRef[]\n}\n\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TheSeamBreadcrumbsService {\n\n // public readonly breadcrumbDataKey = 'breadcrumb'\n\n private readonly dataProps: (keyof Omit<BreadcrumbData, 'activatedRoute'>)[] = [\n 'breadcrumb',\n 'breadcrumbExtras',\n ]\n\n public readonly crumbs$: Observable<TheSeamBreadcrumb[]>\n\n constructor(\n private readonly _router: Router,\n private readonly _activatedRoute: ActivatedRoute\n ) {\n // this.crumbs$ = this._router.events.pipe(\n // filter(event => event instanceof NavigationEnd),\n // map(_ => this._activatedRoute),\n // startWith(this._activatedRoute),\n // activatedRoutesWithDataProperty(this.breadcrumbDataKey, true),\n // switchMap(rwdArr => combineLatest(rwdArr.map(rwd => this._parseBreadcrumbData(rwd))))\n // )\n\n this.crumbs$ = this._crumbsFromRoute()\n }\n\n private _crumbsFromRoute(): Observable<TheSeamBreadcrumb[]> {\n return this._router.events.pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n map(() => this._activatedRoute),\n startWith(this._activatedRoute),\n switchMap(activatedRoute => this._crumbsFromActivatedRoute(activatedRoute))\n )\n }\n\n private _crumbsFromActivatedRoute(activatedRoute: ActivatedRoute): Observable<TheSeamBreadcrumb[]> {\n return this._breadcrumbDatasFromRoot(activatedRoute).pipe(\n map(bcDatas => this._breadcrumbsFromData(bcDatas))\n )\n }\n\n private _breadcrumbDatasFromRoot(activatedRoute: ActivatedRoute): Observable<BreadcrumbData[]> {\n const bcDataObs = leafChildRoute(activatedRoute).pathFromRoot.map(r => this._breadcrumbData(r))\n return combineLatest(bcDataObs).pipe(\n map(v => v.filter(notNullOrUndefined)),\n switchMap(v => this._applyBreadcrumbExtras(v)),\n )\n }\n\n private _breadcrumbData(activatedRoute: ActivatedRoute): Observable<BreadcrumbData | null> {\n return activatedRoute.data.pipe(\n map(data => {\n const bcData: BreadcrumbData = {\n activatedRoute: activatedRoute,\n extrasPropRefs: []\n }\n\n let found = false\n for (const prop of this.dataProps) {\n if (prop === 'breadcrumb' && !willHaveDataProp(activatedRoute, prop)) {\n // Need to skip if the 'breadcrumb' data prop is not in the config,\n // because we will get duplicates if the data 'breadcrumb' prop is\n // inheritted from a parent route.\n continue\n }\n\n if (hasProperty(data, prop)) {\n bcData[prop] = data[prop]\n found = true\n }\n }\n\n if (!found) {\n return null\n }\n\n bcData.extrasPropRefs = this._getBreadcrumbExtrasDataProps(bcData)\n\n return bcData\n })\n )\n }\n\n private _applyBreadcrumbExtras(datas: BreadcrumbData[]): Observable<BreadcrumbData[]> {\n const newDatas: BreadcrumbData[] = []\n\n let pending: BreadcrumbData[] = []\n for (const data of datas) {\n if (!hasProperty(data, 'breadcrumb')) {\n pending.push(data)\n continue\n }\n\n newDatas.push(data)\n\n pending = []\n }\n\n if (newDatas.length === 0) {\n return of([])\n }\n\n if (pending.length > 0) {\n // add extras\n newDatas[newDatas.length - 1].extrasPropRefs = this._filterExtrasPropRefs([\n ...newDatas[newDatas.length - 1].extrasPropRefs,\n ...pending.map(p => p.extrasPropRefs).reduce((prev, curr) => [ ...prev, ...curr ], [])\n ])\n }\n\n return combineLatest(newDatas.map(data => {\n if (data.extrasPropRefs.length === 0) {\n return of(data)\n }\n\n return this._observeExtrasPropRefs(data.extrasPropRefs).pipe(\n map(extrasStr => {\n data.breadcrumb = data.breadcrumb + ' ' + extrasStr\n return data\n })\n )\n }))\n }\n\n private _observeExtrasPropRefs(propRefs: ExtrasPropRef[]): Observable<string> {\n return combineLatest(propRefs.map(pf => pf.value)).pipe(\n map(values => values.map(v => `(${v})`).join(' '))\n )\n }\n\n private _getBreadcrumbExtrasDataProps(data: BreadcrumbData): ExtrasPropRef[] {\n if (!hasProperty(data, 'breadcrumbExtras')) {\n return []\n }\n\n if (!hasProperty(data.breadcrumbExtras, 'dataProps')) {\n return []\n }\n\n const propRefs = data.breadcrumbExtras.dataProps.map(prop => {\n return { prop: prop, value: this._getDataProp(data.activatedRoute, prop) }\n })\n\n return this._filterExtrasPropRefs(propRefs)\n }\n\n private _filterExtrasPropRefs(propRefs: ExtrasPropRef[]): ExtrasPropRef[] {\n const seen: { [key: string]: boolean } = { }\n return propRefs.filter(propRef => {\n if (seen[propRef.prop]) {\n return false\n }\n seen[propRef.prop] = true\n return true\n })\n }\n\n private _getDataProp(activatedRoute: ActivatedRoute, prop: string): Observable<string> {\n if (activatedRoute.routeConfig !== null) {\n if (willHaveDataProp(activatedRoute, prop)) {\n return activatedRoute.data.pipe(map(d => d[prop]))\n }\n }\n\n let r = activatedRoute.parent\n while (r !== null) {\n if (willHaveDataProp(r, prop)) {\n return r.data.pipe(map(d => d[prop]))\n }\n\n r = r.parent\n }\n\n throw Error(`DataProp '${prop}' not found.`)\n }\n\n private _breadcrumbsFromData(datas: BreadcrumbData[]): TheSeamBreadcrumb[] {\n const breadcrumbs: TheSeamBreadcrumb[] = []\n\n for (const data of datas) {\n if (hasProperty(data, 'breadcrumb')) {\n const breadcrumb: TheSeamBreadcrumb = {\n value: data.breadcrumb,\n path: routeSnapshotPathFull(data.activatedRoute.snapshot),\n route: data.activatedRoute\n }\n breadcrumbs.push(breadcrumb)\n }\n }\n\n return breadcrumbs\n }\n\n // private _parseBreadcrumbData(routeWithData: IActivatedRouteWithData): Observable<TheSeamBreadcrumb> {\n // const crumbValue = routeWithData.data[this.breadcrumbDataKey]\n // const route = routeWithData.route\n // const path = routeSnapshotPathFull(route.snapshot)\n // let value = ''\n\n // if (typeof crumbValue === 'string') {\n // value = crumbValue\n // } else {\n // if (isDevMode()) {\n // console.warn(\n // '[TheSeamBreadcrumbsService] Only string breadcrumbs are supported currently. '\n // + 'Use a resolver if the value needs to be dynamically calculated.'\n // )\n // }\n // }\n\n // return of({ value, path, route })\n // }\n\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'\nimport { Observable } from 'rxjs'\n\nimport { TheSeamBreadcrumb } from '../breadcrumb'\nimport { TheSeamBreadcrumbsService } from '../breadcrumbs.service'\n\n@Component({\n selector: 'seam-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbsComponent implements OnInit {\n\n public crumbs$: Observable<TheSeamBreadcrumb[]>\n\n constructor(\n private _breadcrumbs: TheSeamBreadcrumbsService\n ) {\n this.crumbs$ = this._breadcrumbs.crumbs$\n }\n\n ngOnInit() { }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { BreadcrumbsComponent } from './breadcrumbs/breadcrumbs.component'\n\n\n@NgModule({\n declarations: [\n BreadcrumbsComponent\n ],\n imports: [\n CommonModule,\n RouterModule\n ],\n exports: [\n BreadcrumbsComponent\n ]\n})\nexport class TheSeamBreadcrumbsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-breadcrumbs.js","sources":["../../../projects/ui-common/breadcrumbs/breadcrumbs.service.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs/breadcrumbs.component.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs.module.ts","../../../projects/ui-common/breadcrumbs/theseam-ui-common-breadcrumbs.ts"],"sourcesContent":["import { Injectable, isDevMode } from '@angular/core'\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router'\nimport { combineLatest, Observable, of } from 'rxjs'\nimport { filter, map, startWith, switchMap } from 'rxjs/operators'\n\nimport {\n activatedRoutesWithDataProperty,\n hasProperty,\n IActivatedRouteWithData,\n isEmptyUrlRoute,\n leafChildRoute,\n notNullOrUndefined,\n routeSnapshotPathFull,\n willHaveDataProp\n} from '@theseam/ui-common/utils'\n\nimport { TheSeamBreadcrumb } from './breadcrumb'\n\ninterface BreadcrumbDataExtras {\n dataProps?: string[]\n}\n\ninterface ExtrasPropRef {\n prop: string\n value: Observable<string>\n}\n\ninterface BreadcrumbData {\n breadcrumb?: string\n breadcrumbExtras?: BreadcrumbDataExtras\n\n activatedRoute: ActivatedRoute\n extrasPropRefs: ExtrasPropRef[]\n}\n\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TheSeamBreadcrumbsService {\n\n // public readonly breadcrumbDataKey = 'breadcrumb'\n\n private readonly dataProps: (keyof Omit<BreadcrumbData, 'activatedRoute'>)[] = [\n 'breadcrumb',\n 'breadcrumbExtras',\n ]\n\n public readonly crumbs$: Observable<TheSeamBreadcrumb[]>\n\n constructor(\n private readonly _router: Router,\n private readonly _activatedRoute: ActivatedRoute\n ) {\n // this.crumbs$ = this._router.events.pipe(\n // filter(event => event instanceof NavigationEnd),\n // map(_ => this._activatedRoute),\n // startWith(this._activatedRoute),\n // activatedRoutesWithDataProperty(this.breadcrumbDataKey, true),\n // switchMap(rwdArr => combineLatest(rwdArr.map(rwd => this._parseBreadcrumbData(rwd))))\n // )\n\n this.crumbs$ = this._crumbsFromRoute()\n }\n\n private _crumbsFromRoute(): Observable<TheSeamBreadcrumb[]> {\n return this._router.events.pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n map(() => this._activatedRoute),\n startWith(this._activatedRoute),\n switchMap(activatedRoute => this._crumbsFromActivatedRoute(activatedRoute))\n )\n }\n\n private _crumbsFromActivatedRoute(activatedRoute: ActivatedRoute): Observable<TheSeamBreadcrumb[]> {\n return this._breadcrumbDatasFromRoot(activatedRoute).pipe(\n map(bcDatas => this._breadcrumbsFromData(bcDatas))\n )\n }\n\n private _breadcrumbDatasFromRoot(activatedRoute: ActivatedRoute): Observable<BreadcrumbData[]> {\n const bcDataObs = leafChildRoute(activatedRoute).pathFromRoot.map(r => this._breadcrumbData(r))\n return combineLatest(bcDataObs).pipe(\n map(v => v.filter(notNullOrUndefined)),\n switchMap(v => this._applyBreadcrumbExtras(v)),\n )\n }\n\n private _breadcrumbData(activatedRoute: ActivatedRoute): Observable<BreadcrumbData | null> {\n return activatedRoute.data.pipe(\n map(data => {\n const bcData: BreadcrumbData = {\n activatedRoute: activatedRoute,\n extrasPropRefs: []\n }\n\n let found = false\n for (const prop of this.dataProps) {\n if (prop === 'breadcrumb' && !willHaveDataProp(activatedRoute, prop)) {\n // Need to skip if the 'breadcrumb' data prop is not in the config,\n // because we will get duplicates if the data 'breadcrumb' prop is\n // inheritted from a parent route.\n continue\n }\n\n if (hasProperty(data, prop)) {\n bcData[prop] = data[prop]\n found = true\n }\n }\n\n if (!found) {\n return null\n }\n\n bcData.extrasPropRefs = this._getBreadcrumbExtrasDataProps(bcData)\n\n return bcData\n })\n )\n }\n\n private _applyBreadcrumbExtras(datas: BreadcrumbData[]): Observable<BreadcrumbData[]> {\n const newDatas: BreadcrumbData[] = []\n\n let pending: BreadcrumbData[] = []\n for (const data of datas) {\n if (!hasProperty(data, 'breadcrumb')) {\n pending.push(data)\n continue\n }\n\n newDatas.push(data)\n\n pending = []\n }\n\n if (newDatas.length === 0) {\n return of([])\n }\n\n if (pending.length > 0) {\n // add extras\n newDatas[newDatas.length - 1].extrasPropRefs = this._filterExtrasPropRefs([\n ...newDatas[newDatas.length - 1].extrasPropRefs,\n ...pending.map(p => p.extrasPropRefs).reduce((prev, curr) => [ ...prev, ...curr ], [])\n ])\n }\n\n return combineLatest(newDatas.map(data => {\n if (data.extrasPropRefs.length === 0) {\n return of(data)\n }\n\n return this._observeExtrasPropRefs(data.extrasPropRefs).pipe(\n map(extrasStr => {\n data.breadcrumb = data.breadcrumb + ' ' + extrasStr\n return data\n })\n )\n }))\n }\n\n private _observeExtrasPropRefs(propRefs: ExtrasPropRef[]): Observable<string> {\n return combineLatest(propRefs.map(pf => pf.value)).pipe(\n map(values => values.map(v => `(${v})`).join(' '))\n )\n }\n\n private _getBreadcrumbExtrasDataProps(data: BreadcrumbData): ExtrasPropRef[] {\n if (!hasProperty(data, 'breadcrumbExtras')) {\n return []\n }\n\n if (!hasProperty(data.breadcrumbExtras, 'dataProps')) {\n return []\n }\n\n const propRefs = data.breadcrumbExtras.dataProps.map(prop => {\n return { prop: prop, value: this._getDataProp(data.activatedRoute, prop) }\n })\n\n return this._filterExtrasPropRefs(propRefs)\n }\n\n private _filterExtrasPropRefs(propRefs: ExtrasPropRef[]): ExtrasPropRef[] {\n const seen: { [key: string]: boolean } = { }\n return propRefs.filter(propRef => {\n if (seen[propRef.prop]) {\n return false\n }\n seen[propRef.prop] = true\n return true\n })\n }\n\n private _getDataProp(activatedRoute: ActivatedRoute, prop: string): Observable<string> {\n if (activatedRoute.routeConfig !== null) {\n if (willHaveDataProp(activatedRoute, prop)) {\n return activatedRoute.data.pipe(map(d => d[prop]))\n }\n }\n\n let r = activatedRoute.parent\n while (r !== null) {\n if (willHaveDataProp(r, prop)) {\n return r.data.pipe(map(d => d[prop]))\n }\n\n r = r.parent\n }\n\n throw Error(`DataProp '${prop}' not found.`)\n }\n\n private _breadcrumbsFromData(datas: BreadcrumbData[]): TheSeamBreadcrumb[] {\n const breadcrumbs: TheSeamBreadcrumb[] = []\n\n for (const data of datas) {\n if (hasProperty(data, 'breadcrumb')) {\n const breadcrumb: TheSeamBreadcrumb = {\n value: data.breadcrumb,\n path: routeSnapshotPathFull(data.activatedRoute.snapshot),\n route: data.activatedRoute\n }\n breadcrumbs.push(breadcrumb)\n }\n }\n\n return breadcrumbs\n }\n\n // private _parseBreadcrumbData(routeWithData: IActivatedRouteWithData): Observable<TheSeamBreadcrumb> {\n // const crumbValue = routeWithData.data[this.breadcrumbDataKey]\n // const route = routeWithData.route\n // const path = routeSnapshotPathFull(route.snapshot)\n // let value = ''\n\n // if (typeof crumbValue === 'string') {\n // value = crumbValue\n // } else {\n // if (isDevMode()) {\n // console.warn(\n // '[TheSeamBreadcrumbsService] Only string breadcrumbs are supported currently. '\n // + 'Use a resolver if the value needs to be dynamically calculated.'\n // )\n // }\n // }\n\n // return of({ value, path, route })\n // }\n\n}\n","import { ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation } from '@angular/core'\nimport { Observable } from 'rxjs'\n\nimport { TheSeamBreadcrumb } from '../breadcrumb'\nimport { TheSeamBreadcrumbsService } from '../breadcrumbs.service'\n\n@Component({\n selector: 'seam-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbsComponent implements OnInit {\n\n public crumbs$: Observable<TheSeamBreadcrumb[]>\n\n constructor(\n private _breadcrumbs: TheSeamBreadcrumbsService\n ) {\n this.crumbs$ = this._breadcrumbs.crumbs$\n }\n\n ngOnInit() { }\n\n}\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { BreadcrumbsComponent } from './breadcrumbs/breadcrumbs.component'\n\n\n@NgModule({\n declarations: [\n BreadcrumbsComponent\n ],\n imports: [\n CommonModule,\n RouterModule\n ],\n exports: [\n BreadcrumbsComponent\n ]\n})\nexport class TheSeamBreadcrumbsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -670,6 +670,7 @@ class JexlEvaluator {
670
670
  this.type = 'jexl';
671
671
  this._jexl = new jexl.Jexl();
672
672
  this._jexl.addTransform('date', (val, row) => new DatePipe('en-US').transform(val, 'yyyy-MM-dd h:mm aaa'));
673
+ this._jexl.addTransform('length', (val) => val.length);
673
674
  }
674
675
  eval(value, context) {
675
676
  return this._jexl.eval(value.expr, context);