@esri/solutions-components 0.7.39 → 0.7.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. package/dist/cjs/calcite-alert_4.cjs.entry.js +1 -1
  2. package/dist/cjs/calcite-combobox_5.cjs.entry.js +1 -1
  3. package/dist/cjs/calcite-flow_5.cjs.entry.js +1 -1
  4. package/dist/cjs/calcite-input-date-picker_3.cjs.entry.js +70 -31
  5. package/dist/cjs/card-manager_3.cjs.entry.js +29 -13
  6. package/dist/cjs/crowdsource-manager.cjs.entry.js +1 -1
  7. package/dist/cjs/crowdsource-reporter.cjs.entry.js +3 -1
  8. package/dist/cjs/{downloadUtils-c22a71da.js → downloadUtils-b10e3b8c.js} +2 -2
  9. package/dist/cjs/{index.es-8d317f5e.js → index.es-b9d6eff6.js} +2 -2
  10. package/dist/cjs/instant-apps-ckeditor-wrapper_3.cjs.entry.js +5 -4
  11. package/dist/cjs/instant-apps-export.cjs.entry.js +20 -21
  12. package/dist/cjs/instant-apps-header.cjs.entry.js +1 -1
  13. package/dist/cjs/instant-apps-language-switcher.cjs.entry.js +3 -3
  14. package/dist/cjs/instant-apps-language-translator.cjs.entry.js +1 -1
  15. package/dist/cjs/instant-apps-splash.cjs.entry.js +2 -6
  16. package/dist/cjs/loader.cjs.js +1 -1
  17. package/dist/cjs/map-select-tools_3.cjs.entry.js +2 -2
  18. package/dist/cjs/{mapViewUtils-cd29b129.js → mapViewUtils-290dbc9e.js} +4 -0
  19. package/dist/cjs/public-notification.cjs.entry.js +2 -2
  20. package/dist/cjs/solutions-components.cjs.js +1 -1
  21. package/dist/collection/components/basemap-gallery/basemap-gallery.css +19 -19
  22. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +36 -0
  23. package/dist/collection/components/layer-table/layer-table.js +28 -11
  24. package/dist/collection/components/map-fullscreen/map-fullscreen.css +19 -19
  25. package/dist/collection/components/map-legend/map-legend.css +3 -3
  26. package/dist/collection/utils/interfaces.ts +1 -0
  27. package/dist/collection/utils/queryUtils.js +4 -0
  28. package/dist/collection/utils/queryUtils.ts +5 -0
  29. package/dist/components/crowdsource-reporter.js +4 -0
  30. package/dist/components/instant-apps-export.js +20 -21
  31. package/dist/components/instant-apps-filter-list2.js +70 -31
  32. package/dist/components/instant-apps-header2.js +1 -1
  33. package/dist/components/instant-apps-language-switcher.js +3 -3
  34. package/dist/components/instant-apps-language-translator-item2.js +5 -4
  35. package/dist/components/instant-apps-language-translator2.js +1 -1
  36. package/dist/components/instant-apps-splash.js +3 -7
  37. package/dist/components/layer-table2.js +28 -11
  38. package/dist/components/queryUtils.js +4 -0
  39. package/dist/esm/calcite-alert_4.entry.js +1 -1
  40. package/dist/esm/calcite-combobox_5.entry.js +1 -1
  41. package/dist/esm/calcite-flow_5.entry.js +1 -1
  42. package/dist/esm/calcite-input-date-picker_3.entry.js +70 -31
  43. package/dist/esm/card-manager_3.entry.js +29 -13
  44. package/dist/esm/crowdsource-manager.entry.js +1 -1
  45. package/dist/esm/crowdsource-reporter.entry.js +3 -1
  46. package/dist/esm/{downloadUtils-985dcd1c.js → downloadUtils-20d22198.js} +2 -2
  47. package/dist/esm/{index.es-03d8386e.js → index.es-8b85f68d.js} +2 -2
  48. package/dist/esm/instant-apps-ckeditor-wrapper_3.entry.js +5 -4
  49. package/dist/esm/instant-apps-export.entry.js +20 -21
  50. package/dist/esm/instant-apps-header.entry.js +1 -1
  51. package/dist/esm/instant-apps-language-switcher.entry.js +3 -3
  52. package/dist/esm/instant-apps-language-translator.entry.js +1 -1
  53. package/dist/esm/instant-apps-splash.entry.js +3 -7
  54. package/dist/esm/loader.js +1 -1
  55. package/dist/esm/map-select-tools_3.entry.js +2 -2
  56. package/dist/esm/{mapViewUtils-257bc9b3.js → mapViewUtils-a177d4f9.js} +4 -0
  57. package/dist/esm/public-notification.entry.js +2 -2
  58. package/dist/esm/solutions-components.js +1 -1
  59. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-filter-list/instant-apps-filter-list.css +8 -1
  60. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-header/instant-apps-header.css +3 -0
  61. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-splash/instant-apps-splash.css +3 -0
  62. package/dist/solutions-components/{p-8571c89f.entry.js → p-044cd52c.entry.js} +1 -1
  63. package/dist/solutions-components/{p-df048b47.js → p-17e328bb.js} +1 -1
  64. package/dist/solutions-components/p-207fd378.entry.js +6 -0
  65. package/dist/solutions-components/{p-12492469.entry.js → p-2283ae14.entry.js} +1 -1
  66. package/dist/solutions-components/p-2f017ad2.entry.js +6 -0
  67. package/dist/solutions-components/{p-20b206f3.entry.js → p-32adb2cc.entry.js} +1 -1
  68. package/dist/solutions-components/p-3eedaead.js +36 -0
  69. package/dist/solutions-components/{p-2f840f08.entry.js → p-42233edc.entry.js} +1 -1
  70. package/dist/solutions-components/p-4742efa8.entry.js +6 -0
  71. package/dist/solutions-components/p-57087d57.entry.js +17 -0
  72. package/dist/solutions-components/{p-23e58d7c.entry.js → p-59c6f63f.entry.js} +1 -1
  73. package/dist/solutions-components/{p-34eaca46.entry.js → p-69a1df0f.entry.js} +1 -1
  74. package/dist/solutions-components/{p-6419f8d7.entry.js → p-6fe5e1d5.entry.js} +1 -1
  75. package/dist/solutions-components/p-7480ac64.entry.js +6 -0
  76. package/dist/solutions-components/p-aecf92f4.entry.js +6 -0
  77. package/dist/solutions-components/p-cacd0307.entry.js +6 -0
  78. package/dist/solutions-components/p-e2b0b3fa.entry.js +6 -0
  79. package/dist/solutions-components/{p-00ba5a2a.js → p-f6536eae.js} +2 -2
  80. package/dist/solutions-components/solutions-components.esm.js +1 -1
  81. package/dist/solutions-components/utils/interfaces.ts +1 -0
  82. package/dist/solutions-components/utils/queryUtils.ts +5 -0
  83. package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +8 -0
  84. package/dist/types/components/layer-table/layer-table.d.ts +9 -1
  85. package/dist/types/components.d.ts +16 -0
  86. package/dist/types/utils/interfaces.d.ts +1 -0
  87. package/dist/types/utils/queryUtils.d.ts +1 -0
  88. package/package.json +2 -2
  89. package/dist/solutions-components/p-09b48b1b.entry.js +0 -6
  90. package/dist/solutions-components/p-32fed23c.entry.js +0 -17
  91. package/dist/solutions-components/p-6a61c742.entry.js +0 -6
  92. package/dist/solutions-components/p-9161dca9.entry.js +0 -6
  93. package/dist/solutions-components/p-93369c9f.entry.js +0 -6
  94. package/dist/solutions-components/p-96f5be25.js +0 -36
  95. package/dist/solutions-components/p-97425481.entry.js +0 -6
  96. package/dist/solutions-components/p-ae4c8b8c.entry.js +0 -6
  97. package/dist/solutions-components/p-eb0f4ede.entry.js +0 -6
