@vertigis/workflow 5.40.1 → 5.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/activities/arcgis/ArcadeScript.d.ts +5 -1
  2. package/activities/arcgis/ArcadeScript.js +1 -1
  3. package/activities/arcgis/CreateFeatureSet.d.ts +1 -0
  4. package/activities/arcgis/CreateFeatureSet.js +1 -1
  5. package/activities/arcgis/MapProvider.js +1 -1
  6. package/activities/arcgis/QueryTask.d.ts +4 -2
  7. package/activities/arcgis/QueryTask.js +1 -1
  8. package/activities/arcgis/RunPrint.d.ts +1 -0
  9. package/activities/arcgis/RunPrint.js +1 -1
  10. package/activities/arcgis/RunReport.d.ts +1 -0
  11. package/activities/arcgis/RunReport.js +1 -1
  12. package/activities/arcgis/SymbolFromJson.js +1 -1
  13. package/activities/arcgis/TypeChecking.d.ts +1 -2
  14. package/activities/core/Subworkflow.d.ts +2 -0
  15. package/activities/ui/Alert.d.ts +6 -3
  16. package/activities/ui/Alert.js +1 -1
  17. package/activities/ui/Confirm.d.ts +6 -3
  18. package/activities/ui/Confirm.js +1 -1
  19. package/activities/ui/DialogContent.d.ts +24 -0
  20. package/activities/ui/DialogContent.js +1 -0
  21. package/activities/ui/DialogProvider.d.ts +19 -0
  22. package/activities/ui/DialogProvider.js +1 -0
  23. package/activities/ui/Prompt.d.ts +7 -4
  24. package/activities/ui/Prompt.js +1 -1
  25. package/execution/util.js +1 -1
  26. package/forms/FormDefinition.d.ts +1 -1
  27. package/forms/FormHost.d.ts +1 -3
  28. package/forms/components/AccordionGroup.js +1 -1
  29. package/forms/components/AutoComplete.d.ts +1 -1
  30. package/forms/components/AutoComplete.js +1 -1
  31. package/forms/components/ButtonBar.d.ts +1 -1
  32. package/forms/components/ButtonBar.js +1 -1
  33. package/forms/components/CheckBox.d.ts +1 -1
  34. package/forms/components/CheckBox.js +1 -1
  35. package/forms/components/CheckGroup.d.ts +1 -1
  36. package/forms/components/CheckGroup.js +1 -1
  37. package/forms/components/Custom.d.ts +1 -1
  38. package/forms/components/Custom.js +1 -1
  39. package/forms/components/DatePicker.d.ts +1 -1
  40. package/forms/components/DatePicker.js +1 -1
  41. package/forms/components/DateRangePicker.d.ts +1 -1
  42. package/forms/components/DateRangePicker.js +1 -1
  43. package/forms/components/DateTimePicker.d.ts +1 -1
  44. package/forms/components/DateTimePicker.js +1 -1
  45. package/forms/components/DropDownList.d.ts +1 -1
  46. package/forms/components/DropDownList.js +1 -1
  47. package/forms/components/FilePicker.d.ts +4 -1
  48. package/forms/components/FilePicker.js +1 -1
  49. package/forms/components/Form.d.ts +1 -1
  50. package/forms/components/Form.js +1 -1
  51. package/forms/components/FormElement.d.ts +37 -0
  52. package/forms/components/FormElement.js +1 -0
  53. package/forms/components/GeometryPicker.d.ts +4 -1
  54. package/forms/components/GeometryPicker.js +1 -1
  55. package/forms/components/HorizontalRule.d.ts +1 -1
  56. package/forms/components/HorizontalRule.js +1 -1
  57. package/forms/components/Image.d.ts +1 -1
  58. package/forms/components/Image.js +1 -1
  59. package/forms/components/ItemPicker.d.ts +1 -1
  60. package/forms/components/ItemPicker.js +1 -1
  61. package/forms/components/ListBox.d.ts +4 -1
  62. package/forms/components/ListBox.js +1 -1
  63. package/forms/components/Markdown.d.ts +1 -3
  64. package/forms/components/Markdown.js +1 -1
  65. package/forms/components/Number.d.ts +1 -1
  66. package/forms/components/Number.js +1 -1
  67. package/forms/components/NumberRangeSlider.d.ts +1 -1
  68. package/forms/components/NumberRangeSlider.js +1 -1
  69. package/forms/components/NumberSlider.d.ts +1 -1
  70. package/forms/components/NumberSlider.js +1 -1
  71. package/forms/components/RadioGroup.d.ts +1 -1
  72. package/forms/components/RadioGroup.js +1 -1
  73. package/forms/components/Scanner.d.ts +1 -1
  74. package/forms/components/Scanner.js +1 -1
  75. package/forms/components/Section.d.ts +1 -1
  76. package/forms/components/Section.js +1 -1
  77. package/forms/components/Signature.d.ts +1 -1
  78. package/forms/components/Signature.js +1 -1
  79. package/forms/components/SignatureDialog.d.ts +3 -1
  80. package/forms/components/SignatureDialog.js +1 -1
  81. package/forms/components/Sketch.d.ts +1 -1
  82. package/forms/components/Sketch.js +1 -1
  83. package/forms/components/SketchDialog.d.ts +3 -8
  84. package/forms/components/SketchDialog.js +1 -1
  85. package/forms/components/TabGroup.js +1 -1
  86. package/forms/components/Text.d.ts +1 -1
  87. package/forms/components/Text.js +1 -1
  88. package/forms/components/TextArea.d.ts +1 -1
  89. package/forms/components/TextArea.js +1 -1
  90. package/forms/components/TextBox.d.ts +1 -1
  91. package/forms/components/TextBox.js +1 -1
  92. package/forms/components/TimePicker.d.ts +1 -1
  93. package/forms/components/TimePicker.js +1 -1
  94. package/forms/{common.d.ts → components/common.d.ts} +13 -28
  95. package/forms/components/common.js +1 -0
  96. package/forms/dateUtilities.d.ts +10 -5
  97. package/forms/dateUtilities.js +1 -1
  98. package/forms/hostContext.d.ts +4 -0
  99. package/forms/hostContext.js +1 -0
  100. package/forms/index.d.ts +0 -21
  101. package/forms/numberUtilities.d.ts +1 -1
  102. package/forms/numberUtilities.js +1 -1
  103. package/forms/presenter.js +1 -1
  104. package/forms/utils.d.ts +13 -0
  105. package/forms/utils.js +1 -1
  106. package/libs/version.d.ts +1 -1
  107. package/libs/version.js +1 -1
  108. package/licensing/LicenseChecker.js +1 -1
  109. package/package.json +8 -7
  110. package/ui/UIService.d.ts +23 -0
  111. package/ui/UIService.js +1 -0
  112. package/forms/FormElement.d.ts +0 -23
  113. package/forms/FormElement.js +0 -1
  114. package/forms/common.js +0 -1
@@ -5,6 +5,10 @@ export interface ArcadeScriptInputs {
5
5
  script: string;
6
6
  /** The parameters to pass to the Arcade script. */
7
7
  parameters?: Record<string, any>;
8
+ /** The profile describing the types of the parameters. */
9
+ profile?: __esri.Profile | "feature-reduction-popup" | "feature-reduction-popup-element" | "feature-z" | "field-calculation" | "form-calculation" | "form-constraint" | "labeling" | "popup" | "popup-element" | "visualization" | string;
10
+ /** The spatial reference to use when executing the Arcade script. */
11
+ spatialReference?: __esri.SpatialReference;
8
12
  }
9
13
  /** Defines outputs for the Arcade script. */
