@esri/solutions-components 0.6.13 → 0.6.14

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 (109) hide show
  1. package/dist/assets/t9n/layer-table/resources.json +1 -1
  2. package/dist/assets/t9n/layer-table/resources_en.json +1 -1
  3. package/dist/assets/t9n/map-layer-picker/resources.json +4 -0
  4. package/dist/assets/t9n/map-layer-picker/resources_en.json +4 -0
  5. package/dist/cjs/basemap-gallery_6.cjs.entry.js +20 -5
  6. package/dist/cjs/buffer-tools_4.cjs.entry.js +1 -1
  7. package/dist/cjs/calcite-chip_3.cjs.entry.js +803 -0
  8. package/dist/cjs/calcite-combobox_6.cjs.entry.js +76 -28
  9. package/dist/cjs/card-manager_3.cjs.entry.js +112 -54
  10. package/dist/cjs/crowdsource-manager.cjs.entry.js +18 -5
  11. package/dist/cjs/{downloadUtils-fb4744e0.js → downloadUtils-34a515ad.js} +2 -2
  12. package/dist/cjs/edit-card_2.cjs.entry.js +5 -0
  13. package/dist/cjs/{index.es-372e33de.js → index.es-0ba11065.js} +2 -2
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/cjs/map-select-tools_3.cjs.entry.js +3 -3
  16. package/dist/cjs/{mapViewUtils-a4dd36ec.js → mapViewUtils-a2884698.js} +39 -55
  17. package/dist/cjs/public-notification.cjs.entry.js +3 -3
  18. package/dist/cjs/{publicNotificationStore-b69862af.js → publicNotificationStore-610bd880.js} +0 -4
  19. package/dist/cjs/solutions-components.cjs.js +1 -1
  20. package/dist/collection/components/basemap-gallery/basemap-gallery.js +23 -1
  21. package/dist/collection/components/card-manager/card-manager.js +2 -2
  22. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +171 -5
  23. package/dist/collection/components/edit-card/edit-card.js +19 -0
  24. package/dist/collection/components/layer-table/layer-table.js +127 -47
  25. package/dist/collection/components/map-card/map-card.js +115 -5
  26. package/dist/collection/components/map-layer-picker/map-layer-picker.css +4 -0
  27. package/dist/collection/components/map-layer-picker/map-layer-picker.js +107 -27
  28. package/dist/collection/components/map-picker/map-picker.css +5 -1
  29. package/dist/collection/components/map-picker/map-picker.js +3 -3
  30. package/dist/collection/components/map-tools/map-tools.js +104 -1
  31. package/dist/collection/utils/interfaces.ts +12 -1
  32. package/dist/collection/utils/mapViewUtils.js +38 -52
  33. package/dist/collection/utils/mapViewUtils.ts +41 -57
  34. package/dist/collection/utils/publicNotificationStore.js +0 -4
  35. package/dist/collection/utils/publicNotificationStore.ts +0 -4
  36. package/dist/components/basemap-gallery2.js +2 -0
  37. package/dist/components/card-manager2.js +2 -2
  38. package/dist/components/crowdsource-manager.js +27 -6
  39. package/dist/components/edit-card2.js +5 -0
  40. package/dist/components/layer-table2.js +136 -78
  41. package/dist/components/map-card2.js +17 -5
  42. package/dist/components/map-layer-picker2.js +114 -52
  43. package/dist/components/map-picker2.js +4 -4
  44. package/dist/components/map-select-tools2.js +55 -43
  45. package/dist/components/map-tools2.js +20 -1
  46. package/dist/components/mapViewUtils.js +39 -53
  47. package/dist/components/public-notification.js +1 -1
  48. package/dist/components/publicNotificationStore.js +0 -4
  49. package/dist/components/refine-selection2.js +61 -49
  50. package/dist/esm/basemap-gallery_6.entry.js +20 -5
  51. package/dist/esm/buffer-tools_4.entry.js +1 -1
  52. package/dist/esm/calcite-chip_3.entry.js +797 -0
  53. package/dist/esm/calcite-combobox_6.entry.js +76 -28
  54. package/dist/esm/card-manager_3.entry.js +112 -54
  55. package/dist/esm/crowdsource-manager.entry.js +18 -5
  56. package/dist/esm/{downloadUtils-67c7a6c8.js → downloadUtils-ac67a786.js} +2 -2
  57. package/dist/esm/edit-card_2.entry.js +5 -0
  58. package/dist/esm/{index.es-59a67d3d.js → index.es-f553598f.js} +2 -2
  59. package/dist/esm/loader.js +1 -1
  60. package/dist/esm/map-select-tools_3.entry.js +3 -3
  61. package/dist/esm/{mapViewUtils-00a04d52.js → mapViewUtils-8141d8c1.js} +39 -53
  62. package/dist/esm/public-notification.entry.js +3 -3
  63. package/dist/esm/{publicNotificationStore-90a6a274.js → publicNotificationStore-dcf39a55.js} +0 -4
  64. package/dist/esm/solutions-components.js +1 -1
  65. package/dist/solutions-components/p-08b52ed8.entry.js +6 -0
  66. package/dist/solutions-components/p-16362eb4.js +36 -0
  67. package/dist/solutions-components/{p-3691a072.js → p-1ab414e0.js} +2 -2
  68. package/dist/solutions-components/{p-73ab9d9a.entry.js → p-3d7aa1b2.entry.js} +1 -1
  69. package/dist/solutions-components/{p-9a8c51bf.entry.js → p-57cf6784.entry.js} +1 -1
  70. package/dist/solutions-components/p-64b22d57.entry.js +6 -0
  71. package/dist/solutions-components/p-654dd5df.entry.js +6 -0
  72. package/dist/solutions-components/{p-f9166fcb.js → p-a26711e8.js} +1 -1
  73. package/dist/solutions-components/p-b1c8c6d7.entry.js +6 -0
  74. package/dist/solutions-components/{p-b892e595.entry.js → p-b9d29f30.entry.js} +1 -1
  75. package/dist/solutions-components/{p-1b41181b.js → p-c8d0ce92.js} +2 -2
  76. package/dist/solutions-components/{p-0219a1a9.entry.js → p-e76949eb.entry.js} +6 -6
  77. package/dist/solutions-components/p-ee7e2f00.entry.js +34 -0
  78. package/dist/solutions-components/solutions-components.esm.js +1 -1
  79. package/dist/solutions-components/utils/interfaces.ts +12 -1
  80. package/dist/solutions-components/utils/mapViewUtils.ts +41 -57
  81. package/dist/solutions-components/utils/publicNotificationStore.ts +0 -4
  82. package/dist/types/components/basemap-gallery/basemap-gallery.d.ts +5 -0
  83. package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +37 -1
  84. package/dist/types/components/edit-card/edit-card.d.ts +8 -0
  85. package/dist/types/components/layer-table/layer-table.d.ts +40 -0
  86. package/dist/types/components/map-card/map-card.d.ts +25 -1
  87. package/dist/types/components/map-layer-picker/map-layer-picker.d.ts +50 -3
  88. package/dist/types/components/map-picker/map-picker.d.ts +2 -2
  89. package/dist/types/components/map-tools/map-tools.d.ts +21 -1
  90. package/dist/types/components.d.ts +182 -2
  91. package/dist/types/preact.d.ts +6 -3
  92. package/dist/types/utils/interfaces.d.ts +10 -1
  93. package/dist/types/utils/mapViewUtils.d.ts +8 -24
  94. package/dist/types/utils/publicNotificationStore.d.ts +0 -2
  95. package/package.json +1 -1
  96. package/dist/cjs/calcite-chip.cjs.entry.js +0 -259
  97. package/dist/cjs/calcite-notice.cjs.entry.js +0 -139
  98. package/dist/cjs/calcite-tooltip.cjs.entry.js +0 -439
  99. package/dist/esm/calcite-chip.entry.js +0 -255
  100. package/dist/esm/calcite-notice.entry.js +0 -135
  101. package/dist/esm/calcite-tooltip.entry.js +0 -435
  102. package/dist/solutions-components/p-2cff8331.entry.js +0 -6
  103. package/dist/solutions-components/p-3a6c8fc3.entry.js +0 -6
  104. package/dist/solutions-components/p-3b1fc7a2.entry.js +0 -6
  105. package/dist/solutions-components/p-767002cd.js +0 -36
  106. package/dist/solutions-components/p-a776b7e6.entry.js +0 -6
  107. package/dist/solutions-components/p-be36d5ed.entry.js +0 -22
  108. package/dist/solutions-components/p-c644edf5.entry.js +0 -11
  109. package/dist/solutions-components/p-cfd88a2f.entry.js +0 -11