@@ -16,7 +16,7 @@ const openCloseComponent = require('./openCloseComponent-19a769d0.js');
16
16
  const t9n = require('./t9n-993a84de.js');
17
17
  const resources = require('./resources-dd8ff1b4.js');
18
18
  const locale$1 = require('./locale-8c42ba7a.js');
19
- const mapViewUtils = require('./mapViewUtils-cd29b129.js');
19
+ const mapViewUtils = require('./mapViewUtils-290dbc9e.js');
20
20
  const popupUtils = require('./popupUtils-824d2f7c.js');
21
21
  require('./guid-ae73cd27.js');
22
22
  require('./resources-9447c777.js');
@@ -26,7 +26,7 @@ const Validation = require('./Validation-b02c6710.js');
26
26
  const debounce = require('./debounce-30afab47.js');
27
27
  const key = require('./key-c5504030.js');
28
28
  const locale$1 = require('./locale-8c42ba7a.js');
29
- const mapViewUtils = require('./mapViewUtils-cd29b129.js');
29
+ const mapViewUtils = require('./mapViewUtils-290dbc9e.js');
30
30
  const publicNotificationStore = require('./publicNotificationStore-ef379d11.js');
31
31
  require('./resources-9447c777.js');
32
32
  require('./browser-d08a5f99.js');
@@ -16,7 +16,7 @@ const locale = require('./locale-d237c9d5.js');
16
16
  const t9n = require('./t9n-993a84de.js');
17
17
  const resources = require('./resources-3e593312.js');
18
18
  const locale$1 = require('./locale-8c42ba7a.js');
19
- const mapViewUtils = require('./mapViewUtils-cd29b129.js');
19
+ const mapViewUtils = require('./mapViewUtils-290dbc9e.js');
20
20
  const popupUtils = require('./popupUtils-824d2f7c.js');
21
21
  require('./guid-ae73cd27.js');
22
22
  require('./resources-9447c777.js');
@@ -778,7 +778,7 @@ function resetDatePicker(datePicker) {
778
778
  }
779
779
  }
780
780
 
781
- const instantAppsFilterListCss = ":host{display:block}.instant-apps-filter-list *{box-sizing:border-box}.instant-apps-filter-list__container{height:100%}.instant-apps-filter-list__container calcite-block:last-of-type{margin-bottom:0}.instant-apps-filter-list__footer{padding:12px;display:flex}.instant-apps-filter-list__footer calcite-button:nth-child(2){margin-left:6px}.instant-apps-filter-list__item-container,.instant-apps-filter-list__item-container--user-input{display:flex;justify-content:space-between;align-items:center}.instant-apps-filter-list__item-container:not(:last-child),.instant-apps-filter-list__item-container--user-input:not(:last-child){padding-bottom:20px}.instant-apps-filter-list__item-container--user-input{margin:0;display:flex;flex-direction:column;align-items:flex-start}.instant-apps-filter-list__item-container--user-input>span{margin:0 0 6px;font-size:14px;font-weight:normal}.instant-apps-filter-list__item-container--user-input calcite-combobox{width:100%}.instant-apps-filter-list__number-input-container{width:100%;display:flex;justify-content:center}.instant-apps-filter-list__number-input-container calcite-slider{width:90%}.instant-apps-filter-list__date-picker-input-container{display:flex;align-items:center;justify-content:unset;width:100%}.instant-apps-filter-list__date-picker-input-container calcite-action{height:48px;border-top:1px solid var(--calcite-color-border-input);border-right:1px solid var(--calcite-color-border-input);border-bottom:1px solid var(--calcite-color-border-input)}.instant-apps-filter-list__title{margin-right:20px}.instant-apps-filter-list__title>p{font-size:14px;font-weight:normal;margin:0}.instant-apps-filter-list__checkbox-container{display:flex}.instant-apps-filter-list__checkbox-container calcite-checkbox{height:18px}.instant-apps-filter-list__operator-description{margin:0;--calcite-font-size--1:12px}.instant-apps-filter-list__zoom-to{display:flex;justify-content:flex-end;margin:8px 0 20px}.instant-apps-filter-list__zoom-to calcite-action{width:-moz-min-content;width:min-content}@media (prefers-reduced-motion){.instant-apps-filter-list calcite-loader{--calcite-internal-duration-factor:2;--calcite-internal-animation-timing-slow:calc(300ms * 2)}}.instant-apps-filter-list.calcite-mode-dark .instant-apps-filter-list__header-container{background:#2b2b2b;color:#fff}.instant-apps-filter-list.calcite-mode-dark .instant-apps-filter-list__operator-description{background:#353535}";
781
+ const instantAppsFilterListCss = ":host{display:block}.instant-apps-filter-list *{box-sizing:border-box}.instant-apps-filter-list__container{height:100%}.instant-apps-filter-list__container calcite-block:last-of-type{margin-bottom:0}.instant-apps-filter-list__footer{padding:12px;display:flex}.instant-apps-filter-list__footer calcite-button:nth-child(2){margin-left:6px}.instant-apps-filter-list__item-container,.instant-apps-filter-list__item-container--user-input{display:flex;justify-content:space-between;align-items:center}.instant-apps-filter-list__item-container:not(:last-child),.instant-apps-filter-list__item-container--user-input:not(:last-child){padding-bottom:20px}.instant-apps-filter-list__item-container--user-input{margin:0;display:flex;flex-direction:column;align-items:flex-start}.instant-apps-filter-list__item-container--user-input>span{margin:0 0 6px;font-size:14px;font-weight:normal}.instant-apps-filter-list__item-container--user-input calcite-combobox{width:100%;--calcite-font-size--1:16px}.instant-apps-filter-list__item-container--user-input calcite-combobox-item{--calcite-font-size--1:12px}.instant-apps-filter-list__number-input-container{width:100%;display:flex;justify-content:center}.instant-apps-filter-list__number-input-container calcite-slider{width:90%}.instant-apps-filter-list__date-picker-input-container{display:flex;align-items:center;justify-content:unset;width:100%}.instant-apps-filter-list__date-picker-input-container calcite-action{height:64px;border-top:1px solid var(--calcite-color-border-input);border-right:1px solid var(--calcite-color-border-input);border-bottom:1px solid var(--calcite-color-border-input)}.instant-apps-filter-list__title{margin-right:20px}.instant-apps-filter-list__title>p{font-size:14px;font-weight:normal;margin:0}.instant-apps-filter-list__checkbox-container{display:flex}.instant-apps-filter-list__checkbox-container calcite-checkbox{height:18px}.instant-apps-filter-list__operator-description{margin:0;--calcite-font-size--1:12px}.instant-apps-filter-list__zoom-to{display:flex;justify-content:flex-end;margin:8px 0 20px}.instant-apps-filter-list__zoom-to calcite-action{width:-moz-min-content;width:min-content}.instant-apps-filter-list calcite-input-date-picker{--calcite-font-size--1:16px}@media (prefers-reduced-motion){.instant-apps-filter-list calcite-loader{--calcite-internal-duration-factor:2;--calcite-internal-animation-timing-slow:calc(300ms * 2)}}.instant-apps-filter-list.calcite-mode-dark .instant-apps-filter-list__header-container{background:#2b2b2b;color:#fff}.instant-apps-filter-list.calcite-mode-dark .instant-apps-filter-list__operator-description{background:#353535}";
782
782
 