10
14
  export interface ArcadeScriptOutputs {
@@ -13,5 +17,5 @@ export interface ArcadeScriptOutputs {
13
17
  export declare class ArcadeScript implements IActivityHandler {
14
18
  static readonly action = "gcx:wf:arcgis::ArcadeScript";
15
19
  static readonly suite = "gcx:wf:builtin";
16
- execute(inputs: ArcadeScriptInputs): ArcadeScriptOutputs;
20
+ execute(inputs: ArcadeScriptInputs): Promise<ArcadeScriptOutputs>;
17
21
  }
@@ -1 +1 @@
1
- import{parseAndExecuteScript}from"@arcgis/core/arcade/arcade";import{validation}from"../../Validation.js";class ArcadeScript{execute(r){var a=validation.string("script",r.script,validation.never);const t={};var e={vars:t};if(r.parameters)for(const i in r.parameters){var c=r.parameters[i];t["$"+i]=c}return{result:parseAndExecuteScript(a,e,null)}}}ArcadeScript.action="gcx:wf:arcgis::ArcadeScript",ArcadeScript.suite="gcx:wf:builtin";export{ArcadeScript};
1
+ import*as arcade from"@arcgis/core/arcade";import{validation}from"../../Validation.js";class ArcadeScript{async execute(e){var a,r,t=validation.string("script",e.script,validation.never),{parameters:c,spatialReference:i}=e;let s=e["profile"];switch(typeof s){case"string":s=arcade.createArcadeProfile(s);break;case"undefined":s={variables:[]}}const n={};for([a,r]of Object.entries(c||{})){const d="$"===a[0]?a:`$${a}`;n[d]=r,s.variables.some(e=>e.name===d)||s.variables.push({name:d,type:"text"})}const o=await arcade.createArcadeExecutor(t,s);return{result:await o.executeAsync(n,{spatialReference:i})}}}ArcadeScript.action="gcx:wf:arcgis::ArcadeScript",ArcadeScript.suite="gcx:wf:builtin";export{ArcadeScript};
@@ -3,6 +3,7 @@ import type { IActivityHandler, IActivityContext } from "../../IActivityHandler"
3
3
  export interface CreateFeatureSetInputs {
4
4
  geometries?: __esri.Geometry | __esri.Geometry[];
5
5
  features?: __esri.Graphic | __esri.Graphic[];
6
+ fields?: __esri.FieldProperties[];
6
7
  }
7
8
  /** Defines outputs for the Create Feature Set activity. */
8
9
  export interface CreateFeatureSetOutputs {
@@ -1 +1 @@
1
- import Graphic from"@arcgis/core/Graphic";import FeatureSet from"@arcgis/core/rest/support/FeatureSet";import{validation}from"../../Validation.js";class CreateFeatureSet{async execute(e,t){var r=validation.array("geometry",e.geometries,[]).map(e=>new Graphic({geometry:e})),e=validation.array("feature",e.features,[]);const a=new FeatureSet({features:[...r,...e]});for(const o of a.features)if(o?.geometry?.type){a.geometryType=o.geometry.type;break}return{featureSet:a}}}CreateFeatureSet.action="gcx:wf:arcgis::CreateFeatureSet",CreateFeatureSet.suite="gcx:wf:builtin";export{CreateFeatureSet};
1
+ import Graphic from"@arcgis/core/Graphic";import FeatureSet from"@arcgis/core/rest/support/FeatureSet";import{validation}from"../../Validation.js";class CreateFeatureSet{async execute(e,t){var r=validation.array("geometry",e.geometries,[]).map(e=>new Graphic({geometry:e})),a=validation.array("feature",e.features,[]),e=validation.array("fields",e.fields,[]);const i=new FeatureSet({features:[...r,...a],fields:e});for(const o of i.features)if(o?.geometry?.type){i.geometryType=o.geometry.type;break}return{featureSet:i}}}CreateFeatureSet.action="gcx:wf:arcgis::CreateFeatureSet",CreateFeatureSet.suite="gcx:wf:builtin";export{CreateFeatureSet};
@@ -1 +1 @@
1
- import PopupTemplate from"@arcgis/core/PopupTemplate";import SpatialReference from"@arcgis/core/geometry/SpatialReference";import GraphicsLayer from"@arcgis/core/layers/GraphicsLayer";import*as TypeChecking from"./TypeChecking.js";import{extentOf}from"./tools.js";class MapProvider{static getOutSR(e){return"number"==typeof e?new SpatialReference({wkid:e}):"string"==typeof e?new SpatialReference({wkt:e}):e}static create(){return new this(this)}static register(e){e.factories.push(e=>this.type===e?this:void 0)}constructor(e,i,r){null!=i&&(this.map=i.map,this.view=i),this.mapName=r,this.type=e}loadMap(){}loadView(){const e=this.view;if(void 0!==e&&null!==e){if(e.isFulfilled())return Promise.resolve();return e.when(()=>{})}}loadLayer(){const e=this.layer||void 0;if(void 0!==e){if(e.loaded)return Promise.resolve();var i=e.loadError||void 0;return void 0!==i?Promise.reject(i):e.load().then(e=>{})}}load(){return this.loadLayer()||this.loadView()||this.loadMap()||Promise.resolve()}getExtent(){var e=this.view;if(null!=e){var i=e.extent;if(null!=i)return i}i=this.map;if(null!=i){i=i.extent;if(null!=i)return i}}getCenter(){var e=this.view;if(null!=e){var i=e.center;if(null!=i)return i}i=this.map||void 0;if(void 0!==i){i=i.extent;if(null!=i)return i.center}}getScale(){var e=this.view;if(null!=e){e=e.scale;if("number"==typeof e)return e}}getSpatialReference(){var e=this.view;if(null!=e)return e.spatialReference}getViewpoint(){var e=this.view;if(null!=e)return e.viewpoint}setExtent(e,i){let r;e=extentOf(e)||void 0;void 0!==e&&(r=e.center);const t=this.view||void 0;if(void 0!==t){if(void 0!==r&&"number"==typeof i)return t.goTo({center:r,scale:i});if(void 0!==e)return t.goTo(e);if(void 0!==r)return t.goTo(r)}return Promise.resolve()}setViewpoint(e,i){let r;e=extentOf(e)||void 0;void 0!==e&&(r=e.center);const t=this.view;if(void 0!==t&&null!==t){if(void 0!==r&&null!=i)return t.goTo(i).then(e=>t.goTo(r));if(void 0!==e)return t.goTo(e);if(void 0!==r)return t.goTo(r)}return Promise.resolve()}findLayer(i,e){if(null==e){const r=this.map;if(void 0!==r&&null!==r){const t=i.toString();let e=r.findLayerById(t)||void 0;if(void 0===e&&(e=r.allLayers.find(e=>e.title===t)||void 0),void 0!==e){const o=this.clone();return o.layer=e,o.sublayer=void 0,o}}}else{i=new Number(i).valueOf();if(TypeChecking.isLayerWithSublayers(e)){i=e.findSublayerById(i);if(i){const n=this.clone();return n.layer=e,n.sublayer=i,n}}}}findTable(e,i){if(e){const r=this.map;if(r){const t=e.toLowerCase();e=r.allTables.find(e=>void 0!==e.id&&null!==e.id&&e.id.toLowerCase()===t);if(e){const o=this.clone();return o.layer=e,o.sublayer=void 0,o}}}}formatSubLayerId(e){return e}getVisible(){var e=this.layer||void 0;if(void 0===e)return!1;var i=this.sublayer||void 0;return(void 0!==i?i:e).visible}setVisible(e){const i=this.layer||void 0;if(void 0===i)return!1;{const r=this.sublayer||void 0;return void 0!==r?(r.visible=!0===e,r.visible===(!0===e)):(i.visible=!0===e,i.visible===(!0===e))}}getProperty(e){var i=this.layer;if(null!=i)return i[e]}setProperty(e,i){const r=this.layer||void 0;return void 0!==r&&(r.set(e,i),this.getProperty(e)===i)}getDefinitionExpression(){var e=this.layer||void 0;if(void 0!==e){var i=this.sublayer||void 0;if(void 0!==i){if(TypeChecking.isSublayerWithDefinitionExpression(i)){i=i.definitionExpression;return"string"==typeof i?i:void 0}return}if(TypeChecking.isLayerWithDefinitionExpression(e))return e.definitionExpression}}setDefinitionExpression(e){const i=this.layer||void 0;if(void 0!==i){const r=this.sublayer||void 0;if(void 0!==r)return TypeChecking.isSublayerWithDefinitionExpression(r)?(r.definitionExpression=e,r.definitionExpression===e):void 0;if(TypeChecking.isLayerWithDefinitionExpression(i))return i.definitionExpression=e,i.definitionExpression===e}}clearFeatures(){const e=this.layer;return!(void 0===e||null===e||!TypeChecking.isGraphicsLayer(e))&&(e.removeAll(),!0)}removeFeatures(e){const i=this.layer;if(void 0!==i&&null!==i&&TypeChecking.isGraphicsLayer(i))return i.removeMany(e),!0}getFeatures(){const e=this.layer||void 0;if(void 0!==e&&TypeChecking.isGraphicsLayer(e))return e.graphics.toArray()}addFeatures(e,i){const r=this.map||void 0;if(void 0===r)return[];let t=this.layer||void 0;return void 0===t&&(t=new GraphicsLayer({id:i.toString()}),r.add(t)),TypeChecking.isGraphicsLayer(t)&&t.addMany(e),TypeChecking.isGraphicsLayer(t)?t.graphics.toArray():[]}removeLayer(){const e=this.map||void 0;if(void 0===e)return!1;var i=this.layer||void 0;return void 0!==i&&(e.remove(i),!0)}redraw(){const e=this.layer||void 0;void 0!==e&&TypeChecking.isLayerWithRedraw(e)&&e.redraw()}clone(){const e=new this.type(this.type,this.view||this.map,this.mapName);return e.layer=this.layer,e.sublayer=this.sublayer,e}static setPopup(e,i){if(i&&e){var r=new PopupTemplate(e);for(const t of i)t.popupTemplate=r}}setPopup(e){const i=this.layer;i&&e&&(e=new PopupTemplate(e),TypeChecking.isLayerWithPopupTemplate(i)&&(i.popupTemplate=e))}showPopup(e){if(e&&e.length){var i=e.filter(e=>e.geometry)[0],i=i?extentOf([i.geometry]):this.map.extent;const r=this.view?.popup;r&&r.open({features:e,location:i?.center})}}}MapProvider.type="5B3643D6-5FF4-4B30-B439-39C70AD68DE3:MapProvider";export{MapProvider};
1
+ import PopupTemplate from"@arcgis/core/PopupTemplate";import SpatialReference from"@arcgis/core/geometry/SpatialReference";import GraphicsLayer from"@arcgis/core/layers/GraphicsLayer";import SubtypeGroupLayer from"@arcgis/core/layers/SubtypeGroupLayer";import*as TypeChecking from"./TypeChecking.js";import{extentOf}from"./tools.js";class MapProvider{static getOutSR(e){return"number"==typeof e?new SpatialReference({wkid:e}):"string"==typeof e?new SpatialReference({wkt:e}):e}static create(){return new this(this)}static register(e){e.factories.push(e=>this.type===e?this:void 0)}constructor(e,i,r){null!=i&&(this.map=i.map,this.view=i),this.mapName=r,this.type=e}loadMap(){}loadView(){const e=this.view;if(void 0!==e&&null!==e){if(e.isFulfilled())return Promise.resolve();return e.when(()=>{})}}loadLayer(){const e=this.layer||void 0;if(void 0!==e){if(e.loaded)return Promise.resolve();var i=e.loadError||void 0;return void 0!==i?Promise.reject(i):e.load().then(e=>{})}}load(){return this.loadLayer()||this.loadView()||this.loadMap()||Promise.resolve()}getExtent(){var e=this.view;if(null!=e){var i=e.extent;if(null!=i)return i}i=this.map;if(null!=i){i=i.extent;if(null!=i)return i}}getCenter(){var e=this.view;if(null!=e){var i=e.center;if(null!=i)return i}i=this.map||void 0;if(void 0!==i){i=i.extent;if(null!=i)return i.center}}getScale(){var e=this.view;if(null!=e){e=e.scale;if("number"==typeof e)return e}}getSpatialReference(){var e=this.view;if(null!=e)return e.spatialReference}getViewpoint(){var e=this.view;if(null!=e)return e.viewpoint}setExtent(e,i){let r;e=extentOf(e)||void 0;void 0!==e&&(r=e.center);const t=this.view||void 0;if(void 0!==t){if(void 0!==r&&"number"==typeof i)return t.goTo({center:r,scale:i});if(void 0!==e)return t.goTo(e);if(void 0!==r)return t.goTo(r)}return Promise.resolve()}setViewpoint(e,i){let r;e=extentOf(e)||void 0;void 0!==e&&(r=e.center);const t=this.view;if(void 0!==t&&null!==t){if(void 0!==r&&null!=i)return t.goTo(i).then(e=>t.goTo(r));if(void 0!==e)return t.goTo(e);if(void 0!==r)return t.goTo(r)}return Promise.resolve()}findLayer(i,r){if(null==r){const t=this.map;if(void 0!==t&&null!==t){const o=i.toString();let e=t.findLayerById(o)||void 0;if(void 0===e&&(e=t.allLayers.find(e=>e.title===o)||void 0),void 0!==e){const n=this.clone();return n.layer=e,n.sublayer=void 0,n}}}else{i=new Number(i).valueOf();let e;if(r instanceof SubtypeGroupLayer?e=r.findSublayerForSubtypeCode(i):TypeChecking.isLayerWithSublayers(r)&&(e=r.findSublayerById(i)),e){const s=this.clone();return s.layer=r,s.sublayer=e,s}}}findTable(e,i){if(e){const r=this.map;if(r){const t=e.toLowerCase();e=r.allTables.find(e=>void 0!==e.id&&null!==e.id&&e.id.toLowerCase()===t);if(e){const o=this.clone();return o.layer=e,o.sublayer=void 0,o}}}}formatSubLayerId(e){return e}getVisible(){var e=this.layer||void 0;if(void 0===e)return!1;var i=this.sublayer||void 0;return(void 0!==i?i:e).visible}setVisible(e){const i=this.layer||void 0;if(void 0===i)return!1;{const r=this.sublayer||void 0;return void 0!==r?(r.visible=!0===e,r.visible===(!0===e)):(i.visible=!0===e,i.visible===(!0===e))}}getProperty(e){var i=this.layer;if(null!=i)return i[e]}setProperty(e,i){const r=this.layer||void 0;return void 0!==r&&(r.set(e,i),this.getProperty(e)===i)}getDefinitionExpression(){var e=this.layer||void 0;if(void 0!==e){var i=this.sublayer||void 0;if(void 0!==i){if(TypeChecking.isSublayerWithDefinitionExpression(i)){i=i.definitionExpression;return"string"==typeof i?i:void 0}return}if(TypeChecking.isLayerWithDefinitionExpression(e))return e.definitionExpression}}setDefinitionExpression(e){const i=this.layer||void 0;if(void 0!==i){const r=this.sublayer||void 0;if(void 0!==r)return TypeChecking.isSublayerWithDefinitionExpression(r)?(r.definitionExpression=e,r.definitionExpression===e):void 0;if(TypeChecking.isLayerWithDefinitionExpression(i))return i.definitionExpression=e,i.definitionExpression===e}}clearFeatures(){const e=this.layer;return!(void 0===e||null===e||!TypeChecking.isGraphicsLayer(e))&&(e.removeAll(),!0)}removeFeatures(e){const i=this.layer;if(void 0!==i&&null!==i&&TypeChecking.isGraphicsLayer(i))return i.removeMany(e),!0}getFeatures(){const e=this.layer||void 0;if(void 0!==e&&TypeChecking.isGraphicsLayer(e))return e.graphics.toArray()}addFeatures(e,i){const r=this.map||void 0;if(void 0===r)return[];let t=this.layer||void 0;return void 0===t&&(t=new GraphicsLayer({id:i.toString()}),r.add(t)),TypeChecking.isGraphicsLayer(t)&&t.addMany(e),TypeChecking.isGraphicsLayer(t)?t.graphics.toArray():[]}removeLayer(){const e=this.map||void 0;if(void 0===e)return!1;var i=this.layer||void 0;return void 0!==i&&(e.remove(i),!0)}redraw(){const e=this.layer||void 0;void 0!==e&&TypeChecking.isLayerWithRedraw(e)&&e.redraw()}clone(){const e=new this.type(this.type,this.view||this.map,this.mapName);return e.layer=this.layer,e.sublayer=this.sublayer,e}static setPopup(e,i){if(i&&e){var r=new PopupTemplate(e);for(const t of i)t.popupTemplate=r}}setPopup(e){const i=this.layer;i&&e&&(e=new PopupTemplate(e),TypeChecking.isLayerWithPopupTemplate(i)&&(i.popupTemplate=e))}showPopup(e){if(e&&e.length){var i=e.filter(e=>e.geometry)[0],i=i?extentOf([i.geometry]):this.map.extent;const r=this.view?.popup;r&&r.open({features:e,location:i?.center})}}}MapProvider.type="5B3643D6-5FF4-4B30-B439-39C70AD68DE3:MapProvider";export{MapProvider};
@@ -14,13 +14,15 @@ export interface QueryTaskInputs {
14
14
  geometry?: __esri.Geometry;
15
15
  /** If true, each feature in the resulting Feature Set includes the geometry. Set to false (default) if you do not plan to include highlighted features on a map since the geometry takes up a significant portion of the response. */
16
16
  returnGeometry?: boolean;
17
+ /** If true, the result will contain distinct values based on the fields specified in the Output Fields property. Only applies if supportsAdvancedQueries property of the layer or table is true. Requires ArcGIS Server 10.1.1+. */
18
+ returnDistinctValues?: boolean;
19
+ returnZ?: boolean;
20
+ returnM?: boolean;
17
21
  /** The spatial reference for the returned geometry. If not specified, the geometry is returned in the spatial reference of the service being queried. */
18
22
  outSpatialReference?: number | string | __esri.SpatialReference;
19
23
  outFields?: string | string[];
20
24
  /** The sorting order for the results. Specify ASC (ascending) or DESC (descending) after the field name to control the order. The default order is ASC. Order By Fields is only supported on dynamic layers and tables where supportsAdvancedQueries is true. Requires ArcGIS Server 10.1+. */
21
25
  orderByFields?: string | string[];
22
- /** If true, the result will contain distinct values based on the fields specified in the Output Fields property. Only applies if supportsAdvancedQueries property of the layer or table is true. Requires ArcGIS Server 10.1.1+. */
23
- returnDistinctValues?: boolean;
24
26
  /** The version of the geodatabase on which the query will be performed. This property applies to feature services. When querying dynamic layers, include gdbVersion in the layer definition rather than supplying it here. Requires ArcGIS Server 10.0+. */
25
27
  gdbVersion?: string;
26
28
  /** Distance to buffer input geometry. Query results will include features within the distance specified of the query geometry. Valid only for feature services hosted on ArcGIS Online. */
@@ -1 +1 @@
1
- import{__decorate}from"tslib";import{executeQueryJSON}from"@arcgis/core/rest/query";import Query from"@arcgis/core/rest/support/Query";import StatisticDefinition from"@arcgis/core/rest/support/StatisticDefinition";import{activate}from"../../Hooks.js";import{validation}from"../../Validation.js";import{MapProvider}from"./MapProvider.js";let QueryTask=class{static isToJSONMissing(t){return"object"==typeof t&&"function"!=typeof t.toJSON}async execute(t,i,e){var a=validation.urlOrLayer(t);const r=new Query({distance:validation.number("distance",t.distance,void 0),gdbVersion:validation.string("gdbVersion",t.gdbVersion,void 0),geometry:t.geometry,geometryPrecision:t.geometryPrecision,groupByFieldsForStatistics:validation.array("groupByFieldsForStatistics",t.groupByFieldsForStatistics),maxAllowableOffset:validation.number("maxAllowableOffset",t.maxAllowableOffset,void 0),multipatchOption:validation.string("multipatchOption",t.multipatchOption,void 0),num:validation.number("count",t.count,void 0),objectIds:validation.array("ids",t.ids),orderByFields:validation.array("orderByFields",t.orderByFields),outFields:validation.array("outFields",t.outFields),outSpatialReference:e.getOutSR(t.outSpatialReference),pixelSize:t.pixelSize,quantizationParameters:t.quantizationParameters,returnDistinctValues:validation.boolean("returnDistinctValues",t.returnDistinctValues,!1),returnGeometry:validation.boolean("returnGeometry",t.returnGeometry,!1),start:validation.number("start",t.start,void 0),text:validation.string("text",t.text,void 0),where:validation.string("where",t.where,void 0)});e=validation.array("outStatistics",t.outStatistics);if(e){r.outStatistics=[];for(const s of e)r.outStatistics.push(new StatisticDefinition({onStatisticField:s.onStatisticField,outStatisticFieldName:s.outStatisticFieldName,statisticType:s.statisticType}))}const o=validation.string("spatialRelationship",t.spatialRelationship,void 0);void 0!==o&&(o.match(/^[TF012\*]{9}$/)?(r.spatialRelationship="relation",r.relationParameter=o):r.spatialRelationship=o);i={signal:i.cancellationToken.signal},i=await executeQueryJSON(a,r,i);return{feature:i.features[0],features:i.features,results:i}}};QueryTask.action="gcx:wf:arcgis:query:QueryTask",QueryTask.suite="gcx:wf:builtin",QueryTask=__decorate([activate(MapProvider)],QueryTask);export{QueryTask};
1
+ import{__decorate}from"tslib";import{executeQueryJSON}from"@arcgis/core/rest/query";import Query from"@arcgis/core/rest/support/Query";import StatisticDefinition from"@arcgis/core/rest/support/StatisticDefinition";import{activate}from"../../Hooks.js";import{validation}from"../../Validation.js";import{MapProvider}from"./MapProvider.js";let QueryTask=class{static isToJSONMissing(t){return"object"==typeof t&&"function"!=typeof t.toJSON}async execute(t,i,e){var a=validation.urlOrLayer(t);const r=new Query({distance:validation.number("distance",t.distance,void 0),gdbVersion:validation.string("gdbVersion",t.gdbVersion,void 0),geometry:t.geometry,geometryPrecision:t.geometryPrecision,groupByFieldsForStatistics:validation.array("groupByFieldsForStatistics",t.groupByFieldsForStatistics),maxAllowableOffset:validation.number("maxAllowableOffset",t.maxAllowableOffset,void 0),multipatchOption:validation.string("multipatchOption",t.multipatchOption,void 0),num:validation.number("count",t.count,void 0),objectIds:validation.array("ids",t.ids),orderByFields:validation.array("orderByFields",t.orderByFields),outFields:validation.array("outFields",t.outFields),outSpatialReference:e.getOutSR(t.outSpatialReference),pixelSize:t.pixelSize,quantizationParameters:t.quantizationParameters,returnDistinctValues:validation.boolean("returnDistinctValues",t.returnDistinctValues,!1),returnGeometry:validation.boolean("returnGeometry",t.returnGeometry,!1),returnM:validation.boolean("returnM",t.returnM,!1),returnZ:validation.boolean("returnZ",t.returnZ,!1),start:validation.number("start",t.start,void 0),text:validation.string("text",t.text,void 0),where:validation.string("where",t.where,void 0)});e=validation.array("outStatistics",t.outStatistics);if(e){r.outStatistics=[];for(const s of e)r.outStatistics.push(new StatisticDefinition({onStatisticField:s.onStatisticField,outStatisticFieldName:s.outStatisticFieldName,statisticType:s.statisticType}))}const o=validation.string("spatialRelationship",t.spatialRelationship,void 0);void 0!==o&&(o.match(/^[TF012\*]{9}$/)?(r.spatialRelationship="relation",r.relationParameter=o):r.spatialRelationship=o);i={signal:i.cancellationToken.signal},i=await executeQueryJSON(a,r,i);return{feature:i.features[0],features:i.features,results:i}}};QueryTask.action="gcx:wf:arcgis:query:QueryTask",QueryTask.suite="gcx:wf:builtin",QueryTask=__decorate([activate(MapProvider)],QueryTask);export{QueryTask};
@@ -9,6 +9,7 @@ export interface RunPrintInputs {
9
9
  scale?: number;
10
10
  parameters?: Record<string, any>;
11
11
  resultFileName?: string;
12
+ resolution?: number;
12
13
  }
13
14
  /** Defines outputs for the RunPrint activity. */
14
15
  export interface RunPrintOutputs {
@@ -1 +1 @@
1
- var RunPrint_1;import{__decorate}from"tslib";import{ActivityInputError,ActivityNotImplementedError,GenericActivityError}from"../../Errors.js";import{activateTwo}from"../../Hooks.js";import{validation}from"../../Validation.js";import{ChannelProvider}from"../core/ChannelProvider.js";import{MapProvider}from"./MapProvider.js";import{checkResult,getMapControlNames,getServiceToken,runJob,getServiceUrl}from"./runUtils.js";import{getAuthenticationToken,getPortalDataUrl,getPortalItem,parsePortalItemUrl}from"./shared.js";let RunPrint=RunPrint_1=class{async execute(e,t,r,a){var i=validation.string("url",e.url,validation.never),n=validation.number("scale",e.scale,void 0),o=validation.string("resultFileName",e.resultFileName,"Print");if(void 0!==n&&n<=0)throw new ActivityInputError("scale","Scale must be greater than zero.");var l=parsePortalItemUrl(i);let s,c;if(l&&(c=this.getAuthenticationToken(l.portalUrl),s=getPortalDataUrl(l,c)),!l||!l.itemId)throw Error(`Unable to get item ID for print template '${i}.`);if(!s)throw Error(`Unable to get item URL for print template '${i}.`);const m=t.cancellationToken;i=await getPortalItem(s,r,m);const p=r.create();m.finally(function(){p.cancel()});r=getServiceUrl(i.url,"printing");let u;c&&"public"!==i.access&&(u=await getServiceToken(r,l.portalUrl,c,p));const v=[];if(e.parameters)for(const P of Object.keys(e.parameters)){var g,d=e.parameters[P];d&&(g=d instanceof Array,v.push({name:P,containsMultipleValues:g,value:g?void 0:d,values:g?d:void 0}))}i=await getMapControlNames(l,r,u,p,m);if(i?.length){i=i[0],t=await this.getWebmapParameters(a,i,n,e.extent,t.ambient.trivia);if(t?.length)for(const w of t)v.push(w)}o={template:{itemId:l.itemId,portalUrl:l.portalUrl,title:o},parameters:v},o=(await runJob(r,u,o,p)).response.ticket;return{href:await checkResult(r,u,o,1e3,p,m)}}getAuthenticationToken(e){return getAuthenticationToken(e)}async getWebmapParameters(e,t,r,a,i){const n=e.create();if(await n.load(),!n.map)throw new GenericActivityError("No map available. Unable to generate webmap parameters.");e=r||n.getScale(),a=a||n.getExtent(),i=await this.getWebmap(n,e,i),a=await this.getWgs84Extent(a);return this.prepareWebmapParameters(t,i,r||0,a)}async getWebmap(e,t,r){throw console.warn("getWebmap needs to be overridden by a client implementation."),new ActivityNotImplementedError(RunPrint_1.action)}async getWgs84Extent(e){throw console.warn("getWgs84Extent needs to be overridden by a client implementation."),new ActivityNotImplementedError(RunPrint_1.action)}prepareWebmapParameters(e,t,r,a){throw console.warn("prepareWebmapParameters needs to be overriden by a client implementation."),new ActivityNotImplementedError(RunPrint_1.action)}};RunPrint.action="gcx:wf:geocortex::RunPrint",RunPrint.suite="gcx:wf:builtin",RunPrint=RunPrint_1=__decorate([activateTwo(ChannelProvider,MapProvider)],RunPrint);export{RunPrint};
1
+ var RunPrint_1;import{__decorate}from"tslib";import{ActivityInputError,ActivityNotImplementedError,GenericActivityError}from"../../Errors.js";import{activateTwo}from"../../Hooks.js";import{validation}from"../../Validation.js";import{ChannelProvider}from"../core/ChannelProvider.js";import{MapProvider}from"./MapProvider.js";import{checkResult,getMapControlNames,getServiceToken,runJob,getServiceUrl}from"./runUtils.js";import{getAuthenticationToken,getPortalDataUrl,getPortalItem,parsePortalItemUrl}from"./shared.js";let RunPrint=RunPrint_1=class{async execute(e,t,r,a){var i=validation.string("url",e.url,validation.never),n=validation.number("scale",e.scale,void 0),o=validation.string("resultFileName",e.resultFileName,"Print"),l=validation.number("resolution",e.resolution,96);if(void 0!==n&&n<=0)throw new ActivityInputError("scale","Scale must be greater than zero.");var s=parsePortalItemUrl(i);let m,c;if(s&&(c=this.getAuthenticationToken(s.portalUrl),m=getPortalDataUrl(s,c)),!s||!s.itemId)throw Error(`Unable to get item ID for print template '${i}.`);if(!m)throw Error(`Unable to get item URL for print template '${i}.`);const p=t.cancellationToken;i=await getPortalItem(m,r,p);const u=r.create();p.finally(function(){u.cancel()});r=getServiceUrl(i.url,"printing");let v;c&&"public"!==i.access&&(v=await getServiceToken(r,s.portalUrl,c,u));const g=[];if(e.parameters)for(const b of Object.keys(e.parameters)){var d,P=e.parameters[b];P&&(d=P instanceof Array,g.push({name:b,containsMultipleValues:d,value:d?void 0:P,values:d?P:void 0}))}i=await getMapControlNames(s,r,v,u,p);if(i?.length){i=i[0],t=await this.getWebmapParameters(a,i,n,e.extent,t.ambient.trivia);if(t?.length)for(const w of t)g.push(w)}l={template:{itemId:s.itemId,portalUrl:s.portalUrl,title:o},parameters:g,dpi:l},l=(await runJob(r,v,l,u)).response.ticket;return{href:await checkResult(r,v,l,1e3,u,p)}}getAuthenticationToken(e){return getAuthenticationToken(e)}async getWebmapParameters(e,t,r,a,i){const n=e.create();if(await n.load(),!n.map)throw new GenericActivityError("No map available. Unable to generate webmap parameters.");e=r||n.getScale(),a=a||n.getExtent(),i=await this.getWebmap(n,e,i),a=await this.getWgs84Extent(a);return this.prepareWebmapParameters(t,i,r||0,a)}async getWebmap(e,t,r){throw console.warn("getWebmap needs to be overridden by a client implementation."),new ActivityNotImplementedError(RunPrint_1.action)}async getWgs84Extent(e){throw console.warn("getWgs84Extent needs to be overridden by a client implementation."),new ActivityNotImplementedError(RunPrint_1.action)}prepareWebmapParameters(e,t,r,a){throw console.warn("prepareWebmapParameters needs to be overriden by a client implementation."),new ActivityNotImplementedError(RunPrint_1.action)}};RunPrint.action="gcx:wf:geocortex::RunPrint",RunPrint.suite="gcx:wf:builtin",RunPrint=RunPrint_1=__decorate([activateTwo(ChannelProvider,MapProvider)],RunPrint);export{RunPrint};
@@ -13,6 +13,7 @@ export interface RunReportInputs {
13
13
  dataSources?: DataSource | DataSource[];
14
14
  language?: string;
15
15
  format?: "docx" | "pdf" | "rtf" | "xlsx" | string;
16
+ resolution?: number;
16
17
  }
17
18
  /** Defines outputs for the RunReport activity. */
18
19
  export interface RunReportOutputs {
@@ -1 +1 @@
1
- var RunReport_1;import{__decorate}from"tslib";import{ActivityNotImplementedError}from"../../Errors.js";import{activateTwo}from"../../Hooks.js";import{validation}from"../../Validation.js";import{ChannelProvider}from"../core/ChannelProvider.js";import{MapProvider}from"./MapProvider.js";import{checkResult,getMapControlNames,getServiceToken,runJob,getServiceUrl}from"./runUtils.js";import{getAuthenticationToken,getPortalDataUrl,getPortalItem,parsePortalItemUrl}from"./shared.js";let RunReport=RunReport_1=class{async execute(e,t,r,a){var o=validation.string("url",e.url,validation.never),n=validation.boolean("includeMap",e.includeMap,!1),i=parsePortalItemUrl(o),l=validation.array("webmapParameters",e.webmapParameters,[]),s=validation.string("resultFileName",e.resultFileName,"Report"),p=validation.array("dataSources",e.dataSources),m=validation.string("language",e.language),c=validation.string("format",e.format);let u,d;if(i&&(d=this.getAuthenticationToken(i.portalUrl),u=getPortalDataUrl(i,d)),!i||!i.itemId)throw Error(`Unable to get item ID for report '${o}.`);if(!u)throw Error(`Unable to get item URL for report '${o}.`);const g=t.cancellationToken;o=await getPortalItem(u,r,g);const v=r.create();g.finally(function(){v.cancel()});r=getServiceUrl(o.url,"reporting");let f;d&&"public"!==o.access&&(f=await getServiceToken(r,i.portalUrl,d,v));const b=[{name:"FeatureIds",containsMultipleValues:!0,value:void 0,values:e.featureIds||[]}];if(e.parameters)for(const w of Object.keys(e.parameters)){var R,h=e.parameters[w];h&&(R=h instanceof Array,b.push({name:w,containsMultipleValues:R,value:R?void 0:h,values:R?h:void 0}))}if(l.length)for(const P of l)for(const y of this.prepareWebmapParameters(P.mapName,P.webmap,P.scale,P.extent))b.push(y);else if(n){n=await getMapControlNames(i,r,f,v,g);if(n?.length){n=await this.getWebmapParameters(a,n[0],t.ambient.trivia);if(n?.length)for(const I of n)b.push(I)}}c={template:{itemId:i.itemId,portalUrl:i.portalUrl,title:s},parameters:b,data:p,culture:m||t.ambient.locale,format:c},c=(await runJob(r,f,c,v)).response.ticket;return{href:await checkResult(r,f,c,1e3,v,g)}}getAuthenticationToken(e){return getAuthenticationToken(e)}async getWebmap(e,t,r){throw console.warn("getWebmap needs to be overridden by a client implementation."),new ActivityNotImplementedError(RunReport_1.action)}async getWebmapExtent(e){throw console.warn("getWebmapExtent needs to be overridden by a client implementation."),new ActivityNotImplementedError(RunReport_1.action)}async getWebmapParameters(e,t,r){const a=e.create();await a.load();e=await this.getWebmap(a,a.getScale(),r),r=await this.getWebmapExtent(a);return this.prepareWebmapParameters(t,e,0,r)}prepareWebmapParameters(e,t,r,a){throw console.warn("prepareWebmapParameters needs to be overriden by a client implementation."),new ActivityNotImplementedError(RunReport_1.action)}};RunReport.action="gcx:wf:geocortex::RunReport",RunReport.suite="gcx:wf:builtin",RunReport=RunReport_1=__decorate([activateTwo(ChannelProvider,MapProvider)],RunReport);export{RunReport};
1
+ var RunReport_1;import{__decorate}from"tslib";import{ActivityNotImplementedError}from"../../Errors.js";import{activateTwo}from"../../Hooks.js";import{validation}from"../../Validation.js";import{ChannelProvider}from"../core/ChannelProvider.js";import{MapProvider}from"./MapProvider.js";import{checkResult,getMapControlNames,getServiceToken,runJob,getServiceUrl}from"./runUtils.js";import{getAuthenticationToken,getPortalDataUrl,getPortalItem,parsePortalItemUrl}from"./shared.js";let RunReport=RunReport_1=class{async execute(e,t,r,a){var o=validation.string("url",e.url,validation.never),n=validation.boolean("includeMap",e.includeMap,!1),i=parsePortalItemUrl(o),l=validation.array("webmapParameters",e.webmapParameters,[]),s=validation.string("resultFileName",e.resultFileName,"Report"),p=validation.array("dataSources",e.dataSources),m=validation.string("language",e.language),c=validation.string("format",e.format),u=validation.number("resolution",e.resolution,96);let d,v;if(i&&(v=this.getAuthenticationToken(i.portalUrl),d=getPortalDataUrl(i,v)),!i||!i.itemId)throw Error(`Unable to get item ID for report '${o}.`);if(!d)throw Error(`Unable to get item URL for report '${o}.`);const g=t.cancellationToken;o=await getPortalItem(d,r,g);const f=r.create();g.finally(function(){f.cancel()});r=getServiceUrl(o.url,"reporting");let b;v&&"public"!==o.access&&(b=await getServiceToken(r,i.portalUrl,v,f));const R=[{name:"FeatureIds",containsMultipleValues:!0,value:void 0,values:e.featureIds||[]}];if(e.parameters)for(const P of Object.keys(e.parameters)){var h,w=e.parameters[P];w&&(h=w instanceof Array,R.push({name:P,containsMultipleValues:h,value:h?void 0:w,values:h?w:void 0}))}if(l.length)for(const y of l)for(const I of this.prepareWebmapParameters(y.mapName,y.webmap,y.scale,y.extent))R.push(I);else if(n){n=await getMapControlNames(i,r,b,f,g);if(n?.length){n=await this.getWebmapParameters(a,n[0],t.ambient.trivia);if(n?.length)for(const U of n)R.push(U)}}c={template:{itemId:i.itemId,portalUrl:i.portalUrl,title:s},parameters:R,data:p,dpi:u,culture:m||t.ambient.locale,format:c},c=(await runJob(r,b,c,f)).response.ticket;return{href:await checkResult(r,b,c,1e3,f,g)}}getAuthenticationToken(e){return getAuthenticationToken(e)}async getWebmap(e,t,r){throw console.warn("getWebmap needs to be overridden by a client implementation."),new ActivityNotImplementedError(RunReport_1.action)}async getWebmapExtent(e){throw console.warn("getWebmapExtent needs to be overridden by a client implementation."),new ActivityNotImplementedError(RunReport_1.action)}async getWebmapParameters(e,t,r){const a=e.create();await a.load();e=await this.getWebmap(a,a.getScale(),r),r=await this.getWebmapExtent(a);return this.prepareWebmapParameters(t,e,0,r)}prepareWebmapParameters(e,t,r,a){throw console.warn("prepareWebmapParameters needs to be overriden by a client implementation."),new ActivityNotImplementedError(RunReport_1.action)}};RunReport.action="gcx:wf:geocortex::RunReport",RunReport.suite="gcx:wf:builtin",RunReport=RunReport_1=__decorate([activateTwo(ChannelProvider,MapProvider)],RunReport);export{RunReport};
@@ -1 +1 @@
1
- import{fromJSON}from"@arcgis/core/symbols/support/jsonUtils";class SymbolFromJson{execute(o,s){if(!o.json)return{symbol:void 0};o="string"==typeof o.json?JSON.parse(o.json):o.json;return{symbol:fromJSON(o)}}}SymbolFromJson.action="gcx:wf:arcgis::SymbolFromJson",SymbolFromJson.suite="gcx:wf:builtin";export{SymbolFromJson};
1
+ import CIMSymbol from"@arcgis/core/symbols/CIMSymbol";import{fromJSON}from"@arcgis/core/symbols/support/jsonUtils";class SymbolFromJson{execute(o,s){if(!o.json)return{symbol:void 0};var m="string"==typeof o.json?JSON.parse(o.json):o.json;let r;switch(m.type){case"CIMLineSymbol":case"CIMPointSymbol":case"CIMPolygonSymbol":r=CIMSymbol.fromJSON(m);break;default:r=fromJSON(m)}return{symbol:r}}}SymbolFromJson.action="gcx:wf:arcgis::SymbolFromJson",SymbolFromJson.suite="gcx:wf:builtin";export{SymbolFromJson};
@@ -26,8 +26,7 @@ export declare function isLayerWithDefinitionExpression(layer: __esri.Layer): la
26
26
  */
27
27
  export declare function isLayerWithPopupTemplate(layer: __esri.Layer): layer is __esri.Layer & LayerWithPopupTemplate;
28
28
  /**
29
- * The only layer that contains the `findSublayerById` method is
30
- * `ArcGISDynamicService`.
29
+ * Checks if the supplied layer has a `findSublayerById` method.
31
30
  * @param layer The layer to be checked.
32
31
  */
33
32
  export declare function isLayerWithSublayers(layer: __esri.Layer): layer is __esri.Layer & LayerWithSublayers;
@@ -2,6 +2,8 @@ import type { RunSubworkflowOutputs } from "./RunSubworkflow";
2
2
  import type { IActivityContext, IActivityHandler } from "../../IActivityHandler";
3
3
  export interface SubworkflowInputs {
4
4
  subworkflow: RunSubworkflowOutputs;
5
+ argumentsType?: "any" | "{ addressCandidate: esri.AddressCandidate }" | "{ extent: esri.Extent }" | "{ featureSet: esri.FeatureSet }" | "{ geometry: esri.Geometry }" | "{ graphic: esri.Graphic }" | "{ id: number; name: string; location: esri.Point; }" | "{ layer: esri.Layer }" | "{ multiPoint: esri.Multipoint }" | "{ point: esri.Point }" | "{ polygon: esri.Polygon }" | "{ polyline: esri.Polyline }" | "{ portalGroup: esri.PortalGroup }" | "{ portalUser: esri.PortalUser }" | "{ spatialReference: esri.SpatialReference }" | "{ symbol: esri.Symbol }" | string;
6
+ resultType?: "any" | "ArrayBuffer" | "boolean" | "Date" | "Error" | "Function" | "number" | "number[]" | "Object" | "string" | "string[]" | "esri.Graphic" | "esri.Extent" | "esri.Geometry" | "esri.Multipoint" | "esri.Point" | "esri.Polygon" | "esri.Polyline" | "esri.PortalGroup" | "esri.PortalUser" | "esri.SpatialReference" | "esri.Layer" | "esri.Symbol" | "esri.AddressCandidate" | "esri.FeatureSet" | "{ id: number; name: string; location: esri.Point; }" | string;
5
7
  }
6
8
  export interface SubworkflowOutputs {
7
9
  arguments?: Record<string, any>;
@@ -1,4 +1,5 @@
1
- import type { IActivityHandler, EmptyOutputs } from "../../IActivityHandler";
1
+ import { DialogProvider } from "./DialogProvider";
2
+ import type { IActivityHandler, EmptyOutputs, IActivityContext } from "../../IActivityHandler";
2
3
  /**
3
4
  * Defines the inputs for the Alert activity.
4
5
  * @product This is intended for internal use only within VertiGIS Studio products.
@@ -7,11 +8,13 @@ export interface AlertInputs {
7
8
  /** The text of the alert. */
8
9
  text: string;
9
10
  /** The title of the alert. */
10
- title: string;
11
+ title?: string;
12
+ /** Controls when text is interpreted as markdown. */
13
+ markdown?: boolean;
11
14
  }
12
15
  /** Presents an alert dialog to the user. */
13
16
  export declare class Alert implements IActivityHandler {
14
17
  static readonly action = "gcx:wf:ui::Alert";
15
18
  static readonly suite = "gcx:wf:builtin";
16
- execute(inputs: AlertInputs): PromiseLike<EmptyOutputs>;
19
+ execute(inputs: AlertInputs, context: IActivityContext, dialogProviderType: typeof DialogProvider): Promise<EmptyOutputs>;
17
20
  }
@@ -1 +1 @@
1
- class Alert{execute(e){return new Promise(function(t){setTimeout(function(){window.alert(e.text),t({})})})}}Alert.action="gcx:wf:ui::Alert",Alert.suite="gcx:wf:builtin";export{Alert};
1
+ import{__decorate}from"tslib";import{activate}from"../../Hooks.js";import{validation}from"../../Validation.js";import{DialogProvider}from"./DialogProvider.js";let Alert=class{async execute(t,e,i){var r=validation.string("title",t.title,""),o=validation.boolean("markdown",t.markdown,!1);let a=validation.string("text",t.text,"");return o&&(a={markdown:a}),await i.create(e.ambient.environment.getText).showAlert(a,r),{}}};Alert.action="gcx:wf:ui::Alert",Alert.suite="gcx:wf:builtin",Alert=__decorate([activate(DialogProvider)],Alert);export{Alert};
@@ -1,4 +1,5 @@
1
- import type { IActivityHandler } from "../../IActivityHandler";
1
+ import { DialogProvider } from "./DialogProvider";
2
+ import type { IActivityContext, IActivityHandler } from "../../IActivityHandler";
2
3
  /**
3
4
  * Defines inputs for the Confirm activity.
4
5
  * @product This is intended for internal use only within VertiGIS Studio products.
@@ -7,7 +8,9 @@ export interface ConfirmInputs {
7
8
  /** The text of the basic confirm dialog. */
8
9
  text: string;
9
10
  /** The title of the confirm dialog. */
10
- title: string;
11
+ title?: string;
12
+ /** Controls when text is interpreted as markdown. */
13
+ markdown?: boolean;
11
14
  }
12
15
  /**
13
16
  * Defines outputs for the Confirm activity.
@@ -20,5 +23,5 @@ export interface ConfirmOutputs {
20
23
  export declare class Confirm implements IActivityHandler {
21
24
  static readonly action = "gcx:wf:ui::Confirm";
22
25
  static readonly suite = "gcx:wf:builtin";
23
- execute(inputs: ConfirmInputs): PromiseLike<ConfirmOutputs>;
26
+ execute(inputs: ConfirmInputs, context: IActivityContext, dialogProviderType: typeof DialogProvider): Promise<ConfirmOutputs>;
24
27
  }
@@ -1 +1 @@
1
- class Confirm{execute(t){return new Promise(function(n){setTimeout(function(){var i=confirm(t.text);n({result:i})})})}}Confirm.action="gcx:wf:ui::Confirm",Confirm.suite="gcx:wf:builtin";export{Confirm};
1
+ import{__decorate}from"tslib";import{activate}from"../../Hooks.js";import{validation}from"../../Validation.js";import{DialogProvider}from"./DialogProvider.js";let Confirm=class{async execute(i,t,o){var r=validation.string("title",i.title,""),a=validation.boolean("markdown",i.markdown,!1);let e=validation.string("text",i.text,"");return a&&(e={markdown:e}),{result:await o.create(t.ambient.environment.getText).showConfirm(e,r)}}};Confirm.action="gcx:wf:ui::Confirm",Confirm.suite="gcx:wf:builtin",Confirm=__decorate([activate(DialogProvider)],Confirm);export{Confirm};
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ import type { MarkdownRef } from "../../forms/FormDefinition";
3
+ export interface AlertContentProps {
4
+ text: string | MarkdownRef;
5
+ title: string | undefined;
6
+ getText: (key: string) => string;
7
+ onClose: () => void;
8
+ }
9
+ export declare const AlertContent: ({ text, title, getText, onClose }: AlertContentProps) => React.JSX.Element;
10
+ export interface ConfirmContentProps {
11
+ text: string | MarkdownRef;
12
+ title: string | undefined;
13
+ getText: (key: string) => string;
14
+ onClose: (result: boolean) => void;
15
+ }
16
+ export declare const ConfirmContent: ({ text, title, getText, onClose }: ConfirmContentProps) => React.JSX.Element;
17
+ export interface PromptContentProps {
18
+ description: string | MarkdownRef;
19
+ defaultText: string | undefined;
20
+ title: string | undefined;
21
+ getText: (key: string) => string;
22
+ onClose: (result: string | null) => void;
23
+ }
24
+ export declare const PromptContent: ({ description, defaultText, title, getText, onClose, }: PromptContentProps) => React.JSX.Element;
@@ -0,0 +1 @@
1
+ import Box from"@vertigis/react-ui/Box";import Button from"@vertigis/react-ui/Button";import DialogActions from"@vertigis/react-ui/DialogActions";import DialogContent from"@vertigis/react-ui/DialogContent";import DialogTitle from"@vertigis/react-ui/DialogTitle";import Input from"@vertigis/react-ui/Input";import Markdown from"@vertigis/react-ui/Markdown";import React,{useState}from"react";function isMarkdownRef(e){return"object"==typeof e&&"string"==typeof e.markdown}const AlertContent=({text:e,title:t,getText:n,onClose:a})=>{var o=isMarkdownRef(e);return React.createElement(React.Fragment,null,React.createElement(DialogTitle,null,t),React.createElement(DialogContent,{sx:{pb:0}},o&&React.createElement(Markdown,{markdown:e.markdown,escapeHtml:!0,linkTarget:"_blank"}),!o&&e),React.createElement(DialogActions,null,React.createElement(Button,{color:"primary",onClick:a,variant:"contained"},n("@common-ok"))))},ConfirmContent=({text:e,title:t,getText:n,onClose:a})=>{var o=isMarkdownRef(e);return React.createElement(React.Fragment,null,React.createElement(DialogTitle,null,t),React.createElement(DialogContent,{sx:{pb:0}},o&&React.createElement(Markdown,{markdown:e.markdown,escapeHtml:!0,linkTarget:"_blank"}),!o&&e),React.createElement(DialogActions,null,React.createElement(Button,{color:"primary",onClick:()=>a(!0),variant:"contained"},n("@common-ok")),React.createElement(Button,{onClick:()=>a(!1),variant:"contained"},n("@common-cancel"))))},PromptContent=({description:e,defaultText:t,title:n,getText:a,onClose:o})=>{const[r,l]=useState(t||"");t=isMarkdownRef(e);return React.createElement(React.Fragment,null,React.createElement(DialogTitle,null,n),React.createElement(DialogContent,{sx:{pb:0}},t&&React.createElement(Markdown,{markdown:e.markdown,escapeHtml:!0,linkTarget:"_blank"}),!t&&React.createElement(Box,{sx:{pb:1.75,pt:1.75}},e),React.createElement(Input,{value:r,onChange:e=>{l(e.target.value)}})),React.createElement(DialogActions,null,React.createElement(Button,{color:"primary",onClick:()=>{o(r)},variant:"contained"},a("@common-ok")),React.createElement(Button,{onClick:()=>{o(null)},variant:"contained"},a("@common-cancel"))))};export{AlertContent,ConfirmContent,PromptContent};
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+ import type { AlertContentProps, ConfirmContentProps, PromptContentProps } from "./DialogContent";
3
+ import type { Activator } from "../../Activator";
4
+ import type { MarkdownRef } from "../../forms/FormDefinition";
5
+ import type { UIService } from "../../ui/UIService";
6
+ export declare class DialogProvider {
7
+ static type: string;
8
+ static create(getText: (key: string) => string): DialogProvider;
9
+ static register(activator: Activator): void;
10
+ protected _getText: (key: string) => string;
11
+ constructor(getText: (key: string) => string);
12
+ uiService: UIService | undefined;
13
+ AlertContent: (props: AlertContentProps) => React.JSX.Element;
14
+ ConfirmContent: (props: ConfirmContentProps) => React.JSX.Element;
15
+ PromptContent: (props: PromptContentProps) => React.JSX.Element;
16
+ showAlert(text: string | MarkdownRef, title?: string): Promise<void>;
17
+ showConfirm(text: string | MarkdownRef, title?: string): Promise<boolean>;
18
+ showPrompt(description: string | MarkdownRef, defaultText?: string, title?: string): Promise<string | null>;
19
+ }
@@ -0,0 +1 @@
1
+ import Dialog from"@vertigis/react-ui/Dialog";import React from"react";import{AlertContent,ConfirmContent,PromptContent}from"./DialogContent.js";class DialogProvider{static create(t){return new this(t)}static register(t){t.factories.push(t=>t===this.type?this:void 0)}constructor(t){this._getText=t,this.AlertContent=AlertContent,this.ConfirmContent=ConfirmContent,this.PromptContent=PromptContent}async showAlert(e,i){return this.uiService.displayDialog(t=>React.createElement(this.AlertContent,{getText:this._getText,onClose:t,text:e,title:i}),Dialog)}async showConfirm(t,i){let o=!1;return await this.uiService.displayDialog(e=>React.createElement(this.ConfirmContent,{getText:this._getText,onClose:t=>{o=t,e()},text:t,title:i}),Dialog),o}async showPrompt(t,i,o){let r=null;return await this.uiService.displayDialog(e=>React.createElement(this.PromptContent,{defaultText:i,description:t,getText:this._getText,onClose:t=>{r=t,e()},title:o}),Dialog),r}}DialogProvider.type="8F03DBFB-C0F4-499D-B176-70F51AF11E40:DialogProvider";export{DialogProvider};
@@ -1,4 +1,5 @@
1
- import type { IActivityHandler } from "../../IActivityHandler";
1
+ import { DialogProvider } from "./DialogProvider";
2
+ import type { IActivityContext, IActivityHandler } from "../../IActivityHandler";
2
3
  /**
3
4
  * Defines the inputs for the Prompt activity.
4
5
  * @product This is intended for internal use only within VertiGIS Studio products.
@@ -7,9 +8,11 @@ export interface PromptInputs {
7
8
  /** The description of the prompt. */
8
9
  description: string;
9
10
  /** The default text of the prompt. */
10
- defaultText: string;
11
+ defaultText?: string;
11
12
  /** The title of the prompt. */
12
- title: string;
13
+ title?: string;
14
+ /** Controls when description is interpreted as markdown. */
15
+ markdown?: boolean;
13
16
  }
14
17
  /**
15
18
  * Defines the output for the Prompt activity.
@@ -22,5 +25,5 @@ export interface PromptOutputs {
22
25
  export declare class Prompt implements IActivityHandler {
23
26
  static readonly action = "gcx:wf:ui::Prompt";
24
27
  static readonly suite = "gcx:wf:builtin";
25
- execute(inputs: PromptInputs): PromiseLike<PromptOutputs>;
28
+ execute(inputs: PromptInputs, context: IActivityContext, dialogProviderType: typeof DialogProvider): Promise<PromptOutputs>;
26
29
  }
@@ -1 +1 @@
1
- class Prompt{execute(o){return new Promise(function(e){setTimeout(function(){var t=window.prompt(o.description,o.defaultText);e({result:t})})})}}Prompt.action="gcx:wf:ui::Prompt",Prompt.suite="gcx:wf:builtin";export{Prompt};
1
+ import{__decorate}from"tslib";import{activate}from"../../Hooks.js";import{validation}from"../../Validation.js";import{DialogProvider}from"./DialogProvider.js";let Prompt=class{async execute(t,o,i){var r=validation.string("title",t.title,""),a=validation.string("defaultText",t.defaultText),e=validation.boolean("markdown",t.markdown,!1);let n=validation.string("description",t.description,"");return e&&(n={markdown:n}),{result:await i.create(o.ambient.environment.getText).showPrompt(n,a,r)}}};Prompt.action="gcx:wf:ui::Prompt",Prompt.suite="gcx:wf:builtin",Prompt=__decorate([activate(DialogProvider)],Prompt);export{Prompt};
package/execution/util.js CHANGED
@@ -1 +1 @@
1
- const reservedIdentifiers=["resources","values","Date","JSON","Math","Object","parseInt","parseFloat","decodeURIComponent","encodeURIComponent"];function isAccessor(n){return!("string"!=typeof n||n.length<1)&&(!(0<=n.indexOf("."))&&!reservedIdentifiers.some(e=>e===n))}function isExpression(e){var n=e.type;return null==n&&"string"==typeof e.code}function isLiteral(e){switch(typeof e){case"boolean":case"number":case"string":return!0}return!1}let nextSymbol,nextSymbolPrefix;function newSymbol(){return void 0!==nextSymbol&&1073741824<=nextSymbol&&(nextSymbol=void 0),void 0===nextSymbol&&(nextSymbol=0,nextSymbolPrefix=(new Date).valueOf()+":"),nextSymbolPrefix+nextSymbol++}export{isAccessor,isExpression,isLiteral,newSymbol};
1
+ const reservedIdentifiers=["Array","Date","Intl","JSON","Math","Object","Set","decodeURIComponent","document","encodeURIComponent","isNaN","parseFloat","parseInt","resources","values","window"];function isAccessor(n){return!("string"!=typeof n||n.length<1)&&(!(0<=n.indexOf("."))&&!reservedIdentifiers.some(e=>e===n))}function isExpression(e){var n=e.type;return null==n&&"string"==typeof e.code}function isLiteral(e){switch(typeof e){case"boolean":case"number":case"string":return!0}return!1}let nextSymbol,nextSymbolPrefix;function newSymbol(){return void 0!==nextSymbol&&1073741824<=nextSymbol&&(nextSymbol=void 0),void 0===nextSymbol&&(nextSymbol=0,nextSymbolPrefix=(new Date).valueOf()+":"),nextSymbolPrefix+nextSymbol++}export{isAccessor,isExpression,isLiteral,newSymbol};
@@ -27,7 +27,7 @@ export type FormatRef = DateTimeFormat | NumberFormat | GeometryFormat | Section
27
27
  * References geometry format.
28
28
  * @product This is intended for internal use only within VertiGIS Studio products.
29
29
  */
30
- export type GeometryFormat = "polygon" | "polyline" | "point" | "polygon-freehand" | "polyline-freehand" | "extent" | "line";
30
+ export type GeometryFormat = "multipoint" | "polygon" | "polyline" | "point" | "polygon-freehand" | "polyline-freehand" | "extent" | "line";
31
31
  /** Types of matching that can be performed when finding an Item within a Form Element. */
32
32
  export type ItemMatchType = "index" | "item" | "key" | "label" | "value";
33
33
  /**
@@ -21,9 +21,7 @@ export declare abstract class FormHost implements FormPresenterHost {
21
21
  /** Indicates all errors to be assigned. */
22
22
  errors: Record<string, defs.Text | undefined>;
23
23
  /** Indicates any reference information relevant to components. */
24
- refs: {
25
- [name: string]: FormComponent | undefined;
26
- };
24
+ refs: Record<string, FormComponent | undefined>;
27
25
  /** Indicates if the form is enabled. */
28
26
  enabled: boolean;
29
27
  /** Indicates if the form is visible. */
@@ -1 +1 @@
1
- import Box from"@vertigis/react-ui/Box";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";const Root=styled(Box)(({theme:{spacing:o}})=>({marginBottom:o(4),marginTop:o(4)})),AccordionGroup=({className:o,component:t})=>{var t=t.props["children"];return React.createElement(Root,{className:o},t)};export default AccordionGroup;
1
+ import Box from"@vertigis/react-ui/Box";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";const StyledBox=styled(Box)(({theme:{spacing:e}})=>({marginBottom:e(2),marginTop:e(2)})),AccordionGroup=({className:e,component:o})=>{var o=o.props["children"];return React.createElement(StyledBox,{className:e},o)};export default AccordionGroup;
@@ -4,5 +4,5 @@ import type { defs } from "../FormHost";
4
4
  /**
5
5
  * The component for the "Auto Complete" Form Element.
6
6
  */
7
- declare const AutoComplete: ({ className, component, current, delay: elementDelay, element, enabled, error, items: elementItems, label, minLength: elementMinLength, name, prompt, tooltip, renderFocus, renderText, raiseEvent, setProperty, setValue, value, }: FormElementProps<defs.Value | undefined>) => React.JSX.Element;
7
+ declare const AutoComplete: ({ className, component, current, delay: elementDelay, element, enabled, error, items: elementItems, label, minLength: elementMinLength, name, prompt, tooltip, raiseEvent, setProperty, setValue, value, }: FormElementProps<defs.Value | undefined>) => React.JSX.Element;
8
8
  export default AutoComplete;
@@ -1 +1 @@
1
- import BaseAutoComplete,{autocompleteClasses,HighlightOption}from"@vertigis/react-ui/Autocomplete";import FormLabelTextField from"@vertigis/react-ui/FormLabelTextField";import Popper from"@vertigis/react-ui/Popper";import Skeleton from"@vertigis/react-ui/Skeleton";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{ExclusiveTimer}from"../ExclusiveTimer.js";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{autoCompletePropertyConstraints}from"../elements/AutoComplete.js";import{getKeyString}from"../keyboard.js";import{getItemId,makeSafeClassName,makeUniqueId,inspectItems}from"../utils.js";const StyledAutoComplete=styled(BaseAutoComplete)(()=>({[`.${autocompleteClasses.endAdornment}`]:{right:1}})),popperClasses={skeletonOption:"skeleton-option"},StyledPopper=styled(Popper)(()=>({[`.${autocompleteClasses.listbox}`]:{[`.${autocompleteClasses.option}`]:{display:"block",[`&.${popperClasses.skeletonOption}`]:{'&[data-option-index="0"]':{span:{width:"70%"}},'&[data-option-index="1"]':{span:{width:"85%"}},'&[data-option-index="2"]':{span:{width:"55%"}}}}}})),StyledSkeleton=styled(Skeleton)(()=>({fontSize:"1.25rem",lineHeight:"inherit"})),pendingOption={enabled:!1,label:""},pendingOptions=[pendingOption,pendingOption,pendingOption],AutoComplete=({className:e,component:t,current:u,delay:o,element:r,enabled:n,error:l,items:p,label:m,minLength:a,name:s,prompt:i,tooltip:c,renderFocus:d,renderText:f,raiseEvent:g,setProperty:v,setValue:C,value:y})=>{const[b,h]=useState(),[S,x]=useState(""),[k,E]=useState([]),[O,P]=useState(null),I=useRef(!1),N=useRef(!1),R=`${makeUniqueId(s)}-input`;var F=useRef(f({status:"trivial"}));const T=f(i),A=f(c),L=useFocusCallback(n,s,d),j=useRef({}),w=useRef({}),M=useMemo(()=>{let e=o;return"number"==typeof e&&!isNaN(e)||(e=autoCompletePropertyConstraints.delay.default),Math.max(e,autoCompletePropertyConstraints.delay.minimum)},[o]),$=useMemo(()=>{let e=a;return"number"==typeof e&&!isNaN(e)||(e=autoCompletePropertyConstraints.minLength.default),Math.max(e,autoCompletePropertyConstraints.minLength.minimum)},[a]),B=t.timer||(t.timer=new ExclusiveTimer),H=()=>{g("suggest",y,S,void 0,B.cancellationToken),E(pendingOptions)},K=()=>{v("items",{}),v("label",void 0)};useEffect(()=>{"clear"===b?K():"input"===b&&(m&&v("label",void 0),I.current=!0,S.length>=$?(v("current",void 0),B.reset(),B.start(M,H)):0<Object.keys(p||{}).length&&K())},[b,S]),useEffect(()=>{var e,t,o=O?.value;y!==o&&(t=(e=getItemId(O,j.current))?w.current[e]:void 0,v("current",e),v("label",t),C(o,{argument:t}))},[O]),useEffect(()=>{const{current:e,items:t,label:o,value:r}=inspectItems(u,p,y);v("current",e),v("label",o||m),v("value",r,!1);const n={};let l=null;const a=[];for(const i in t){var s=t[i];a.push(s);const o=f(s.label).trim();n[i]=o,e&&i===e&&(l=s)}w.current=n,j.current=t,E(a),P(l)},[p]),useEffect(()=>{var e="string"==typeof u?u:void 0,t=e?j.current[e]:void 0,e=e?w.current[e]:void 0;t?(v("label",e),v("value",t.value),x(e||"")):(v("value",void 0),I.current||x("")),P(t||null)},[u]),useEffect(()=>{I.current||N.current||x(""),I.current=!1,N.current=!1},[m]);const V=f(m);return React.createElement(FormElement,{className:e,component:t,element:r,inputId:R},React.createElement(StyledAutoComplete,{autoSelect:!0,clearOnEscape:!0,clearOnBlur:!1,disabled:!n,filterOptions:e=>e,getOptionDisabled:e=>!1===e.enabled,getOptionLabel:e=>{e=getItemId(e,j.current);return e?w.current[e]:""},inputValue:S,noOptionsText:F.current,onBlur:()=>{1===k.length&&S.toLowerCase()===w.current[0]?.toLowerCase()?(x(w.current[0]),P(k[0])):v("label",S)},onChange:(e,t,o,r)=>{N.current=!0,P(t)},onInputChange:(e,t,o)=>{x(t),h(o)},onKeyDown:e=>{"enter"===getKeyString(e)&&e.stopPropagation()},options:k,PopperComponent:StyledPopper,renderOption:(e,t,{inputValue:o})=>{if(t===pendingOption){var r=clsx(e.className,popperClasses.skeletonOption);return React.createElement("li",{...e,className:r,key:e.id},React.createElement(StyledSkeleton,null))}r=getItemId(t,j.current),r={...e,className:clsx(e.className,t.styleName?makeSafeClassName(t.styleName):void 0),title:t.tooltip?f(t.tooltip):void 0,inputText:o,optionText:r?w.current[r]:""};return React.createElement(HighlightOption,{...r})},renderInput:e=>(e.inputProps={...e.inputProps,id:R,value:e.inputProps.value||V,placeholder:T,title:A},React.createElement(FormLabelTextField,{error:!!l,...e,fullWidth:!0,inputRef:L})),value:O}))};export default AutoComplete;
1
+ import BaseAutoComplete,{autocompleteClasses,HighlightOption}from"@vertigis/react-ui/Autocomplete";import FormLabelTextField from"@vertigis/react-ui/FormLabelTextField";import Popper from"@vertigis/react-ui/Popper";import Skeleton from"@vertigis/react-ui/Skeleton";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import{useContext,useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{ExclusiveTimer}from"../ExclusiveTimer.js";import{autoCompletePropertyConstraints}from"../elements/AutoComplete.js";import HostContext from"../hostContext.js";import{getKeyString}from"../keyboard.js";import{getItemId,inspectItems,makeSafeClassName}from"../utils.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const StyledAutoComplete=styled(BaseAutoComplete)(()=>({[`.${autocompleteClasses.endAdornment}`]:{right:1}})),popperClasses={skeletonOption:"skeleton-option"},StyledPopper=styled(Popper)(()=>({[`.${autocompleteClasses.listbox}`]:{[`.${autocompleteClasses.option}`]:{display:"block",[`&.${popperClasses.skeletonOption}`]:{'&[data-option-index="0"]':{span:{width:"70%"}},'&[data-option-index="1"]':{span:{width:"85%"}},'&[data-option-index="2"]':{span:{width:"55%"}}}}}})),StyledSkeleton=styled(Skeleton)(()=>({fontSize:"1.25rem",lineHeight:"inherit"})),pendingOption={enabled:!1,label:""},pendingOptions=[pendingOption,pendingOption,pendingOption],AutoComplete=({className:e,component:t,current:u,delay:r,element:o,enabled:n,error:l,items:p,label:m,minLength:s,name:i,prompt:a,tooltip:c,raiseEvent:d,setProperty:f,setValue:g,value:C})=>{const v=useContext(HostContext),[y,x]=useState(),[b,h]=useState(""),[S,O]=useState([]),[E,k]=useState(null),P=useRef(!1),T=useRef(),R=useRef(!1),N=useRef(v.renderText({status:"trivial"})),I=v.renderText(a),F=v.renderText(c),A=useFocusCallback(n,i,v),L=useRef({}),j=useRef({}),w=useMemo(()=>{let e=r;return"number"==typeof e&&!isNaN(e)||(e=autoCompletePropertyConstraints.delay.default),Math.max(e,autoCompletePropertyConstraints.delay.minimum)},[r]),H=useMemo(()=>{let e=s;return"number"==typeof e&&!isNaN(e)||(e=autoCompletePropertyConstraints.minLength.default),Math.max(e,autoCompletePropertyConstraints.minLength.minimum)},[s]),M=t.timer||(t.timer=new ExclusiveTimer),B=()=>{d("suggest",C,b,void 0,M.cancellationToken),O(pendingOptions)},K=()=>{f("items",{}),f("label",void 0)};useEffect(()=>{"clear"===y?K():"input"===y&&(m&&f("label",void 0),P.current=!0,b.length>=H?(f("current",void 0),M.reset(),M.start(w,B)):0<Object.keys(p||{}).length&&K())},[y,b]),useEffect(()=>{var e,t,r=E?.value;C!==r&&(t=(e=getItemId(E,L.current))?j.current[e]:void 0,f("current",e),f("label",t),g(r,{argument:t}))},[E]),useEffect(()=>{const{current:e,items:t,label:r,value:o}=inspectItems(u,p,C);f("current",e),f("label",r||m),f("value",o,!1);const n={};let l=null;const s=[];for(const a in t){var i=t[a];s.push(i);const r=v.renderText(i.label).trim();n[a]=r,e&&a===e&&(l=i)}j.current=n,L.current=t,O(s),k(l)},[p]),useEffect(()=>{var e="string"==typeof u?u:void 0,t=e?L.current[e]:void 0,e=e?j.current[e]:void 0;t?(f("label",e),f("value",t.value),h(e||"")):(f("value",void 0),P.current||h("")),k(t||null)},[u]),useEffect(()=>{P.current||R.current||h(""),P.current=!1,R.current=!1},[m]);const $=v.renderText(m);return React.createElement(FormElement,{className:e,element:o,inputId:T.current,name:i},t=>React.createElement(StyledAutoComplete,{autoSelect:!0,clearOnEscape:!0,clearOnBlur:!1,disabled:!n,filterOptions:e=>e,getOptionDisabled:e=>!1===e.enabled,getOptionKey:e=>(e.index??-1).toString(),getOptionLabel:e=>{e=getItemId(e,L.current);return e?j.current[e]:""},inputValue:b,noOptionsText:N.current,onBlur:()=>{1===S.length&&b.toLowerCase()===j.current[0]?.toLowerCase()?(h(j.current[0]),k(S[0])):f("label",b)},onChange:(e,t,r,o)=>{R.current=!0,k(t)},onInputChange:(e,t,r)=>{h(t),x(r)},onKeyDown:e=>{"enter"===getKeyString(e)&&e.stopPropagation()},options:S,PopperComponent:StyledPopper,renderOption:(e,t,{inputValue:r})=>{if(t===pendingOption){var o=clsx(e.className,popperClasses.skeletonOption);return React.createElement("li",{...e,className:o,key:e.id},React.createElement(StyledSkeleton,null))}o=getItemId(t,L.current),o={...e,className:clsx(e.className,t.styleName?makeSafeClassName(t.styleName):void 0),title:t.tooltip?v.renderText(t.tooltip):void 0,inputText:r,optionText:o?j.current[o]:""};return React.createElement(HighlightOption,{...o})},renderInput:e=>(e.inputProps={...e.inputProps,...t,value:e.inputProps.value||$,placeholder:I,title:F},T.current=e.id,React.createElement(FormLabelTextField,{error:!!l,...e,fullWidth:!0,inputRef:A})),value:E}))};export default AutoComplete;
@@ -4,5 +4,5 @@ import type { defs } from "../FormHost";
4
4
  /**
5
5
  * The component for the "Button Bar" Form Element.
6
6
  */
7
- declare const ButtonBar: ({ className, component, element, enabled, items: elementItems, name, orientation, raiseEvent, renderFocus: hostRenderFocus, renderText, translateText, }: FormElementProps<defs.Value | undefined>) => React.JSX.Element;
7
+ declare const ButtonBar: ({ className, element, enabled, items: elementItems, name, orientation, raiseEvent, }: FormElementProps<defs.Value | undefined>) => React.JSX.Element;
8
8
  export default ButtonBar;
@@ -1 +1 @@
1
- import Button from"@vertigis/react-ui/Button";import Stack,{stackClasses}from"@vertigis/react-ui/Stack";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import FormElement from"../FormElement.js";import{Orientation}from"../constants.js";import{makeSafeClassName,sortAndFilter}from"../utils.js";import Markdown from"./Markdown.js";const Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${stackClasses.root}`]:{alignItems:"flex-start",flexWrap:"wrap",marginTop:e(1),marginBottom:e(1)}})),ButtonBar=({className:e,component:t,element:a,enabled:c,items:r,name:d,orientation:o,raiseEvent:u,renderFocus:p,renderText:f,translateText:k})=>{const v=sortAndFilter(r);let E;return React.createElement(Root,{className:e,component:t,element:a},React.createElement(Stack,{direction:o===Orientation.VERTICAL?"column":"row",spacing:1},Object.keys(v).map(e=>{var t,a,r,o=v[e],n=o.styleName?makeSafeClassName(o.styleName):void 0,i=!1!==o.visible,l=c&&!1!==o.enabled&&i,s=f(o.tooltip),m=v[e]["value"];return l&&void 0===E&&(E=e),i?React.createElement(Button,{onClick:(a=e,r=m,function(e){u("clicked",r,void 0,a)}),className:n,color:o.default?"primary":"inherit",disabled:!l,key:e,ref:(t=e,function(e){null!==e&&t===E&&p(e,d)}),title:s,variant:o.default?"contained":"outlined"},React.createElement(Markdown,{inline:!0,text:o.label||"",translateText:k})):null})))};export default ButtonBar;
1
+ import Button from"@vertigis/react-ui/Button";import Stack,{stackClasses}from"@vertigis/react-ui/Stack";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useContext}from"react";import{Orientation}from"../constants.js";import HostContext from"../hostContext.js";import{makeSafeClassName,sortAndFilter}from"../utils.js";import FormElement from"./FormElement.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${stackClasses.root}`]:{alignItems:"flex-start",flexWrap:"wrap",marginTop:e(1),marginBottom:e(1)}})),ButtonBar=({className:e,element:t,enabled:l,items:o,name:a,orientation:r,raiseEvent:c})=>{const d=useContext(HostContext),u=sortAndFilter(o),f=useFocusCallback(l,a,d);o=l?Object.entries(u).filter(e=>!1!==e[1].enabled&&!1!==e[1].visible)[0]:void 0;const p=o?o[0]:void 0;return React.createElement(StyledFormElement,{className:e,component:"fieldset",element:t,name:a},React.createElement(Stack,{direction:r===Orientation.VERTICAL?"column":"row",spacing:1},Object.keys(u).map(e=>{var t,o,a=u[e],r=a.styleName?makeSafeClassName(a.styleName):void 0,n=!1!==a.visible,i=l&&!1!==a.enabled&&n,s=d.renderText(a.tooltip),m=u[e]["value"];return n?React.createElement(Button,{className:r,color:a.default?"primary":"inherit",disabled:!i,key:e,onClick:(t=e,o=m,function(e){c("clicked",o,void 0,t)}),ref:p&&e===p?f:void 0,title:s,variant:a.default?"contained":"outlined"},React.createElement(Markdown,{inline:!0,text:a.label||""})):null})))};export default ButtonBar;
@@ -3,5 +3,5 @@ import type { FormElementProps } from "../..";
3
3
  /**
4
4
  * The component for the "Check Box" Form Element.
5
5
  */
6
- declare const CheckBox: ({ checked, className, component, element, enabled, label, name, raiseEvent, renderFocus: hostRenderFocus, renderText, setProperty, tooltip: elementTooltip, translateText, value, }: FormElementProps) => React.JSX.Element;
6
+ declare const CheckBox: ({ checked, className, element, enabled, label, name, raiseEvent, setProperty, tooltip: elementTooltip, value, }: FormElementProps) => React.JSX.Element;
7
7
  export default CheckBox;
@@ -1 +1 @@
1
- import Checkbox from"@vertigis/react-ui/Checkbox";import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import*as React from"react";import FormElement from"../FormElement.js";import Markdown from"./Markdown.js";const CheckBox=({checked:e,className:t,component:r,element:o,enabled:a,label:n,name:c,raiseEvent:l,renderFocus:m,renderText:i,setProperty:d,tooltip:s,translateText:k,value:b})=>{s=i(s);return React.createElement(FormElement,{className:t,component:r,element:o},React.createElement(FormControlLabel,{control:React.createElement(Checkbox,{checked:e,onChange:e=>{e=e.target.checked;d("checked",e),l("changed",e?b:void 0,e)},inputRef:e=>{null===e||e.disabled||m(e,c)}}),disabled:!a,label:React.createElement(Markdown,{text:n,translateText:k}),title:s}))};export default CheckBox;
1
+ import Checkbox from"@vertigis/react-ui/Checkbox";import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import*as React from"react";import{useContext}from"react";import HostContext from"../hostContext.js";import FormElement from"./FormElement.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const CheckBox=({checked:t,className:e,element:o,enabled:r,label:a,name:c,raiseEvent:m,setProperty:n,tooltip:l,value:s})=>{const i=useContext(HostContext),C=i.renderText(l),d=useFocusCallback(r,c,i),k=e=>{e=e.target.checked;n("checked",e),m("changed",e?s:void 0,e)};return React.createElement(FormElement,{className:e,element:o,name:c},e=>React.createElement(FormControlLabel,{control:React.createElement(Checkbox,{checked:t,inputProps:e,inputRef:d,onChange:k}),disabled:!r,label:React.createElement(Markdown,{text:a}),title:C}))};export default CheckBox;
@@ -4,5 +4,5 @@ import type { defs } from "../FormHost";
4
4
  /**
5
5
  * The component for the "Check Group" Form Element.
6
6
  */
7
- declare const CheckGroup: ({ className, component, current, element, enabled, items: elementItems, name, orientation, raiseEvent, renderFocus: hostRenderFocus, renderText, setProperty, setValue, translateText, value, }: FormElementProps<defs.ItemsRef | undefined>) => React.JSX.Element;
7
+ declare const CheckGroup: ({ className, current, element, enabled, items: elementItems, name, orientation, raiseEvent, setProperty, setValue, value, }: FormElementProps<defs.ItemsRef | undefined>) => React.JSX.Element;
8
8
  export default CheckGroup;
@@ -1 +1 @@
1
- import Checkbox from"@vertigis/react-ui/Checkbox";import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import FormGroup,{formGroupClasses}from"@vertigis/react-ui/FormGroup";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useEffect,useState}from"react";import FormElement from"../FormElement.js";import{Orientation}from"../constants.js";import{arrayEqual}from"../listUtilities.js";import{makeSafeClassName,inspectItems}from"../utils.js";import Markdown from"./Markdown.js";const Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${formGroupClasses.root}`]:{paddingBottom:e(2)}})),CheckGroup=({className:e,component:t,current:o,element:r,enabled:a,items:s,name:n,orientation:c,raiseEvent:m,renderFocus:i,renderText:l,setProperty:u,setValue:p,translateText:f,value:d})=>{const[h,v]=useState([]),[k,E]=useState();useEffect(()=>{var e=inspectItems(o,s,d)["items"];E(e);const t=[];for(const r in e)e[r].checked&&t.push(r);arrayEqual(h,t)||v(t)},[s]),useEffect(()=>{const e=[];if(d)for(const t in s)d.items.includes(s[t])&&e.push(t);arrayEqual(h,e)||v(e)},[d]);var C=e=>{null===e||e.disabled||i(e,n)};var b=(r,o)=>function(e){const t=k?k[r]:void 0;t&&(e=t.checked=e.currentTarget.checked,function(){const e=[],t=[];for(const a in k){var r=k[a];r.checked&&(e.push(r),t.push(a))}var o=0===e.length?void 0:{refValueType:"items",items:e};p(o,!1),u("current",void 0),arrayEqual(t,h)||v(t)}(),m("changed",e?o:void 0,e,r))};const y=[];for(const G in k){var g=k[G],F=-1!==h.indexOf(G),R=a&&!1!==g.enabled,x=l(g.tooltip),N=g.styleName?makeSafeClassName(g.styleName):void 0;y.push(React.createElement(FormControlLabel,{className:N,control:React.createElement(Checkbox,{checked:F,onChange:b(G,g.value),inputRef:C}),disabled:!R,key:G,label:React.createElement(Markdown,{text:g.label,translateText:f}),title:x}))}return React.createElement(Root,{className:e,component:t,element:r},React.createElement(FormGroup,{row:c===Orientation.HORIZONTAL},y))};export default CheckGroup;
1
+ import Checkbox from"@vertigis/react-ui/Checkbox";import FormControlLabel from"@vertigis/react-ui/FormControlLabel";import FormGroup,{formGroupClasses}from"@vertigis/react-ui/FormGroup";import{styled}from"@vertigis/react-ui/styles";import*as React from"react";import{useContext,useEffect,useState}from"react";import{Orientation}from"../constants.js";import HostContext from"../hostContext.js";import{arrayEqual}from"../listUtilities.js";import{makeSafeClassName,inspectItems}from"../utils.js";import FormElement from"./FormElement.js";import Markdown from"./Markdown.js";import{useFocusCallback}from"./common.js";const StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${formGroupClasses.root}`]:{paddingBottom:e(2)}})),CheckGroup=({className:e,current:r,element:t,enabled:o,items:a,name:s,orientation:n,raiseEvent:m,setProperty:c,setValue:i,value:l})=>{const u=useContext(HostContext),[f,p]=useState([]),[d,h]=useState();useEffect(()=>{var e=inspectItems(r,a,l)["items"];h(e);const t=[];for(const o in e)e[o].checked&&t.push(o);arrayEqual(f,t)||p(t)},[a]),useEffect(()=>{const e=[];if(l)for(const t in a)l.items.includes(a[t])&&e.push(t);arrayEqual(f,e)||p(e)},[l]);var C=useFocusCallback(o,s,u);var k=(o,r)=>function(e){const t=d?d[o]:void 0;t&&(e=t.checked=e.currentTarget.checked,function(){const e=[],t=[];for(const a in d){var o=d[a];o.checked&&(e.push(o),t.push(a))}var r=0===e.length?void 0:{refValueType:"items",items:e};i(r,!1),c("current",void 0),arrayEqual(t,f)||p(t)}(),m("changed",e?r:void 0,e,o))};const v=[];for(const g in d){var E=d[g],y=-1!==f.indexOf(g),b=o&&!1!==E.enabled,F=u.renderText(E.tooltip),x=E.styleName?makeSafeClassName(E.styleName):void 0;v.push(React.createElement(FormControlLabel,{className:x,control:React.createElement(Checkbox,{checked:y,inputRef:C,onChange:k(g,E.value)}),disabled:!b,key:g,label:React.createElement(Markdown,{text:E.label}),title:F}))}return React.createElement(StyledFormElement,{className:e,component:"fieldset",element:t,name:s},React.createElement(FormGroup,{row:n===Orientation.HORIZONTAL},v))};export default CheckGroup;
@@ -3,5 +3,5 @@ import type { FormElementProps } from "../..";
3
3
  /**
4
4
  * The component for the "Custom" Form Element.
5
5
  */