@@ -24,9 +24,11 @@ const utils = require('./utils-852fe124.js');
24
24
  const debounce = require('./debounce-30afab47.js');
25
25
  const conditionalSlot = require('./conditionalSlot-f10611d3.js');
26
26
  const key = require('./key-8de93212.js');
27
- const mapViewUtils = require('./mapViewUtils-a4dd36ec.js');
28
- const publicNotificationStore = require('./publicNotificationStore-b69862af.js');
27
+ const locale$1 = require('./locale-67f5f6b6.js');
28
+ const mapViewUtils = require('./mapViewUtils-a2884698.js');
29
+ const publicNotificationStore = require('./publicNotificationStore-610bd880.js');
29
30
  require('./resources-993f6faf.js');
31
+ require('./_commonjsHelpers-384729db.js');
30
32
  require('./interfaces-000be6de.js');
31
33
  require('./index-feeb7b6a.js');
32
34
 
@@ -1679,23 +1681,27 @@ const DropdownItem = class {
1679
1681
  };
1680
1682
  DropdownItem.style = dropdownItemCss;
1681
1683
 
1682
- const mapLayerPickerCss = ":host{display:block}.map-layer-picker-container{width:100%}.map-layer-picker{position:relative;width:100%;display:inline-block}.padding-bottom-1{padding-bottom:1rem}.layer-picker-dropdown{height:100%;width:100%}.max-width-350{max-width:350px}";
1684
+ const mapLayerPickerCss = ":host{display:block}.map-layer-picker-container{width:100%}.map-layer-picker{position:relative;width:100%;display:inline-block}.padding-bottom-1{padding-bottom:1rem}.layer-picker-dropdown{height:100%;width:100%}.max-width-350{max-width:350px}.height-100{height:100%}";
1683
1685
 