783
783
  const CSS$1 = {
784
784
  base: 'instant-apps-filter-list',
@@ -865,6 +865,7 @@ const InstantAppsFilterList = class {
865
865
  this.geometryJsonUtils = geometryJsonUtils;
866
866
  this.reactiveUtils = reactiveUtils;
867
867
  this.locale = intl.getLocale();
868
+ this.intl = intl;
868
869
  return Promise.resolve();
869
870
  }
870
871
  render() {
@@ -896,24 +897,13 @@ const InstantAppsFilterList = class {
896
897
  }
897
898
  renderCombobox(layerExpression, expression) {
898
899
  var _a;
899
- return (index.h("label", { key: "combo-select", class: CSS$1.filterUIItemContainer }, index.h("span", null, expression.name), index.h("calcite-combobox", { id: expression.id.toString(), onCalciteComboboxChange: this.handleComboSelect.bind(this, expression, layerExpression), label: expression.name, placeholder: expression.placeholder, overlayPositioning: "fixed", selectionMode: "multiple", scale: "s", "max-items": "6" }, (_a = expression.fields) === null || _a === void 0 ? void 0 : _a.map((value, index) => this.renderComboboxItem(expression, value, index)))));
900
+ return (index.h("label", { key: "combo-select", class: CSS$1.filterUIItemContainer }, index.h("span", null, expression.name), index.h("calcite-combobox", { id: expression.id.toString(), onCalciteComboboxChange: this.handleComboSelect.bind(this, expression, layerExpression), label: expression.name, placeholder: expression.placeholder, selectionMode: "multiple", "max-items": "6" }, (_a = expression.fields) === null || _a === void 0 ? void 0 : _a.map((value, index) => this.renderComboboxItem(expression, value, index)))));
900
901
  }
901
902
  renderComboboxItem(expression, value, index$1) {
902
- var _a, _b;
903
- let label = value;
904
- if (expression.type === 'coded-value') {
905
- label = (_a = expression.codedValues) === null || _a === void 0 ? void 0 : _a[value];
906
- }
907
- else if (expression.type === 'number' && typeof value === 'number' && expression.format != null) {
908
- if (expression.format.places != null) {
909
- label = this.roundNumber(value, expression.format.places);
910
- }
911
- if (expression.format.digitSeparator) {
912
- label = this.numberWithCommas(label);
913
- }
914
- }
903
+ var _a;
904
+ const label = this.createLabel(expression, value);
915
905
  const selectedFields = expression === null || expression === void 0 ? void 0 : expression.selectedFields;
916
- const selected = (_b = selectedFields === null || selectedFields === void 0 ? void 0 : selectedFields.includes(value)) !== null && _b !== void 0 ? _b : false;
906
+ const selected = (_a = selectedFields === null || selectedFields === void 0 ? void 0 : selectedFields.includes(value)) !== null && _a !== void 0 ? _a : false;
917
907
  return index.h("calcite-combobox-item", { key: `${label}-${index$1}`, value: value, textLabel: `${label}`, selected: selected });
918
908
  }
919
909
  initFilterConfig() {
@@ -945,11 +935,10 @@ const InstantAppsFilterList = class {
945
935
  }
946
936
  renderDatePicker(layerExpression, expression) {
947
937
  var _a, _b, _c, _d;
948
- const min = convertToDate(expression.min);
949
- const max = convertToDate(expression.max);
938
+ const { min, max } = expression;
950
939
  const value = [(_a = expression === null || expression === void 0 ? void 0 : expression.range) === null || _a === void 0 ? void 0 : _a.min, (_b = expression === null || expression === void 0 ? void 0 : expression.range) === null || _b === void 0 ? void 0 : _b.max];
951
940
  const check = min != null && max != null;
952
- return check ? (index.h("label", { class: CSS$1.filterUIItemContainer }, index.h("span", null, expression === null || expression === void 0 ? void 0 : expression.name), index.h("div", { class: CSS$1.dateInputContainer }, index.h("calcite-input-date-picker", { id: expression === null || expression === void 0 ? void 0 : expression.id.toString(), onCalciteInputDatePickerChange: this.handleDatePickerRangeChange.bind(this, expression, layerExpression), min: min, max: max, scale: "s", lang: (_c = this.locale) !== null && _c !== void 0 ? _c : 'en', "overlay-positioning": "fixed", layout: "vertical", value: value, range: true }), index.h("calcite-action", { onClick: this.handleResetDatePicker.bind(this, expression, layerExpression), icon: "reset", text: (_d = this.messages) === null || _d === void 0 ? void 0 : _d.resetDatePicker, scale: "s" })))) : null;
941
+ return check ? (index.h("label", { class: CSS$1.filterUIItemContainer }, index.h("span", null, expression === null || expression === void 0 ? void 0 : expression.name), index.h("div", { class: CSS$1.dateInputContainer }, index.h("calcite-input-date-picker", { id: expression === null || expression === void 0 ? void 0 : expression.id.toString(), onCalciteInputDatePickerChange: this.handleDatePickerRangeChange.bind(this, expression, layerExpression), min: min, max: max, "overlay-positioning": "fixed", lang: (_c = this.locale) !== null && _c !== void 0 ? _c : 'en', layout: "vertical", value: value, range: true }), index.h("calcite-action", { onClick: this.handleResetDatePicker.bind(this, expression, layerExpression), icon: "reset", text: (_d = this.messages) === null || _d === void 0 ? void 0 : _d.resetDatePicker, scale: "s" })))) : null;
953
942
  }
954
943
  renderFooter() {
955
944
  var _a;
@@ -1019,7 +1008,12 @@ const InstantAppsFilterList = class {
1019
1008
  this.resetCombobox(expression);
1020
1009
  }
1021
1010
  else if (type === 'date') {
1022
- this.resetDatePicker(expression);
1011
+ if ((expression === null || expression === void 0 ? void 0 : expression.numDisplayOption) === 'drop-down' || (expression === null || expression === void 0 ? void 0 : expression.displayOption) === 'drop-down') {
1012
+ this.resetCombobox(expression);
1013
+ }
1014
+ else {
1015
+ this.resetDatePicker(expression);
1016
+ }
1023
1017
  }
1024
1018
  else if (type === 'number' || type === 'range') {
1025
1019
  if ((expression === null || expression === void 0 ? void 0 : expression.numDisplayOption) === 'drop-down' || (expression === null || expression === void 0 ? void 0 : expression.displayOption) === 'drop-down') {
@@ -1095,9 +1089,15 @@ const InstantAppsFilterList = class {
1095
1089
  });
1096
1090
  }
1097
1091
  async updateStringExpression(layerExpression, expression) {
1098
- const { field } = expression;
1092
+ const { field, type } = expression;
1099
1093
  const layer = this.findFilterLayer(layerExpression);
1100
1094
  expression.fields = await this.getFeatureAttributes(layer, field);
1095
+ if (type === 'date') {
1096
+ const layerField = layer.fields.find(({ name }) => name === field);
1097
+ if ((layerField === null || layerField === void 0 ? void 0 : layerField.type) === 'date-only') {
1098
+ expression.dateOnly = true;
1099
+ }
1100
+ }
1101
1101
  if (expression === null || expression === void 0 ? void 0 : expression.selectedFields) {
1102
1102
  const selectedFields = expression.selectedFields.map((field) => (typeof field === 'number' ? field : `'${handleSingleQuote(field)}'`));
1103
1103
  expression.definitionExpression = `${field} IN (${selectedFields.join(',')})`;
@@ -1358,12 +1358,18 @@ const InstantAppsFilterList = class {
1358
1358
  handleComboSelect(expression, layerExpression, event) {
1359
1359
  const combobox = event.target;
1360
1360
  const items = combobox.selectedItems;
1361
- const { field } = expression;
1361
+ const { field, type } = expression;
1362
1362
  if (items && items.length) {
1363
1363
  const values = items.map(({ value }) => (typeof value === 'number' ? value : `'${handleSingleQuote(value)}'`));
1364
- expression.selectedFields = items.map(({ value }) => value);
1365
- const definitionExpression = `${field} IN (${values.join(',')})`;
1366
- expression.definitionExpression = definitionExpression;
1364
+ if (type === 'date') {
1365
+ expression.selectedFields = items.map(({ value }) => value);
1366
+ expression.definitionExpression = values.map(value => this.buildDateExpression(value, field)).join(' OR ');
1367
+ }
1368
+ else {
1369
+ expression.selectedFields = items.map(({ value }) => value);
1370
+ const definitionExpression = `${field} IN (${values.join(',')})`;
1371
+ expression.definitionExpression = definitionExpression;
1372
+ }
1367
1373
  expression.active = true;
1368
1374
  }
1369
1375
  else {
@@ -1420,20 +1426,20 @@ const InstantAppsFilterList = class {
1420
1426
  }
1421
1427
  createURLParamExpression(layerExpression, expression) {
1422
1428
  const { id, range, selectedFields, type } = expression;
1423
- if (type === 'number' || type === 'range' || type === 'date') {
1429
+ if (type === 'string' || type === 'coded-value' || (expression === null || expression === void 0 ? void 0 : expression.numDisplayOption) === 'drop-down' || (expression === null || expression === void 0 ? void 0 : expression.displayOption) === 'drop-down') {
1424
1430
  return {
1425
- type: 'range',
1431
+ type: 'select',
1426
1432
  layerId: layerExpression.id,
1427
1433
  expressionId: id.toString(),
1428
- range,
1434
+ selectedFields,
1429
1435
  };
1430
1436
  }
1431
- else if (type === 'string' || type === 'coded-value') {
1437
+ else if (type === 'number' || type === 'range' || type === 'date') {
1432
1438
  return {
1433
- type: 'select',
1439
+ type: 'range',
1434
1440
  layerId: layerExpression.id,
1435
1441
  expressionId: id.toString(),
1436
- selectedFields,
1442
+ range,
1437
1443
  };
1438
1444
  }
1439
1445
  else {
@@ -1729,6 +1735,39 @@ const InstantAppsFilterList = class {
1729
1735
  return layer;
1730
1736
  }
1731
1737
  }
1738
+ createLabel(expression, value) {
1739
+ var _a;
1740
+ let label = value;
1741
+ if (expression.type === 'coded-value') {
1742
+ label = (_a = expression.codedValues) === null || _a === void 0 ? void 0 : _a[value];
1743
+ }
1744
+ else if (expression.type === 'number' && typeof value === 'number' && expression.format != null) {
1745
+ if (expression.format.places != null) {
1746
+ label = this.roundNumber(value, expression.format.places);
1747
+ }
1748
+ if (expression.format.digitSeparator) {
1749
+ label = this.numberWithCommas(label);
1750
+ }
1751
+ }
1752
+ else if (expression.type === 'date' && !expression.dateOnly) {
1753
+ const format = expression.dateOnly ? this.intl.convertDateFormatToIntlOptions('short-date-long-time') : undefined;
1754
+ label = this.intl.formatDate(value, format);
1755
+ }
1756
+ return label;
1757
+ }
1758
+ buildDateExpression(date, field) {
1759
+ if (date) {
1760
+ const tmpDate = new Date(date);
1761
+ const tmpCompareDate = new Date(date);
1762
+ const tmpCompareDate1 = new Date(tmpCompareDate.setDate(tmpDate.getDate() + 1));
1763
+ const formattedDate = `${tmpDate.getFullYear()}-${tmpDate.getMonth() + 1}-${tmpDate.getDate()}`;
1764
+ const time = `${tmpDate.getHours()}:${tmpDate.getMinutes()}:${tmpDate.getSeconds()}`;
1765
+ const compareTime = `${tmpCompareDate1.getHours()}:${tmpCompareDate1.getMinutes()}:${tmpCompareDate1.getSeconds()}`;
1766
+ const compareFormattedDate = `${tmpCompareDate1.getFullYear()}-${tmpCompareDate1.getMonth() + 1}-${tmpCompareDate1.getDate()}`;
1767
+ return `${field} BETWEEN '${formattedDate} ${time}' AND '${compareFormattedDate} ${compareTime}'`;
1768
+ }
1769
+ return;
1770
+ }
1732
1771
  get el() { return index.getElement(this); }
1733
1772
  static get watchers() { return {
1734
1773
  "view": ["watchViewHandler"],
@@ -9,8 +9,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
10
  const index = require('./index-105cf2b9.js');
11
11
  const locale = require('./locale-8c42ba7a.js');
12
- const mapViewUtils = require('./mapViewUtils-cd29b129.js');
13
- const downloadUtils = require('./downloadUtils-c22a71da.js');
12
+ const mapViewUtils = require('./mapViewUtils-290dbc9e.js');
13
+ const downloadUtils = require('./downloadUtils-b10e3b8c.js');
14
14
  require('./esri-loader-a91c0ec1.js');
15
15
  require('./_commonjsHelpers-384729db.js');
16
16
  require('./interfaces-7cd0a48a.js');
@@ -176,6 +176,7 @@ const LayerTable = class {
176
176
  this.showNewestFirst = undefined;
177
177
  this.zoomAndScrollToSelected = undefined;
178
178
  this._controlsThatFit = undefined;
179
+ this._csvExporting = false;
179
180
  this._fetchingData = false;
180
181
  this._filterActive = false;
181
182
  this._filterOpen = false;
@@ -452,8 +453,8 @@ const LayerTable = class {
452
453
  if (cur && !cur.isOverflow) {
453
454
  prev.push(cur.isDanger ?
454
455
  this._getDangerAction(cur.icon, cur.label, cur.func, cur.disabled) :
455
- cur.isSublist ? (index.h("calcite-dropdown", { closeOnSelectDisabled: true, id: this._getId(cur.icon), onCalciteDropdownBeforeClose: () => this._forceShowHide(), ref: (el) => this._showHideDropdown = el }, this._getAction(cur.active, this._showHideOpen ? "chevron-down" : cur.icon, cur.indicator, cur.label, cur.func, cur.disabled, "trigger"), this._showHideOpen ? this._getFieldlist() : undefined)) :
456
- this._getAction(cur.active, cur.icon, cur.indicator, cur.label, cur.func, cur.disabled));
456
+ cur.isSublist ? (index.h("calcite-dropdown", { closeOnSelectDisabled: true, id: this._getId(cur.icon), onCalciteDropdownBeforeClose: () => this._forceShowHide(), ref: (el) => this._showHideDropdown = el }, this._getAction(cur.active, this._showHideOpen ? "chevron-down" : cur.icon, cur.indicator, cur.label, cur.func, cur.disabled, cur.loading, "trigger"), this._showHideOpen ? this._getFieldlist() : undefined)) :
457
+ this._getAction(cur.active, cur.icon, cur.indicator, cur.label, cur.func, cur.disabled, cur.loading));
457
458
  }
458
459
  return prev;
459
460
  }, []);
@@ -605,6 +606,7 @@ const LayerTable = class {
605
606
  indicator: false,
606
607
  func: () => void this._exportToCSV(),
607
608
  label: this._translations.exportCSV,
609
+ loading: this._csvExporting,
608
610
  disabled: featuresEmpty,
609
611
  isOverflow: false
610
612
  } : undefined, {
@@ -789,7 +791,7 @@ const LayerTable = class {
789
791
  _getDropdown(id) {
790
792
  const dropdownItems = this._getDropdownItems();
791
793
  return dropdownItems.length > 0 ? (index.h("calcite-dropdown", { closeOnSelectDisabled: true, disabled: this._layer === undefined, id: "solutions-more", onCalciteDropdownBeforeClose: () => this._forceShowHide(), ref: (el) => this._moreDropdown = el }, index.h("calcite-action", { appearance: "solid", id: id, label: "", onClick: () => this._closeShowHide(), 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" }, dropdownItems.map(item => {
792
- return (index.h("calcite-dropdown-group", { class: item.disabled ? "disabled" : "", selectionMode: item.disabled ? "none" : "single" }, index.h("calcite-dropdown-item", { iconStart: item.isSublist && this._showHideOpen ? "chevron-down" : item.icon, id: "solutions-subset-list", onClick: item.func }, item.label)));
794
+ return (index.h("calcite-dropdown-group", { class: item.disabled ? "disabled" : "", selectionMode: item.disabled ? "none" : "single" }, index.h("calcite-dropdown-item", { disabled: item.loading, iconStart: item.isSublist && this._showHideOpen ? "chevron-down" : item.loading ? "" : item.icon, id: "solutions-subset-list", onClick: item.func }, item.loading ? (index.h("div", { class: "display-flex" }, index.h("calcite-loader", { inline: true, label: item.label, scale: "m" }), item.label)) : item.label)));
793
795
  })), this._showHideOpen ? this._getFieldlist() : undefined)) : undefined;
794
796
  }
795
797
  /**
@@ -811,9 +813,9 @@ const LayerTable = class {
811
813
  *
812
814
  * @returns VNode The node representing the DOM element that will contain the action
813
815
  */
814
- _getAction(active, icon, indicator, label, func, disabled, slot) {
816
+ _getAction(active, icon, indicator, label, func, disabled, loading, slot) {
815
817
  const _disabled = this._layer === undefined ? true : disabled;
816
- return (index.h("div", { class: "display-flex", id: this._getId(icon), slot: slot }, index.h("calcite-action", { active: active, appearance: "solid", disabled: _disabled, icon: icon, id: icon, indicator: indicator, label: label, onClick: func, text: label, textEnabled: true }), this._getToolTip("bottom", icon, label)));
818
+ return (index.h("div", { class: "display-flex", id: this._getId(icon), slot: slot }, index.h("calcite-action", { active: active, appearance: "solid", disabled: _disabled, icon: icon, id: icon, indicator: indicator, label: label, loading: loading, onClick: func, text: label, textEnabled: true }), this._getToolTip("bottom", icon, label)));
817
819
  }
818
820
  /**
819
821
  * Get an action and tooltip for share
@@ -1267,13 +1269,9 @@ const LayerTable = class {
1267
1269
  const hitTestResult = await this.mapView.hitTest(evt.screenPoint, opts);
1268
1270
  if (hitTestResult.results.length > 0) {
1269
1271
  hitTestResult.results.forEach((result) => {
1270
- this._clearSelection();
1271
1272
  const id = result.graphic.getObjectId();
1272
1273
  const index = this._table.highlightIds.indexOf(id);
1273
- if (index > -1) {
1274
- this._table.highlightIds.removeAt(index);
1275
- }
1276
- else {
1274
+ if (index < 0) {
1277
1275
  this._table.highlightIds.add(id);
1278
1276
  }
1279
1277
  });
@@ -1281,6 +1279,9 @@ const LayerTable = class {
1281
1279
  this._table.filterBySelection();
1282
1280
  }
1283
1281
  }
1282
+ else {
1283
+ this._clearSelection();
1284
+ }
1284
1285
  }
1285
1286
  /**
1286
1287
  * Select or deselect all rows
@@ -1369,11 +1370,26 @@ const LayerTable = class {
1369
1370
  }
1370
1371
  return prev;
1371
1372
  }, []);
1372
- void downloadUtils.downloadCSV(null, //???
1373
+ this._updateToolInfoLoading("export", true);
1374
+ this._csvExporting = true;
1375
+ await downloadUtils.downloadCSV(null, //???
1373
1376
  exportInfos, false, // formatUsingLayerPopup
1374
1377
  false, // removeDuplicates
1375
1378
  true, // addColumnTitle
1376
1379
  fields, true);
1380
+ this._updateToolInfoLoading("export", false);
1381
+ this._csvExporting = false;
1382
+ }
1383
+ /**
1384
+ * Set the loading prop in the stored toolInfos
1385
+ */
1386
+ _updateToolInfoLoading(name, isLoading) {
1387
+ this._toolInfos.some(tool => {
1388
+ if ((tool === null || tool === void 0 ? void 0 : tool.icon) === name) {
1389
+ tool.loading = isLoading;
1390
+ return true;
1391
+ }
1392
+ });
1377
1393
  }
1378
1394
  /**
1379
1395
  * Refreshes the table and maintains the curent scroll position
@@ -10,7 +10,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
10
10
  const index = require('./index-105cf2b9.js');
11
11
  const locale = require('./locale-8c42ba7a.js');
12
12
  const interfaces = require('./interfaces-7cd0a48a.js');
13
- const mapViewUtils = require('./mapViewUtils-cd29b129.js');
13
+ const mapViewUtils = require('./mapViewUtils-290dbc9e.js');
14
14
  require('./esri-loader-a91c0ec1.js');
15
15
  require('./_commonjsHelpers-384729db.js');
16
16
 
@@ -9,7 +9,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
9
9
 
10
10
  const index = require('./index-105cf2b9.js');
11
11
  const locale = require('./locale-8c42ba7a.js');
12
- const mapViewUtils = require('./mapViewUtils-cd29b129.js');
12
+ const mapViewUtils = require('./mapViewUtils-290dbc9e.js');
13
13
  require('./esri-loader-a91c0ec1.js');
14
14
  require('./_commonjsHelpers-384729db.js');
15
15
  require('./interfaces-7cd0a48a.js');
@@ -32,6 +32,8 @@ const CrowdsourceReporter = class {
32
32
  this.mapView = undefined;
33
33
  this.layerId = undefined;
34
34
  this.objectId = undefined;
35
+ this.center = undefined;
36
+ this.level = undefined;
35
37
  this.reportButtonText = undefined;
36
38
  this.reportsHeader = undefined;
37
39
  this.reportSubmittedMessage = undefined;
@@ -8,7 +8,7 @@
8
8
  const _commonjsHelpers = require('./_commonjsHelpers-384729db.js');
9
9
  const index = require('./index-105cf2b9.js');
10
10
  const locale = require('./locale-8c42ba7a.js');
11
- const mapViewUtils = require('./mapViewUtils-cd29b129.js');
11
+ const mapViewUtils = require('./mapViewUtils-290dbc9e.js');
12
12
  require('./solution-resource-abec7452.js');
13
13
  require('./index-f64944ad.js');
14
14
  const restHelpersGet = require('./restHelpersGet-e0737480.js');
@@ -1510,7 +1510,7 @@ function(t){var e=function(t){for(var e=t.length,r=new Uint8Array(e),n=0;n<e;n++
1510
1510
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1511
1511
  * ====================================================================
1512
1512
  */
1513
- function(t){function e(){return (n.canvg?Promise.resolve(n.canvg):Promise.resolve().then(function () { return require('./index.es-8d317f5e.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},
1513
+ function(t){function e(){return (n.canvg?Promise.resolve(n.canvg):Promise.resolve().then(function () { return require('./index.es-b9d6eff6.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},
1514
1514
  /** ====================================================================
1515
1515
  * @license
1516
1516
  * jsPDF XMP metadata plugin
@@ -6,11 +6,11 @@
6
6
  'use strict';
7
7
 
8
8
  const _commonjsHelpers = require('./_commonjsHelpers-384729db.js');
9
- const downloadUtils = require('./downloadUtils-c22a71da.js');
9
+ const downloadUtils = require('./downloadUtils-b10e3b8c.js');
10
10
  require('./index-105cf2b9.js');
11
11
  require('./locale-8c42ba7a.js');
12
12
  require('./esri-loader-a91c0ec1.js');
13
- require('./mapViewUtils-cd29b129.js');
13
+ require('./mapViewUtils-290dbc9e.js');
14
14
  require('./interfaces-7cd0a48a.js');
15
15
  require('./solution-resource-abec7452.js');
16
16
  require('./index-f64944ad.js');
@@ -204,13 +204,13 @@ const InstantAppsLanguageTranslatorItem = class {
204
204
  return (index.h("div", { class: `${CSS$1.section}${selected}` }, this.renderItemHeader(utils.EInputType.User, label, uid), this.handleInputRender(utils.EInputType.User, value, uid)));
205
205
  }
206
206
  renderTranslatedLanguageSection() {
207
- var _a;
207
+ var _a, _b;
208
208
  const uiDataItem = this.getUIDataItem();
209
209
  const uid = this.setting.id;
210
210
  const locale = utils.store.get('currentLanguage');
211
211
  const data = utils.store.get('portalItemResourceT9n');
212
- const label = this.translatedLanguageLabels[this.fieldName];
213
- const value = (_a = data === null || data === void 0 ? void 0 : data[locale]) === null || _a === void 0 ? void 0 : _a[uid];
212
+ const label = (_a = this.translatedLanguageLabels) === null || _a === void 0 ? void 0 : _a[this.fieldName];
213
+ const value = (_b = data === null || data === void 0 ? void 0 : data[locale]) === null || _b === void 0 ? void 0 : _b[uid];
214
214
  const selected = (uiDataItem === null || uiDataItem === void 0 ? void 0 : uiDataItem.selected) ? ` ${CSS$1.selected}` : '';
215
215
  return (index.h("div", { class: `${CSS$1.section}${selected}` }, this.renderItemHeader(utils.EInputType.Translation, label, uid), this.handleInputRender(utils.EInputType.Translation, value, uid)));
216
216
  }
@@ -225,13 +225,14 @@ const InstantAppsLanguageTranslatorItem = class {
225
225
  return content === null || content === void 0 ? void 0 : content.map(contentItem => (contentItem.hasOwnProperty('content') ? this.renderNestedInputs(inputType, contentItem) : this.renderNestedInput(inputType, contentItem)));
226
226
  }
227
227
  renderNestedInput(inputType, contentItem) {
228
+ var _a;
228
229
  const locale = utils.store.get('currentLanguage');
229
230
  const data = utils.store.get('portalItemResourceT9n');
230
231
  const uid = contentItem === null || contentItem === void 0 ? void 0 : contentItem.id;
231
232
  const localeData = data === null || data === void 0 ? void 0 : data[locale];
232
233
  const translatedValue = localeData === null || localeData === void 0 ? void 0 : localeData[uid];
233
234
  const { label, value, id } = contentItem;
234
- const inputLabel = inputType === utils.EInputType.Translation ? this.translatedLanguageLabels[id] : label;
235
+ const inputLabel = inputType === utils.EInputType.Translation ? (_a = this.translatedLanguageLabels) === null || _a === void 0 ? void 0 : _a[id] : label;
235
236
  const isUser = inputType === utils.EInputType.User;
236
237
  const inputValue = isUser ? value : translatedValue;
237
238
  return (index.h("div", { class: CSS$1.nestedInput }, this.renderItemHeader(inputType, inputLabel, uid, contentItem), this.renderInput(inputType, inputValue, uid, contentItem)));
@@ -112,7 +112,7 @@ const printStyling = `
112
112
  flex-flow: row wrap;
113
113
  }
114
114
 
115
- .instant-apps-export-print .esri-widget > *:not(.instant-apps-export-print__scale-bar-container > *) {
115
+ .instant-apps-export-print .esri-widget > *:not(.esri-scale-bar.esri-widget > *) {
116
116
  background: #fff;
117
117
  color: #323232;
118
118
  }
@@ -197,6 +197,10 @@ const printStyling = `
197
197
  left: 15px;
198
198
  }
199
199
 
200
+ .instant-apps-export-print__scale-bar-container .esri-scale-bar__label {
201
+ font-size: 10px;
202
+ }
203
+
200
204
  .instant-apps-export-print__scale-bar-container .esri-scale-bar__bar-container:nth-child(1n+3) {
201
205
  display: none;
202
206
  }
@@ -431,8 +435,7 @@ const InstantAppsExport = class {
431
435
  return (index.h("div", { ref: (el) => (this.printContainerEl = el) }, index.h("div", { class: CSS.print.base, ref: (el) => (this.printEl = el) }, printMap, legend, index.h("div", { class: CSS.print.contentContainer }, popup, extraContent))));
432
436
  }
433
437
  renderPrintMap() {
434
- const scaleBar = this.renderScaleBar();
435
- return (index.h("div", { class: CSS.print.viewContainer, ref: (el) => (this.viewContainerEl = el) }, index.h("div", { class: CSS.print.viewWrapper, ref: (el) => (this.viewWrapperEl = el) }, this.headerTitle ? index.h("instant-apps-header", { titleText: this.headerTitle, backgroundColor: "#fff", textColor: "#323232" }) : null, index.h("img", { class: CSS.print.view, ref: (el) => (this.viewEl = el) }), scaleBar)));
438
+ return (index.h("div", { class: CSS.print.viewContainer, ref: (el) => (this.viewContainerEl = el) }, index.h("div", { class: CSS.print.viewWrapper, ref: (el) => (this.viewWrapperEl = el) }, this.headerTitle ? index.h("instant-apps-header", { titleText: this.headerTitle, backgroundColor: "#fff", textColor: "#323232" }) : null, index.h("img", { class: CSS.print.view, ref: (el) => (this.viewEl = el) }), index.h("div", { class: CSS.print.scaleBarContainer, ref: this.handleScaleBarContainerEl.bind(this) }))));
436
439
  }
437
440
  renderLegend() {
438
441
  return index.h("div", { class: CSS.print.legendContainer, ref: (el) => (this.legendContainerEl = el) });
@@ -440,9 +443,6 @@ const InstantAppsExport = class {
440
443
  renderCompass() {
441
444
  return index.h("div", { class: CSS.print.compassContainer, ref: (el) => (this.compassContainerEl = el) });
442
445
  }
443
- renderScaleBar() {
444
- return index.h("div", { class: CSS.print.scaleBarContainer, ref: (el) => (this.scaleBarContainerEl = el) });
445
- }
446
446
  renderPopup() {
447
447
  return (index.h("div", { class: CSS.print.popupContainer, ref: (el) => (this.popupContainerEl = el) }, index.h("div", { ref: (el) => (this.popupTitleEl = el), class: CSS.print.popupTitle }), index.h("div", { ref: (el) => (this.popupContentEl = el), class: CSS.print.popupContent })));
448
448
  }
@@ -586,7 +586,6 @@ const InstantAppsExport = class {
586
586
  handleWidgetCreation() {
587
587
  this.handleLegendCreation();
588
588
  this.handleCompassCreation();
589
- this.handleScaleBarCreation();
590
589
  }
591
590
  handleLegendCreation() {
592
591
  var _a, _b;
@@ -641,24 +640,12 @@ const InstantAppsExport = class {
641
640
  this.compass = new Compass({ container, view });
642
641
  });
643
642
  }
644
- handleScaleBarCreation() {
645
- var _a, _b;
646
- if (this.showScaleBar && this.includeMap && this.view != null && this.view.type === '2d' && this.scaleBarContainerEl != null) {
647
- const map = this.view.map;
648
- const scaleBarMap = (_b = (_a = this.scaleBar) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.map;
649
- const checkId = (map === null || map === void 0 ? void 0 : map.portalItem.id) === (scaleBarMap === null || scaleBarMap === void 0 ? void 0 : scaleBarMap.portalItem.id) && this.scaleBarContainerEl.innerHTML;
650
- if (!checkId) {
651
- this.updateScaleBar();
652
- }
653
- }
654
- }
655
643
  updateScaleBar() {
656
644
  var _a;
657
645
  (_a = this.view) === null || _a === void 0 ? void 0 : _a.when(async (view) => {
658
646
  var _a;
659
647
  (_a = this.scaleBar) === null || _a === void 0 ? void 0 : _a.destroy();
660
648
  this.scaleBar = null;
661
- this.scaleBarContainerEl.innerHTML = '';
662
649
  const [ScaleBar] = await loadModules.loadModules(['esri/widgets/ScaleBar']);
663
650
  this.scaleBar = new ScaleBar({ container: this.scaleBarContainerEl, unit: 'dual', view });
664
651
  });
@@ -839,7 +826,7 @@ const InstantAppsExport = class {
839
826
  }
840
827
  handleScaleBarSize() {
841
828
  var _a;
842
- if (((_a = this.view) === null || _a === void 0 ? void 0 : _a.type) === '2d') {
829
+ if (this.showScaleBar && ((_a = this.view) === null || _a === void 0 ? void 0 : _a.type) === '2d') {
843
830
  if (this.scaleBarContainerEl != null) {
844
831
  const topBar = this.scaleBarContainerEl.querySelector('.esri-scale-bar__line--top');
845
832
  const bottomBar = this.scaleBarContainerEl.querySelector('.esri-scale-bar__line--bottom');
@@ -849,7 +836,7 @@ const InstantAppsExport = class {
849
836
  }
850
837
  }
851
838
  setScalebarWidth(bar, position) {
852
- if (this.view != null && bar != null && this.screenshot != null) {
839
+ if (bar != null && this.screenshot != null) {
853
840
  const width = this.screenshot.data.width / 2;
854
841
  const barWidth = Number(bar.style.width.replace('px', ''));
855
842
  const widthPercentage = (barWidth / width) * 100;
@@ -861,6 +848,18 @@ const InstantAppsExport = class {
861
848
  (_a = this.screenshotPreview) === null || _a === void 0 ? void 0 : _a.remove();
862
849
  (_b = this.screenshotStyle) === null || _b === void 0 ? void 0 : _b.remove();
863
850
  }
851
+ handleScaleBarContainerEl(el) {
852
+ var _a, _b, _c;
853
+ if (this.showScaleBar && ((_a = this.view) === null || _a === void 0 ? void 0 : _a.type) === '2d') {
854
+ const map = this.view.map;
855
+ const scaleBarMap = (_c = (_b = this.scaleBar) === null || _b === void 0 ? void 0 : _b.view) === null || _c === void 0 ? void 0 : _c.map;
856
+ this.scaleBarContainerEl = el;
857
+ const checkId = (map === null || map === void 0 ? void 0 : map.portalItem.id) === (scaleBarMap === null || scaleBarMap === void 0 ? void 0 : scaleBarMap.portalItem.id);
858
+ if (!checkId) {
859
+ this.updateScaleBar();
860
+ }
861
+ }
862
+ }
864
863
  get el() { return index.getElement(this); }
865
864
  static get watchers() { return {
866
865
  "includeMap": ["watchIncludeMap"]
@@ -15,7 +15,7 @@ const styles = require('./styles-c9e1375a.js');
15
15
  require('./esri-loader-a91c0ec1.js');
16
16
  require('./_commonjsHelpers-384729db.js');
17
17
 
18
- const instantAppsHeaderCss = ":host{--instant-apps-header-height:auto;--instant-apps-header-min-height:50px;--instant-apps-header-title-text-link-decoration:underline;--instant-apps-header-height--logo-scale--s:55px;--instant-apps-header-logo-width--logo-scale--s:35px;--instant-apps-header-logo-height--logo-scale--s:35px;--instant-apps-header-height--logo-scale--m:70px;--instant-apps-header-logo-width--logo-scale--m:50px;--instant-apps-header-logo-height--logo-scale--m:50px;--instant-apps-header-height--logo-scale--l:80px;--instant-apps-header-logo-width--logo-scale--l:60px;--instant-apps-header-logo-height--logo-scale--l:60px;width:100%}:host .instant-apps-header--standard{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;width:100%;height:var(--instant-apps-header-height);background-color:var(--calcite-color-foreground-1);color:var(--calcite-color-text-1);font-family:var(--calcite-sans-family);min-height:var(--instant-apps-header-min-height)}:host .instant-apps-header--standard .instant-apps-header__header-container{display:flex;align-items:center;width:100%;height:inherit}:host .instant-apps-header--standard .instant-apps-header__header-container slot{display:flex;height:inherit}:host .instant-apps-header--standard .instant-apps-header__header-container ::slotted(*){display:flex;min-height:var(--instant-apps-header-min-height);height:var(--instant-apps-header-height)}:host .instant-apps-header--standard .instant-apps-header__header-container ::slotted(*) calcite-button{height:100%}:host .instant-apps-header--standard .instant-apps-header__header-content{box-sizing:border-box;display:flex;align-items:center;width:100%;min-width:0;height:inherit;padding:5px 10px}:host .instant-apps-header--standard .instant-apps-header__header-content a{display:flex;align-items:center;-webkit-text-decoration:var(--instant-apps-header-title-text-link-decoration);text-decoration:var(--instant-apps-header-title-text-link-decoration)}:host .instant-apps-header--standard .instant-apps-header__header-content a img{padding-right:0}:host .instant-apps-header--standard .instant-apps-header__header-content img{margin:10px}:host .instant-apps-header--standard .instant-apps-header__header-content h1{margin:0;font-size:1.25rem;color:var(--calcite-color-text-1);font-weight:430;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host .instant-apps-header--standard .instant-apps-header__header-content #infoButton{margin-inline-start:10px}:host .instant-apps-header--standard .instant-apps-header__header-content--center{justify-content:center}:host .instant-apps-header--standard .instant-apps-header__header-content--right{justify-content:end}:host .instant-apps-header__logo-height--s{height:var(--instant-apps-header-height--logo-scale--s)}:host .instant-apps-header__logo-height--s .instant-apps-header__header-content h1{font-size:1.125rem}:host .instant-apps-header__logo-scale--s{width:var(--instant-apps-header-logo-width--logo-scale--s);height:var(--instant-apps-header-logo-height--logo-scale--s)}:host .instant-apps-header__logo-height--m{height:var(--instant-apps-header-height--logo-scale--m)}:host .instant-apps-header__logo-scale--m{width:var(--instant-apps-header-logo-width--logo-scale--m);height:var(--instant-apps-header-logo-height--logo-scale--m)}:host .instant-apps-header__logo-height--l{height:var(--instant-apps-header-height--logo-scale--l)}:host .instant-apps-header__logo-height--l .instant-apps-header__header-content h1{font-size:1.375rem}:host .instant-apps-header__logo-scale--l{width:var(--instant-apps-header-logo-width--logo-scale--l);height:var(--instant-apps-header-logo-height--logo-scale--l)}:host .instant-apps-header__logo-height--s,:host .instant-apps-header__logo-height--m,:host .instant-apps-header__logo-height--l{padding-right:10px}:host .instant-apps-header--rtl.instant-apps-header__logo-height--s,:host .instant-apps-header--rtl.instant-apps-header__logo-height--m,:host .instant-apps-header--rtl.instant-apps-header__logo-height--l{padding-right:0;padding-left:10px}";
18
+ const instantAppsHeaderCss = ":host{--instant-apps-header-height:auto;--instant-apps-header-min-height:50px;--instant-apps-header-title-text-link-decoration:underline;--instant-apps-header-height--logo-scale--s:55px;--instant-apps-header-logo-width--logo-scale--s:35px;--instant-apps-header-logo-height--logo-scale--s:35px;--instant-apps-header-height--logo-scale--m:70px;--instant-apps-header-logo-width--logo-scale--m:50px;--instant-apps-header-logo-height--logo-scale--m:50px;--instant-apps-header-height--logo-scale--l:80px;--instant-apps-header-logo-width--logo-scale--l:60px;--instant-apps-header-logo-height--logo-scale--l:60px;width:100%}:host .image.image_resized img{width:100%}:host .instant-apps-header--standard{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;width:100%;height:var(--instant-apps-header-height);background-color:var(--calcite-color-foreground-1);color:var(--calcite-color-text-1);font-family:var(--calcite-sans-family);min-height:var(--instant-apps-header-min-height)}:host .instant-apps-header--standard .instant-apps-header__header-container{display:flex;align-items:center;width:100%;height:inherit}:host .instant-apps-header--standard .instant-apps-header__header-container slot{display:flex;height:inherit}:host .instant-apps-header--standard .instant-apps-header__header-container ::slotted(*){display:flex;min-height:var(--instant-apps-header-min-height);height:var(--instant-apps-header-height)}:host .instant-apps-header--standard .instant-apps-header__header-container ::slotted(*) calcite-button{height:100%}:host .instant-apps-header--standard .instant-apps-header__header-content{box-sizing:border-box;display:flex;align-items:center;width:100%;min-width:0;height:inherit;padding:5px 10px}:host .instant-apps-header--standard .instant-apps-header__header-content a{display:flex;align-items:center;-webkit-text-decoration:var(--instant-apps-header-title-text-link-decoration);text-decoration:var(--instant-apps-header-title-text-link-decoration)}:host .instant-apps-header--standard .instant-apps-header__header-content a img{padding-right:0}:host .instant-apps-header--standard .instant-apps-header__header-content img{margin:10px}:host .instant-apps-header--standard .instant-apps-header__header-content h1{margin:0;font-size:1.25rem;color:var(--calcite-color-text-1);font-weight:430;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host .instant-apps-header--standard .instant-apps-header__header-content #infoButton{margin-inline-start:10px}:host .instant-apps-header--standard .instant-apps-header__header-content--center{justify-content:center}:host .instant-apps-header--standard .instant-apps-header__header-content--right{justify-content:end}:host .instant-apps-header__logo-height--s{height:var(--instant-apps-header-height--logo-scale--s)}:host .instant-apps-header__logo-height--s .instant-apps-header__header-content h1{font-size:1.125rem}:host .instant-apps-header__logo-scale--s{width:var(--instant-apps-header-logo-width--logo-scale--s);height:var(--instant-apps-header-logo-height--logo-scale--s)}:host .instant-apps-header__logo-height--m{height:var(--instant-apps-header-height--logo-scale--m)}:host .instant-apps-header__logo-scale--m{width:var(--instant-apps-header-logo-width--logo-scale--m);height:var(--instant-apps-header-logo-height--logo-scale--m)}:host .instant-apps-header__logo-height--l{height:var(--instant-apps-header-height--logo-scale--l)}:host .instant-apps-header__logo-height--l .instant-apps-header__header-content h1{font-size:1.375rem}:host .instant-apps-header__logo-scale--l{width:var(--instant-apps-header-logo-width--logo-scale--l);height:var(--instant-apps-header-logo-height--logo-scale--l)}:host .instant-apps-header__logo-height--s,:host .instant-apps-header__logo-height--m,:host .instant-apps-header__logo-height--l{padding-right:10px}:host .instant-apps-header--rtl.instant-apps-header__logo-height--s,:host .instant-apps-header--rtl.instant-apps-header__logo-height--m,:host .instant-apps-header--rtl.instant-apps-header__logo-height--l{padding-right:0;padding-left:10px}";
19
19
 
20
20
  const CSS = {
21
21
  base: 'instant-apps-header--standard',
@@ -33,7 +33,7 @@ const InstantAppsLanguageSwitcher = class {
33
33
  this.t9nData = null;
34
34
  }
35
35
  async componentWillLoad() {
36
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
36
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
37
37
  const [intl, WebMap, request] = await loadModules.loadModules(['esri/intl', 'esri/WebMap', 'esri/request']);
38
38
  this.intl = intl;
39
39
  this.request = request;
@@ -65,8 +65,8 @@ const InstantAppsLanguageSwitcher = class {
65
65
  }
66
66
  if (this.view) {
67
67
  const webmap = this.view.map;
68
- this.defaultWebMapId = webmap.portalItem.id;
69
- const translatedWebmap = (_l = (_k = (_j = this.locales) === null || _j === void 0 ? void 0 : _j.filter(localeItem => (localeItem === null || localeItem === void 0 ? void 0 : localeItem.webmap) && (localeItem === null || localeItem === void 0 ? void 0 : localeItem.webmap) !== this.defaultWebMapId && (localeItem === null || localeItem === void 0 ? void 0 : localeItem.locale) === this.selectedLanguage)) === null || _k === void 0 ? void 0 : _k[0]) === null || _l === void 0 ? void 0 : _l.webmap;
68
+ this.defaultWebMapId = (_j = webmap === null || webmap === void 0 ? void 0 : webmap.portalItem) === null || _j === void 0 ? void 0 : _j.id;
69
+ const translatedWebmap = (_m = (_l = (_k = this.locales) === null || _k === void 0 ? void 0 : _k.filter(localeItem => (localeItem === null || localeItem === void 0 ? void 0 : localeItem.webmap) && (localeItem === null || localeItem === void 0 ? void 0 : localeItem.webmap) !== this.defaultWebMapId && (localeItem === null || localeItem === void 0 ? void 0 : localeItem.locale) === this.selectedLanguage)) === null || _l === void 0 ? void 0 : _l[0]) === null || _m === void 0 ? void 0 : _m.webmap;
70
70
  if (translatedWebmap) {
71
71
  this.view.map = new WebMap({
72
72
  portalItem: {
@@ -166,7 +166,7 @@ const InstantAppsLanguageTranslator = class {
166
166
  return (index.h("instant-apps-language-translator-search", { onSuggestionSelected: this.onSuggestionSelect.bind(this), t9nPlaceholder: (_a = this.messages) === null || _a === void 0 ? void 0 : _a.searchPlaceholder }));
167
167
  }
168
168
  renderTrailingTopBarSection() {
169
- return index.h("div", { class: CSS.topBarSection }, this.renderLanguageSelection());
169
+ return (index.h("div", { class: CSS.topBarSection }, this.renderLanguageSelection(), index.h("slot", { name: "translation-custom-action" })));
170
170
  }
171
171
  renderLanguageSelection() {
172
172
  var _a;