6
- declare const Custom: ({ className, component, customType, element }: FormElementProps) => React.JSX.Element;
6
+ declare const Custom: ({ className, component, customType, element, name }: FormElementProps) => React.JSX.Element;
7
7
  export default Custom;
@@ -1 +1 @@
1
- import*as React from"react";import{createElement}from"react";import FormElement from"../FormElement.js";import{getElementProps}from"../utils.js";const Custom=({className:e,component:t,customType:m,element:o})=>{var r=t.props.name;let n;return m&&t.elementRegistration&&(n=createElement(t.elementRegistration.component,getElementProps(t,o))),n||(console.warn(`Unable to render custom form element '${r}' of type '${m}'.`),n=`--- ${m} ---`),React.createElement(FormElement,{className:e,component:t,element:o},n)};export default Custom;
1
+ import*as React from"react";import{createElement}from"react";import{getElementProps}from"../utils.js";import FormElement from"./FormElement.js";const Custom=({className:e,component:t,customType:m,element:o,name:n})=>{let r;return m&&t.elementRegistration&&(r=createElement(t.elementRegistration.component,getElementProps(t,o))),r||(console.warn(`Unable to render custom form element '${n}' of type '${m}'.`),r=`--- ${m} ---`),React.createElement(FormElement,{className:e,name:n,element:o},r)};export default Custom;
@@ -4,5 +4,5 @@ import type { defs } from "../FormHost";
4
4
  /**
5
5
  * The component for the "Date Picker" Form Element.
6
6
  */