1684
1686
  const MapLayerPicker = class {
1685
1687
  constructor(hostRef) {
1686
1688
  index.registerInstance(this, hostRef);
1689
+ this.noLayersFound = index.createEvent(this, "noLayersFound", 7);
1687
1690
  this.layerSelectionChange = index.createEvent(this, "layerSelectionChange", 7);
1688
1691
  this.appearance = "transparent";
1689
1692
  this.enabledLayerIds = [];
1690
1693
  this.enabledTableIds = [];
1691
1694
  this.mapView = undefined;
1695
+ this.onlyShowUpdatableLayers = undefined;
1692
1696
  this.placeholderIcon = "";
1693
1697
  this.selectedIds = [];
1694
1698
  this.scale = "m";
1695
1699
  this.showTables = true;
1696
1700
  this.type = "select";
1701
+ this._hasValidLayers = true;
1697
1702
  this.ids = [];
1698
1703
  this.selectedName = "";
1704
+ this._translations = undefined;
1699
1705
  }
1700
1706
  //--------------------------------------------------------------------------
1701
1707
  //
@@ -1708,10 +1714,13 @@ const MapLayerPicker = class {
1708
1714
  */
1709
1715
  async mapViewWatchHandler() {
1710
1716
  await this._setLayers();
1711
- const hasLayers = Object.keys(publicNotificationStore.state.layerNameHash).length > 0;
1712
- const hasTables = Object.keys(publicNotificationStore.state.tableNameHash).length > 0 && this.showTables;
1713
- if (hasLayers || hasTables) {
1714
- this._setSelectedLayer(this.ids[0], hasLayers ? "layer" : "table");
1717
+ if (this.ids.length > 0) {
1718
+ this._hasValidLayers = true;
1719
+ this._setSelectedLayer(this.ids[0]);
1720
+ }
1721
+ else {
1722
+ this._hasValidLayers = false;
1723
+ this.noLayersFound.emit();
1715
1724
  }
1716
1725
  }
1717
1726
  //--------------------------------------------------------------------------
@@ -1723,6 +1732,7 @@ const MapLayerPicker = class {
1723
1732
  * StencilJS: Called once just after the component is first connected to the DOM.
1724
1733
  */
1725
1734
  async componentWillLoad() {
1735
+ await this._getTranslations();
1726
1736
  await this._setLayers();
1727
1737
  if (this.ids.length > 0 || this.selectedIds.length === 1) {
1728
1738
  this.layerSelectionChange.emit(this.selectedIds.length === 1 ? [this.selectedIds[0]] : [this.ids[0]]);
@@ -1732,7 +1742,7 @@ const MapLayerPicker = class {
1732
1742
  * Renders the component.
1733
1743
  */
1734
1744
  render() {
1735
- return (index.h(index.Host, null, index.h("div", { class: "map-layer-picker-container" }, index.h("div", { class: "map-layer-picker" }, this.type === "combobox" ? this._getCombobox() :
1745
+ return (index.h(index.Host, null, index.h("div", { class: "map-layer-picker-container" }, index.h("div", { class: "map-layer-picker" }, !this._hasValidLayers ? this._getInvalidPlaceholder() : this.type === "combobox" ? this._getCombobox() :
1736
1746
  this.type === "select" ? this._getSelect() : this._getDropdown()))));
1737
1747
  }
1738
1748
  /**
@@ -1745,9 +1755,9 @@ const MapLayerPicker = class {
1745
1755
  this._layerElement.value = id;
1746
1756
  }
1747
1757
  else if (this.type === "dropdown") {
1748
- this.selectedName = Object.keys(publicNotificationStore.state.layerNameHash).indexOf(id) > -1 ?
1749
- publicNotificationStore.state.layerNameHash[id] : Object.keys(publicNotificationStore.state.tableNameHash).indexOf(id) > -1 ?
1750
- publicNotificationStore.state.tableNameHash[id] : "";
1758
+ this.selectedName = Object.keys(this._layerNameHash).indexOf(id) > -1 ?
1759
+ this._layerNameHash[id].name : Object.keys(this._tableNameHash).indexOf(id) > -1 ?
1760
+ this._tableNameHash[id].name : "";
1751
1761
  }
1752
1762
  }
1753
1763
  }
@@ -1756,6 +1766,14 @@ const MapLayerPicker = class {
1756
1766
  // Functions (protected)
1757
1767
  //
1758
1768
  //--------------------------------------------------------------------------
1769
+ /**
1770
+ * Create a notice to inform the user that no layers were found
1771
+ *
1772
+ * @returns Calcite Notice component with the message
1773
+ */
1774
+ _getInvalidPlaceholder() {
1775
+ return (index.h("div", null, index.h("calcite-notice", { class: "height-100", icon: "exclamation-mark-triangle", id: "no-valid-layers", kind: "danger", open: true }, index.h("div", { slot: "message" }, this._translations.noLayersFound)), index.h("calcite-tooltip", { label: this._translations.enableEditUpdate, placement: "bottom", "reference-element": "no-valid-layers" }, index.h("span", null, this._translations.enableEditUpdate))));
1776
+ }
1759
1777
  /**
1760
1778
  * Create a list of layers from the map
1761
1779
  *
@@ -1806,16 +1824,21 @@ const MapLayerPicker = class {
1806
1824
  * @returns A dom node with the name of the layer or table
1807
1825
  */
1808
1826
  _getItem(id, itemType) {
1809
- const name = itemType === "layer" ? publicNotificationStore.state.layerNameHash[id] : publicNotificationStore.state.tableNameHash[id];
1810
- return this.type === "combobox" ? (index.h("calcite-combobox-item", { textLabel: name, value: id })) :
1811
- this.type === "select" ? (index.h("calcite-option", { label: name, value: id })) :
1812
- (index.h("calcite-dropdown-item", { onClick: () => void this._setSelectedLayer(id, itemType) }, name));
1827
+ const item = itemType === "layer" ? this._layerNameHash[id] : this._tableNameHash[id];
1828
+ const disabled = this.onlyShowUpdatableLayers ? !item.supportsUpdate : false;
1829
+ const name = item.name;
1830
+ return this.type === "combobox" ? (index.h("calcite-combobox-item", { disabled: disabled, textLabel: name, value: id })) :
1831
+ this.type === "select" ? (index.h("calcite-option", { disabled: disabled, label: name, value: id })) :
1832
+ (index.h("calcite-dropdown-item", { disabled: disabled, onClick: disabled ? undefined : () => void this._setSelectedLayer(id) }, name));
1813
1833
  }
1814
1834
  /**
1815
1835
  * Store the layer name based on the user selection
1816
1836
  */
1817
- _setSelectedLayer(id, type) {
1818
- this.selectedName = type === "layer" ? publicNotificationStore.state.layerNameHash[id] : publicNotificationStore.state.tableNameHash[id];
1837
+ _setSelectedLayer(id) {
1838
+ const item = Object.keys(this._layerNameHash).indexOf(id) > -1 ?
1839
+ this._layerNameHash[id] : Object.keys(this._tableNameHash).indexOf(id) > -1 ?
1840
+ this._tableNameHash[id] : undefined;
1841
+ this.selectedName = item === null || item === void 0 ? void 0 : item.name;
1819
1842
  this.selectedIds = [id];
1820
1843
  this.layerSelectionChange.emit(this.selectedIds);
1821
1844
  }
@@ -1826,25 +1849,38 @@ const MapLayerPicker = class {
1826
1849
  */
1827
1850
  async _setLayers() {
1828
1851
  if (this.mapView) {
1829
- const mapLayerIds = await mapViewUtils.getMapLayerIds(this.mapView);
1830
- const mapTableIds = this.showTables ? await mapViewUtils.getMapTableIds(this.mapView) : [];
1852
+ await this._initLayerTableHash();
1853
+ const mapLayerIds = this.onlyShowUpdatableLayers ?
1854
+ this._getEditableIds(this._layerNameHash) : Object.keys(this._layerNameHash);
1855
+ const mapTableIds = this.showTables ? this.onlyShowUpdatableLayers ?
1856
+ this._getEditableIds(this._tableNameHash) : Object.keys(this._tableNameHash) : [];
1831
1857
  this.ids = [
1832
1858
  ...mapLayerIds.filter(n => { var _a; return ((_a = this.enabledLayerIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledLayerIds.indexOf(n) > -1 : true; }),
1833
1859
  ...mapTableIds.filter(n => { var _a; return ((_a = this.enabledTableIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledTableIds.indexOf(n) > -1 : true; }),
1834
1860
  ];
1835
- await this._initStateHash();
1836
1861
  }
1837
1862
  }
1863
+ /**
1864
+ * Fetch the ids of all layers that support edits with the update capability
1865
+ *
1866
+ * @returns array of layer ids
1867
+ */
1868
+ _getEditableIds(hash) {
1869
+ return Object.keys(hash).reduce((prev, cur) => {
1870
+ if (hash[cur].supportsUpdate) {
1871
+ prev.push(cur);
1872
+ }
1873
+ return prev;
1874
+ }, []);
1875
+ }
1838
1876
  /**
1839
1877
  * Create a layer id:title hash for layer name display
1840
1878
  *
1841
1879
  * @returns Promise when the operation has completed
1842
1880
  */
1843
- async _initStateHash() {
1844
- if (this.mapView) {
1845
- publicNotificationStore.state.layerNameHash = await mapViewUtils.getMapLayerHash(this.mapView);
1846
- publicNotificationStore.state.tableNameHash = this.showTables ? await mapViewUtils.getMapTableHash(this.mapView) : {};
1847
- }
1881
+ async _initLayerTableHash() {
1882
+ this._layerNameHash = await mapViewUtils.getMapLayerHash(this.mapView, this.onlyShowUpdatableLayers);
1883
+ this._tableNameHash = this.showTables ? await mapViewUtils.getMapTableHash(this.mapView, this.onlyShowUpdatableLayers) : {};
1848
1884
  }
1849
1885
  /**
1850
1886
  * Evaluate if the id exists in the current hash and verify if it should be excluded
@@ -1852,9 +1888,10 @@ const MapLayerPicker = class {
1852
1888
  * @returns boolean when true the layer will be used in the current layer picker type
1853
1889
  */
1854
1890
  _validLayer(id) {
1855
- const name = publicNotificationStore.state.layerNameHash[id];
1891
+ var _a;
1892
+ const name = (_a = this._layerNameHash[id]) === null || _a === void 0 ? void 0 : _a.name;
1856
1893
  return name && publicNotificationStore.state.managedLayers.indexOf(name) < 0 && (this.enabledLayerIds.length > 0 ?
1857
- this.enabledLayerIds.indexOf(id) > -1 : name);
1894
+ this.enabledLayerIds.indexOf(id) > -1 : true);
1858
1895
  }
1859
1896
  /**
1860
1897
  * Evaluate if the id exists in the current hash and verify if it should be excluded
@@ -1862,7 +1899,8 @@ const MapLayerPicker = class {
1862
1899
  * @returns boolean when true the table will be used in the current layer picker type
1863
1900
  */
1864
1901
  _validTable(id) {
1865
- const name = publicNotificationStore.state.tableNameHash[id];
1902
+ var _a;
1903
+ const name = (_a = this._tableNameHash[id]) === null || _a === void 0 ? void 0 : _a.name;
1866
1904
  const validName = name && this.showTables;
1867
1905
  return validName ? publicNotificationStore.state.managedTables.indexOf(name) < 0 &&
1868
1906
  (this.enabledTableIds.length > 0 ? this.enabledTableIds.indexOf(id) > -1 : true) : validName;
@@ -1879,6 +1917,16 @@ const MapLayerPicker = class {
1879
1917
  this.layerSelectionChange.emit(this.selectedIds);
1880
1918
  }
1881
1919
  }
1920
+ /**
1921
+ * Fetches the component's translations
1922
+ *
1923
+ * @returns Promise when complete
1924
+ * @protected
1925
+ */
1926
+ async _getTranslations() {
1927
+ const messages = await locale$1.getLocaleComponentStrings(this.el);
1928
+ this._translations = messages[0];
1929
+ }
1882
1930
  get el() { return index.getElement(this); }
1883
1931
  static get watchers() { return {
1884
1932
  "mapView": ["mapViewWatchHandler"]
@@ -9,9 +9,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
10
  const index = require('./index-ee37804b.js');
11
11
  const locale = require('./locale-67f5f6b6.js');
12
- const mapViewUtils = require('./mapViewUtils-a4dd36ec.js');
12
+ const mapViewUtils = require('./mapViewUtils-a2884698.js');
13
13
  const loadModules = require('./loadModules-f6df8d6a.js');
14
- const downloadUtils = require('./downloadUtils-fb4744e0.js');
14
+ const downloadUtils = require('./downloadUtils-34a515ad.js');
15
15
  require('./_commonjsHelpers-384729db.js');
16
16
  require('./interfaces-000be6de.js');
17
17
  require('./clean-url-d5326abb.js');
@@ -59,7 +59,7 @@ const CardManager = class {
59
59
  */
60
60
  async layerSelectionChange(evt) {
61
61
  const id = evt.detail[0];
62
- this.layer = await mapViewUtils.getLayer(this.mapView, id);
62
+ this.layer = await mapViewUtils.getLayerOrTable(this.mapView, id);
63
63
  }
64
64
  //--------------------------------------------------------------------------
65
65
  //
@@ -131,6 +131,7 @@ const LayerTable = class {
131
131
  this.enableInlineEdit = undefined;
132
132
  this.mapInfo = undefined;
133
133
  this.mapView = undefined;
134
+ this.onlyShowUpdatableLayers = undefined;
134
135
  this.showNewestFirst = undefined;
135
136
  this.zoomAndScrollToSelected = undefined;
136
137
  this._alertOpen = false;
@@ -151,13 +152,12 @@ const LayerTable = class {
151
152
  * watch for changes in map view and get the first layer
152
153
  */
153
154
  async mapViewWatchHandler() {
154
- this._fetchingData = true;
155
- const mapLayerIds = await mapViewUtils.getMapLayerIds(this.mapView);
156
- this._layer = await mapViewUtils.getLayer(this.mapView, mapLayerIds[0]);
157
- this.reactiveUtils.on(() => this.mapView, "click", (event) => {
155
+ if (this._mapClickHandle) {
156
+ this._mapClickHandle.remove();
157
+ }
158
+ this._mapClickHandle = this.reactiveUtils.on(() => this.mapView, "click", (event) => {
158
159
  void this._mapClicked(event);
159
160
  });
160
- this._fetchingData = false;
161
161
  }
162
162
  /**
163
163
  * watch for changes in layer view and verify if it has editing enabled
@@ -214,6 +214,22 @@ const LayerTable = class {
214
214
  }
215
215
  }
216
216
  }
217
+ /**
218
+ * Refresh the table when edits are completed
219
+ *
220
+ */
221
+ editsComplete() {
222
+ this._refresh();
223
+ }
224
+ /**
225
+ * Refresh the table when edits are completed
226
+ *
227
+ */
228
+ noLayersFound() {
229
+ this._layer = undefined;
230
+ this._allIds = [];
231
+ this._clearSelection();
232
+ }
217
233
  //--------------------------------------------------------------------------
218
234
  //
219
235
  // Functions (lifecycle)
@@ -232,9 +248,6 @@ const LayerTable = class {
232
248
  * Renders the component.
233
249
  */
234
250
  render() {
235
- if (!this._layer) {
236
- return null;
237
- }
238
251
  const tableNodeClass = this._fetchingData ? "display-none" : "";
239
252
  const loadingClass = this._fetchingData ? "" : "display-none";
240
253
  const total = this._allIds.length.toString();
@@ -272,9 +285,37 @@ const LayerTable = class {
272
285
  */
273
286
  _getTableControlRow(slot) {
274
287
  const featuresSelected = this._selectedIndexes.length > 0;
275
- return (index.h("div", { class: "display-flex table-border height-51", slot: slot }, index.h("calcite-action-bar", { expandDisabled: true, expanded: true, layout: "horizontal" }, index.h("div", { class: "border-end" }, index.h("map-layer-picker", { appearance: "transparent", mapView: this.mapView, onLayerSelectionChange: (evt) => this._layerSelectionChanged(evt), placeholderIcon: "layers", scale: "l", type: "dropdown" })), index.h("calcite-action", { appearance: "solid", disabled: !featuresSelected, icon: "magnifying-glass", id: "magnifying-glass", label: this._translations.zoom, onClick: () => this._zoom(), text: this._translations.zoom, textEnabled: true }), index.h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "magnifying-glass" }, index.h("span", null, this._translations.zoom)), index.h("calcite-action", { appearance: "solid", icon: "filter", id: "filter", onClick: () => this._filter(), text: this._translations.filters, "text-enabled": "true", textEnabled: true }), index.h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "filter" }, index.h("span", null, this._translations.filters)), index.h("calcite-action", { appearance: "solid", disabled: !featuresSelected, id: "trash", onClick: () => this._delete(), text: "" }, index.h("calcite-button", { appearance: "transparent", iconStart: "trash", kind: "danger" }, this._translations.delete)), index.h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "trash" }, index.h("span", null, this._translations.delete)), index.h("calcite-action", { appearance: "solid", disabled: !featuresSelected, icon: "erase", id: "erase", onClick: () => this._clearSelection(), text: this._translations.clearSelection, "text-enabled": "true", textEnabled: true }), index.h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "erase" }, index.h("span", null, this._translations.clearSelection))), index.h("calcite-dropdown", null, index.h("calcite-action", { appearance: "solid", label: "", slot: "trigger", text: "" }, index.h("calcite-button", { appearance: "transparent", iconEnd: "chevron-down", kind: "neutral" }, this._translations.more)), index.h("calcite-dropdown-group", { "selection-mode": "none" }, index.h("calcite-dropdown-item", { iconStart: "list-check-all", onClick: () => this._selectAll() }, this._translations.selectAll), index.h("calcite-dropdown-item", { iconStart: "selected-items-filter", onClick: () => this._toggleShowSelected() }, this._showOnlySelected ? this._translations.showAll :
288
+ return (index.h("div", { class: "display-flex table-border height-51", slot: slot }, index.h("calcite-action-bar", { expandDisabled: true, expanded: true, layout: "horizontal" }, index.h("div", { class: "border-end" }, index.h("map-layer-picker", { appearance: "transparent", mapView: this.mapView, onLayerSelectionChange: (evt) => this._layerSelectionChanged(evt), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, placeholderIcon: "layers", scale: "l", type: "dropdown" })), this._getAction("zoom-to-object", this._translations.zoom, () => this._zoom(), !featuresSelected), this._getAction("filter", this._translations.filters, () => this._filter(), false), this._deleteEnabled ? this._getDangerAction("trash", this._translations.delete, () => this._delete(), !featuresSelected) : undefined, this._getAction("erase", this._translations.clearSelection, () => this._clearSelection(), !featuresSelected)), index.h("calcite-dropdown", { disabled: this._layer === undefined }, index.h("calcite-action", { appearance: "solid", label: "", slot: "trigger", text: "" }, index.h("calcite-button", { appearance: "transparent", iconEnd: "chevron-down", kind: "neutral" }, this._translations.more)), index.h("calcite-dropdown-group", { "selection-mode": "none" }, index.h("calcite-dropdown-item", { iconStart: "list-check-all", onClick: () => this._selectAll() }, this._translations.selectAll), index.h("calcite-dropdown-item", { iconStart: "selected-items-filter", onClick: () => this._toggleShowSelected() }, this._showOnlySelected ? this._translations.showAll :
276
289
  this._translations.showSelected), index.h("calcite-dropdown-item", { iconStart: "compare", onClick: () => this._switchSelected() }, this._translations.switchSelected), index.h("calcite-dropdown-item", { iconStart: "refresh", onClick: () => this._refresh() }, this._translations.refresh), index.h("calcite-dropdown-item", { iconStart: "export", onClick: () => void this._exportToCSV() }, this._translations.exportCSV)))));
277
290
  }
291
+ /**
292
+ * Get an action and tooltip
293
+ *
294
+ * @param icon string the name of the icon to display, will also be used as the id
295
+ * @param label string the text to display and label the action
296
+ * @param func any the function to execute
297
+ * @param disabled boolean when true the user will not be able to interact with the action
298
+ *
299
+ * @returns VNode The node representing the DOM element that will contain the action
300
+ */
301
+ _getAction(icon, label, func, disabled) {
302
+ const _disabled = this._layer === undefined ? true : disabled;
303
+ return (index.h("div", { class: "display-flex" }, index.h("calcite-action", { appearance: "solid", disabled: _disabled, icon: icon, id: icon, label: label, onClick: func, text: label, textEnabled: true }), index.h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": icon }, index.h("span", null, label))));
304
+ }
305
+ /**
306
+ * Get an action with danger color icon and text
307
+ *
308
+ * @param icon string the name of the icon to display, will also be used as the id
309
+ * @param label string the text to display and label the action
310
+ * @param func any the function to execute
311
+ * @param disabled boolean when true the user will not be able to interact with the action
312
+ *
313
+ * @returns VNode The node representing the DOM element that will contain the action
314
+ */
315
+ _getDangerAction(icon, label, func, disabled) {
316
+ const _disabled = this._layer === undefined ? true : disabled;
317
+ return (index.h("div", { class: "display-flex" }, index.h("calcite-action", { appearance: "solid", disabled: _disabled, id: icon, onClick: func, text: "" }, index.h("calcite-button", { appearance: "transparent", iconStart: icon, kind: "danger" }, label)), index.h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": icon }, index.h("span", null, label))));
318
+ }
278
319
  /**
279
320
  * Initialize the FeatureTable
280
321
  *
@@ -284,7 +325,7 @@ const LayerTable = class {
284
325
  */
285
326
  async _getTable(node, columnTemplates) {
286
327
  if (this._layer) {
287
- await this._layer.when(async () => {
328
+ await this._layer.when(() => {
288
329
  this._table = new this.FeatureTable({
289
330
  autoRefreshEnabled: this.enableAutoRefresh,
290
331
  layer: this._layer,
@@ -301,25 +342,25 @@ const LayerTable = class {
301
342
  },
302
343
  container: node
303
344
  });
304
- this._checkEditEnabled();
305
- await this._table.when(async () => {
306
- this._table.highlightIds.on("change", () => {
307
- this._selectedIndexes = this._table.highlightIds.toArray();
308
- if (this._showOnlySelected) {
309
- if (this._selectedIndexes.length > 0) {
310
- this._table.filterBySelection();
311
- }
312
- else {
313
- this._toggleShowSelected();
314
- }
345
+ });
346
+ this._checkEditEnabled();
347
+ await this._table.when(() => {
348
+ this._table.highlightIds.on("change", () => {
349
+ this._selectedIndexes = this._table.highlightIds.toArray();
350
+ if (this._showOnlySelected) {
351
+ if (this._selectedIndexes.length > 0) {
352
+ this._table.filterBySelection();
353
+ }
354
+ else {
355
+ this._toggleShowSelected();
315
356
  }
316
- this.featureSelectionChange.emit(this._selectedIndexes);
317
- });
318
- this.reactiveUtils.watch(() => this._table.activeSortOrders, (sortOrders) => {
319
- var _a, _b, _c, _d;
320
- this._sortActive = (sortOrders.length > 0 && ((_a = sortOrders[0]) === null || _a === void 0 ? void 0 : _a.direction) === "asc" || ((_b = sortOrders[0]) === null || _b === void 0 ? void 0 : _b.direction) === "desc") ||
321
- ((_c = sortOrders[0]) === null || _c === void 0 ? void 0 : _c.direction) === null && ((_d = sortOrders[0]) === null || _d === void 0 ? void 0 : _d.fieldName) === this._layer.objectIdField;
322
- });
357
+ }
358
+ this.featureSelectionChange.emit(this._selectedIndexes);
359
+ });
360
+ this.reactiveUtils.watch(() => this._table.activeSortOrders, (sortOrders) => {
361
+ var _a, _b, _c, _d;
362
+ this._sortActive = this._layer ? (sortOrders.length > 0 && ((_a = sortOrders[0]) === null || _a === void 0 ? void 0 : _a.direction) === "asc" || ((_b = sortOrders[0]) === null || _b === void 0 ? void 0 : _b.direction) === "desc") ||
363
+ ((_c = sortOrders[0]) === null || _c === void 0 ? void 0 : _c.direction) === null && ((_d = sortOrders[0]) === null || _d === void 0 ? void 0 : _d.fieldName) === this._layer.objectIdField : false;
323
364
  });
324
365
  });
325
366
  }
@@ -330,20 +371,30 @@ const LayerTable = class {
330
371
  * @returns void
331
372
  */
332
373
  async _resetTable() {
333
- if (this._layer && this._table) {
374
+ if (this._table) {
334
375
  this._clearSelection();
335
376
  this._allIds = [];
336
377
  this.featureSelectionChange.emit(this._selectedIndexes);
337
- const columnTemplates = this._getColumnTemplates(this._layer.id);
338
- this._table.layer = this._layer;
339
- this._table.tableTemplate.columnTemplates = columnTemplates;
340
- this._checkEditEnabled();
341
- this._table.view = this.mapView;
342
- this._table.editingEnabled = this._editEnabled;
343
- this._table.clearSelectionFilter();
344
- this._showOnlySelected = false;
345
- this._sortActive = false;
346
- await this._sortTable();
378
+ if (this._layer) {
379
+ await this._layer.when(() => {
380
+ const columnTemplates = this._getColumnTemplates(this._layer.id);
381
+ this._table.layer = this._layer;
382
+ this._table.tableTemplate.columnTemplates = columnTemplates;
383
+ this._table.view = this.mapView;
384
+ this._checkEditEnabled();
385
+ this._table.editingEnabled = this._editEnabled && this.enableInlineEdit;
386
+ });
387
+ await this._table.when(() => {
388
+ this._table.clearSelectionFilter();
389
+ });
390
+ this._showOnlySelected = false;
391
+ this._sortActive = false;
392
+ await this._sortTable();
393
+ }
394
+ else {
395
+ this._table.view = this.mapView;
396
+ this._table.layer = this._layer;
397
+ }
347
398
  }
348
399
  }
349
400
  /**
@@ -364,11 +415,10 @@ const LayerTable = class {
364
415
  if (this._table && this._layer && !this._sortActive) {
365
416
  if (!this._tableSorting && this.showNewestFirst) {
366
417
  this._tableSorting = true;
367
- await this._table.when(async () => {
368
- await this._layer.when(async () => {
369
- this._table.sortColumn(this._layer.objectIdField, "desc");
370
- this._tableSorting = false;
371
- });
418
+ await this._table.when();
419
+ await this._layer.when(() => {
420
+ this._table.sortColumn(this._layer.objectIdField, "desc");
421
+ this._tableSorting = false;
372
422
  });
373
423
  }
374
424
  }
@@ -566,11 +616,12 @@ const LayerTable = class {
566
616
  * @returns a promise that will resolve when the operation is complete
567
617
  */
568
618
  async _layerSelectionChanged(evt) {
619
+ var _a;
569
620
  const id = evt.detail[0];
570
- if (id !== this._layer.id || this._allIds.length === 0) {
621
+ if (id !== ((_a = this._layer) === null || _a === void 0 ? void 0 : _a.id) || this._allIds.length === 0) {
571
622
  this._fetchingData = true;
572
623
  const columnTemplates = this._getColumnTemplates(id);
573
- this._layer = await mapViewUtils.getLayer(this.mapView, id);
624
+ this._layer = await mapViewUtils.getLayerOrTable(this.mapView, id);
574
625
  this._allIds = await mapViewUtils.queryAllIds(this._layer);
575
626
  if (!this._table) {
576
627
  await this._getTable(this._tableNode, columnTemplates);
@@ -632,10 +683,16 @@ const MapCard = class {
632
683
  constructor(hostRef) {
633
684
  index.registerInstance(this, hostRef);
634
685
  this.mapChanged = index.createEvent(this, "mapChanged", 7);
686
+ this.beforeMapChanged = index.createEvent(this, "beforeMapChanged", 7);
635
687
  /**
636
688
  * string: the id of map currently displayed
637
689
  */
638
690
  this._loadedId = "";
691
+ this.enableLegend = undefined;
692
+ this.enableFullscreen = undefined;
693
+ this.enableSearch = undefined;
694
+ this.enableBasemap = undefined;
695
+ this.basemapConfig = undefined;
639
696
  this.mapInfos = [];
640
697
  this.mapView = undefined;
641
698
  this._searchConfiguration = undefined;
@@ -662,7 +719,7 @@ const MapCard = class {
662
719
  * Renders the component.
663
720
  */
664
721
  render() {
665
- return (index.h(index.Host, null, index.h("map-picker", { mapInfos: this.mapInfos }), index.h("div", { class: "map-height", ref: (el) => (this._mapDiv = el) }), index.h("map-tools", { class: "box-shadow", mapView: this.mapView, ref: (el) => this._mapTools = el, searchConfiguration: this._searchConfiguration })));
722
+ return (index.h(index.Host, null, index.h("map-picker", { mapInfos: this.mapInfos }), index.h("div", { class: "map-height", ref: (el) => (this._mapDiv = el) }), index.h("map-tools", { basemapConfig: this.basemapConfig, class: "box-shadow", enableBasemap: this.enableBasemap, enableFullscreen: this.enableFullscreen, enableLegend: this.enableLegend, enableSearch: this.enableSearch, mapView: this.mapView, ref: (el) => this._mapTools = el, searchConfiguration: this._searchConfiguration })));
666
723
  }
667
724
  //--------------------------------------------------------------------------
668
725
  //
@@ -712,16 +769,17 @@ const MapCard = class {
712
769
  });
713
770
  this._loadedId = id;
714
771
  this._searchConfiguration = this._webMapInfo.searchConfiguration;
715
- this.mapChanged.emit({
716
- id: id,
717
- mapView: this.mapView
718
- });
772
+ this.beforeMapChanged.emit();
719
773
  await this.mapView.when(() => {
720
774
  const home = new this.Home({
721
775
  view: this.mapView
722
776
  });
723
777
  this.mapView.ui.add(home, { position: "top-left", index: 3 });
724
778
  this.mapView.ui.add(this._mapTools, { position: "top-right", index: 0 });
779
+ this.mapChanged.emit({
780
+ id: id,
781
+ mapView: this.mapView
782
+ });
725
783
  });
726
784
  }
727
785
  }
@@ -24,10 +24,18 @@ const CrowdsourceManager = class {
24
24
  this._shouldSetMapView = false;
25
25
  this.classicGrid = false;
26
26
  this.enableAutoRefresh = true;
27
+ this.enableFullscreen = true;
27
28
  this.enableInlineEdit = false;
29
+ this.enableLegend = true;
30
+ this.enableSearch = true;
31
+ this.enableHome = true;
32
+ this.enableZoom = true;
33
+ this.enableBasemap = true;
34
+ this.basemapConfig = undefined;
28
35
  this.showNewestFirst = true;
29
36
  this.hideMap = false;
30
37
  this.mapInfos = [];
38
+ this.onlyShowUpdatableLayers = true;
31
39
  this.searchConfiguration = undefined;
32
40
  this.zoomAndScrollToSelected = false;
33
41
  this._expandPopup = false;
@@ -62,13 +70,18 @@ const CrowdsourceManager = class {
62
70
  */
63
71
  async mapChanged(evt) {
64
72
  this._mapChange = evt.detail;
73
+ await this._mapChange.mapView.when(() => {
74
+ this._setMapView();
75
+ });
76
+ }
77
+ /**
78
+ * Listen for beforeMapChanged and minimize the popup if it's expanded
79
+ */
80
+ async beforeMapChanged() {
65
81
  if (this._expandPopup) {
66
82
  this._shouldSetMapView = true;
67
83
  this._expandPopup = false;
68
84
  }
69
- else {
70
- this._setMapView();
71
- }
72
85
  }
73
86
  //--------------------------------------------------------------------------
74
87
  //
@@ -227,7 +240,7 @@ const CrowdsourceManager = class {
227
240
  const mapDisplayClass = this.classicGrid && layoutMode === interfaces.ELayoutMode.GRID ? "display-flex height-full width-1-2" :
228
241
  layoutMode === interfaces.ELayoutMode.GRID && !hideMap ? "" : "display-none";
229
242
  const mapContainerClass = this.classicGrid && layoutMode === interfaces.ELayoutMode.GRID ? "width-full" : this._expandPopup ? "height-50-px" : "adjusted-height-50";
230
- return (index.h("div", { class: `${mapContainerClass} overflow-hidden ${mapDisplayClass}` }, index.h("map-card", { class: "width-full", mapInfos: this.mapInfos })));
243
+ return (index.h("div", { class: `${mapContainerClass} overflow-hidden ${mapDisplayClass}` }, index.h("map-card", { basemapConfig: this.basemapConfig, class: "width-full", enableBasemap: this.enableBasemap, enableFullscreen: this.enableFullscreen, enableLegend: this.enableLegend, enableSearch: this.enableSearch, mapInfos: this.mapInfos })));
231
244
  }
232
245
  /**
233
246
  * Get the expand node for the popup information
@@ -281,7 +294,7 @@ const CrowdsourceManager = class {
281
294
  const toggleSlot = this.classicGrid && layoutMode !== interfaces.ELayoutMode.VERTICAL ? "footer" :
282
295
  this.classicGrid && layoutMode === interfaces.ELayoutMode.VERTICAL ? "panel-end" :
283
296
  layoutMode === interfaces.ELayoutMode.HORIZONTAL ? "header" : "panel-start";
284
- return (index.h("calcite-shell", { class: tableSizeClass + " border-bottom" }, index.h("calcite-action-bar", { class: "border", expandDisabled: true, layout: toggleLayout, slot: toggleSlot }, index.h("calcite-action", { class: "toggle-node", icon: icon, id: id, onClick: () => this._toggleLayout(), text: "" }), index.h("calcite-tooltip", { label: tooltip, placement: "bottom", "reference-element": id }, index.h("span", null, tooltip))), index.h("div", { class: "width-full height-full position-relative" }, index.h("layer-table", { enableAutoRefresh: this.enableAutoRefresh, enableInlineEdit: this.enableInlineEdit, mapInfo: this._mapInfo, mapView: this === null || this === void 0 ? void 0 : this._mapView, showNewestFirst: this.showNewestFirst, zoomAndScrollToSelected: this.zoomAndScrollToSelected }))));
297
+ return (index.h("calcite-shell", { class: tableSizeClass + " border-bottom" }, index.h("calcite-action-bar", { class: "border", expandDisabled: true, layout: toggleLayout, slot: toggleSlot }, index.h("calcite-action", { class: "toggle-node", icon: icon, id: id, onClick: () => this._toggleLayout(), text: "" }), index.h("calcite-tooltip", { label: tooltip, placement: "bottom", "reference-element": id }, index.h("span", null, tooltip))), index.h("div", { class: "width-full height-full position-relative" }, index.h("layer-table", { enableAutoRefresh: this.enableAutoRefresh, enableInlineEdit: this.enableInlineEdit, mapInfo: this._mapInfo, mapView: this === null || this === void 0 ? void 0 : this._mapView, onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, showNewestFirst: this.showNewestFirst, zoomAndScrollToSelected: this.zoomAndScrollToSelected }))));
285
298
  }
286
299
  /**
287
300
  * Open/Close the appropriate panel.
@@ -8,7 +8,7 @@
8
8
  const _commonjsHelpers = require('./_commonjsHelpers-384729db.js');
9
9
  const index = require('./index-ee37804b.js');
10
10
  const loadModules = require('./loadModules-f6df8d6a.js');
11
- const mapViewUtils = require('./mapViewUtils-a4dd36ec.js');
11
+ const mapViewUtils = require('./mapViewUtils-a2884698.js');
12
12
  const cleanUrl = require('./clean-url-d5326abb.js');
13
13
 
14
14
  /** @license
@@ -1508,7 +1508,7 @@ function(t){var e=function(t){for(var e=t.length,r=new Uint8Array(e),n=0;n<e;n++
1508
1508
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1509
1509
  * ====================================================================
1510
1510
  */
1511
- function(t){function e(){return (n.canvg?Promise.resolve(n.canvg):Promise.resolve().then(function () { return require('./index.es-372e33de.js'); })).catch((function(t){return Promise.reject(new Error("Could not load canvg: "+t))})).then((function(t){return t.default?t.default:t}))}E.API.addSvgAsImage=function(t,r,n,i,o,s,c,u){if(isNaN(r)||isNaN(n))throw a.error("jsPDF.addSvgAsImage: Invalid coordinates",arguments),new Error("Invalid coordinates passed to jsPDF.addSvgAsImage");if(isNaN(i)||isNaN(o))throw a.error("jsPDF.addSvgAsImage: Invalid measurements",arguments),new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage");var h=document.createElement("canvas");h.width=i,h.height=o;var l=h.getContext("2d");l.fillStyle="#fff",l.fillRect(0,0,h.width,h.height);var f={ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0},d=this;return e().then((function(e){return e.fromString(l,t,f)}),(function(){return Promise.reject(new Error("Could not load canvg."))})).then((function(t){return t.render(f)})).then((function(){d.addImage(h.toDataURL("image/jpeg",1),r,n,i,o,c,u);}))};}(),E.API.putTotalPages=function(t){var e,r=0;parseInt(this.internal.getFont().id.substr(1),10)<15?(e=new RegExp(t,"g"),r=this.internal.getNumberOfPages()):(e=new RegExp(this.pdfEscape16(t,this.internal.getFont()),"g"),r=this.pdfEscape16(this.internal.getNumberOfPages()+"",this.internal.getFont()));for(var n=1;n<=this.internal.getNumberOfPages();n++)for(var i=0;i<this.internal.pages[n].length;i++)this.internal.pages[n][i]=this.internal.pages[n][i].replace(e,r);return this},E.API.viewerPreferences=function(e,r){var n;e=e||{},r=r||!1;var i,a,o,s={HideToolbar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideMenubar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideWindowUI:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},FitWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},CenterWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},DisplayDocTitle:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.4},NonFullScreenPageMode:{defaultValue:"UseNone",value:"UseNone",type:"name",explicitSet:!1,valueSet:["UseNone","UseOutlines","UseThumbs","UseOC"],pdfVersion:1.3},Direction:{defaultValue:"L2R",value:"L2R",type:"name",explicitSet:!1,valueSet:["L2R","R2L"],pdfVersion:1.3},ViewArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},ViewClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintScaling:{defaultValue:"AppDefault",value:"AppDefault",type:"name",explicitSet:!1,valueSet:["AppDefault","None"],pdfVersion:1.6},Duplex:{defaultValue:"",value:"none",type:"name",explicitSet:!1,valueSet:["Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","none"],pdfVersion:1.7},PickTrayByPDFSize:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.7},PrintPageRange:{defaultValue:"",value:"",type:"array",explicitSet:!1,valueSet:null,pdfVersion:1.7},NumCopies:{defaultValue:1,value:1,type:"integer",explicitSet:!1,valueSet:null,pdfVersion:1.7}},c=Object.keys(s),u=[],h=0,l=0,f=0;function d(t,e){var r,n=!1;for(r=0;r<t.length;r+=1)t[r]===e&&(n=!0);return n}if(void 0===this.internal.viewerpreferences&&(this.internal.viewerpreferences={},this.internal.viewerpreferences.configuration=JSON.parse(JSON.stringify(s)),this.internal.viewerpreferences.isSubscribed=!1),n=this.internal.viewerpreferences.configuration,"reset"===e||!0===r){var p=c.length;for(f=0;f<p;f+=1)n[c[f]].value=n[c[f]].defaultValue,n[c[f]].explicitSet=!1;}if("object"===t(e))for(a in e)if(o=e[a],d(c,a)&&void 0!==o){if("boolean"===n[a].type&&"boolean"==typeof o)n[a].value=o;else if("name"===n[a].type&&d(n[a].valueSet,o))n[a].value=o;else if("integer"===n[a].type&&Number.isInteger(o))n[a].value=o;else if("array"===n[a].type){for(h=0;h<o.length;h+=1)if(i=!0,1===o[h].length&&"number"==typeof o[h][0])u.push(String(o[h]-1));else if(o[h].length>1){for(l=0;l<o[h].length;l+=1)"number"!=typeof o[h][l]&&(i=!1);!0===i&&u.push([o[h][0]-1,o[h][1]-1].join(" "));}n[a].value="["+u.join(" ")+"]";}else n[a].value=n[a].defaultValue;n[a].explicitSet=!0;}return !1===this.internal.viewerpreferences.isSubscribed&&(this.internal.events.subscribe("putCatalog",(function(){var t,e=[];for(t in n)!0===n[t].explicitSet&&("name"===n[t].type?e.push("/"+t+" /"+n[t].value):e.push("/"+t+" "+n[t].value));0!==e.length&&this.internal.write("/ViewerPreferences\n<<\n"+e.join("\n")+"\n>>");})),this.internal.viewerpreferences.isSubscribed=!0),this.internal.viewerpreferences.configuration=n,this},
1511
+ function(t){function e(){return (n.canvg?Promise.resolve(n.canvg):Promise.resolve().then(function () { return require('./index.es-0ba11065.js'); })).catch((function(t){return Promise.reject(new Error("Could not load canvg: "+t))})).then((function(t){return t.default?t.default:t}))}E.API.addSvgAsImage=function(t,r,n,i,o,s,c,u){if(isNaN(r)||isNaN(n))throw a.error("jsPDF.addSvgAsImage: Invalid coordinates",arguments),new Error("Invalid coordinates passed to jsPDF.addSvgAsImage");if(isNaN(i)||isNaN(o))throw a.error("jsPDF.addSvgAsImage: Invalid measurements",arguments),new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage");var h=document.createElement("canvas");h.width=i,h.height=o;var l=h.getContext("2d");l.fillStyle="#fff",l.fillRect(0,0,h.width,h.height);var f={ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0},d=this;return e().then((function(e){return e.fromString(l,t,f)}),(function(){return Promise.reject(new Error("Could not load canvg."))})).then((function(t){return t.render(f)})).then((function(){d.addImage(h.toDataURL("image/jpeg",1),r,n,i,o,c,u);}))};}(),E.API.putTotalPages=function(t){var e,r=0;parseInt(this.internal.getFont().id.substr(1),10)<15?(e=new RegExp(t,"g"),r=this.internal.getNumberOfPages()):(e=new RegExp(this.pdfEscape16(t,this.internal.getFont()),"g"),r=this.pdfEscape16(this.internal.getNumberOfPages()+"",this.internal.getFont()));for(var n=1;n<=this.internal.getNumberOfPages();n++)for(var i=0;i<this.internal.pages[n].length;i++)this.internal.pages[n][i]=this.internal.pages[n][i].replace(e,r);return this},E.API.viewerPreferences=function(e,r){var n;e=e||{},r=r||!1;var i,a,o,s={HideToolbar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideMenubar:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},HideWindowUI:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},FitWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},CenterWindow:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.3},DisplayDocTitle:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.4},NonFullScreenPageMode:{defaultValue:"UseNone",value:"UseNone",type:"name",explicitSet:!1,valueSet:["UseNone","UseOutlines","UseThumbs","UseOC"],pdfVersion:1.3},Direction:{defaultValue:"L2R",value:"L2R",type:"name",explicitSet:!1,valueSet:["L2R","R2L"],pdfVersion:1.3},ViewArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},ViewClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintArea:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintClip:{defaultValue:"CropBox",value:"CropBox",type:"name",explicitSet:!1,valueSet:["MediaBox","CropBox","TrimBox","BleedBox","ArtBox"],pdfVersion:1.4},PrintScaling:{defaultValue:"AppDefault",value:"AppDefault",type:"name",explicitSet:!1,valueSet:["AppDefault","None"],pdfVersion:1.6},Duplex:{defaultValue:"",value:"none",type:"name",explicitSet:!1,valueSet:["Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","none"],pdfVersion:1.7},PickTrayByPDFSize:{defaultValue:!1,value:!1,type:"boolean",explicitSet:!1,valueSet:[!0,!1],pdfVersion:1.7},PrintPageRange:{defaultValue:"",value:"",type:"array",explicitSet:!1,valueSet:null,pdfVersion:1.7},NumCopies:{defaultValue:1,value:1,type:"integer",explicitSet:!1,valueSet:null,pdfVersion:1.7}},c=Object.keys(s),u=[],h=0,l=0,f=0;function d(t,e){var r,n=!1;for(r=0;r<t.length;r+=1)t[r]===e&&(n=!0);return n}if(void 0===this.internal.viewerpreferences&&(this.internal.viewerpreferences={},this.internal.viewerpreferences.configuration=JSON.parse(JSON.stringify(s)),this.internal.viewerpreferences.isSubscribed=!1),n=this.internal.viewerpreferences.configuration,"reset"===e||!0===r){var p=c.length;for(f=0;f<p;f+=1)n[c[f]].value=n[c[f]].defaultValue,n[c[f]].explicitSet=!1;}if("object"===t(e))for(a in e)if(o=e[a],d(c,a)&&void 0!==o){if("boolean"===n[a].type&&"boolean"==typeof o)n[a].value=o;else if("name"===n[a].type&&d(n[a].valueSet,o))n[a].value=o;else if("integer"===n[a].type&&Number.isInteger(o))n[a].value=o;else if("array"===n[a].type){for(h=0;h<o.length;h+=1)if(i=!0,1===o[h].length&&"number"==typeof o[h][0])u.push(String(o[h]-1));else if(o[h].length>1){for(l=0;l<o[h].length;l+=1)"number"!=typeof o[h][l]&&(i=!1);!0===i&&u.push([o[h][0]-1,o[h][1]-1].join(" "));}n[a].value="["+u.join(" ")+"]";}else n[a].value=n[a].defaultValue;n[a].explicitSet=!0;}return !1===this.internal.viewerpreferences.isSubscribed&&(this.internal.events.subscribe("putCatalog",(function(){var t,e=[];for(t in n)!0===n[t].explicitSet&&("name"===n[t].type?e.push("/"+t+" /"+n[t].value):e.push("/"+t+" "+n[t].value));0!==e.length&&this.internal.write("/ViewerPreferences\n<<\n"+e.join("\n")+"\n>>");})),this.internal.viewerpreferences.isSubscribed=!0),this.internal.viewerpreferences.configuration=n,this},
1512
1512
  /** ====================================================================
1513
1513
  * @license
1514
1514
  * jsPDF XMP metadata plugin
@@ -18,6 +18,7 @@ const EditCard = class {
18
18
  constructor(hostRef) {
19
19
  index.registerInstance(this, hostRef);
20
20
  this.closeEdit = index.createEvent(this, "closeEdit", 7);
21
+ this.editsComplete = index.createEvent(this, "editsComplete", 7);
21
22
  /**
22
23
  * boolean: When true the Editor widget should be closed
23
24
  */
@@ -80,6 +81,10 @@ const EditCard = class {
80
81
  }
81
82
  if (((_a = this.graphics) === null || _a === void 0 ? void 0 : _a.length) > 0 && ((_b = this.graphics[0]) === null || _b === void 0 ? void 0 : _b.layer)) {
82
83
  this._layer = this.graphics[0].layer;
84
+ if (this._layerEditHandle) {
85
+ this._layerEditHandle.remove();
86
+ }
87
+ this._layerEditHandle = this._layer.on("edits", () => this.editsComplete.emit());
83
88
  }
84
89
  }
85
90
  /**