7
- declare const DatePicker: ({ className, component, element, enabled, error: elementError, format: elementFormat, name, prompt, renderFocus, renderText, setProperty, setValue: setElementValue, tooltip: elementTooltip, value: elementValue, }: FormElementProps<defs.DateTimeRef | undefined>) => React.JSX.Element;
7
+ declare const DatePicker: ({ className, element, enabled, error: elementError, format: elementFormat, name, prompt, setProperty, setValue: setElementValue, tooltip: elementTooltip, value: elementValue, }: FormElementProps<defs.DateTimeRef | undefined>) => React.JSX.Element;
8
8
  export default DatePicker;
@@ -1 +1 @@
1
- import BaseDatePicker from"@vertigis/react-ui/DatePicker";import FormHelperText from"@vertigis/react-ui/FormHelperText";import{MuiPickersAdapterContext}from"@vertigis/react-ui/LocalizationProvider";import*as React from"react";import{useContext,useEffect,useMemo,useRef,useState}from"react";import{DEFAULT_LOCALE}from"../../constants.js";import{Calendar}from"../Calendar.js";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{areValuesEqual,getDateBounds,getNewElementValue,makeProperValue}from"../dateUtilities.js";import{isInvalidError}from"../textUtilities.js";import{isDateTimeRef,makeUniqueId}from"../utils.js";import DateTimeTextField from"./DateTimeTextField.js";const DatePicker=({className:e,component:t,element:r,enabled:o,error:a,format:i,name:s,prompt:l,renderFocus:n,renderText:m,setProperty:u,setValue:c,tooltip:d,value:p})=>{const[f,E]=useState(null),[v,D]=useState(!1),[F,x]=useState(!1),[k,T]=useState(null),g=useRef(),C=useRef(!0),P=useFocusCallback(o,s,n);var R=m(d);const V={locale:useContext(MuiPickersAdapterContext)?.utils?.locale?.code||DEFAULT_LOCALE,timezone:(new Intl.DateTimeFormat).resolvedOptions().timeZone},j=Calendar.useNative(),M="date",S=isInvalidError(a);useEffect(()=>{var e=makeProperValue(p,j),t=getNewElementValue(e,M,V,j);areValuesEqual(p,t)||c(t,!1),T(e||null)},[p]),useEffect(()=>{if(!F&&!v)if(f)S||u("error",{status:"invalid"});else{if(S&&u("error",void 0),C.current)return void(C.current=!1);let e=k||void 0;if(e&&isDateTimeRef(p)){const r=new Date(p.value);e=new Date(e),e.setHours(r.getHours()),e.setMinutes(r.getMinutes()),e.setSeconds(r.getSeconds()),e.setMilliseconds(r.getMilliseconds())}var t=getNewElementValue(e,M,V,j);areValuesEqual(p,t)||c(t)}C.current=!1},[f,v,F]);var{min:n,max:d}=getDateBounds(i),i=useMemo(()=>`${makeUniqueId(s)}-input`,[s]),l=m(l);return React.createElement(FormElement,{className:e,component:t,element:r,inputId:i},S&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},g.current),React.createElement(BaseDatePicker,{disabled:!o,inputRef:e=>{e&&(g.current=e.dataset.formatString,P(e))},key:"date-picker",maxDate:d,minDate:n,onChange:e=>T(e),onClose:()=>x(!1),onError:e=>E(e),onOpen:()=>x(!0),slots:{textField:DateTimeTextField},slotProps:{textField:{error:!!a,id:i,inputProps:{placeholder:l},onBlur:()=>D(!1),onFocus:()=>D(!0),title:R}},value:k}))};export default DatePicker;
1
+ import BaseDatePicker from"@vertigis/react-ui/DatePicker";import FormHelperText from"@vertigis/react-ui/FormHelperText";import*as React from"react";import{useContext,useEffect,useMemo,useRef,useState}from"react";import{Calendar}from"../Calendar.js";import{areValuesEqual,getDateBounds,getNewElementValue,makeProperValue}from"../dateUtilities.js";import HostContext from"../hostContext.js";import{isInvalidError}from"../textUtilities.js";import{isDateTimeRef,makeUniqueId,useLocale}from"../utils.js";import DateTimeTextField from"./DateTimeTextField.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const DatePicker=({className:e,element:t,enabled:r,error:a,format:o,name:s,prompt:i,setProperty:l,setValue:n,tooltip:m,value:u})=>{const c=useContext(HostContext),[d,p]=useState(!1),[f,x]=useState(!1),[E,D]=useState(!1),[v,F]=useState(null),g=useRef(),T=useRef(!0),k=useFocusCallback(r,s,c),C=c.renderText(m);const R={locale:useLocale(),timezone:(new Intl.DateTimeFormat).resolvedOptions().timeZone},P=Calendar.useNative(),V="date",j=isInvalidError(a);useEffect(()=>{var e=makeProperValue(u,P),t=getNewElementValue(e,V,R,P);areValuesEqual(u,t)||n(t,!1),F(e||null)},[u]),useEffect(()=>{if(!E&&!f)if(d)j||l("error",{status:"invalid"});else{if(j&&l("error",void 0),T.current)return void(T.current=!1);let e=v||void 0;if(e&&isDateTimeRef(u)){const r=new Date(u.value);e=new Date(e),e.setHours(r.getHours()),e.setMinutes(r.getMinutes()),e.setSeconds(r.getSeconds()),e.setMilliseconds(r.getMilliseconds())}var t=getNewElementValue(e,V,R,P);areValuesEqual(u,t)||n(t)}T.current=!1},[d,f,E]);const{min:S,max:H}=getDateBounds(o),w=useMemo(()=>`${makeUniqueId(s)}-input`,[s]),I=c.renderText(i);return React.createElement(FormElement,{className:e,element:t,inputId:w,name:s},e=>React.createElement(React.Fragment,null,j&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},g.current),React.createElement(BaseDatePicker,{disabled:!r,inputRef:e=>{e&&(g.current=e.dataset.formatString,k(e))},key:"date-picker",maxDate:H,minDate:S,onChange:e=>F(e),onClose:()=>D(!1),onError:e=>p(!!e),onOpen:()=>D(!0),slots:{textField:DateTimeTextField},slotProps:{textField:{error:!!a,id:w,inputProps:{...e,placeholder:I},onBlur:()=>x(!1),onFocus:()=>x(!0),title:C}},value:v})))};export default DatePicker;
@@ -8,5 +8,5 @@ export declare const dateRangePickerClasses: {
8
8
  /**
9
9
  * The component for the "Date Range Picker" Form Element.
10
10
  */
11
- declare const DateRangePicker: ({ className, component, element, enabled, error, format: elementFormat, name, renderFocus, renderText, setProperty, setValue: setElementValue, tooltip: elementTooltip, value: elementValue, }: FormElementProps<DateRangeRef | undefined>) => React.JSX.Element;
11
+ declare const DateRangePicker: ({ className, element, enabled, error, format: elementFormat, name, setProperty, setValue: setElementValue, tooltip: elementTooltip, value: elementValue, }: FormElementProps<DateRangeRef | undefined>) => React.JSX.Element;
12
12
  export default DateRangePicker;
@@ -1 +1 @@
1
- import BaseDateRangePicker from"@vertigis/react-ui/DateRangePicker";import FormHelperText from"@vertigis/react-ui/FormHelperText";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import{useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import FormElement from"../FormElement.js";import{useFocusCallback}from"../common.js";import{areValuesEqual,convertToDateRangeRef}from"../dateUtilities.js";import{isInvalidError}from"../textUtilities.js";import{makeUniqueId}from"../utils.js";import DateTimeTextField from"./DateTimeTextField.js";const DateRangePickerField=e=>{const{inputProps:t,...r}=e,{"data-elementError":a,...o}=t;return r.error=r.error||a,React.createElement(DateTimeTextField,{inputProps:o,...r})},PREFIX="DateRangePicker",dateRangePickerClasses={root:`${PREFIX}-root`,toLabel:`${PREFIX}-toLabel`},Root=styled(FormElement)(({theme:{spacing:e}})=>({[`.${dateRangePickerClasses.toLabel}`]:{paddingTop:e(3)}})),DateRangePicker=({className:e,component:t,element:r,enabled:a,error:o,format:n,name:s,renderFocus:i,renderText:l,setProperty:m,setValue:u,tooltip:c,value:d})=>{const[p,f]=useState([null,null]),[R,g]=useState(-1),[D,E]=useState([!1,!1]),[P,x]=useState(!1),[F,v]=useState([null,null]),k=useRef(),T=useRef(!0),b=isInvalidError(o);useEffect(()=>{var e=convertToDateRangeRef(d),t=[e?.startDate||null,e?.endDate||null],e=S(t);areValuesEqual(d,e)||u(e,!1),v(t)},[d]),useEffect(()=>{var e=0===R?D[0]:!!p[0],t=1===R?D[1]:!!p[1];E([e,t]);t=e||t;if(t?b||m("error",{status:"invalid"}):b&&m("error",void 0),!P&&-1===R&&!t){if(T.current)return void(T.current=!1);t=S(F);areValuesEqual(d,t)||u(t)}T.current=!1},[p,R,P]);const I=l(c),C=useFocusCallback(a,s,i),S=e=>{if(e[0]&&e[1])return{refValueType:"daterange",startDate:e[0],endDate:e[1]}},j=useMemo(()=>`${makeUniqueId(s)}-input`,[s]);var c=D[0]||D[1],{lowerBound:i,upperBound:n}=n||{},i=i?new Date(i):void 0,n=n?new Date(n):void 0;return React.createElement(Root,{className:clsx(e,dateRangePickerClasses.root),component:t,element:r,inputId:j},c&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},k.current),React.createElement(BaseDateRangePicker,{disabled:!a,maxDate:n,minDate:i,onChange:e=>v(e),onClose:()=>x(!1),onError:e=>f(e),onOpen:()=>x(!0),slots:{textField:DateRangePickerField},slotProps:{fieldSeparator:{children:l("@common-to"),className:dateRangePickerClasses.toLabel},textField:({position:e})=>({inputProps:{id:"start"===e?j:void 0,"data-elementError":!!o,"data-index":"start"===e?0:1},inputRef:e=>{"0"===e?.dataset.index&&(k.current=e.dataset.formatString,C(e))},onBlur:e=>{Number.parseInt(e.target.dataset.index)===R&&g(-1)},onFocus:e=>{e=Number.parseInt(e.target.dataset.index);g(e)},title:I})},value:F}))};export default DateRangePicker;export{dateRangePickerClasses};
1
+ import BaseDateRangePicker from"@vertigis/react-ui/DateRangePicker";import FormHelperText from"@vertigis/react-ui/FormHelperText";import{styled}from"@vertigis/react-ui/styles";import clsx from"clsx";import{useContext,useEffect,useMemo,useRef,useState}from"react";import*as React from"react";import{areValuesEqual,convertToDateRangeRef}from"../dateUtilities.js";import HostContext from"../hostContext.js";import{isInvalidError}from"../textUtilities.js";import{makeUniqueId}from"../utils.js";import DateTimeTextField from"./DateTimeTextField.js";import FormElement from"./FormElement.js";import{useFocusCallback}from"./common.js";const DateRangePickerField=e=>{const{inputProps:t,...r}=e,{"data-elementError":a,...o}=t;return r.error=r.error||a,React.createElement(DateTimeTextField,{inputProps:o,...r})},PREFIX="DateRangePicker",dateRangePickerClasses={root:`${PREFIX}-root`,toLabel:`${PREFIX}-toLabel`},StyledFormElement=styled(FormElement)(({theme:{spacing:e}})=>({[`.${dateRangePickerClasses.toLabel}`]:{paddingTop:e(3)}})),DateRangePicker=({className:e,element:t,enabled:r,error:a,format:o,name:s,setProperty:n,setValue:i,tooltip:l,value:m})=>{const u=useContext(HostContext),[c,d]=useState([null,null]),[p,f]=useState(-1),[R,x]=useState([!1,!1]),[g,E]=useState(!1),[D,F]=useState([null,null]),P=useRef(),v=useRef(!0),k=isInvalidError(a);useEffect(()=>{var e=convertToDateRangeRef(m),t=[e?.startDate||null,e?.endDate||null],e=b(t);areValuesEqual(m,e)||i(e,!1),F(t)},[m]),useEffect(()=>{var e=0===p?R[0]:!!c[0],t=1===p?R[1]:!!c[1];x([e,t]);t=e||t;if(t?k||n("error",{status:"invalid"}):k&&n("error",void 0),!g&&-1===p&&!t){if(v.current)return void(v.current=!1);t=b(D);areValuesEqual(m,t)||i(t)}v.current=!1},[c,p,g]);const T=u.renderText(l),C=useFocusCallback(r,s,u),b=e=>{if(e[0]&&e[1])return{refValueType:"daterange",startDate:e[0],endDate:e[1]}},I=useMemo(()=>`${makeUniqueId(s)}-input`,[s]);var S=R[0]||R[1],{lowerBound:l,upperBound:o}=o||{},l=l?new Date(l):void 0,o=o?new Date(o):void 0;return React.createElement(StyledFormElement,{className:clsx(e,dateRangePickerClasses.root),element:t,inputId:I,name:s},S&&React.createElement(FormHelperText,{component:"div",error:!0,role:"alert"},P.current),React.createElement(BaseDateRangePicker,{disabled:!r,maxDate:o,minDate:l,onChange:e=>F(e),onClose:()=>E(!1),onError:e=>d(e),onOpen:()=>E(!0),slots:{textField:DateRangePickerField},slotProps:{fieldSeparator:{children:u.renderText("@common-to"),className:dateRangePickerClasses.toLabel},textField:({position:e})=>({inputProps:{id:"start"===e?I:void 0,"data-elementError":!!a,"data-index":"start"===e?0:1},inputRef:e=>{"0"===e?.dataset.index&&(P.current=e.dataset.formatString,C(e))},onBlur:e=>{Number.parseInt(e.target.dataset.index)===p&&f(-1)},onFocus:e=>{e=Number.parseInt(e.target.dataset.index);f(e)},title:T})},value:D}))};export default DateRangePicker;export{dateRangePickerClasses};