From 7e4034f14498bedd1f85d3bb6e18394dc89b79ed Mon Sep 17 00:00:00 2001 From: Sergio Clebal Date: Thu, 21 Aug 2025 12:35:19 +0200 Subject: [PATCH 01/30] Add support for legendDisplay on the layer (#119) * Enhance setLayerLegendVisibility method with showOnlyName option * docs(changeset): Enhance setLayerLegendVisibility method with showOnlyName option * update implementation * minor tweaks * Update implementation * better naming and address Sukanya's feedback (cherry picked from commit 1403bf19cd656bbd5172e3b08b6fc6b3a0c8eeae) --- .changeset/young-hounds-taste.md | 5 + docs/Layers/DataOnlyLayer.md | 10 + docs/Layers/LayerCommon.md | 10 + docs/Layers/LegendDisplay.md | 27 ++ docs/Layers/README.md | 1 + docs/Layers/RasterLayer.md | 10 + docs/Layers/UpdateLayerParams.md | 10 + docs/Layers/VectorLayer.md | 10 + docs/_media/legend-default.png | Bin 0 -> 93385 bytes docs/_media/legend-name-only.png | Bin 0 -> 50567 bytes etc/js-sdk.api.md | 403 ++++++++++---------- src/modules/layers/img/legend-default.png | Bin 0 -> 93385 bytes src/modules/layers/img/legend-name-only.png | Bin 0 -> 50567 bytes src/modules/layers/index.ts | 1 + src/modules/layers/types.ts | 43 +++ 15 files changed, 330 insertions(+), 200 deletions(-) create mode 100644 .changeset/young-hounds-taste.md create mode 100644 docs/Layers/LegendDisplay.md create mode 100644 docs/_media/legend-default.png create mode 100644 docs/_media/legend-name-only.png create mode 100644 src/modules/layers/img/legend-default.png create mode 100644 src/modules/layers/img/legend-name-only.png diff --git a/.changeset/young-hounds-taste.md b/.changeset/young-hounds-taste.md new file mode 100644 index 00000000..0364a150 --- /dev/null +++ b/.changeset/young-hounds-taste.md @@ -0,0 +1,5 @@ +--- +"@feltmaps/js-sdk": minor +--- + +Add support for legendDisplay on the layer diff --git a/docs/Layers/DataOnlyLayer.md b/docs/Layers/DataOnlyLayer.md index c03ae315..ee7509de 100644 --- a/docs/Layers/DataOnlyLayer.md +++ b/docs/Layers/DataOnlyLayer.md @@ -64,6 +64,16 @@ Whether the layer is shown in the legend or not. *** +## legendDisplay + +> **legendDisplay**: `"default"` | `"nameOnly"` + +The display mode for the layer's legend. + +See [LegendDisplay](LegendDisplay.md) for more details. + +*** + ## style > **style**: `object` diff --git a/docs/Layers/LayerCommon.md b/docs/Layers/LayerCommon.md index 10d59745..dbd2cee5 100644 --- a/docs/Layers/LayerCommon.md +++ b/docs/Layers/LayerCommon.md @@ -64,6 +64,16 @@ Whether the layer is shown in the legend or not. *** +## legendDisplay + +> **legendDisplay**: `"default"` | `"nameOnly"` + +The display mode for the layer's legend. + +See [LegendDisplay](LegendDisplay.md) for more details. + +*** + ## style > **style**: `object` diff --git a/docs/Layers/LegendDisplay.md b/docs/Layers/LegendDisplay.md new file mode 100644 index 00000000..9a7deef7 --- /dev/null +++ b/docs/Layers/LegendDisplay.md @@ -0,0 +1,27 @@ +*** + +> **LegendDisplay**: `"default"` | `"nameOnly"` + +Describes how the layer is displayed in the legend. + +There are two display modes: + +1. Default: + * Shows layer name and caption + * Shows representation of the layer's viz (e.g. color swatches, proportional symbols) + +
+ Default layer legend + +
Default layer legend
+
+ +2. Name-only (compact display): + * Shows only layer name and caption + * Hides representation of the layer's viz + +
+ Name-only layer legend + +
Name-only layer legend
+
diff --git a/docs/Layers/README.md b/docs/Layers/README.md index d98fe053..dcff327c 100644 --- a/docs/Layers/README.md +++ b/docs/Layers/README.md @@ -79,6 +79,7 @@ independently of the Layer, so you can turn on and off each category or class in * [LegendItemIdentifier](LegendItemIdentifier.md) * [LegendItemsConstraint](LegendItemsConstraint.md) * [LegendItemChangeCallbackParams](LegendItemChangeCallbackParams.md) +* [LegendDisplay](LegendDisplay.md) # Stats diff --git a/docs/Layers/RasterLayer.md b/docs/Layers/RasterLayer.md index 94533a4b..fe5fb2cf 100644 --- a/docs/Layers/RasterLayer.md +++ b/docs/Layers/RasterLayer.md @@ -64,6 +64,16 @@ Whether the layer is shown in the legend or not. *** +## legendDisplay + +> **legendDisplay**: `"default"` | `"nameOnly"` + +The display mode for the layer's legend. + +See [LegendDisplay](LegendDisplay.md) for more details. + +*** + ## style > **style**: `object` diff --git a/docs/Layers/UpdateLayerParams.md b/docs/Layers/UpdateLayerParams.md index 59fc6b1f..281b4e30 100644 --- a/docs/Layers/UpdateLayerParams.md +++ b/docs/Layers/UpdateLayerParams.md @@ -20,6 +20,16 @@ Changes whether the layer is shown in the legend. *** +## legendDisplay? + +> `optional` **legendDisplay**: `"default"` | `"nameOnly"` + +Changes the layer's legend display mode. + +See [LegendDisplay](LegendDisplay.md) for more details. + +*** + ## name? > `optional` **name**: `string` diff --git a/docs/Layers/VectorLayer.md b/docs/Layers/VectorLayer.md index 716958ef..f402dcf2 100644 --- a/docs/Layers/VectorLayer.md +++ b/docs/Layers/VectorLayer.md @@ -64,6 +64,16 @@ Whether the layer is shown in the legend or not. *** +## legendDisplay + +> **legendDisplay**: `"default"` | `"nameOnly"` + +The display mode for the layer's legend. + +See [LegendDisplay](LegendDisplay.md) for more details. + +*** + ## style > **style**: `object` diff --git a/docs/_media/legend-default.png b/docs/_media/legend-default.png new file mode 100644 index 0000000000000000000000000000000000000000..9090992ddeb03c6a58f6592ca21d952a13338a9f GIT binary patch literal 93385 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

!Iz=hQxlcTH&GPQrRBDlg?3+Jv1~Fy2E_^ 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%0DIz;wH%6nfpb+T3|H1E6KBQCzEZyYD-h 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 literal 0 HcmV?d00001 diff --git a/docs/_media/legend-name-only.png b/docs/_media/legend-name-only.png new file mode 100644 index 0000000000000000000000000000000000000000..7275b3ae714c7361aed531c4894cbe18b1c0be8d GIT binary patch literal 50567 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

!Iz=hQxlcTH&GPQrRBDlg?3+Jv1~Fy2E_^ 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%0DIz;wH%6nfpb+T3|H1E6KBQCzEZyYD-h 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 literal 0 HcmV?d00001 diff --git a/src/modules/layers/img/legend-name-only.png b/src/modules/layers/img/legend-name-only.png new file mode 100644 index 0000000000000000000000000000000000000000..7275b3ae714c7361aed531c4894cbe18b1c0be8d GIT binary patch literal 50567 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 {} +const LegendDisplaySchema = z.enum(["default", "nameOnly"]); + +/** + * Describes how the layer is displayed in the legend. + * + * There are two display modes: + * + * 1. Default: + * - Shows layer name and caption + * - Shows representation of the layer's viz (e.g. color swatches, proportional symbols) + * + *
+ * Default layer legend + *
Default layer legend
+ *
+ * + * 2. Name-only (compact display): + * - Shows only layer name and caption + * - Hides representation of the layer's viz + * + *
+ * Name-only layer legend + *
Name-only layer legend
+ *
+ * + * @group Legend Items + */ +export type LegendDisplay = z.infer; + /** * The parameters for the {@link LayersController.updateLayer} method. */ @@ -324,6 +360,13 @@ export const UpdateLayerSchema = z.object({ */ shownInLegend: z.boolean().optional(), + /** + * Changes the layer's legend display mode. + * + * See {@link LegendDisplay} for more details. + */ + legendDisplay: LegendDisplaySchema.optional(), + /** * Changes the name of the layer. */ From e9564fe63d88272aaeb4b120abddc637632f1162 Mon Sep 17 00:00:00 2001 From: Sergio Clebal Date: Thu, 21 Aug 2025 13:07:57 +0200 Subject: [PATCH 02/30] Start prerelease --- .changeset/pre.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000..77ddfac8 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,8 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "@feltmaps/js-sdk": "1.8.0" + }, + "changesets": [] +} From 7d71fba0e20299de9ebf5bf5245e8f9654216c7b Mon Sep 17 00:00:00 2001 From: Sergio Clebal Date: Thu, 21 Aug 2025 13:10:14 +0200 Subject: [PATCH 03/30] RELEASING: Releasing 1 package(s) Releases: @feltmaps/js-sdk@1.9.0-next.0 [skip ci] --- CHANGELOG.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78d45e21..4ff754e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # @feltmaps/js-sdk +## 1.9.0-next.0 + +### Minor Changes + +- 7e4034f: Add support for legendDisplay on the layer + ## 1.8.0 ### Minor Changes diff --git a/package.json b/package.json index 39212d74..1c29a679 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@feltmaps/js-sdk", - "version": "1.8.0", + "version": "1.9.0-next.0", "description": "An SDK for Felt maps", "keywords": [ "felt", From 810f8aa4417a04e661e53fad07eade381e8d7873 Mon Sep 17 00:00:00 2001 From: Sergio Clebal Date: Thu, 21 Aug 2025 13:10:27 +0200 Subject: [PATCH 04/30] Update prerelease docs/meta --- .changeset/pre.json | 4 +++- docs/CHANGELOG.md | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 77ddfac8..0c0336ea 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -4,5 +4,7 @@ "initialVersions": { "@feltmaps/js-sdk": "1.8.0" }, - "changesets": [] + "changesets": [ + "young-hounds-taste" + ] } diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index b53d1f51..fcc9712b 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,11 @@ # @feltmaps/js-sdk +## 1.9.0-next.0 + +### Minor Changes + +* 7e4034f: Add support for legendDisplay on the layer + ## 1.8.0 ### Minor Changes From fe52684d82d9731b62ae75274b5f159b5d8bac28 Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Tue, 26 Aug 2025 12:00:15 -0400 Subject: [PATCH 05/30] clean up changelogs --- .changeset/pre.json | 2 +- CHANGELOG.md | 6 ------ docs/CHANGELOG.md | 6 ------ 3 files changed, 1 insertion(+), 13 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 0c0336ea..e3943692 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,5 +1,5 @@ { - "mode": "pre", + "mode": "exit", "tag": "next", "initialVersions": { "@feltmaps/js-sdk": "1.8.0" diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ff754e4..78d45e21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,5 @@ # @feltmaps/js-sdk -## 1.9.0-next.0 - -### Minor Changes - -- 7e4034f: Add support for legendDisplay on the layer - ## 1.8.0 ### Minor Changes diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index fcc9712b..b53d1f51 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,11 +1,5 @@ # @feltmaps/js-sdk -## 1.9.0-next.0 - -### Minor Changes - -* 7e4034f: Add support for legendDisplay on the layer - ## 1.8.0 ### Minor Changes From 32ca8b6d34f48dd7df4e9cc5f7744c092bc71f6c Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Wed, 27 Aug 2025 08:30:32 -0400 Subject: [PATCH 06/30] RELEASING: Releasing 1 package(s) Releases: @feltmaps/js-sdk@1.9.0 [skip ci] --- .changeset/young-hounds-taste.md | 5 ----- CHANGELOG.md | 6 ++++++ package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/young-hounds-taste.md diff --git a/.changeset/young-hounds-taste.md b/.changeset/young-hounds-taste.md deleted file mode 100644 index 0364a150..00000000 --- a/.changeset/young-hounds-taste.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@feltmaps/js-sdk": minor ---- - -Add support for legendDisplay on the layer diff --git a/CHANGELOG.md b/CHANGELOG.md index 78d45e21..bf6d3a9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # @feltmaps/js-sdk +## 1.9.0 + +### Minor Changes + +- 7e4034f: Add support for legendDisplay on the layer + ## 1.8.0 ### Minor Changes diff --git a/package.json b/package.json index 1c29a679..bc0b1809 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@feltmaps/js-sdk", - "version": "1.9.0-next.0", + "version": "1.9.0", "description": "An SDK for Felt maps", "keywords": [ "felt", From 4b96e5f7ca59a37b2684a13416c67c8798740c74 Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Wed, 27 Aug 2025 08:30:42 -0400 Subject: [PATCH 07/30] Update prerelease docs/meta --- .changeset/pre.json | 10 ---------- docs/CHANGELOG.md | 6 ++++++ 2 files changed, 6 insertions(+), 10 deletions(-) delete mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index e3943692..00000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "mode": "exit", - "tag": "next", - "initialVersions": { - "@feltmaps/js-sdk": "1.8.0" - }, - "changesets": [ - "young-hounds-taste" - ] -} diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index b53d1f51..6e567425 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,11 @@ # @feltmaps/js-sdk +## 1.9.0 + +### Minor Changes + +* 7e4034f: Add support for legendDisplay on the layer + ## 1.8.0 ### Minor Changes From 10bea400ebf27d4b52354fb55c3a0cb80b131530 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Fri, 26 Sep 2025 14:15:40 +0200 Subject: [PATCH 08/30] Enter prerelease --- .changeset/pre.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000..71429bab --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,8 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "@feltmaps/js-sdk": "1.9.0" + }, + "changesets": [] +} From 3d9527b933457a128b74c53b1c38a795919f191f Mon Sep 17 00:00:00 2001 From: sukanya Date: Thu, 25 Sep 2025 12:36:04 -0400 Subject: [PATCH 09/30] Add duplicateLayer method (#122) * Add duplicateLayer method (cherry picked from commit edbd58180e422575c8f6e66ca3de9d77d3f4a93c) --- .changeset/sharp-files-dance.md | 5 + DEVELOPING.md | 7 +- docs/Layers/LayersController.md | 30 +++ docs/Main/FeltController.md | 30 +++ etc/js-sdk.api.md | 402 +++++++++++++++---------------- package-lock.json | 4 +- src/modules/layers/controller.ts | 14 ++ src/modules/layers/schema.ts | 6 +- 8 files changed, 290 insertions(+), 208 deletions(-) create mode 100644 .changeset/sharp-files-dance.md diff --git a/.changeset/sharp-files-dance.md b/.changeset/sharp-files-dance.md new file mode 100644 index 00000000..5cbce2ca --- /dev/null +++ b/.changeset/sharp-files-dance.md @@ -0,0 +1,5 @@ +--- +"@feltmaps/js-sdk": minor +--- + +Add duplicateLayer method diff --git a/DEVELOPING.md b/DEVELOPING.md index 0656f32e..fc828d9b 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -70,12 +70,13 @@ Once you have added your module: 1. Run `npm run build` to ensure everything compiles and the docs are generated. It's possible for the docs to fail to build if some types are not exported, but you will be warned in the console about this. -1. Run `npm run update-api` to run api-extractor which updates the "api spec" file, which allows +2. Run `npm run update-api` to run api-extractor which updates the "api spec" file, which allows reviewers to understand the changes made to the API. -1. Stage or commit your changes. This is important, because the next step will fail if you have +3. Stage or commit your changes. This is important, because the next step will fail if you have docs changes that are unstaged as it is used to check that the docs are up to date. -1. Run `npm run check` which will check that the package is correctly built, the docs have been +4. Run `npm run check` which will check that the package is correctly built, the docs have been updated, the API spec has been updated and the tests are passing. +5. If you make any further changes, run steps 1 to 4 again. If this all works, your module is ready and should be working. diff --git a/docs/Layers/LayersController.md b/docs/Layers/LayersController.md index 220362da..15410372 100644 --- a/docs/Layers/LayersController.md +++ b/docs/Layers/LayersController.md @@ -268,6 +268,36 @@ await felt.deleteLayer("layer-1"); *** +## duplicateLayer() + +> **duplicateLayer**(`id`: `string`): `Promise`\<[`Layer`](Layer.md)> + +Duplicate a layer from the map by its id. + +### Parameters + +| Parameter | Type | +| --------- | -------- | +| `id` | `string` | + +### Returns + +`Promise`\<[`Layer`](Layer.md)> + +The duplicated layer. + +### Remarks + +This will create an ephemeral copy of the layer, just for the duration of the session. The duplicated layer will not be persisted to the map. + +### Example + +```typescript +const duplicatedLayer = await felt.duplicateLayer("layer-1"); +``` + +*** + ## getLayerGroup() > **getLayerGroup**(`id`: `string`): `Promise`\<`null` | [`LayerGroup`](LayerGroup.md)> diff --git a/docs/Main/FeltController.md b/docs/Main/FeltController.md index 86e4db19..4133bfd9 100644 --- a/docs/Main/FeltController.md +++ b/docs/Main/FeltController.md @@ -567,6 +567,36 @@ await felt.deleteLayer("layer-1"); *** +## duplicateLayer() + +> **duplicateLayer**(`id`: `string`): `Promise`\<[`Layer`](../Layers/Layer.md)> + +Duplicate a layer from the map by its id. + +### Parameters + +| Parameter | Type | +| --------- | -------- | +| `id` | `string` | + +### Returns + +`Promise`\<[`Layer`](../Layers/Layer.md)> + +The duplicated layer. + +### Remarks + +This will create an ephemeral copy of the layer, just for the duration of the session. The duplicated layer will not be persisted to the map. + +### Example + +```typescript +const duplicatedLayer = await felt.duplicateLayer("layer-1"); +``` + +*** + ## getLayerGroup() > **getLayerGroup**(`id`: `string`): `Promise`\<`null` | [`LayerGroup`](../Layers/LayerGroup.md)> diff --git a/etc/js-sdk.api.md b/etc/js-sdk.api.md index 45ae0c5c..fc434b97 100644 --- a/etc/js-sdk.api.md +++ b/etc/js-sdk.api.md @@ -4,207 +4,207 @@ ```ts -import { av as AggregatedGridConfig } from './controller-CfSLTEhH.js'; -import { aw as AggregationConfig } from './controller-CfSLTEhH.js'; -import { ax as AggregationMethod } from './controller-CfSLTEhH.js'; -import { C as CircleElementCreate } from './controller-CfSLTEhH.js'; -import { a as CircleElementRead } from './controller-CfSLTEhH.js'; -import { b as CircleElementUpdate } from './controller-CfSLTEhH.js'; -import { b9 as CircleToolSettings } from './controller-CfSLTEhH.js'; -import { ba as ConfigurableToolType } from './controller-CfSLTEhH.js'; -import { ay as CountGridConfig } from './controller-CfSLTEhH.js'; -import { bq as CreateActionTriggerParams } from './controller-CfSLTEhH.js'; -import { K as CreateLayersFromGeoJsonParams } from './controller-CfSLTEhH.js'; -import { br as CreateOrUpdatePanelParams } from './controller-CfSLTEhH.js'; -import { bs as CreatePanelElementsParams } from './controller-CfSLTEhH.js'; -import { O as DataOnlyLayer } from './controller-CfSLTEhH.js'; -import { bt as DeletePanelElementsParams } from './controller-CfSLTEhH.js'; -import { E as Element_2 } from './controller-CfSLTEhH.js'; -import { c as ElementChangeCallbackParams } from './controller-CfSLTEhH.js'; -import { d as ElementCreate } from './controller-CfSLTEhH.js'; -import { e as ElementGroup } from './controller-CfSLTEhH.js'; -import { f as ElementGroupChangeCallbackParams } from './controller-CfSLTEhH.js'; -import { aN as ElementGroupNode } from './controller-CfSLTEhH.js'; -import { aO as ElementNode } from './controller-CfSLTEhH.js'; -import { B as ElementsController } from './controller-CfSLTEhH.js'; -import { g as ElementUpdate } from './controller-CfSLTEhH.js'; -import { aP as EntityNode } from './controller-CfSLTEhH.js'; -import { aQ as FeatureNode } from './controller-CfSLTEhH.js'; -import { aR as FeatureSelection } from './controller-CfSLTEhH.js'; -import { aV as FeltBoundary } from './controller-CfSLTEhH.js'; -import { F as FeltController } from './controller-CfSLTEhH.js'; -import { Q as FeltTiledVectorSource } from './controller-CfSLTEhH.js'; -import { aW as FeltZoom } from './controller-CfSLTEhH.js'; -import { ao as FilterExpression } from './controller-CfSLTEhH.js'; -import { ap as FilterLogicGate } from './controller-CfSLTEhH.js'; -import { ar as Filters } from './controller-CfSLTEhH.js'; -import { aq as FilterTernary } from './controller-CfSLTEhH.js'; -import { R as GeoJsonDataVectorSource } from './controller-CfSLTEhH.js'; -import { aX as GeoJsonFeature } from './controller-CfSLTEhH.js'; -import { S as GeoJsonFileVectorSource } from './controller-CfSLTEhH.js'; -import { aY as GeoJsonGeometry } from './controller-CfSLTEhH.js'; -import { aZ as GeoJsonProperties } from './controller-CfSLTEhH.js'; -import { W as GeoJsonUrlVectorSource } from './controller-CfSLTEhH.js'; -import { as as GeometryFilter } from './controller-CfSLTEhH.js'; -import { G as GetElementGroupsConstraint } from './controller-CfSLTEhH.js'; -import { h as GetElementsConstraint } from './controller-CfSLTEhH.js'; -import { az as GetLayerCalculationParams } from './controller-CfSLTEhH.js'; -import { aA as GetLayerCategoriesGroup } from './controller-CfSLTEhH.js'; -import { aB as GetLayerCategoriesParams } from './controller-CfSLTEhH.js'; -import { X as GetLayerGroupsConstraint } from './controller-CfSLTEhH.js'; -import { aC as GetLayerHistogramBin } from './controller-CfSLTEhH.js'; -import { aD as GetLayerHistogramParams } from './controller-CfSLTEhH.js'; -import { aE as GetLayerPrecomputedCalculationParams } from './controller-CfSLTEhH.js'; -import { Y as GetLayersConstraint } from './controller-CfSLTEhH.js'; -import { Z as GetRenderedFeaturesConstraint } from './controller-CfSLTEhH.js'; -import { aF as GridConfig } from './controller-CfSLTEhH.js'; -import { aG as GridType } from './controller-CfSLTEhH.js'; -import { H as HighlighterElementCreate } from './controller-CfSLTEhH.js'; -import { i as HighlighterElementRead } from './controller-CfSLTEhH.js'; -import { j as HighlighterElementUpdate } from './controller-CfSLTEhH.js'; -import { bb as HighlighterToolSettings } from './controller-CfSLTEhH.js'; -import { I as ImageElementCreate } from './controller-CfSLTEhH.js'; -import { k as ImageElementRead } from './controller-CfSLTEhH.js'; -import { l as ImageElementUpdate } from './controller-CfSLTEhH.js'; -import { bc as InputToolSettings } from './controller-CfSLTEhH.js'; -import { J as InteractionsController } from './controller-CfSLTEhH.js'; -import { a_ as LatLng } from './controller-CfSLTEhH.js'; -import { _ as Layer } from './controller-CfSLTEhH.js'; -import { at as LayerBoundaries } from './controller-CfSLTEhH.js'; -import { $ as LayerChangeCallbackParams } from './controller-CfSLTEhH.js'; -import { a0 as LayerCommon } from './controller-CfSLTEhH.js'; -import { ae as LayerFeature } from './controller-CfSLTEhH.js'; -import { au as LayerFilters } from './controller-CfSLTEhH.js'; -import { a1 as LayerGroup } from './controller-CfSLTEhH.js'; -import { a2 as LayerGroupChangeCallbackParams } from './controller-CfSLTEhH.js'; -import { aS as LayerGroupNode } from './controller-CfSLTEhH.js'; -import { aT as LayerNode } from './controller-CfSLTEhH.js'; -import { a3 as LayerProcessingStatus } from './controller-CfSLTEhH.js'; -import { ag as LayerSchema } from './controller-CfSLTEhH.js'; -import { ah as LayerSchemaAttribute } from './controller-CfSLTEhH.js'; -import { ai as LayerSchemaBooleanAttribute } from './controller-CfSLTEhH.js'; -import { aj as LayerSchemaCommonAttribute } from './controller-CfSLTEhH.js'; -import { ak as LayerSchemaDateAttribute } from './controller-CfSLTEhH.js'; -import { al as LayerSchemaDateTimeAttribute } from './controller-CfSLTEhH.js'; -import { am as LayerSchemaNumericAttribute } from './controller-CfSLTEhH.js'; -import { an as LayerSchemaTextAttribute } from './controller-CfSLTEhH.js'; -import { aK as LayersController } from './controller-CfSLTEhH.js'; -import { a4 as LegendDisplay } from './controller-CfSLTEhH.js'; -import { a5 as LegendItem } from './controller-CfSLTEhH.js'; -import { a6 as LegendItemChangeCallbackParams } from './controller-CfSLTEhH.js'; -import { a7 as LegendItemIdentifier } from './controller-CfSLTEhH.js'; -import { a8 as LegendItemsConstraint } from './controller-CfSLTEhH.js'; -import { a$ as LineStringGeometry } from './controller-CfSLTEhH.js'; -import { bd as LineToolSettings } from './controller-CfSLTEhH.js'; -import { L as LinkElementRead } from './controller-CfSLTEhH.js'; -import { b0 as LngLatTuple } from './controller-CfSLTEhH.js'; -import { aL as MapDetails } from './controller-CfSLTEhH.js'; -import { D as MapInteractionEvent } from './controller-CfSLTEhH.js'; -import { M as MarkerElementCreate } from './controller-CfSLTEhH.js'; -import { m as MarkerElementRead } from './controller-CfSLTEhH.js'; -import { n as MarkerElementUpdate } from './controller-CfSLTEhH.js'; -import { be as MarkerToolSettings } from './controller-CfSLTEhH.js'; -import { aM as MiscController } from './controller-CfSLTEhH.js'; -import { aH as MultiAggregationConfig } from './controller-CfSLTEhH.js'; -import { b1 as MultiLineStringGeometry } from './controller-CfSLTEhH.js'; -import { b2 as MultiPointGeometry } from './controller-CfSLTEhH.js'; -import { b3 as MultiPolygonGeometry } from './controller-CfSLTEhH.js'; -import { N as NoteElementCreate } from './controller-CfSLTEhH.js'; -import { o as NoteElementRead } from './controller-CfSLTEhH.js'; -import { p as NoteElementUpdate } from './controller-CfSLTEhH.js'; -import { bf as NoteToolSettings } from './controller-CfSLTEhH.js'; -import { bu as OnMapInteractionsOptions } from './controller-CfSLTEhH.js'; -import { P as PathElementCreate } from './controller-CfSLTEhH.js'; -import { q as PathElementRead } from './controller-CfSLTEhH.js'; -import { r as PathElementUpdate } from './controller-CfSLTEhH.js'; -import { bg as PinToolSettings } from './controller-CfSLTEhH.js'; -import { s as PlaceElementCreate } from './controller-CfSLTEhH.js'; -import { t as PlaceElementRead } from './controller-CfSLTEhH.js'; -import { u as PlaceElementUpdate } from './controller-CfSLTEhH.js'; -import { bh as PlaceFrame } from './controller-CfSLTEhH.js'; -import { bx as PlacementForUIElement } from './controller-CfSLTEhH.js'; -import { bi as PlaceSymbol } from './controller-CfSLTEhH.js'; -import { b4 as PointGeometry } from './controller-CfSLTEhH.js'; -import { v as PolygonElementCreate } from './controller-CfSLTEhH.js'; -import { w as PolygonElementRead } from './controller-CfSLTEhH.js'; -import { x as PolygonElementUpdate } from './controller-CfSLTEhH.js'; -import { b5 as PolygonGeometry } from './controller-CfSLTEhH.js'; -import { bj as PolygonToolSettings } from './controller-CfSLTEhH.js'; -import { aI as PrecomputedAggregationMethod } from './controller-CfSLTEhH.js'; -import { a9 as RasterBand } from './controller-CfSLTEhH.js'; -import { aa as RasterLayer } from './controller-CfSLTEhH.js'; -import { ab as RasterLayerSource } from './controller-CfSLTEhH.js'; -import { af as RasterValue } from './controller-CfSLTEhH.js'; -import { bk as RouteToolSettings } from './controller-CfSLTEhH.js'; -import { aU as SelectionController } from './controller-CfSLTEhH.js'; -import { ce as SetViewportCenterZoomParams } from './controller-CfSLTEhH.js'; -import { b6 as SetVisibilityRequest } from './controller-CfSLTEhH.js'; -import { b7 as SortConfig } from './controller-CfSLTEhH.js'; -import { b8 as SortDirection } from './controller-CfSLTEhH.js'; -import { T as TextElementCreate } from './controller-CfSLTEhH.js'; -import { y as TextElementRead } from './controller-CfSLTEhH.js'; -import { A as TextElementUpdate } from './controller-CfSLTEhH.js'; -import { bl as TextToolSettings } from './controller-CfSLTEhH.js'; -import { bp as ToolsController } from './controller-CfSLTEhH.js'; -import { bm as ToolSettingsChangeEvent } from './controller-CfSLTEhH.js'; -import { bn as ToolSettingsMap } from './controller-CfSLTEhH.js'; -import { bo as ToolType } from './controller-CfSLTEhH.js'; -import { cc as UIActionTriggerCreate } from './controller-CfSLTEhH.js'; -import { bA as UIButtonElement } from './controller-CfSLTEhH.js'; -import { bB as UIButtonElementCreate } from './controller-CfSLTEhH.js'; -import { bC as UIButtonElementUpdate } from './controller-CfSLTEhH.js'; -import { bY as UIButtonRowElement } from './controller-CfSLTEhH.js'; -import { bZ as UIButtonRowElementCreate } from './controller-CfSLTEhH.js'; -import { b_ as UIButtonRowElementUpdate } from './controller-CfSLTEhH.js'; -import { b$ as UICheckboxGroupElement } from './controller-CfSLTEhH.js'; -import { c0 as UICheckboxGroupElementCreate } from './controller-CfSLTEhH.js'; -import { c1 as UICheckboxGroupElementUpdate } from './controller-CfSLTEhH.js'; -import { cb as UIControlElementOption } from './controller-CfSLTEhH.js'; -import { cd as UiController } from './controller-CfSLTEhH.js'; -import { U as UiControlsOptions } from './controller-CfSLTEhH.js'; -import { bJ as UIDividerElement } from './controller-CfSLTEhH.js'; -import { bK as UIDividerElementCreate } from './controller-CfSLTEhH.js'; -import { bL as UIDividerElementUpdate } from './controller-CfSLTEhH.js'; -import { bG as UIFlexibleSpaceElement } from './controller-CfSLTEhH.js'; -import { bH as UIFlexibleSpaceElementCreate } from './controller-CfSLTEhH.js'; -import { bI as UIFlexibleSpaceElementUpdate } from './controller-CfSLTEhH.js'; -import { bV as UIGridContainerElement } from './controller-CfSLTEhH.js'; -import { bW as UIGridContainerElementCreate } from './controller-CfSLTEhH.js'; -import { bX as UIGridContainerElementUpdate } from './controller-CfSLTEhH.js'; -import { c8 as UIIframeElement } from './controller-CfSLTEhH.js'; -import { c9 as UIIframeElementCreate } from './controller-CfSLTEhH.js'; -import { ca as UIIframeElementUpdate } from './controller-CfSLTEhH.js'; -import { by as UIPanel } from './controller-CfSLTEhH.js'; -import { bz as UIPanelCreateOrUpdate } from './controller-CfSLTEhH.js'; -import { bS as UIPanelElement } from './controller-CfSLTEhH.js'; -import { bT as UIPanelElementCreate } from './controller-CfSLTEhH.js'; -import { bU as UIPanelElementUpdate } from './controller-CfSLTEhH.js'; -import { c2 as UIRadioGroupElement } from './controller-CfSLTEhH.js'; -import { c3 as UIRadioGroupElementCreate } from './controller-CfSLTEhH.js'; -import { c4 as UIRadioGroupElementUpdate } from './controller-CfSLTEhH.js'; -import { bP as UISelectElement } from './controller-CfSLTEhH.js'; -import { bQ as UISelectElementCreate } from './controller-CfSLTEhH.js'; -import { bR as UISelectElementUpdate } from './controller-CfSLTEhH.js'; -import { bD as UITextElement } from './controller-CfSLTEhH.js'; -import { bE as UITextElementCreate } from './controller-CfSLTEhH.js'; -import { bF as UITextElementUpdate } from './controller-CfSLTEhH.js'; -import { bM as UITextInputElement } from './controller-CfSLTEhH.js'; -import { bN as UITextInputElementCreate } from './controller-CfSLTEhH.js'; -import { bO as UITextInputElementUpdate } from './controller-CfSLTEhH.js'; -import { c5 as UIToggleGroupElement } from './controller-CfSLTEhH.js'; -import { c6 as UIToggleGroupElementCreate } from './controller-CfSLTEhH.js'; -import { c7 as UIToggleGroupElementUpdate } from './controller-CfSLTEhH.js'; -import { bv as UpdateActionTriggerParams } from './controller-CfSLTEhH.js'; -import { ac as UpdateLayerParams } from './controller-CfSLTEhH.js'; -import { bw as UpdatePanelElementsParams } from './controller-CfSLTEhH.js'; -import { aJ as ValueConfiguration } from './controller-CfSLTEhH.js'; -import { ad as VectorLayer } from './controller-CfSLTEhH.js'; -import { V as ViewportCenterZoom } from './controller-CfSLTEhH.js'; -import { cf as ViewportConstraints } from './controller-CfSLTEhH.js'; -import { ci as ViewportController } from './controller-CfSLTEhH.js'; -import { cg as ViewportFitBoundsParams } from './controller-CfSLTEhH.js'; -import { ch as ViewportState } from './controller-CfSLTEhH.js'; -import { z } from './controller-CfSLTEhH.js'; +import { av as AggregatedGridConfig } from './controller-DItYvwe0.js'; +import { aw as AggregationConfig } from './controller-DItYvwe0.js'; +import { ax as AggregationMethod } from './controller-DItYvwe0.js'; +import { C as CircleElementCreate } from './controller-DItYvwe0.js'; +import { a as CircleElementRead } from './controller-DItYvwe0.js'; +import { b as CircleElementUpdate } from './controller-DItYvwe0.js'; +import { b9 as CircleToolSettings } from './controller-DItYvwe0.js'; +import { ba as ConfigurableToolType } from './controller-DItYvwe0.js'; +import { ay as CountGridConfig } from './controller-DItYvwe0.js'; +import { bq as CreateActionTriggerParams } from './controller-DItYvwe0.js'; +import { K as CreateLayersFromGeoJsonParams } from './controller-DItYvwe0.js'; +import { br as CreateOrUpdatePanelParams } from './controller-DItYvwe0.js'; +import { bs as CreatePanelElementsParams } from './controller-DItYvwe0.js'; +import { O as DataOnlyLayer } from './controller-DItYvwe0.js'; +import { bt as DeletePanelElementsParams } from './controller-DItYvwe0.js'; +import { E as Element_2 } from './controller-DItYvwe0.js'; +import { c as ElementChangeCallbackParams } from './controller-DItYvwe0.js'; +import { d as ElementCreate } from './controller-DItYvwe0.js'; +import { e as ElementGroup } from './controller-DItYvwe0.js'; +import { f as ElementGroupChangeCallbackParams } from './controller-DItYvwe0.js'; +import { aN as ElementGroupNode } from './controller-DItYvwe0.js'; +import { aO as ElementNode } from './controller-DItYvwe0.js'; +import { B as ElementsController } from './controller-DItYvwe0.js'; +import { g as ElementUpdate } from './controller-DItYvwe0.js'; +import { aP as EntityNode } from './controller-DItYvwe0.js'; +import { aQ as FeatureNode } from './controller-DItYvwe0.js'; +import { aR as FeatureSelection } from './controller-DItYvwe0.js'; +import { aV as FeltBoundary } from './controller-DItYvwe0.js'; +import { F as FeltController } from './controller-DItYvwe0.js'; +import { Q as FeltTiledVectorSource } from './controller-DItYvwe0.js'; +import { aW as FeltZoom } from './controller-DItYvwe0.js'; +import { ao as FilterExpression } from './controller-DItYvwe0.js'; +import { ap as FilterLogicGate } from './controller-DItYvwe0.js'; +import { ar as Filters } from './controller-DItYvwe0.js'; +import { aq as FilterTernary } from './controller-DItYvwe0.js'; +import { R as GeoJsonDataVectorSource } from './controller-DItYvwe0.js'; +import { aX as GeoJsonFeature } from './controller-DItYvwe0.js'; +import { S as GeoJsonFileVectorSource } from './controller-DItYvwe0.js'; +import { aY as GeoJsonGeometry } from './controller-DItYvwe0.js'; +import { aZ as GeoJsonProperties } from './controller-DItYvwe0.js'; +import { W as GeoJsonUrlVectorSource } from './controller-DItYvwe0.js'; +import { as as GeometryFilter } from './controller-DItYvwe0.js'; +import { G as GetElementGroupsConstraint } from './controller-DItYvwe0.js'; +import { h as GetElementsConstraint } from './controller-DItYvwe0.js'; +import { az as GetLayerCalculationParams } from './controller-DItYvwe0.js'; +import { aA as GetLayerCategoriesGroup } from './controller-DItYvwe0.js'; +import { aB as GetLayerCategoriesParams } from './controller-DItYvwe0.js'; +import { X as GetLayerGroupsConstraint } from './controller-DItYvwe0.js'; +import { aC as GetLayerHistogramBin } from './controller-DItYvwe0.js'; +import { aD as GetLayerHistogramParams } from './controller-DItYvwe0.js'; +import { aE as GetLayerPrecomputedCalculationParams } from './controller-DItYvwe0.js'; +import { Y as GetLayersConstraint } from './controller-DItYvwe0.js'; +import { Z as GetRenderedFeaturesConstraint } from './controller-DItYvwe0.js'; +import { aF as GridConfig } from './controller-DItYvwe0.js'; +import { aG as GridType } from './controller-DItYvwe0.js'; +import { H as HighlighterElementCreate } from './controller-DItYvwe0.js'; +import { i as HighlighterElementRead } from './controller-DItYvwe0.js'; +import { j as HighlighterElementUpdate } from './controller-DItYvwe0.js'; +import { bb as HighlighterToolSettings } from './controller-DItYvwe0.js'; +import { I as ImageElementCreate } from './controller-DItYvwe0.js'; +import { k as ImageElementRead } from './controller-DItYvwe0.js'; +import { l as ImageElementUpdate } from './controller-DItYvwe0.js'; +import { bc as InputToolSettings } from './controller-DItYvwe0.js'; +import { J as InteractionsController } from './controller-DItYvwe0.js'; +import { a_ as LatLng } from './controller-DItYvwe0.js'; +import { _ as Layer } from './controller-DItYvwe0.js'; +import { at as LayerBoundaries } from './controller-DItYvwe0.js'; +import { $ as LayerChangeCallbackParams } from './controller-DItYvwe0.js'; +import { a0 as LayerCommon } from './controller-DItYvwe0.js'; +import { ae as LayerFeature } from './controller-DItYvwe0.js'; +import { au as LayerFilters } from './controller-DItYvwe0.js'; +import { a1 as LayerGroup } from './controller-DItYvwe0.js'; +import { a2 as LayerGroupChangeCallbackParams } from './controller-DItYvwe0.js'; +import { aS as LayerGroupNode } from './controller-DItYvwe0.js'; +import { aT as LayerNode } from './controller-DItYvwe0.js'; +import { a3 as LayerProcessingStatus } from './controller-DItYvwe0.js'; +import { ag as LayerSchema } from './controller-DItYvwe0.js'; +import { ah as LayerSchemaAttribute } from './controller-DItYvwe0.js'; +import { ai as LayerSchemaBooleanAttribute } from './controller-DItYvwe0.js'; +import { aj as LayerSchemaCommonAttribute } from './controller-DItYvwe0.js'; +import { ak as LayerSchemaDateAttribute } from './controller-DItYvwe0.js'; +import { al as LayerSchemaDateTimeAttribute } from './controller-DItYvwe0.js'; +import { am as LayerSchemaNumericAttribute } from './controller-DItYvwe0.js'; +import { an as LayerSchemaTextAttribute } from './controller-DItYvwe0.js'; +import { aK as LayersController } from './controller-DItYvwe0.js'; +import { a4 as LegendDisplay } from './controller-DItYvwe0.js'; +import { a5 as LegendItem } from './controller-DItYvwe0.js'; +import { a6 as LegendItemChangeCallbackParams } from './controller-DItYvwe0.js'; +import { a7 as LegendItemIdentifier } from './controller-DItYvwe0.js'; +import { a8 as LegendItemsConstraint } from './controller-DItYvwe0.js'; +import { a$ as LineStringGeometry } from './controller-DItYvwe0.js'; +import { bd as LineToolSettings } from './controller-DItYvwe0.js'; +import { L as LinkElementRead } from './controller-DItYvwe0.js'; +import { b0 as LngLatTuple } from './controller-DItYvwe0.js'; +import { aL as MapDetails } from './controller-DItYvwe0.js'; +import { D as MapInteractionEvent } from './controller-DItYvwe0.js'; +import { M as MarkerElementCreate } from './controller-DItYvwe0.js'; +import { m as MarkerElementRead } from './controller-DItYvwe0.js'; +import { n as MarkerElementUpdate } from './controller-DItYvwe0.js'; +import { be as MarkerToolSettings } from './controller-DItYvwe0.js'; +import { aM as MiscController } from './controller-DItYvwe0.js'; +import { aH as MultiAggregationConfig } from './controller-DItYvwe0.js'; +import { b1 as MultiLineStringGeometry } from './controller-DItYvwe0.js'; +import { b2 as MultiPointGeometry } from './controller-DItYvwe0.js'; +import { b3 as MultiPolygonGeometry } from './controller-DItYvwe0.js'; +import { N as NoteElementCreate } from './controller-DItYvwe0.js'; +import { o as NoteElementRead } from './controller-DItYvwe0.js'; +import { p as NoteElementUpdate } from './controller-DItYvwe0.js'; +import { bf as NoteToolSettings } from './controller-DItYvwe0.js'; +import { bu as OnMapInteractionsOptions } from './controller-DItYvwe0.js'; +import { P as PathElementCreate } from './controller-DItYvwe0.js'; +import { q as PathElementRead } from './controller-DItYvwe0.js'; +import { r as PathElementUpdate } from './controller-DItYvwe0.js'; +import { bg as PinToolSettings } from './controller-DItYvwe0.js'; +import { s as PlaceElementCreate } from './controller-DItYvwe0.js'; +import { t as PlaceElementRead } from './controller-DItYvwe0.js'; +import { u as PlaceElementUpdate } from './controller-DItYvwe0.js'; +import { bh as PlaceFrame } from './controller-DItYvwe0.js'; +import { bx as PlacementForUIElement } from './controller-DItYvwe0.js'; +import { bi as PlaceSymbol } from './controller-DItYvwe0.js'; +import { b4 as PointGeometry } from './controller-DItYvwe0.js'; +import { v as PolygonElementCreate } from './controller-DItYvwe0.js'; +import { w as PolygonElementRead } from './controller-DItYvwe0.js'; +import { x as PolygonElementUpdate } from './controller-DItYvwe0.js'; +import { b5 as PolygonGeometry } from './controller-DItYvwe0.js'; +import { bj as PolygonToolSettings } from './controller-DItYvwe0.js'; +import { aI as PrecomputedAggregationMethod } from './controller-DItYvwe0.js'; +import { a9 as RasterBand } from './controller-DItYvwe0.js'; +import { aa as RasterLayer } from './controller-DItYvwe0.js'; +import { ab as RasterLayerSource } from './controller-DItYvwe0.js'; +import { af as RasterValue } from './controller-DItYvwe0.js'; +import { bk as RouteToolSettings } from './controller-DItYvwe0.js'; +import { aU as SelectionController } from './controller-DItYvwe0.js'; +import { ce as SetViewportCenterZoomParams } from './controller-DItYvwe0.js'; +import { b6 as SetVisibilityRequest } from './controller-DItYvwe0.js'; +import { b7 as SortConfig } from './controller-DItYvwe0.js'; +import { b8 as SortDirection } from './controller-DItYvwe0.js'; +import { T as TextElementCreate } from './controller-DItYvwe0.js'; +import { y as TextElementRead } from './controller-DItYvwe0.js'; +import { A as TextElementUpdate } from './controller-DItYvwe0.js'; +import { bl as TextToolSettings } from './controller-DItYvwe0.js'; +import { bp as ToolsController } from './controller-DItYvwe0.js'; +import { bm as ToolSettingsChangeEvent } from './controller-DItYvwe0.js'; +import { bn as ToolSettingsMap } from './controller-DItYvwe0.js'; +import { bo as ToolType } from './controller-DItYvwe0.js'; +import { cc as UIActionTriggerCreate } from './controller-DItYvwe0.js'; +import { bA as UIButtonElement } from './controller-DItYvwe0.js'; +import { bB as UIButtonElementCreate } from './controller-DItYvwe0.js'; +import { bC as UIButtonElementUpdate } from './controller-DItYvwe0.js'; +import { bY as UIButtonRowElement } from './controller-DItYvwe0.js'; +import { bZ as UIButtonRowElementCreate } from './controller-DItYvwe0.js'; +import { b_ as UIButtonRowElementUpdate } from './controller-DItYvwe0.js'; +import { b$ as UICheckboxGroupElement } from './controller-DItYvwe0.js'; +import { c0 as UICheckboxGroupElementCreate } from './controller-DItYvwe0.js'; +import { c1 as UICheckboxGroupElementUpdate } from './controller-DItYvwe0.js'; +import { cb as UIControlElementOption } from './controller-DItYvwe0.js'; +import { cd as UiController } from './controller-DItYvwe0.js'; +import { U as UiControlsOptions } from './controller-DItYvwe0.js'; +import { bJ as UIDividerElement } from './controller-DItYvwe0.js'; +import { bK as UIDividerElementCreate } from './controller-DItYvwe0.js'; +import { bL as UIDividerElementUpdate } from './controller-DItYvwe0.js'; +import { bG as UIFlexibleSpaceElement } from './controller-DItYvwe0.js'; +import { bH as UIFlexibleSpaceElementCreate } from './controller-DItYvwe0.js'; +import { bI as UIFlexibleSpaceElementUpdate } from './controller-DItYvwe0.js'; +import { bV as UIGridContainerElement } from './controller-DItYvwe0.js'; +import { bW as UIGridContainerElementCreate } from './controller-DItYvwe0.js'; +import { bX as UIGridContainerElementUpdate } from './controller-DItYvwe0.js'; +import { c8 as UIIframeElement } from './controller-DItYvwe0.js'; +import { c9 as UIIframeElementCreate } from './controller-DItYvwe0.js'; +import { ca as UIIframeElementUpdate } from './controller-DItYvwe0.js'; +import { by as UIPanel } from './controller-DItYvwe0.js'; +import { bz as UIPanelCreateOrUpdate } from './controller-DItYvwe0.js'; +import { bS as UIPanelElement } from './controller-DItYvwe0.js'; +import { bT as UIPanelElementCreate } from './controller-DItYvwe0.js'; +import { bU as UIPanelElementUpdate } from './controller-DItYvwe0.js'; +import { c2 as UIRadioGroupElement } from './controller-DItYvwe0.js'; +import { c3 as UIRadioGroupElementCreate } from './controller-DItYvwe0.js'; +import { c4 as UIRadioGroupElementUpdate } from './controller-DItYvwe0.js'; +import { bP as UISelectElement } from './controller-DItYvwe0.js'; +import { bQ as UISelectElementCreate } from './controller-DItYvwe0.js'; +import { bR as UISelectElementUpdate } from './controller-DItYvwe0.js'; +import { bD as UITextElement } from './controller-DItYvwe0.js'; +import { bE as UITextElementCreate } from './controller-DItYvwe0.js'; +import { bF as UITextElementUpdate } from './controller-DItYvwe0.js'; +import { bM as UITextInputElement } from './controller-DItYvwe0.js'; +import { bN as UITextInputElementCreate } from './controller-DItYvwe0.js'; +import { bO as UITextInputElementUpdate } from './controller-DItYvwe0.js'; +import { c5 as UIToggleGroupElement } from './controller-DItYvwe0.js'; +import { c6 as UIToggleGroupElementCreate } from './controller-DItYvwe0.js'; +import { c7 as UIToggleGroupElementUpdate } from './controller-DItYvwe0.js'; +import { bv as UpdateActionTriggerParams } from './controller-DItYvwe0.js'; +import { ac as UpdateLayerParams } from './controller-DItYvwe0.js'; +import { bw as UpdatePanelElementsParams } from './controller-DItYvwe0.js'; +import { aJ as ValueConfiguration } from './controller-DItYvwe0.js'; +import { ad as VectorLayer } from './controller-DItYvwe0.js'; +import { V as ViewportCenterZoom } from './controller-DItYvwe0.js'; +import { cf as ViewportConstraints } from './controller-DItYvwe0.js'; +import { ci as ViewportController } from './controller-DItYvwe0.js'; +import { cg as ViewportFitBoundsParams } from './controller-DItYvwe0.js'; +import { ch as ViewportState } from './controller-DItYvwe0.js'; +import { z } from './controller-DItYvwe0.js'; import { z as z_2 } from 'zod'; export { AggregatedGridConfig } diff --git a/package-lock.json b/package-lock.json index 931ba28a..c2bbc12c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@feltmaps/js-sdk", - "version": "1.6.0", + "version": "1.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@feltmaps/js-sdk", - "version": "1.6.0", + "version": "1.9.0", "license": "MIT", "devDependencies": { "@arethetypeswrong/cli": "^0.17.4", diff --git a/src/modules/layers/controller.ts b/src/modules/layers/controller.ts index 9f4f4842..78707790 100644 --- a/src/modules/layers/controller.ts +++ b/src/modules/layers/controller.ts @@ -62,6 +62,7 @@ export const layersController = ( ), updateLayer: method(feltWindow, "updateLayer", convertFileSourceToDataSource), deleteLayer: method(feltWindow, "deleteLayer"), + duplicateLayer: method(feltWindow, "duplicateLayer"), // groups getLayerGroup: method(feltWindow, "getLayerGroup"), @@ -345,6 +346,19 @@ export interface LayersController { */ deleteLayer(id: string): Promise; + /** + * Duplicate a layer from the map by its id. + * + * @remarks This will create an ephemeral copy of the layer, just for the duration of the session. The duplicated layer will not be persisted to the map. + * + * @example + * ```typescript + * const duplicatedLayer = await felt.duplicateLayer("layer-1"); + * ``` + * @returns The duplicated layer. + */ + duplicateLayer(id: string): Promise; + // GROUPS /** diff --git a/src/modules/layers/schema.ts b/src/modules/layers/schema.ts index 79748bd4..3d08fb49 100644 --- a/src/modules/layers/schema.ts +++ b/src/modules/layers/schema.ts @@ -68,6 +68,8 @@ const UpdateLayerMessage = methodMessage("updateLayer", UpdateLayerSchema); const DeleteLayerMessage = methodMessage("deleteLayer", z.string()); +const DuplicateLayerMessage = methodMessage("duplicateLayer", z.string()); + // LAYER GROUPS const GetGroupMessage = methodMessage("getLayerGroup", z.string()); const GetGroupsMessage = methodMessage( @@ -209,7 +211,7 @@ export const layersSchema = { CreateLayersFromGeoJsonMessage, DeleteLayerMessage, UpdateLayerMessage, - + DuplicateLayerMessage, GetGroupMessage, GetGroupsMessage, SetLayerGroupVisibilityMessage, @@ -261,7 +263,7 @@ export type LayersSchema = { >; updateLayer: Method>; deleteLayer: Method>; - + duplicateLayer: Method>; getLayerGroup: Method>; getLayerGroups: Method>; setLayerGroupVisibility: Method< From 280910857c8300c37ab136b9316358ada5b96b05 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Fri, 26 Sep 2025 14:18:44 +0200 Subject: [PATCH 10/30] RELEASING: Releasing 1 package(s) Releases: @feltmaps/js-sdk@1.10.0-next.0 [skip ci] --- CHANGELOG.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf6d3a9c..57660eee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # @feltmaps/js-sdk +## 1.10.0-next.0 + +### Minor Changes + +- 3d9527b: Add duplicateLayer method + ## 1.9.0 ### Minor Changes diff --git a/package.json b/package.json index bc0b1809..2714adc5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@feltmaps/js-sdk", - "version": "1.9.0", + "version": "1.10.0-next.0", "description": "An SDK for Felt maps", "keywords": [ "felt", From 8b8540fa28352eafa8db3edfe46954fed075ae87 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Fri, 26 Sep 2025 14:18:55 +0200 Subject: [PATCH 11/30] Update prerelease docs/meta --- .changeset/pre.json | 4 +++- docs/CHANGELOG.md | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 71429bab..fe209dd7 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -4,5 +4,7 @@ "initialVersions": { "@feltmaps/js-sdk": "1.9.0" }, - "changesets": [] + "changesets": [ + "sharp-files-dance" + ] } diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 6e567425..46c972dd 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,11 @@ # @feltmaps/js-sdk +## 1.10.0-next.0 + +### Minor Changes + +* 3d9527b: Add duplicateLayer method + ## 1.9.0 ### Minor Changes From 34b9ed3f1578705f9d927e5b2677c61e9795cfdb Mon Sep 17 00:00:00 2001 From: sukanya Date: Fri, 26 Sep 2025 12:06:34 -0400 Subject: [PATCH 12/30] Feature Contextual Action (#123) * Feature Contextual Action * Rename and add more args * rm unused * wip * wip? * tweaks * tweaks * tweaks * docs(changeset): Add feature actions * Fix types --------- Co-authored-by: Tom Hicks (cherry picked from commit b5980e1f3e94095dbde7eaad29b72f2a18d35d19) --- .changeset/empty-camels-pay.md | 5 + docs/Main/FeltController.md | 90 ++++ docs/UI/CreateFeatureActionParams.md | 13 + docs/UI/README.md | 4 + docs/UI/UiController.md | 90 ++++ docs/UI/UpdateFeatureActionParams.md | 42 ++ docs/UI/uiFeatureAction.md | 38 ++ docs/UI/uiFeatureActionCreate.md | 97 +++++ etc/js-sdk.api.md | 414 ++++++++++--------- src/modules/ui/controller.ts | 74 ++++ src/modules/ui/index.ts | 7 + src/modules/ui/schema.ts | 32 ++ src/modules/ui/types.ts | 37 ++ src/modules/ui/uiElements/UIFeatureAction.ts | 88 ++++ 14 files changed, 830 insertions(+), 201 deletions(-) create mode 100644 .changeset/empty-camels-pay.md create mode 100644 docs/UI/CreateFeatureActionParams.md create mode 100644 docs/UI/UpdateFeatureActionParams.md create mode 100644 docs/UI/uiFeatureAction.md create mode 100644 docs/UI/uiFeatureActionCreate.md create mode 100644 src/modules/ui/uiElements/UIFeatureAction.ts diff --git a/.changeset/empty-camels-pay.md b/.changeset/empty-camels-pay.md new file mode 100644 index 00000000..205d9f63 --- /dev/null +++ b/.changeset/empty-camels-pay.md @@ -0,0 +1,5 @@ +--- +"@feltmaps/js-sdk": minor +--- + +Add feature actions diff --git a/docs/Main/FeltController.md b/docs/Main/FeltController.md index 4133bfd9..4b646247 100644 --- a/docs/Main/FeltController.md +++ b/docs/Main/FeltController.md @@ -1749,6 +1749,96 @@ await felt.deleteActionTrigger("enablePolygonTool"); *** +## createFeatureAction() + +> **createFeatureAction**(`args`: [`CreateFeatureActionParams`](../UI/CreateFeatureActionParams.md)): `Promise`\<[`uiFeatureAction`](../UI/uiFeatureAction.md)> + +Creates a feature contextual action. + +### Parameters + +| Parameter | Type | Description | +| --------- | ----------------------------------------------------------------- | ----------------------------- | +| `args` | [`CreateFeatureActionParams`](../UI/CreateFeatureActionParams.md) | The arguments for the method. | + +### Returns + +`Promise`\<[`uiFeatureAction`](../UI/uiFeatureAction.md)> + +### Example + +```typescript +const myAction = await felt.createFeatureAction({ + action: { + label: "Edit feature", + onTrigger: async ({ featureId, layerId }) => { + console.log(`Editing feature ${featureId} in layer ${layerId}`); + }, + layerIds: ["layer-1", "layer-2"], + }, + placement: { at: "start" }, // optional, defaults to { at: "end" } +}); +``` + +*** + +## updateFeatureAction() + +> **updateFeatureAction**(`args`: [`UpdateFeatureActionParams`](../UI/UpdateFeatureActionParams.md)): `Promise`\<[`uiFeatureAction`](../UI/uiFeatureAction.md)> + +Updates a feature contextual action. + +Feature contextual action to update is identified by the `id` property. + +### Parameters + +| Parameter | Type | Description | +| --------- | ----------------------------------------------------------------- | ---------------------------------------- | +| `args` | [`UpdateFeatureActionParams`](../UI/UpdateFeatureActionParams.md) | The feature contextual action to update. | + +### Returns + +`Promise`\<[`uiFeatureAction`](../UI/uiFeatureAction.md)> + +### Remarks + +Properties provided will override the existing properties. + +### Example + +```typescript +await felt.updateFeatureAction({ + id: "my-action", + label: "Updated action label", // only label changes +}); +``` + +*** + +## deleteFeatureAction() + +> **deleteFeatureAction**(`id`: `string`): `void` + +Deletes a feature contextual action. + +### Parameters + +| Parameter | Type | Description | +| --------- | -------- | -------------------------------------------------- | +| `id` | `string` | The id of the feature contextual action to delete. | + +### Returns + +`void` + +### Example + +```typescript +await felt.deleteFeatureAction("my-action"); +``` + +*** + ## createPanelId() > **createPanelId**(): `Promise`\<`string`> diff --git a/docs/UI/CreateFeatureActionParams.md b/docs/UI/CreateFeatureActionParams.md new file mode 100644 index 00000000..1ac7a1ce --- /dev/null +++ b/docs/UI/CreateFeatureActionParams.md @@ -0,0 +1,13 @@ +*** + +# Properties + +## action + +> **action**: [`uiFeatureActionCreate`](uiFeatureActionCreate.md) + +*** + +## placement? + +> `optional` **placement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } diff --git a/docs/UI/README.md b/docs/UI/README.md index 420e59e3..7a457afd 100644 --- a/docs/UI/README.md +++ b/docs/UI/README.md @@ -11,6 +11,8 @@ UI features such as the legend and the full screen button. * [CreateActionTriggerParams](CreateActionTriggerParams.md) * [UpdateActionTriggerParams](UpdateActionTriggerParams.md) +* [CreateFeatureActionParams](CreateFeatureActionParams.md) +* [UpdateFeatureActionParams](UpdateFeatureActionParams.md) * [CreateOrUpdatePanelParams](CreateOrUpdatePanelParams.md) * [CreatePanelElementsParams](CreatePanelElementsParams.md) * [UpdatePanelElementsParams](UpdatePanelElementsParams.md) @@ -30,6 +32,7 @@ UI features such as the legend and the full screen button. * [UIDividerElement](UIDividerElement.md) * [UIDividerElementCreate](UIDividerElementCreate.md) * [UIDividerElementUpdate](UIDividerElementUpdate.md) +* [uiFeatureActionCreate](uiFeatureActionCreate.md) * [UIFlexibleSpaceElement](UIFlexibleSpaceElement.md) * [UIFlexibleSpaceElementCreate](UIFlexibleSpaceElementCreate.md) * [UIFlexibleSpaceElementUpdate](UIFlexibleSpaceElementUpdate.md) @@ -60,6 +63,7 @@ UI features such as the legend and the full screen button. # Type Aliases +* [uiFeatureAction](uiFeatureAction.md) * [PlacementForUIElement](PlacementForUIElement.md) * [UIPanelElement](UIPanelElement.md) * [UIPanelElementCreate](UIPanelElementCreate.md) diff --git a/docs/UI/UiController.md b/docs/UI/UiController.md index 2a3f2ea5..6a9f3868 100644 --- a/docs/UI/UiController.md +++ b/docs/UI/UiController.md @@ -107,6 +107,96 @@ await felt.deleteActionTrigger("enablePolygonTool"); *** +## createFeatureAction() + +> **createFeatureAction**(`args`: [`CreateFeatureActionParams`](CreateFeatureActionParams.md)): `Promise`\<[`uiFeatureAction`](uiFeatureAction.md)> + +Creates a feature contextual action. + +### Parameters + +| Parameter | Type | Description | +| --------- | ----------------------------------------------------------- | ----------------------------- | +| `args` | [`CreateFeatureActionParams`](CreateFeatureActionParams.md) | The arguments for the method. | + +### Returns + +`Promise`\<[`uiFeatureAction`](uiFeatureAction.md)> + +### Example + +```typescript +const myAction = await felt.createFeatureAction({ + action: { + label: "Edit feature", + onTrigger: async ({ featureId, layerId }) => { + console.log(`Editing feature ${featureId} in layer ${layerId}`); + }, + layerIds: ["layer-1", "layer-2"], + }, + placement: { at: "start" }, // optional, defaults to { at: "end" } +}); +``` + +*** + +## updateFeatureAction() + +> **updateFeatureAction**(`args`: [`UpdateFeatureActionParams`](UpdateFeatureActionParams.md)): `Promise`\<[`uiFeatureAction`](uiFeatureAction.md)> + +Updates a feature contextual action. + +Feature contextual action to update is identified by the `id` property. + +### Parameters + +| Parameter | Type | Description | +| --------- | ----------------------------------------------------------- | ---------------------------------------- | +| `args` | [`UpdateFeatureActionParams`](UpdateFeatureActionParams.md) | The feature contextual action to update. | + +### Returns + +`Promise`\<[`uiFeatureAction`](uiFeatureAction.md)> + +### Remarks + +Properties provided will override the existing properties. + +### Example + +```typescript +await felt.updateFeatureAction({ + id: "my-action", + label: "Updated action label", // only label changes +}); +``` + +*** + +## deleteFeatureAction() + +> **deleteFeatureAction**(`id`: `string`): `void` + +Deletes a feature contextual action. + +### Parameters + +| Parameter | Type | Description | +| --------- | -------- | -------------------------------------------------- | +| `id` | `string` | The id of the feature contextual action to delete. | + +### Returns + +`void` + +### Example + +```typescript +await felt.deleteFeatureAction("my-action"); +``` + +*** + ## createPanelId() > **createPanelId**(): `Promise`\<`string`> diff --git a/docs/UI/UpdateFeatureActionParams.md b/docs/UI/UpdateFeatureActionParams.md new file mode 100644 index 00000000..af8e1bdf --- /dev/null +++ b/docs/UI/UpdateFeatureActionParams.md @@ -0,0 +1,42 @@ +*** + +# Properties + +## id + +> **id**: `string` + +*** + +## label? + +> `optional` **label**: `string` + +*** + +## layerIds? + +> `optional` **layerIds**: `string`\[] + +*** + +## geometryTypes? + +> `optional` **geometryTypes**: (`"Polygon"` | `"Point"` | `"Line"` | `"Raster"`)\[] + +*** + +## onTrigger()? + +> `optional` **onTrigger**: (`args`: \{ `feature`: [`LayerFeature`](../Layers/LayerFeature.md); }) => `void` + +### Parameters + +| Parameter | Type | +| -------------- | ------------------------------------------------------------ | +| `args` | \{ `feature`: [`LayerFeature`](../Layers/LayerFeature.md); } | +| `args.feature` | [`LayerFeature`](../Layers/LayerFeature.md) | + +### Returns + +`void` diff --git a/docs/UI/uiFeatureAction.md b/docs/UI/uiFeatureAction.md new file mode 100644 index 00000000..5d1258eb --- /dev/null +++ b/docs/UI/uiFeatureAction.md @@ -0,0 +1,38 @@ +*** + +> **uiFeatureAction**: \{ `id`: `string`; `label`: `string`; `onTrigger`: (`args`: \{ `feature`: [`LayerFeature`](../Layers/LayerFeature.md); }) => `void`; `layerIds`: `string`\[]; `geometryTypes`: (`"Polygon"` | `"Point"` | `"Line"` | `"Raster"`)\[]; } + +Represents a feature action after creation (with generated id). + +# Type declaration + +## id + +> **id**: `string` + +## label + +> **label**: `string` + +## onTrigger() + +> **onTrigger**: (`args`: \{ `feature`: [`LayerFeature`](../Layers/LayerFeature.md); }) => `void` + +### Parameters + +| Parameter | Type | +| -------------- | ------------------------------------------------------------ | +| `args` | \{ `feature`: [`LayerFeature`](../Layers/LayerFeature.md); } | +| `args.feature` | [`LayerFeature`](../Layers/LayerFeature.md) | + +### Returns + +`void` + +## layerIds? + +> `optional` **layerIds**: `string`\[] + +## geometryTypes? + +> `optional` **geometryTypes**: (`"Polygon"` | `"Point"` | `"Line"` | `"Raster"`)\[] diff --git a/docs/UI/uiFeatureActionCreate.md b/docs/UI/uiFeatureActionCreate.md new file mode 100644 index 00000000..9318786f --- /dev/null +++ b/docs/UI/uiFeatureActionCreate.md @@ -0,0 +1,97 @@ +*** + +Represents a feature action for creation. +It can be added to the map by using the [UiController.createFeatureAction](UiController.md#createfeatureaction) method. + +# Properties + +## label + +> **label**: `string` + +The label of the feature action. + +*** + +## onTrigger() + +> **onTrigger**: (`args`: \{ `feature`: [`LayerFeature`](../Layers/LayerFeature.md); }) => `void` + +The function to call when the feature action is triggered. + +### Parameters + +| Parameter | Type | Description | +| -------------- | ------------------------------------------------------------ | -------------------------------------- | +| `args` | \{ `feature`: [`LayerFeature`](../Layers/LayerFeature.md); } | The arguments passed to the function. | +| `args.feature` | [`LayerFeature`](../Layers/LayerFeature.md) | The feature that triggered the action. | + +### Returns + +`void` + +*** + +## id? + +> `optional` **id**: `string` + +*** + +## layerIds? + +> `optional` **layerIds**: `string`\[] + +The layers to add the action to. Optional. Defaults to all layers. + +*** + +## geometryTypes? + +> `optional` **geometryTypes**: (`"Polygon"` | `"Point"` | `"Line"` | `"Raster"`)\[] + +The geometry type of the features to add the action to. Optional. Defaults to all geometry types. + +*** + +## type? + +> `optional` **type**: `undefined` + +*** + +## onCreate()? + +> `optional` **onCreate**: (`args`: \{ `id`: `string`; }) => `void` + +A function to call when the element is created. + +### Parameters + +| Parameter | Type | Description | +| --------- | -------------------- | ------------------------------------- | +| `args` | \{ `id`: `string`; } | The arguments passed to the function. | +| `args.id` | `string` | The id of the element. | + +### Returns + +`void` + +*** + +## onDestroy()? + +> `optional` **onDestroy**: (`args`: \{ `id`: `string`; }) => `void` + +A function to call when the element is destroyed. + +### Parameters + +| Parameter | Type | Description | +| --------- | -------------------- | ------------------------------------- | +| `args` | \{ `id`: `string`; } | The arguments passed to the function. | +| `args.id` | `string` | The id of the element. | + +### Returns + +`void` diff --git a/etc/js-sdk.api.md b/etc/js-sdk.api.md index fc434b97..5d02e792 100644 --- a/etc/js-sdk.api.md +++ b/etc/js-sdk.api.md @@ -4,207 +4,211 @@ ```ts -import { av as AggregatedGridConfig } from './controller-DItYvwe0.js'; -import { aw as AggregationConfig } from './controller-DItYvwe0.js'; -import { ax as AggregationMethod } from './controller-DItYvwe0.js'; -import { C as CircleElementCreate } from './controller-DItYvwe0.js'; -import { a as CircleElementRead } from './controller-DItYvwe0.js'; -import { b as CircleElementUpdate } from './controller-DItYvwe0.js'; -import { b9 as CircleToolSettings } from './controller-DItYvwe0.js'; -import { ba as ConfigurableToolType } from './controller-DItYvwe0.js'; -import { ay as CountGridConfig } from './controller-DItYvwe0.js'; -import { bq as CreateActionTriggerParams } from './controller-DItYvwe0.js'; -import { K as CreateLayersFromGeoJsonParams } from './controller-DItYvwe0.js'; -import { br as CreateOrUpdatePanelParams } from './controller-DItYvwe0.js'; -import { bs as CreatePanelElementsParams } from './controller-DItYvwe0.js'; -import { O as DataOnlyLayer } from './controller-DItYvwe0.js'; -import { bt as DeletePanelElementsParams } from './controller-DItYvwe0.js'; -import { E as Element_2 } from './controller-DItYvwe0.js'; -import { c as ElementChangeCallbackParams } from './controller-DItYvwe0.js'; -import { d as ElementCreate } from './controller-DItYvwe0.js'; -import { e as ElementGroup } from './controller-DItYvwe0.js'; -import { f as ElementGroupChangeCallbackParams } from './controller-DItYvwe0.js'; -import { aN as ElementGroupNode } from './controller-DItYvwe0.js'; -import { aO as ElementNode } from './controller-DItYvwe0.js'; -import { B as ElementsController } from './controller-DItYvwe0.js'; -import { g as ElementUpdate } from './controller-DItYvwe0.js'; -import { aP as EntityNode } from './controller-DItYvwe0.js'; -import { aQ as FeatureNode } from './controller-DItYvwe0.js'; -import { aR as FeatureSelection } from './controller-DItYvwe0.js'; -import { aV as FeltBoundary } from './controller-DItYvwe0.js'; -import { F as FeltController } from './controller-DItYvwe0.js'; -import { Q as FeltTiledVectorSource } from './controller-DItYvwe0.js'; -import { aW as FeltZoom } from './controller-DItYvwe0.js'; -import { ao as FilterExpression } from './controller-DItYvwe0.js'; -import { ap as FilterLogicGate } from './controller-DItYvwe0.js'; -import { ar as Filters } from './controller-DItYvwe0.js'; -import { aq as FilterTernary } from './controller-DItYvwe0.js'; -import { R as GeoJsonDataVectorSource } from './controller-DItYvwe0.js'; -import { aX as GeoJsonFeature } from './controller-DItYvwe0.js'; -import { S as GeoJsonFileVectorSource } from './controller-DItYvwe0.js'; -import { aY as GeoJsonGeometry } from './controller-DItYvwe0.js'; -import { aZ as GeoJsonProperties } from './controller-DItYvwe0.js'; -import { W as GeoJsonUrlVectorSource } from './controller-DItYvwe0.js'; -import { as as GeometryFilter } from './controller-DItYvwe0.js'; -import { G as GetElementGroupsConstraint } from './controller-DItYvwe0.js'; -import { h as GetElementsConstraint } from './controller-DItYvwe0.js'; -import { az as GetLayerCalculationParams } from './controller-DItYvwe0.js'; -import { aA as GetLayerCategoriesGroup } from './controller-DItYvwe0.js'; -import { aB as GetLayerCategoriesParams } from './controller-DItYvwe0.js'; -import { X as GetLayerGroupsConstraint } from './controller-DItYvwe0.js'; -import { aC as GetLayerHistogramBin } from './controller-DItYvwe0.js'; -import { aD as GetLayerHistogramParams } from './controller-DItYvwe0.js'; -import { aE as GetLayerPrecomputedCalculationParams } from './controller-DItYvwe0.js'; -import { Y as GetLayersConstraint } from './controller-DItYvwe0.js'; -import { Z as GetRenderedFeaturesConstraint } from './controller-DItYvwe0.js'; -import { aF as GridConfig } from './controller-DItYvwe0.js'; -import { aG as GridType } from './controller-DItYvwe0.js'; -import { H as HighlighterElementCreate } from './controller-DItYvwe0.js'; -import { i as HighlighterElementRead } from './controller-DItYvwe0.js'; -import { j as HighlighterElementUpdate } from './controller-DItYvwe0.js'; -import { bb as HighlighterToolSettings } from './controller-DItYvwe0.js'; -import { I as ImageElementCreate } from './controller-DItYvwe0.js'; -import { k as ImageElementRead } from './controller-DItYvwe0.js'; -import { l as ImageElementUpdate } from './controller-DItYvwe0.js'; -import { bc as InputToolSettings } from './controller-DItYvwe0.js'; -import { J as InteractionsController } from './controller-DItYvwe0.js'; -import { a_ as LatLng } from './controller-DItYvwe0.js'; -import { _ as Layer } from './controller-DItYvwe0.js'; -import { at as LayerBoundaries } from './controller-DItYvwe0.js'; -import { $ as LayerChangeCallbackParams } from './controller-DItYvwe0.js'; -import { a0 as LayerCommon } from './controller-DItYvwe0.js'; -import { ae as LayerFeature } from './controller-DItYvwe0.js'; -import { au as LayerFilters } from './controller-DItYvwe0.js'; -import { a1 as LayerGroup } from './controller-DItYvwe0.js'; -import { a2 as LayerGroupChangeCallbackParams } from './controller-DItYvwe0.js'; -import { aS as LayerGroupNode } from './controller-DItYvwe0.js'; -import { aT as LayerNode } from './controller-DItYvwe0.js'; -import { a3 as LayerProcessingStatus } from './controller-DItYvwe0.js'; -import { ag as LayerSchema } from './controller-DItYvwe0.js'; -import { ah as LayerSchemaAttribute } from './controller-DItYvwe0.js'; -import { ai as LayerSchemaBooleanAttribute } from './controller-DItYvwe0.js'; -import { aj as LayerSchemaCommonAttribute } from './controller-DItYvwe0.js'; -import { ak as LayerSchemaDateAttribute } from './controller-DItYvwe0.js'; -import { al as LayerSchemaDateTimeAttribute } from './controller-DItYvwe0.js'; -import { am as LayerSchemaNumericAttribute } from './controller-DItYvwe0.js'; -import { an as LayerSchemaTextAttribute } from './controller-DItYvwe0.js'; -import { aK as LayersController } from './controller-DItYvwe0.js'; -import { a4 as LegendDisplay } from './controller-DItYvwe0.js'; -import { a5 as LegendItem } from './controller-DItYvwe0.js'; -import { a6 as LegendItemChangeCallbackParams } from './controller-DItYvwe0.js'; -import { a7 as LegendItemIdentifier } from './controller-DItYvwe0.js'; -import { a8 as LegendItemsConstraint } from './controller-DItYvwe0.js'; -import { a$ as LineStringGeometry } from './controller-DItYvwe0.js'; -import { bd as LineToolSettings } from './controller-DItYvwe0.js'; -import { L as LinkElementRead } from './controller-DItYvwe0.js'; -import { b0 as LngLatTuple } from './controller-DItYvwe0.js'; -import { aL as MapDetails } from './controller-DItYvwe0.js'; -import { D as MapInteractionEvent } from './controller-DItYvwe0.js'; -import { M as MarkerElementCreate } from './controller-DItYvwe0.js'; -import { m as MarkerElementRead } from './controller-DItYvwe0.js'; -import { n as MarkerElementUpdate } from './controller-DItYvwe0.js'; -import { be as MarkerToolSettings } from './controller-DItYvwe0.js'; -import { aM as MiscController } from './controller-DItYvwe0.js'; -import { aH as MultiAggregationConfig } from './controller-DItYvwe0.js'; -import { b1 as MultiLineStringGeometry } from './controller-DItYvwe0.js'; -import { b2 as MultiPointGeometry } from './controller-DItYvwe0.js'; -import { b3 as MultiPolygonGeometry } from './controller-DItYvwe0.js'; -import { N as NoteElementCreate } from './controller-DItYvwe0.js'; -import { o as NoteElementRead } from './controller-DItYvwe0.js'; -import { p as NoteElementUpdate } from './controller-DItYvwe0.js'; -import { bf as NoteToolSettings } from './controller-DItYvwe0.js'; -import { bu as OnMapInteractionsOptions } from './controller-DItYvwe0.js'; -import { P as PathElementCreate } from './controller-DItYvwe0.js'; -import { q as PathElementRead } from './controller-DItYvwe0.js'; -import { r as PathElementUpdate } from './controller-DItYvwe0.js'; -import { bg as PinToolSettings } from './controller-DItYvwe0.js'; -import { s as PlaceElementCreate } from './controller-DItYvwe0.js'; -import { t as PlaceElementRead } from './controller-DItYvwe0.js'; -import { u as PlaceElementUpdate } from './controller-DItYvwe0.js'; -import { bh as PlaceFrame } from './controller-DItYvwe0.js'; -import { bx as PlacementForUIElement } from './controller-DItYvwe0.js'; -import { bi as PlaceSymbol } from './controller-DItYvwe0.js'; -import { b4 as PointGeometry } from './controller-DItYvwe0.js'; -import { v as PolygonElementCreate } from './controller-DItYvwe0.js'; -import { w as PolygonElementRead } from './controller-DItYvwe0.js'; -import { x as PolygonElementUpdate } from './controller-DItYvwe0.js'; -import { b5 as PolygonGeometry } from './controller-DItYvwe0.js'; -import { bj as PolygonToolSettings } from './controller-DItYvwe0.js'; -import { aI as PrecomputedAggregationMethod } from './controller-DItYvwe0.js'; -import { a9 as RasterBand } from './controller-DItYvwe0.js'; -import { aa as RasterLayer } from './controller-DItYvwe0.js'; -import { ab as RasterLayerSource } from './controller-DItYvwe0.js'; -import { af as RasterValue } from './controller-DItYvwe0.js'; -import { bk as RouteToolSettings } from './controller-DItYvwe0.js'; -import { aU as SelectionController } from './controller-DItYvwe0.js'; -import { ce as SetViewportCenterZoomParams } from './controller-DItYvwe0.js'; -import { b6 as SetVisibilityRequest } from './controller-DItYvwe0.js'; -import { b7 as SortConfig } from './controller-DItYvwe0.js'; -import { b8 as SortDirection } from './controller-DItYvwe0.js'; -import { T as TextElementCreate } from './controller-DItYvwe0.js'; -import { y as TextElementRead } from './controller-DItYvwe0.js'; -import { A as TextElementUpdate } from './controller-DItYvwe0.js'; -import { bl as TextToolSettings } from './controller-DItYvwe0.js'; -import { bp as ToolsController } from './controller-DItYvwe0.js'; -import { bm as ToolSettingsChangeEvent } from './controller-DItYvwe0.js'; -import { bn as ToolSettingsMap } from './controller-DItYvwe0.js'; -import { bo as ToolType } from './controller-DItYvwe0.js'; -import { cc as UIActionTriggerCreate } from './controller-DItYvwe0.js'; -import { bA as UIButtonElement } from './controller-DItYvwe0.js'; -import { bB as UIButtonElementCreate } from './controller-DItYvwe0.js'; -import { bC as UIButtonElementUpdate } from './controller-DItYvwe0.js'; -import { bY as UIButtonRowElement } from './controller-DItYvwe0.js'; -import { bZ as UIButtonRowElementCreate } from './controller-DItYvwe0.js'; -import { b_ as UIButtonRowElementUpdate } from './controller-DItYvwe0.js'; -import { b$ as UICheckboxGroupElement } from './controller-DItYvwe0.js'; -import { c0 as UICheckboxGroupElementCreate } from './controller-DItYvwe0.js'; -import { c1 as UICheckboxGroupElementUpdate } from './controller-DItYvwe0.js'; -import { cb as UIControlElementOption } from './controller-DItYvwe0.js'; -import { cd as UiController } from './controller-DItYvwe0.js'; -import { U as UiControlsOptions } from './controller-DItYvwe0.js'; -import { bJ as UIDividerElement } from './controller-DItYvwe0.js'; -import { bK as UIDividerElementCreate } from './controller-DItYvwe0.js'; -import { bL as UIDividerElementUpdate } from './controller-DItYvwe0.js'; -import { bG as UIFlexibleSpaceElement } from './controller-DItYvwe0.js'; -import { bH as UIFlexibleSpaceElementCreate } from './controller-DItYvwe0.js'; -import { bI as UIFlexibleSpaceElementUpdate } from './controller-DItYvwe0.js'; -import { bV as UIGridContainerElement } from './controller-DItYvwe0.js'; -import { bW as UIGridContainerElementCreate } from './controller-DItYvwe0.js'; -import { bX as UIGridContainerElementUpdate } from './controller-DItYvwe0.js'; -import { c8 as UIIframeElement } from './controller-DItYvwe0.js'; -import { c9 as UIIframeElementCreate } from './controller-DItYvwe0.js'; -import { ca as UIIframeElementUpdate } from './controller-DItYvwe0.js'; -import { by as UIPanel } from './controller-DItYvwe0.js'; -import { bz as UIPanelCreateOrUpdate } from './controller-DItYvwe0.js'; -import { bS as UIPanelElement } from './controller-DItYvwe0.js'; -import { bT as UIPanelElementCreate } from './controller-DItYvwe0.js'; -import { bU as UIPanelElementUpdate } from './controller-DItYvwe0.js'; -import { c2 as UIRadioGroupElement } from './controller-DItYvwe0.js'; -import { c3 as UIRadioGroupElementCreate } from './controller-DItYvwe0.js'; -import { c4 as UIRadioGroupElementUpdate } from './controller-DItYvwe0.js'; -import { bP as UISelectElement } from './controller-DItYvwe0.js'; -import { bQ as UISelectElementCreate } from './controller-DItYvwe0.js'; -import { bR as UISelectElementUpdate } from './controller-DItYvwe0.js'; -import { bD as UITextElement } from './controller-DItYvwe0.js'; -import { bE as UITextElementCreate } from './controller-DItYvwe0.js'; -import { bF as UITextElementUpdate } from './controller-DItYvwe0.js'; -import { bM as UITextInputElement } from './controller-DItYvwe0.js'; -import { bN as UITextInputElementCreate } from './controller-DItYvwe0.js'; -import { bO as UITextInputElementUpdate } from './controller-DItYvwe0.js'; -import { c5 as UIToggleGroupElement } from './controller-DItYvwe0.js'; -import { c6 as UIToggleGroupElementCreate } from './controller-DItYvwe0.js'; -import { c7 as UIToggleGroupElementUpdate } from './controller-DItYvwe0.js'; -import { bv as UpdateActionTriggerParams } from './controller-DItYvwe0.js'; -import { ac as UpdateLayerParams } from './controller-DItYvwe0.js'; -import { bw as UpdatePanelElementsParams } from './controller-DItYvwe0.js'; -import { aJ as ValueConfiguration } from './controller-DItYvwe0.js'; -import { ad as VectorLayer } from './controller-DItYvwe0.js'; -import { V as ViewportCenterZoom } from './controller-DItYvwe0.js'; -import { cf as ViewportConstraints } from './controller-DItYvwe0.js'; -import { ci as ViewportController } from './controller-DItYvwe0.js'; -import { cg as ViewportFitBoundsParams } from './controller-DItYvwe0.js'; -import { ch as ViewportState } from './controller-DItYvwe0.js'; -import { z } from './controller-DItYvwe0.js'; +import { av as AggregatedGridConfig } from './controller-BcZvbm-Y.js'; +import { aw as AggregationConfig } from './controller-BcZvbm-Y.js'; +import { ax as AggregationMethod } from './controller-BcZvbm-Y.js'; +import { C as CircleElementCreate } from './controller-BcZvbm-Y.js'; +import { a as CircleElementRead } from './controller-BcZvbm-Y.js'; +import { b as CircleElementUpdate } from './controller-BcZvbm-Y.js'; +import { b9 as CircleToolSettings } from './controller-BcZvbm-Y.js'; +import { ba as ConfigurableToolType } from './controller-BcZvbm-Y.js'; +import { ay as CountGridConfig } from './controller-BcZvbm-Y.js'; +import { bq as CreateActionTriggerParams } from './controller-BcZvbm-Y.js'; +import { br as CreateFeatureActionParams } from './controller-BcZvbm-Y.js'; +import { K as CreateLayersFromGeoJsonParams } from './controller-BcZvbm-Y.js'; +import { bs as CreateOrUpdatePanelParams } from './controller-BcZvbm-Y.js'; +import { bt as CreatePanelElementsParams } from './controller-BcZvbm-Y.js'; +import { O as DataOnlyLayer } from './controller-BcZvbm-Y.js'; +import { bu as DeletePanelElementsParams } from './controller-BcZvbm-Y.js'; +import { E as Element_2 } from './controller-BcZvbm-Y.js'; +import { c as ElementChangeCallbackParams } from './controller-BcZvbm-Y.js'; +import { d as ElementCreate } from './controller-BcZvbm-Y.js'; +import { e as ElementGroup } from './controller-BcZvbm-Y.js'; +import { f as ElementGroupChangeCallbackParams } from './controller-BcZvbm-Y.js'; +import { aN as ElementGroupNode } from './controller-BcZvbm-Y.js'; +import { aO as ElementNode } from './controller-BcZvbm-Y.js'; +import { B as ElementsController } from './controller-BcZvbm-Y.js'; +import { g as ElementUpdate } from './controller-BcZvbm-Y.js'; +import { aP as EntityNode } from './controller-BcZvbm-Y.js'; +import { aQ as FeatureNode } from './controller-BcZvbm-Y.js'; +import { aR as FeatureSelection } from './controller-BcZvbm-Y.js'; +import { aV as FeltBoundary } from './controller-BcZvbm-Y.js'; +import { F as FeltController } from './controller-BcZvbm-Y.js'; +import { Q as FeltTiledVectorSource } from './controller-BcZvbm-Y.js'; +import { aW as FeltZoom } from './controller-BcZvbm-Y.js'; +import { ao as FilterExpression } from './controller-BcZvbm-Y.js'; +import { ap as FilterLogicGate } from './controller-BcZvbm-Y.js'; +import { ar as Filters } from './controller-BcZvbm-Y.js'; +import { aq as FilterTernary } from './controller-BcZvbm-Y.js'; +import { R as GeoJsonDataVectorSource } from './controller-BcZvbm-Y.js'; +import { aX as GeoJsonFeature } from './controller-BcZvbm-Y.js'; +import { S as GeoJsonFileVectorSource } from './controller-BcZvbm-Y.js'; +import { aY as GeoJsonGeometry } from './controller-BcZvbm-Y.js'; +import { aZ as GeoJsonProperties } from './controller-BcZvbm-Y.js'; +import { W as GeoJsonUrlVectorSource } from './controller-BcZvbm-Y.js'; +import { as as GeometryFilter } from './controller-BcZvbm-Y.js'; +import { G as GetElementGroupsConstraint } from './controller-BcZvbm-Y.js'; +import { h as GetElementsConstraint } from './controller-BcZvbm-Y.js'; +import { az as GetLayerCalculationParams } from './controller-BcZvbm-Y.js'; +import { aA as GetLayerCategoriesGroup } from './controller-BcZvbm-Y.js'; +import { aB as GetLayerCategoriesParams } from './controller-BcZvbm-Y.js'; +import { X as GetLayerGroupsConstraint } from './controller-BcZvbm-Y.js'; +import { aC as GetLayerHistogramBin } from './controller-BcZvbm-Y.js'; +import { aD as GetLayerHistogramParams } from './controller-BcZvbm-Y.js'; +import { aE as GetLayerPrecomputedCalculationParams } from './controller-BcZvbm-Y.js'; +import { Y as GetLayersConstraint } from './controller-BcZvbm-Y.js'; +import { Z as GetRenderedFeaturesConstraint } from './controller-BcZvbm-Y.js'; +import { aF as GridConfig } from './controller-BcZvbm-Y.js'; +import { aG as GridType } from './controller-BcZvbm-Y.js'; +import { H as HighlighterElementCreate } from './controller-BcZvbm-Y.js'; +import { i as HighlighterElementRead } from './controller-BcZvbm-Y.js'; +import { j as HighlighterElementUpdate } from './controller-BcZvbm-Y.js'; +import { bb as HighlighterToolSettings } from './controller-BcZvbm-Y.js'; +import { I as ImageElementCreate } from './controller-BcZvbm-Y.js'; +import { k as ImageElementRead } from './controller-BcZvbm-Y.js'; +import { l as ImageElementUpdate } from './controller-BcZvbm-Y.js'; +import { bc as InputToolSettings } from './controller-BcZvbm-Y.js'; +import { J as InteractionsController } from './controller-BcZvbm-Y.js'; +import { a_ as LatLng } from './controller-BcZvbm-Y.js'; +import { _ as Layer } from './controller-BcZvbm-Y.js'; +import { at as LayerBoundaries } from './controller-BcZvbm-Y.js'; +import { $ as LayerChangeCallbackParams } from './controller-BcZvbm-Y.js'; +import { a0 as LayerCommon } from './controller-BcZvbm-Y.js'; +import { ae as LayerFeature } from './controller-BcZvbm-Y.js'; +import { au as LayerFilters } from './controller-BcZvbm-Y.js'; +import { a1 as LayerGroup } from './controller-BcZvbm-Y.js'; +import { a2 as LayerGroupChangeCallbackParams } from './controller-BcZvbm-Y.js'; +import { aS as LayerGroupNode } from './controller-BcZvbm-Y.js'; +import { aT as LayerNode } from './controller-BcZvbm-Y.js'; +import { a3 as LayerProcessingStatus } from './controller-BcZvbm-Y.js'; +import { ag as LayerSchema } from './controller-BcZvbm-Y.js'; +import { ah as LayerSchemaAttribute } from './controller-BcZvbm-Y.js'; +import { ai as LayerSchemaBooleanAttribute } from './controller-BcZvbm-Y.js'; +import { aj as LayerSchemaCommonAttribute } from './controller-BcZvbm-Y.js'; +import { ak as LayerSchemaDateAttribute } from './controller-BcZvbm-Y.js'; +import { al as LayerSchemaDateTimeAttribute } from './controller-BcZvbm-Y.js'; +import { am as LayerSchemaNumericAttribute } from './controller-BcZvbm-Y.js'; +import { an as LayerSchemaTextAttribute } from './controller-BcZvbm-Y.js'; +import { aK as LayersController } from './controller-BcZvbm-Y.js'; +import { a4 as LegendDisplay } from './controller-BcZvbm-Y.js'; +import { a5 as LegendItem } from './controller-BcZvbm-Y.js'; +import { a6 as LegendItemChangeCallbackParams } from './controller-BcZvbm-Y.js'; +import { a7 as LegendItemIdentifier } from './controller-BcZvbm-Y.js'; +import { a8 as LegendItemsConstraint } from './controller-BcZvbm-Y.js'; +import { a$ as LineStringGeometry } from './controller-BcZvbm-Y.js'; +import { bd as LineToolSettings } from './controller-BcZvbm-Y.js'; +import { L as LinkElementRead } from './controller-BcZvbm-Y.js'; +import { b0 as LngLatTuple } from './controller-BcZvbm-Y.js'; +import { aL as MapDetails } from './controller-BcZvbm-Y.js'; +import { D as MapInteractionEvent } from './controller-BcZvbm-Y.js'; +import { M as MarkerElementCreate } from './controller-BcZvbm-Y.js'; +import { m as MarkerElementRead } from './controller-BcZvbm-Y.js'; +import { n as MarkerElementUpdate } from './controller-BcZvbm-Y.js'; +import { be as MarkerToolSettings } from './controller-BcZvbm-Y.js'; +import { aM as MiscController } from './controller-BcZvbm-Y.js'; +import { aH as MultiAggregationConfig } from './controller-BcZvbm-Y.js'; +import { b1 as MultiLineStringGeometry } from './controller-BcZvbm-Y.js'; +import { b2 as MultiPointGeometry } from './controller-BcZvbm-Y.js'; +import { b3 as MultiPolygonGeometry } from './controller-BcZvbm-Y.js'; +import { N as NoteElementCreate } from './controller-BcZvbm-Y.js'; +import { o as NoteElementRead } from './controller-BcZvbm-Y.js'; +import { p as NoteElementUpdate } from './controller-BcZvbm-Y.js'; +import { bf as NoteToolSettings } from './controller-BcZvbm-Y.js'; +import { bv as OnMapInteractionsOptions } from './controller-BcZvbm-Y.js'; +import { P as PathElementCreate } from './controller-BcZvbm-Y.js'; +import { q as PathElementRead } from './controller-BcZvbm-Y.js'; +import { r as PathElementUpdate } from './controller-BcZvbm-Y.js'; +import { bg as PinToolSettings } from './controller-BcZvbm-Y.js'; +import { s as PlaceElementCreate } from './controller-BcZvbm-Y.js'; +import { t as PlaceElementRead } from './controller-BcZvbm-Y.js'; +import { u as PlaceElementUpdate } from './controller-BcZvbm-Y.js'; +import { bh as PlaceFrame } from './controller-BcZvbm-Y.js'; +import { bz as PlacementForUIElement } from './controller-BcZvbm-Y.js'; +import { bi as PlaceSymbol } from './controller-BcZvbm-Y.js'; +import { b4 as PointGeometry } from './controller-BcZvbm-Y.js'; +import { v as PolygonElementCreate } from './controller-BcZvbm-Y.js'; +import { w as PolygonElementRead } from './controller-BcZvbm-Y.js'; +import { x as PolygonElementUpdate } from './controller-BcZvbm-Y.js'; +import { b5 as PolygonGeometry } from './controller-BcZvbm-Y.js'; +import { bj as PolygonToolSettings } from './controller-BcZvbm-Y.js'; +import { aI as PrecomputedAggregationMethod } from './controller-BcZvbm-Y.js'; +import { a9 as RasterBand } from './controller-BcZvbm-Y.js'; +import { aa as RasterLayer } from './controller-BcZvbm-Y.js'; +import { ab as RasterLayerSource } from './controller-BcZvbm-Y.js'; +import { af as RasterValue } from './controller-BcZvbm-Y.js'; +import { bk as RouteToolSettings } from './controller-BcZvbm-Y.js'; +import { aU as SelectionController } from './controller-BcZvbm-Y.js'; +import { ci as SetViewportCenterZoomParams } from './controller-BcZvbm-Y.js'; +import { b6 as SetVisibilityRequest } from './controller-BcZvbm-Y.js'; +import { b7 as SortConfig } from './controller-BcZvbm-Y.js'; +import { b8 as SortDirection } from './controller-BcZvbm-Y.js'; +import { T as TextElementCreate } from './controller-BcZvbm-Y.js'; +import { y as TextElementRead } from './controller-BcZvbm-Y.js'; +import { A as TextElementUpdate } from './controller-BcZvbm-Y.js'; +import { bl as TextToolSettings } from './controller-BcZvbm-Y.js'; +import { bp as ToolsController } from './controller-BcZvbm-Y.js'; +import { bm as ToolSettingsChangeEvent } from './controller-BcZvbm-Y.js'; +import { bn as ToolSettingsMap } from './controller-BcZvbm-Y.js'; +import { bo as ToolType } from './controller-BcZvbm-Y.js'; +import { ce as UIActionTriggerCreate } from './controller-BcZvbm-Y.js'; +import { bC as UIButtonElement } from './controller-BcZvbm-Y.js'; +import { bD as UIButtonElementCreate } from './controller-BcZvbm-Y.js'; +import { bE as UIButtonElementUpdate } from './controller-BcZvbm-Y.js'; +import { b_ as UIButtonRowElement } from './controller-BcZvbm-Y.js'; +import { b$ as UIButtonRowElementCreate } from './controller-BcZvbm-Y.js'; +import { c0 as UIButtonRowElementUpdate } from './controller-BcZvbm-Y.js'; +import { c1 as UICheckboxGroupElement } from './controller-BcZvbm-Y.js'; +import { c2 as UICheckboxGroupElementCreate } from './controller-BcZvbm-Y.js'; +import { c3 as UICheckboxGroupElementUpdate } from './controller-BcZvbm-Y.js'; +import { cd as UIControlElementOption } from './controller-BcZvbm-Y.js'; +import { ch as UiController } from './controller-BcZvbm-Y.js'; +import { U as UiControlsOptions } from './controller-BcZvbm-Y.js'; +import { bL as UIDividerElement } from './controller-BcZvbm-Y.js'; +import { bM as UIDividerElementCreate } from './controller-BcZvbm-Y.js'; +import { bN as UIDividerElementUpdate } from './controller-BcZvbm-Y.js'; +import { cf as uiFeatureAction } from './controller-BcZvbm-Y.js'; +import { cg as uiFeatureActionCreate } from './controller-BcZvbm-Y.js'; +import { bI as UIFlexibleSpaceElement } from './controller-BcZvbm-Y.js'; +import { bJ as UIFlexibleSpaceElementCreate } from './controller-BcZvbm-Y.js'; +import { bK as UIFlexibleSpaceElementUpdate } from './controller-BcZvbm-Y.js'; +import { bX as UIGridContainerElement } from './controller-BcZvbm-Y.js'; +import { bY as UIGridContainerElementCreate } from './controller-BcZvbm-Y.js'; +import { bZ as UIGridContainerElementUpdate } from './controller-BcZvbm-Y.js'; +import { ca as UIIframeElement } from './controller-BcZvbm-Y.js'; +import { cb as UIIframeElementCreate } from './controller-BcZvbm-Y.js'; +import { cc as UIIframeElementUpdate } from './controller-BcZvbm-Y.js'; +import { bA as UIPanel } from './controller-BcZvbm-Y.js'; +import { bB as UIPanelCreateOrUpdate } from './controller-BcZvbm-Y.js'; +import { bU as UIPanelElement } from './controller-BcZvbm-Y.js'; +import { bV as UIPanelElementCreate } from './controller-BcZvbm-Y.js'; +import { bW as UIPanelElementUpdate } from './controller-BcZvbm-Y.js'; +import { c4 as UIRadioGroupElement } from './controller-BcZvbm-Y.js'; +import { c5 as UIRadioGroupElementCreate } from './controller-BcZvbm-Y.js'; +import { c6 as UIRadioGroupElementUpdate } from './controller-BcZvbm-Y.js'; +import { bR as UISelectElement } from './controller-BcZvbm-Y.js'; +import { bS as UISelectElementCreate } from './controller-BcZvbm-Y.js'; +import { bT as UISelectElementUpdate } from './controller-BcZvbm-Y.js'; +import { bF as UITextElement } from './controller-BcZvbm-Y.js'; +import { bG as UITextElementCreate } from './controller-BcZvbm-Y.js'; +import { bH as UITextElementUpdate } from './controller-BcZvbm-Y.js'; +import { bO as UITextInputElement } from './controller-BcZvbm-Y.js'; +import { bP as UITextInputElementCreate } from './controller-BcZvbm-Y.js'; +import { bQ as UITextInputElementUpdate } from './controller-BcZvbm-Y.js'; +import { c7 as UIToggleGroupElement } from './controller-BcZvbm-Y.js'; +import { c8 as UIToggleGroupElementCreate } from './controller-BcZvbm-Y.js'; +import { c9 as UIToggleGroupElementUpdate } from './controller-BcZvbm-Y.js'; +import { bw as UpdateActionTriggerParams } from './controller-BcZvbm-Y.js'; +import { bx as UpdateFeatureActionParams } from './controller-BcZvbm-Y.js'; +import { ac as UpdateLayerParams } from './controller-BcZvbm-Y.js'; +import { by as UpdatePanelElementsParams } from './controller-BcZvbm-Y.js'; +import { aJ as ValueConfiguration } from './controller-BcZvbm-Y.js'; +import { ad as VectorLayer } from './controller-BcZvbm-Y.js'; +import { V as ViewportCenterZoom } from './controller-BcZvbm-Y.js'; +import { cj as ViewportConstraints } from './controller-BcZvbm-Y.js'; +import { cm as ViewportController } from './controller-BcZvbm-Y.js'; +import { ck as ViewportFitBoundsParams } from './controller-BcZvbm-Y.js'; +import { cl as ViewportState } from './controller-BcZvbm-Y.js'; +import { z } from './controller-BcZvbm-Y.js'; import { z as z_2 } from 'zod'; export { AggregatedGridConfig } @@ -227,6 +231,8 @@ export { CountGridConfig } export { CreateActionTriggerParams } +export { CreateFeatureActionParams } + export { CreateLayersFromGeoJsonParams } export { CreateOrUpdatePanelParams } @@ -634,6 +640,10 @@ export { UIDividerElementCreate } export { UIDividerElementUpdate } +export { uiFeatureAction } + +export { uiFeatureActionCreate } + export { UIFlexibleSpaceElement } export { UIFlexibleSpaceElementCreate } @@ -694,6 +704,8 @@ export { UIToggleGroupElementUpdate } export { UpdateActionTriggerParams } +export { UpdateFeatureActionParams } + export { UpdateLayerParams } export { UpdatePanelElementsParams } diff --git a/src/modules/ui/controller.ts b/src/modules/ui/controller.ts index 209ab499..c98e4730 100644 --- a/src/modules/ui/controller.ts +++ b/src/modules/ui/controller.ts @@ -2,15 +2,18 @@ import { method, methodWithListeners } from "~/lib/interface"; import type { SortConfig } from "~/modules/shared/types"; import type { CreateActionTriggerParams, + CreateFeatureActionParams, CreateOrUpdatePanelParams, CreatePanelElementsParams, DeletePanelElementsParams, UiControlsOptions, UiOnMapInteractionsOptions, UpdateActionTriggerParams, + UpdateFeatureActionParams, UpdatePanelElementsParams, } from "./types"; import type { UIActionTriggerCreate } from "./uiElements/UIActionTrigger"; +import type { UIFeatureAction } from "./uiElements/UIFeatureAction"; import type { UIPanel } from "./uiElements/UIPanel"; /** @@ -57,6 +60,18 @@ export const uiController = ( UIActionTriggerCreate >(feltWindow, "updateActionTrigger"), deleteActionTrigger: method(feltWindow, "deleteActionTrigger"), + + createFeatureAction: methodWithListeners< + "createFeatureAction", + CreateFeatureActionParams, + UIFeatureAction + >(feltWindow, "createFeatureAction"), + updateFeatureAction: methodWithListeners< + "updateFeatureAction", + UpdateFeatureActionParams, + UIFeatureAction + >(feltWindow, "updateFeatureAction"), + deleteFeatureAction: method(feltWindow, "deleteFeatureAction"), }); /** @@ -138,6 +153,65 @@ export interface UiController { */ deleteActionTrigger(id: string): void; + /** + * Creates a feature contextual action. + * + * @param args - The arguments for the method. + * @param args.action - The action to create. + * @param args.placement - The placement of the action. Optional. Defaults to `{ at: "end" }`. + * + * @example + * ```typescript + * const myAction = await felt.createFeatureAction({ + * action: { + * label: "Edit feature", + * onTrigger: async ({ featureId, layerId }) => { + * console.log(`Editing feature ${featureId} in layer ${layerId}`); + * }, + * layerIds: ["layer-1", "layer-2"], + * }, + * placement: { at: "start" }, // optional, defaults to { at: "end" } + * }); + * ``` + */ + createFeatureAction( + args: CreateFeatureActionParams, + ): Promise; + + /** + * Updates a feature contextual action. + * + * Feature contextual action to update is identified by the `id` property. + * + * @remarks + * Properties provided will override the existing properties. + * + * @param args - The feature contextual action to update. + * + * @example + * ```typescript + * await felt.updateFeatureAction({ + * id: "my-action", + * label: "Updated action label", // only label changes + * }); + * ``` + */ + updateFeatureAction( + args: UpdateFeatureActionParams, + ): Promise; + + /** + * Deletes a feature contextual action. + * + * @param id - The id of the feature contextual action to delete. + * + * @example + * ```typescript + * await felt.deleteFeatureAction("my-action"); + * ``` + */ + deleteFeatureAction(id: string): void; + /** * Creates a panel ID. * diff --git a/src/modules/ui/index.ts b/src/modules/ui/index.ts index 7603f0f6..02f178d2 100644 --- a/src/modules/ui/index.ts +++ b/src/modules/ui/index.ts @@ -6,12 +6,14 @@ */ export type { CreateActionTriggerParams, + CreateFeatureActionParams, CreateOrUpdatePanelParams, CreatePanelElementsParams, DeletePanelElementsParams, UiOnMapInteractionsOptions as OnMapInteractionsOptions, UiControlsOptions, UpdateActionTriggerParams, + UpdateFeatureActionParams, UpdatePanelElementsParams, } from "./types"; @@ -101,4 +103,9 @@ export type { UIControlElementOption } from "./uiElements/base"; export type { UIActionTriggerCreate } from "./uiElements/UIActionTrigger"; +export type { + UIFeatureAction as uiFeatureAction, + UIFeatureActionCreate as uiFeatureActionCreate, +} from "./uiElements/UIFeatureAction"; + export type { UiController } from "./controller"; diff --git a/src/modules/ui/schema.ts b/src/modules/ui/schema.ts index 1641d4ce..9f6d0705 100644 --- a/src/modules/ui/schema.ts +++ b/src/modules/ui/schema.ts @@ -5,15 +5,18 @@ import type { zInfer } from "~/lib/utils"; import { SortConfigSchema } from "../shared/types"; import { CreateActionTriggerParamsClonableSchema, + CreateFeatureActionParamsClonableSchema, CreateOrUpdatePanelParamsClonableSchema, CreatePanelElementsClonableSchema, DeletePanelElementsParamsSchema, UiControlsOptionsSchema, UiOnMapInteractionsOptionsSchema, UpdateActionTriggerParamsClonableSchema, + UpdateFeatureActionParamsClonableSchema, UpdatePanelElementsParamsClonableSchema, } from "./types"; import type { uiActionTriggerSchema } from "./uiElements/UIActionTrigger"; +import type { uiFeatureActionSchema } from "./uiElements/UIFeatureAction"; import type { uiPanelCreateSchema } from "./uiElements/UIPanel"; const CreateActionTriggerMessage = methodMessage( @@ -31,6 +34,21 @@ const DeleteActionTriggerMessage = methodMessage( z.string(), ); +const CreateFeatureActionMessage = methodMessage( + "createFeatureAction", + CreateFeatureActionParamsClonableSchema, +); + +const UpdateFeatureActionMessage = methodMessage( + "updateFeatureAction", + UpdateFeatureActionParamsClonableSchema, +); + +const DeleteFeatureActionMessage = methodMessage( + "deleteFeatureAction", + z.string(), +); + const CreatePanelIdMessage = methodMessage("createPanelId", z.void()); const CreateOrUpdatePanelMessage = methodMessage( @@ -86,6 +104,10 @@ export const uiSchema = { UpdateActionTriggerMessage, DeleteActionTriggerMessage, + CreateFeatureActionMessage, + UpdateFeatureActionMessage, + DeleteFeatureActionMessage, + CreatePanelIdMessage, CreateOrUpdatePanelMessage, DeletePanelMessage, @@ -115,6 +137,16 @@ export type UiSchema = { >; deleteActionTrigger: Method>; + createFeatureAction: Method< + zInfer, + zInfer + >; + updateFeatureAction: Method< + zInfer, + zInfer + >; + deleteFeatureAction: Method>; + createPanelId: Method>; createOrUpdatePanel: Method< zInfer, diff --git a/src/modules/ui/types.ts b/src/modules/ui/types.ts index 2af942ef..f8509548 100644 --- a/src/modules/ui/types.ts +++ b/src/modules/ui/types.ts @@ -7,6 +7,11 @@ import { uiActionTriggerSchema, type UIActionTriggerCreate, } from "./uiElements/UIActionTrigger"; +import { + uiFeatureActionSchema, + type UIFeatureAction, + type UIFeatureActionCreate, +} from "./uiElements/UIFeatureAction"; import { type UIFlexibleSpaceElementCreate } from "./uiElements/UIFlexibleSpaceElement"; import { uiPanelCreateSchema, @@ -50,6 +55,38 @@ export interface UpdateActionTriggerParams id: zInfer["id"]; } +const CreateFeatureActionParamsSchema = z.object({ + action: uiFeatureActionSchema.create, + placement: placementForUiElementSchema.optional(), +}); + +export const CreateFeatureActionParamsClonableSchema = z.object({ + action: uiFeatureActionSchema.clonable, + placement: placementForUiElementSchema.optional(), +}); + +/** + * @public + */ +export interface CreateFeatureActionParams + extends zInfer { + action: UIFeatureActionCreate; + placement?: PlacementForUIElement; +} + +const UpdateFeatureActionParamsSchema = uiFeatureActionSchema.update; + +export const UpdateFeatureActionParamsClonableSchema = + uiFeatureActionSchema.clonable.partial().required({ id: true }); + +/** + * @public + */ +export interface UpdateFeatureActionParams + extends Omit, "id"> { + id: zInfer["id"]; +} + const CreateOrUpdatePanelParamsSchema = z.object({ panel: uiPanelCreateSchema.params, placement: placementForUiElementSchema.optional(), diff --git a/src/modules/ui/uiElements/UIFeatureAction.ts b/src/modules/ui/uiElements/UIFeatureAction.ts new file mode 100644 index 00000000..81430cc3 --- /dev/null +++ b/src/modules/ui/uiElements/UIFeatureAction.ts @@ -0,0 +1,88 @@ +import { z } from "zod"; +import type { zInfer } from "~/lib/utils"; +import type { LayerFeature } from "~/modules/layers/features/types"; +import type { UiController } from "../controller"; +import { + makeUpdateSchema, + uiElementBaseCreateSchema, + uiElementBaseSchema, + type UIElementLifecycle, +} from "./base"; + +const uiFeatureActionBaseSchema = z.object({ + type: z.literal("FeatureAction"), + + /** + * The label of the feature action. + */ + label: z.string(), + + /** + * The function to call when the feature action is triggered. + */ + onTrigger: z + .function() + .args(z.object({ feature: z.custom() })) + .returns(z.void()), + + /** + * The layers to add the action to. Optional. Defaults to all layers. + */ + layerIds: z.array(z.string()).optional(), + + /** + * The geometry type of the features to add the action to. Optional. Defaults to all geometry types. + */ + geometryTypes: z + .array(z.enum(["Polygon", "Line", "Point", "Raster"])) + .optional(), +}); + +export const uiFeatureActionSchema = { + read: uiElementBaseSchema + .extend(uiFeatureActionBaseSchema.shape) + .extend({ id: z.string() }), + create: uiElementBaseCreateSchema.params + .extend(uiFeatureActionBaseSchema.shape) + .extend({ type: z.undefined() }), + clonable: uiElementBaseCreateSchema.clonable + .extend(uiFeatureActionBaseSchema.shape) + .extend({ type: z.undefined() }) + .extend({ onTrigger: z.string() }), + // Add the missing update schema + update: makeUpdateSchema( + uiElementBaseCreateSchema.params + .extend(uiFeatureActionBaseSchema.shape) + .extend({ type: z.undefined() }), + ), +}; + +/** + * Represents a feature action for creation. + * It can be added to the map by using the {@link UiController.createFeatureAction} method. + */ +export interface UIFeatureActionCreate + extends UIElementLifecycle, + Omit< + zInfer, + "onCreate" | "onDestroy" + > { + /** + * The function to call when the feature action is triggered. + * + * @param args - The arguments passed to the function. + * @param args.feature - The feature that triggered the action. + */ + onTrigger: (args: { feature: LayerFeature }) => void; +} + +/** + * Represents a feature action after creation (with generated id). + */ +export type UIFeatureAction = { + id: string; + label: string; + layerIds?: string[]; + geometryTypes?: Array<"Polygon" | "Point" | "Line" | "Raster">; + onTrigger: (args: { feature: LayerFeature }) => void; +}; From e416026f4b9b4ff0640746d2d8f77cb47a628bf8 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Fri, 26 Sep 2025 18:09:39 +0200 Subject: [PATCH 13/30] RELEASING: Releasing 1 package(s) Releases: @feltmaps/js-sdk@1.10.0-next.1 [skip ci] --- CHANGELOG.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57660eee..c5e4c626 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # @feltmaps/js-sdk +## 1.10.0-next.1 + +### Minor Changes + +- 34b9ed3: Add feature actions + ## 1.10.0-next.0 ### Minor Changes diff --git a/package.json b/package.json index 2714adc5..2f906d39 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@feltmaps/js-sdk", - "version": "1.10.0-next.0", + "version": "1.10.0-next.1", "description": "An SDK for Felt maps", "keywords": [ "felt", From 39213c1938c4518fc03e8cce0177a370b2cabbd0 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Fri, 26 Sep 2025 18:09:53 +0200 Subject: [PATCH 14/30] Update prerelease docs/meta --- .changeset/pre.json | 1 + docs/CHANGELOG.md | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/.changeset/pre.json b/.changeset/pre.json index fe209dd7..86455603 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -5,6 +5,7 @@ "@feltmaps/js-sdk": "1.9.0" }, "changesets": [ + "empty-camels-pay", "sharp-files-dance" ] } diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 46c972dd..43c682d5 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,11 @@ # @feltmaps/js-sdk +## 1.10.0-next.1 + +### Minor Changes + +* 34b9ed3: Add feature actions + ## 1.10.0-next.0 ### Minor Changes From baef3778075759a0b090844965ce44ac775a9c8e Mon Sep 17 00:00:00 2001 From: Sergio Clebal Date: Tue, 24 Jun 2025 11:39:08 +0200 Subject: [PATCH 15/30] Rename UIPanel onClose to onClickClose (#98) * Rename UIPanel onClose to onClickClose * docs(changeset): Rename UIPanel onClose to onClickClose (cherry picked from commit 9cc5dd92aeced772e4efff4fd40ab28327e8ebf3) --- .changeset/quiet-donuts-shout.md | 5 ++ docs/UI/UIPanelCreate.md | 96 ++++++++++++++++++++++++++++++++ docs/UI/UpdatePanelParams.md | 75 +++++++++++++++++++++++++ 3 files changed, 176 insertions(+) create mode 100644 .changeset/quiet-donuts-shout.md create mode 100644 docs/UI/UIPanelCreate.md create mode 100644 docs/UI/UpdatePanelParams.md diff --git a/.changeset/quiet-donuts-shout.md b/.changeset/quiet-donuts-shout.md new file mode 100644 index 00000000..e4df6ef8 --- /dev/null +++ b/.changeset/quiet-donuts-shout.md @@ -0,0 +1,5 @@ +--- +"@feltmaps/js-sdk": minor +--- + +Rename UIPanel onClose to onClickClose diff --git a/docs/UI/UIPanelCreate.md b/docs/UI/UIPanelCreate.md new file mode 100644 index 00000000..d522d60c --- /dev/null +++ b/docs/UI/UIPanelCreate.md @@ -0,0 +1,96 @@ +*** + +The parameters for creating a panel by using [UiController.createPanel](UiController.md#createpanel). + +# See + +[UIPanel](UIPanel.md) for more information about panels. + +# Remarks + +`id` is optional but recommended if you want to be able to perform updates. + +# Properties + +## body + +> **body**: [`UIPanelElementsCreate`](UIPanelElementsCreate.md)\[] + +The elements to add to the panel body. + +*** + +## title? + +> `optional` **title**: `string` + +The title to display in the panel header. + +*** + +## onClickClose()? + +> `optional` **onClickClose**: () => `void` + +A function to call when panel's close button is clicked. + +### Returns + +`void` + +*** + +## type? + +> `optional` **type**: `"Panel"` + +*** + +## footer? + +> `optional` **footer**: [`UIPanelElementsCreate`](UIPanelElementsCreate.md)\[] + +The elements to add to the panel footer. + +*** + +## onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +### Returns + +`void` + +*** + +## onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +### Returns + +`void` + +*** + +## id? + +> `optional` **id**: `string` + +The ID of the element. + +### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +### Default Value + +`undefined` diff --git a/docs/UI/UpdatePanelParams.md b/docs/UI/UpdatePanelParams.md new file mode 100644 index 00000000..1baf96e3 --- /dev/null +++ b/docs/UI/UpdatePanelParams.md @@ -0,0 +1,75 @@ +*** + +# Properties + +## id + +> **id**: `string` + +The ID of the element. + +*** + +## title? + +> `optional` **title**: `string` + +The title to display in the panel header. + +*** + +## onClickClose()? + +> `optional` **onClickClose**: () => `void` + +A function to call when panel's close button is clicked. + +### Returns + +`void` + +*** + +## type? + +> `optional` **type**: `"Panel"` + +*** + +## body? + +> `optional` **body**: [`UIPanelElementsCreate`](UIPanelElementsCreate.md)\[] + +The elements to add to the panel body. + +*** + +## footer? + +> `optional` **footer**: [`UIPanelElementsCreate`](UIPanelElementsCreate.md)\[] + +The elements to add to the panel footer. + +*** + +## onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +### Returns + +`void` + +*** + +## onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +### Returns + +`void` From c4aef02f2da3022121a313f12bc2a8be742aa5f4 Mon Sep 17 00:00:00 2001 From: Sergio Clebal Date: Tue, 24 Jun 2025 10:56:22 +0200 Subject: [PATCH 16/30] Add tool setting to hide/show inspector (#96) * Add tool setting to hide/show inspector * Update implementation * docs(changeset): Add tool setting to hide/show inspector (cherry picked from commit b7755b924444218b38b2704eb9f5f6d88c022fa7) --- .changeset/three-mangos-juggle.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/three-mangos-juggle.md diff --git a/.changeset/three-mangos-juggle.md b/.changeset/three-mangos-juggle.md new file mode 100644 index 00000000..c2ffc340 --- /dev/null +++ b/.changeset/three-mangos-juggle.md @@ -0,0 +1,5 @@ +--- +"@feltmaps/js-sdk": minor +--- + +Add tool setting to hide/show inspector From 642620b6292daddea83ce1d2ef62027dd4d0f966 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Thu, 10 Jul 2025 14:49:54 +0200 Subject: [PATCH 17/30] Clean changelog and pre.json --- .changeset/pre.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index 86455603..83a8e451 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,5 +1,5 @@ { - "mode": "pre", + "mode": "exit", "tag": "next", "initialVersions": { "@feltmaps/js-sdk": "1.9.0" From ff04892013101c62bec1bc1e2ed98c8b765471d4 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Thu, 10 Jul 2025 14:55:06 +0200 Subject: [PATCH 18/30] RELEASING: Releasing 1 package(s) Releases: @feltmaps/js-sdk@1.7.0 [skip ci] --- .changeset/quiet-donuts-shout.md | 5 ----- .changeset/three-mangos-juggle.md | 5 ----- 2 files changed, 10 deletions(-) delete mode 100644 .changeset/quiet-donuts-shout.md delete mode 100644 .changeset/three-mangos-juggle.md diff --git a/.changeset/quiet-donuts-shout.md b/.changeset/quiet-donuts-shout.md deleted file mode 100644 index e4df6ef8..00000000 --- a/.changeset/quiet-donuts-shout.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@feltmaps/js-sdk": minor ---- - -Rename UIPanel onClose to onClickClose diff --git a/.changeset/three-mangos-juggle.md b/.changeset/three-mangos-juggle.md deleted file mode 100644 index c2ffc340..00000000 --- a/.changeset/three-mangos-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@feltmaps/js-sdk": minor ---- - -Add tool setting to hide/show inspector From 08da45e8bc5ea5f3e44e9b9699e15160a343291f Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Wed, 4 Jun 2025 11:37:31 -0400 Subject: [PATCH 19/30] min docs --- docs-minimal/CHANGELOG.md | 92 + docs-minimal/README.md | 30 + docs-minimal/client.md | 11274 +++++++++++++++++++++++++ minimalTheme.mjs | 76 + package.json | 2 + src/modules/elements/index.ts | 2 +- src/modules/interactions/index.ts | 2 +- src/modules/layers/features/types.ts | 4 +- src/modules/layers/index.ts | 2 +- src/modules/misc/index.ts | 2 +- src/modules/selection/index.ts | 2 +- src/modules/tools/index.ts | 2 +- src/modules/ui/index.ts | 4 +- src/modules/viewport/index.ts | 2 +- typedoc-minimal.json | 50 + 15 files changed, 11536 insertions(+), 10 deletions(-) create mode 100644 docs-minimal/CHANGELOG.md create mode 100644 docs-minimal/README.md create mode 100644 docs-minimal/client.md create mode 100644 minimalTheme.mjs create mode 100644 typedoc-minimal.json diff --git a/docs-minimal/CHANGELOG.md b/docs-minimal/CHANGELOG.md new file mode 100644 index 00000000..293d8948 --- /dev/null +++ b/docs-minimal/CHANGELOG.md @@ -0,0 +1,92 @@ +# @feltmaps/js-sdk + +## 1.6.0 + +### Minor Changes + +* 160ca6d: Implement getFeatures method on LayersController +* 6a1e536: Widen allowed boundary types +* 56077be: Add setLayerBoundary, getLayerBoundaries, onLayerBoundaryChange + +## 1.5.1 + +### Patch Changes + +* ac68984: Update getLayerSchema example + +## 1.5.0 + +### Minor Changes + +* d327b46: Add `afterCreation` option in pin tool settings to control what happens after creating a Place +* 6a66d40: Add updateLayer and expand createLayersFromGeoJson options +* 6504fea: Change documentation for getElementGeoemtry to document Highlighter and Marker functionality, and allow holes in Highlighter geometry +* cf6711e: Make programmatic element CRUD types more accurate +* 4c83c60: Add programmatic element creation, editing and deletion +* 46e8ddc: Add onElementChange and onElementDelete +* 3e87812: Adds APIs to use Felt's drawing tools on read-only maps +* d877a83: Add getFeature for getting a single feature as GeoJSON with full detail geometry +* 7f1d6aa: Add "interaction" to element schema +* cf1dd7c: Improve Text and Note types and docs +* 1f6a386: Add getViewportConstraints and setViewportConstraints methods definition +* b059b70: Add onLayerFiltersChange to allow listening to changes to layer filters, be it ephemeral, style or widget filters that changed. +* 19b41ce: Improve createLayer API +* c20e605: Add setLayerLegendVisibility and setLayerGroupLegendVisibility methods definition +* cbfd3fd: Reject promises when method handlers are invalid +* 0915f48: Add showLayerDataTable and hideLayerDataTable methods +* 9620df9: Change Circle.coordinates for Circle.center +* 63c3042: Add getLayerSchema method +* 69cc0a9: Fix spelling mistake in types +* 87304d8: Fix geometry filter type +* 1f22654: Add screen point to pointer events +* b0e4149: Improves type readability and docs +* 65bf269: Add createLayer and deleteLayer +* 4bd0ae9: Add getMapDetails method definition +* 5f903fb: Update Layer type and createLayerFromGeoJson to separate out Source concept +* 597a8d6: Return coordinates on Circle and Place elements as they are only a single point. +* f2f4289: Add layer stats methods + +### Patch Changes + +* 993fd44: Allow workers to be SDK clients +* 417b8f4: Fixes incorrect value in documentation and updates links to other methods +* 9620df9: Improve element docs +* f0892c4: Improve documentation +* bb79037: Fix per-geometry styling for created layers + +## 1.4.0 + +### Minor Changes + +* 555a25a: Add clearSelection method +* 1f5d950: Add option to pass auth token when embedding + +## 1.3.0 + +### Minor Changes + +* 4bbde62: Allow setting a note to show with layer filters + +## 1.2.0 + +### Minor Changes + +* 7badd4b: Add onMapIdle event +* 41efd53: Add selectFeature method to select feature by layer and feature ID +* 208c492: Add areaQuery param to getRenderedFeatures + +## 1.1.0 + +### Minor Changes + +* 5f607ec: Return style with layers, and allow updating layer styles via setLayerStyle + +### Patch Changes + +* 3a8bec8: Fix API reference link in README + +## 1.0.2 + +### Major Changes + +* Release v1 of Felt JS SDK diff --git a/docs-minimal/README.md b/docs-minimal/README.md new file mode 100644 index 00000000..feb182a6 --- /dev/null +++ b/docs-minimal/README.md @@ -0,0 +1,30 @@ +# API Reference + +To get started: + +``` +import { Felt } from "@feltmaps/js-sdk"; + +const felt = await Felt.embed( + document.querySelector("#container"), + "FELT_MAP_ID", + { + uiControls: { + cooperativeGestures: false, + fullScreenButton: false, + showLegend: false, + }, + } +); +const layers = await map.getLayers(); +``` + +**View Main.FeltController | FeltController for a complete list of available functions. Main.FeltEmbedOptions | FeltEmbedOptions enumerates initialization options.** + +# Documents + +* [CHANGELOG](CHANGELOG.md) + +# Modules + +* [client](client.md) diff --git a/docs-minimal/client.md b/docs-minimal/client.md new file mode 100644 index 00000000..5997ab9d --- /dev/null +++ b/docs-minimal/client.md @@ -0,0 +1,11274 @@ +# Other + +## PlaceElementCreate + +### Properties + +#### type + +> **type**: `"Place"` + +#### coordinates + +> **coordinates**: [`LngLatTuple`](client.md#lnglattuple) + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### imageUrl? + +> `optional` **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### symbol? + +> `optional` **symbol**: `string` + +The symbol that is rendered for the Place. + +This can be an emoji by using colon-enclosed characters (e.g. `":smiley:"`) +or one of the symbols available in Felt's symbol library. + +You can see the available symbols in the Felt UI when editing a Place +by hovering a symbol and converting the tooltip to kebab-case. For example, +the "Oil barrel" symbol is `oil-barrel`. + +#### frame? + +> `optional` **frame**: `null` | `"frame-circle"` | `"frame-square"` + +The frame that is rendered around the Place's symbol. This is +only available for non-emoji symbols. + +#### hideLabel? + +> `optional` **hideLabel**: `boolean` + +Whether the element's label is hidden on the map. This allows you +to add a name to the element and can show in popups, but not have +it visible on the map. + +This will also hide the faint placeholder label that is shown when +an editable Place is selected. + +##### Default + +```ts +false +``` + +## PathElementCreate + +### Properties + +#### type + +> **type**: `"Path"` + +#### coordinates + +> **coordinates**: [`LngLatTuple`](client.md#lnglattuple)\[]\[] + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### imageUrl? + +> `optional` **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### strokeOpacity? + +> `optional` **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth? + +> `optional` **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle? + +> `optional` **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### distanceMarker? + +> `optional` **distanceMarker**: `boolean` + +Whether a distance marker is shown at the midpoint of the path. + +##### Default + +```ts +false +``` + +#### routingMode? + +> `optional` **routingMode**: `null` | `"driving"` | `"cycling"` | `"walking"` | `"flying"` + +Whether this represents a route, and if so, what mode of transport +is used. + +If this is `null`, the path is not considered to be a route, so while it +can have a `distanceMarker`, it will does not have a start or end cap. + +##### Default + +```ts +null +``` + +#### endCaps? + +> `optional` **endCaps**: `boolean` + +Whether or not to show Start and End caps on the path. This is +only available if the `routingMode` is set. + +##### Default + +```ts +false +``` + +## PolygonElementCreate + +### Properties + +#### type + +> **type**: `"Polygon"` + +#### coordinates + +> **coordinates**: [`LngLatTuple`](client.md#lnglattuple)\[]\[] + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### imageUrl? + +> `optional` **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### strokeOpacity? + +> `optional` **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth? + +> `optional` **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle? + +> `optional` **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### fillOpacity? + +> `optional` **fillOpacity**: `number` + +The opacity of the polygon's fill, between 0 and 1. + +##### Default + +```ts +0.25 +``` + +#### areaMarker? + +> `optional` **areaMarker**: `boolean` + +Whether to show an area marker on the polygon. + +##### Default + +```ts +false +``` + +## CircleElementCreate + +### Properties + +#### type + +> **type**: `"Circle"` + +#### radius + +> **radius**: `number` + +The radius of the circle in meters. + +#### center + +> **center**: [`LngLatTuple`](client.md#lnglattuple) + +The center of the circle. + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### imageUrl? + +> `optional` **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### strokeOpacity? + +> `optional` **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth? + +> `optional` **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle? + +> `optional` **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### radiusMarker? + +> `optional` **radiusMarker**: `boolean` + +Whether to show a marker on the circle that indicates the radius + +##### Default + +```ts +false +``` + +#### radiusDisplayAngle? + +> `optional` **radiusDisplayAngle**: `number` + +The angle at which the control point for setting the radius is displayed, +in degrees. When the `radiusMarker` is `true`, there is a dotted line rendered +from the center of the circle to the control point, and the marker is shown +at the midpoint of this line. + +##### Default + +```ts +90 +``` + +#### radiusDisplayUnit? + +> `optional` **radiusDisplayUnit**: `null` | `"meter"` | `"kilometer"` | `"foot"` | `"mile"` + +The unit of the radius used when the `radiusMarker` is `true`. + +A value of `null` means that the unit matches the user's locale. + +##### Default + +```ts +null +``` + +#### fillOpacity? + +> `optional` **fillOpacity**: `number` + +The opacity of the circle's fill. + +##### Default + +```ts +0.25 +``` + +## MarkerElementCreate + +### Properties + +#### type + +> **type**: `"Marker"` + +#### coordinates + +> **coordinates**: [`LngLatTuple`](client.md#lnglattuple)\[]\[] + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### opacity? + +> `optional` **opacity**: `number` + +The opacity of the marker, between 0 and 1. + +##### Default + +```ts +1 +``` + +#### size? + +> `optional` **size**: `number` + +The size of the marker, used in conjunction with the `zoom` to determine +the actual size of the marker. + +##### Default + +```ts +10 +``` + +#### zoom? + +> `optional` **zoom**: `number` + +The zoom level at which the marker was created. This is combined with +the `size` to determine the actual size of the marker. + +When creating a marker, if you don't supply this value it defaults to +the current zoom of the map when you call `createElement`. + +## HighlighterElementCreate + +### Properties + +#### type + +> **type**: `"Highlighter"` + +#### coordinates + +> **coordinates**: [`LngLatTuple`](client.md#lnglattuple)\[]\[]\[] + +A multipolygon describing the area that is highlighted. + +If `renderHoles` is set to false, only the outer ring of each polygon +will be rendered, filling in the area inside the highlighted region. + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### renderHoles? + +> `optional` **renderHoles**: `boolean` + +Whether to render the holes of the highlighted area. + +##### Default + +```ts +false +``` + +#### opacity? + +> `optional` **opacity**: `number` + +The opacity of the highlighter, between 0 and 1. + +##### Default + +```ts +0.5 +``` + +## TextElementCreate + +### Properties + +#### type + +> **type**: `"Text"` + +#### text + +> **text**: `string` + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### rotation? + +> `optional` **rotation**: `number` + +The rotation of the element in degrees. + +##### Default + +```ts +0 +``` + +#### scale? + +> `optional` **scale**: `number` + +The relative scale of the element from the default size. This is combined +with the `zoom` to determine the actual size of the element. + +##### Default + +```ts +1 +``` + +#### zoom? + +> `optional` **zoom**: `number` + +The zoom level at which the element was created. This is combined with +the `scale` to determine the actual size of the element. + +When creating an element, if you don't supply this value it defaults to +the current zoom of the map when you call `createElement`. + +#### align? + +> `optional` **align**: `"center"` | `"left"` | `"right"` + +The alignment of the text, either `left`, `center` or `right`. + +##### Default + +```ts +"center" +``` + +#### style? + +> `optional` **style**: `"italic"` | `"light"` | `"regular"` | `"caps"` + +The style of the text, either `italic`, `light`, `regular` or `caps`. + +##### Default + +```ts +"regular" +``` + +#### position? + +> `optional` **position**: [`LngLatTuple`](client.md#lnglattuple) + +The geographical position of the center of the text element. + +If this is omitted, the text will be placed at the center of the current +viewport. + +## NoteElementCreate + +### Properties + +#### type + +> **type**: `"Note"` + +#### text + +> **text**: `string` + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### rotation? + +> `optional` **rotation**: `number` + +The rotation of the element in degrees. + +##### Default + +```ts +0 +``` + +#### scale? + +> `optional` **scale**: `number` + +The relative scale of the element from the default size. This is combined +with the `zoom` to determine the actual size of the element. + +##### Default + +```ts +1 +``` + +#### zoom? + +> `optional` **zoom**: `number` + +The zoom level at which the element was created. This is combined with +the `scale` to determine the actual size of the element. + +When creating an element, if you don't supply this value it defaults to +the current zoom of the map when you call `createElement`. + +#### align? + +> `optional` **align**: `"center"` | `"left"` | `"right"` + +The alignment of the text, either `left`, `center` or `right`. + +##### Default + +```ts +"center" +``` + +#### style? + +> `optional` **style**: `"italic"` | `"light"` | `"regular"` | `"caps"` + +The style of the text, either `italic`, `light`, `regular` or `caps`. + +##### Default + +```ts +"regular" +``` + +#### widthScale? + +> `optional` **widthScale**: `number` + +#### position? + +> `optional` **position**: [`LngLatTuple`](client.md#lnglattuple) + +The geographical position of the center of the note element. + +If this is omitted, the note will be placed at the center of the current +viewport. + +## ImageElementCreate + +### Properties + +#### type + +> **type**: `"Image"` + +#### coordinates + +> **coordinates**: \[`number`, `number`]\[]\[] = `MultiLineStringGeometrySchema.shape.coordinates` + +#### imageUrl + +> **imageUrl**: `string` + +The URL of the image that is rendered in this element + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### opacity? + +> `optional` **opacity**: `number` + +The opacity of the image, between 0 and 1. + +##### Default + +```ts +1 +``` + +## PlaceElementRead + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name + +> **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description + +> **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes + +> **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### imageUrl + +> **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### type + +> **type**: `"Place"` + +#### symbol + +> **symbol**: `string` + +The symbol that is rendered for the Place. + +This can be an emoji by using colon-enclosed characters (e.g. `":smiley:"`) +or one of the symbols available in Felt's symbol library. + +You can see the available symbols in the Felt UI when editing a Place +by hovering a symbol and converting the tooltip to kebab-case. For example, +the "Oil barrel" symbol is `oil-barrel`. + +#### frame + +> **frame**: `null` | `"frame-circle"` | `"frame-square"` + +The frame that is rendered around the Place's symbol. This is +only available for non-emoji symbols. + +#### hideLabel + +> **hideLabel**: `boolean` + +Whether the element's label is hidden on the map. This allows you +to add a name to the element and can show in popups, but not have +it visible on the map. + +This will also hide the faint placeholder label that is shown when +an editable Place is selected. + +##### Default + +```ts +false +``` + +#### coordinates + +> **coordinates**: [`LngLatTuple`](client.md#lnglattuple) + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +## PathElementRead + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name + +> **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description + +> **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes + +> **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### imageUrl + +> **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### strokeOpacity + +> **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth + +> **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle + +> **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### type + +> **type**: `"Path"` + +#### distanceMarker + +> **distanceMarker**: `boolean` + +Whether a distance marker is shown at the midpoint of the path. + +##### Default + +```ts +false +``` + +#### routingMode + +> **routingMode**: `null` | `"driving"` | `"cycling"` | `"walking"` | `"flying"` + +Whether this represents a route, and if so, what mode of transport +is used. + +If this is `null`, the path is not considered to be a route, so while it +can have a `distanceMarker`, it will does not have a start or end cap. + +##### Default + +```ts +null +``` + +#### endCaps + +> **endCaps**: `boolean` + +Whether or not to show Start and End caps on the path. This is +only available if the `routingMode` is set. + +##### Default + +```ts +false +``` + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +## PolygonElementRead + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name + +> **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description + +> **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes + +> **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### imageUrl + +> **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### strokeOpacity + +> **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth + +> **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle + +> **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### type + +> **type**: `"Polygon"` + +#### fillOpacity + +> **fillOpacity**: `number` + +The opacity of the polygon's fill, between 0 and 1. + +##### Default + +```ts +0.25 +``` + +#### areaMarker + +> **areaMarker**: `boolean` + +Whether to show an area marker on the polygon. + +##### Default + +```ts +false +``` + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +## CircleElementRead + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name + +> **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description + +> **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes + +> **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### imageUrl + +> **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### strokeOpacity + +> **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth + +> **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle + +> **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### type + +> **type**: `"Circle"` + +#### radius + +> **radius**: `number` + +The radius of the circle in meters. + +#### radiusMarker + +> **radiusMarker**: `boolean` + +Whether to show a marker on the circle that indicates the radius + +##### Default + +```ts +false +``` + +#### radiusDisplayAngle + +> **radiusDisplayAngle**: `number` + +The angle at which the control point for setting the radius is displayed, +in degrees. When the `radiusMarker` is `true`, there is a dotted line rendered +from the center of the circle to the control point, and the marker is shown +at the midpoint of this line. + +##### Default + +```ts +90 +``` + +#### radiusDisplayUnit + +> **radiusDisplayUnit**: `null` | `"meter"` | `"kilometer"` | `"foot"` | `"mile"` + +The unit of the radius used when the `radiusMarker` is `true`. + +A value of `null` means that the unit matches the user's locale. + +##### Default + +```ts +null +``` + +#### fillOpacity + +> **fillOpacity**: `number` + +The opacity of the circle's fill. + +##### Default + +```ts +0.25 +``` + +#### center + +> **center**: [`LngLatTuple`](client.md#lnglattuple) + +The center of the circle. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +## MarkerElementRead + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name + +> **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description + +> **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes + +> **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### type + +> **type**: `"Marker"` + +#### opacity + +> **opacity**: `number` + +The opacity of the marker, between 0 and 1. + +##### Default + +```ts +1 +``` + +#### size + +> **size**: `number` + +The size of the marker, used in conjunction with the `zoom` to determine +the actual size of the marker. + +##### Default + +```ts +10 +``` + +#### zoom + +> **zoom**: `number` + +The zoom level at which the marker was created. This is combined with +the `size` to determine the actual size of the marker. + +When creating a marker, if you don't supply this value it defaults to +the current zoom of the map when you call `createElement`. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +## HighlighterElementRead + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name + +> **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description + +> **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes + +> **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### type + +> **type**: `"Highlighter"` + +#### renderHoles + +> **renderHoles**: `boolean` + +Whether to render the holes of the highlighted area. + +##### Default + +```ts +false +``` + +#### opacity + +> **opacity**: `number` + +The opacity of the highlighter, between 0 and 1. + +##### Default + +```ts +0.5 +``` + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +## TextElementRead + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### description + +> **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes + +> **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### rotation + +> **rotation**: `number` + +The rotation of the element in degrees. + +##### Default + +```ts +0 +``` + +#### scale + +> **scale**: `number` + +The relative scale of the element from the default size. This is combined +with the `zoom` to determine the actual size of the element. + +##### Default + +```ts +1 +``` + +#### zoom + +> **zoom**: `number` + +The zoom level at which the element was created. This is combined with +the `scale` to determine the actual size of the element. + +When creating an element, if you don't supply this value it defaults to +the current zoom of the map when you call `createElement`. + +#### text + +> **text**: `string` + +The text in the element. + +#### align + +> **align**: `"center"` | `"left"` | `"right"` + +The alignment of the text, either `left`, `center` or `right`. + +##### Default + +```ts +"center" +``` + +#### style + +> **style**: `"italic"` | `"light"` | `"regular"` | `"caps"` + +The style of the text, either `italic`, `light`, `regular` or `caps`. + +##### Default + +```ts +"regular" +``` + +#### name + +> **name**: `string` + +The text shown in the element, which is identical to the `text` property. + +##### Remarks + +This is added for consistency with other elements that have a `name` +property. + +#### type + +> **type**: `"Text"` + +#### position + +> **position**: [`LngLatTuple`](client.md#lnglattuple) + +The geographical position of the center of the text element. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +## NoteElementRead + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### description + +> **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes + +> **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### rotation + +> **rotation**: `number` + +The rotation of the element in degrees. + +##### Default + +```ts +0 +``` + +#### scale + +> **scale**: `number` + +The relative scale of the element from the default size. This is combined +with the `zoom` to determine the actual size of the element. + +##### Default + +```ts +1 +``` + +#### zoom + +> **zoom**: `number` + +The zoom level at which the element was created. This is combined with +the `scale` to determine the actual size of the element. + +When creating an element, if you don't supply this value it defaults to +the current zoom of the map when you call `createElement`. + +#### text + +> **text**: `string` + +The text in the element. + +#### align + +> **align**: `"center"` | `"left"` | `"right"` + +The alignment of the text, either `left`, `center` or `right`. + +##### Default + +```ts +"center" +``` + +#### style + +> **style**: `"italic"` | `"light"` | `"regular"` | `"caps"` + +The style of the text, either `italic`, `light`, `regular` or `caps`. + +##### Default + +```ts +"regular" +``` + +#### name + +> **name**: `string` + +The text shown in the element, which is identical to the `text` property. + +##### Remarks + +This is added for consistency with other elements that have a `name` +property. + +#### type + +> **type**: `"Note"` + +#### widthScale + +> **widthScale**: `number` + +#### position + +> **position**: [`LngLatTuple`](client.md#lnglattuple) + +The geographical position of the center of the note element. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +## ImageElementRead + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### name + +> **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description + +> **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes + +> **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### type + +> **type**: `"Image"` + +#### imageUrl + +> **imageUrl**: `string` + +The URL of the image that is rendered in this element + +#### opacity + +> **opacity**: `number` + +The opacity of the image, between 0 and 1. + +##### Default + +```ts +1 +``` + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +## LinkElementRead + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name + +> **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description + +> **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes + +> **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### type + +> **type**: `"Link"` + +#### url + +> **url**: `string` + +The URL of the link that is rendered in this element. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +## PlaceElementUpdate + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### type + +> **type**: `"Place"` + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### imageUrl? + +> `optional` **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### symbol? + +> `optional` **symbol**: `string` + +The symbol that is rendered for the Place. + +This can be an emoji by using colon-enclosed characters (e.g. `":smiley:"`) +or one of the symbols available in Felt's symbol library. + +You can see the available symbols in the Felt UI when editing a Place +by hovering a symbol and converting the tooltip to kebab-case. For example, +the "Oil barrel" symbol is `oil-barrel`. + +#### frame? + +> `optional` **frame**: `null` | `"frame-circle"` | `"frame-square"` + +The frame that is rendered around the Place's symbol. This is +only available for non-emoji symbols. + +#### hideLabel? + +> `optional` **hideLabel**: `boolean` + +Whether the element's label is hidden on the map. This allows you +to add a name to the element and can show in popups, but not have +it visible on the map. + +This will also hide the faint placeholder label that is shown when +an editable Place is selected. + +##### Default + +```ts +false +``` + +#### coordinates? + +> `optional` **coordinates**: [`LngLatTuple`](client.md#lnglattuple) + +## PathElementUpdate + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### type + +> **type**: `"Path"` + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### imageUrl? + +> `optional` **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### strokeOpacity? + +> `optional` **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth? + +> `optional` **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle? + +> `optional` **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### distanceMarker? + +> `optional` **distanceMarker**: `boolean` + +Whether a distance marker is shown at the midpoint of the path. + +##### Default + +```ts +false +``` + +#### routingMode? + +> `optional` **routingMode**: `null` | `"driving"` | `"cycling"` | `"walking"` | `"flying"` + +Whether this represents a route, and if so, what mode of transport +is used. + +If this is `null`, the path is not considered to be a route, so while it +can have a `distanceMarker`, it will does not have a start or end cap. + +##### Default + +```ts +null +``` + +#### endCaps? + +> `optional` **endCaps**: `boolean` + +Whether or not to show Start and End caps on the path. This is +only available if the `routingMode` is set. + +##### Default + +```ts +false +``` + +#### coordinates? + +> `optional` **coordinates**: [`LngLatTuple`](client.md#lnglattuple)\[]\[] + +## PolygonElementUpdate + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### type + +> **type**: `"Polygon"` + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### imageUrl? + +> `optional` **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### strokeOpacity? + +> `optional` **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth? + +> `optional` **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle? + +> `optional` **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### fillOpacity? + +> `optional` **fillOpacity**: `number` + +The opacity of the polygon's fill, between 0 and 1. + +##### Default + +```ts +0.25 +``` + +#### areaMarker? + +> `optional` **areaMarker**: `boolean` + +Whether to show an area marker on the polygon. + +##### Default + +```ts +false +``` + +#### coordinates? + +> `optional` **coordinates**: [`LngLatTuple`](client.md#lnglattuple)\[]\[] + +## CircleElementUpdate + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### type + +> **type**: `"Circle"` + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### imageUrl? + +> `optional` **imageUrl**: `null` | `string` + +The URL of an image that has been added to the element. + +#### strokeOpacity? + +> `optional` **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth? + +> `optional` **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle? + +> `optional` **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### radius? + +> `optional` **radius**: `number` + +The radius of the circle in meters. + +#### radiusMarker? + +> `optional` **radiusMarker**: `boolean` + +Whether to show a marker on the circle that indicates the radius + +##### Default + +```ts +false +``` + +#### radiusDisplayAngle? + +> `optional` **radiusDisplayAngle**: `number` + +The angle at which the control point for setting the radius is displayed, +in degrees. When the `radiusMarker` is `true`, there is a dotted line rendered +from the center of the circle to the control point, and the marker is shown +at the midpoint of this line. + +##### Default + +```ts +90 +``` + +#### radiusDisplayUnit? + +> `optional` **radiusDisplayUnit**: `null` | `"meter"` | `"kilometer"` | `"foot"` | `"mile"` + +The unit of the radius used when the `radiusMarker` is `true`. + +A value of `null` means that the unit matches the user's locale. + +##### Default + +```ts +null +``` + +#### fillOpacity? + +> `optional` **fillOpacity**: `number` + +The opacity of the circle's fill. + +##### Default + +```ts +0.25 +``` + +#### center? + +> `optional` **center**: [`LngLatTuple`](client.md#lnglattuple) + +The center of the circle. + +## MarkerElementUpdate + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### type + +> **type**: `"Marker"` + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### opacity? + +> `optional` **opacity**: `number` + +The opacity of the marker, between 0 and 1. + +##### Default + +```ts +1 +``` + +#### size? + +> `optional` **size**: `number` + +The size of the marker, used in conjunction with the `zoom` to determine +the actual size of the marker. + +##### Default + +```ts +10 +``` + +#### zoom? + +> `optional` **zoom**: `number` + +The zoom level at which the marker was created. This is combined with +the `size` to determine the actual size of the marker. + +When creating a marker, if you don't supply this value it defaults to +the current zoom of the map when you call `createElement`. + +#### coordinates? + +> `optional` **coordinates**: [`LngLatTuple`](client.md#lnglattuple)\[]\[] + +## HighlighterElementUpdate + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### type + +> **type**: `"Highlighter"` + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### renderHoles? + +> `optional` **renderHoles**: `boolean` + +Whether to render the holes of the highlighted area. + +##### Default + +```ts +false +``` + +#### opacity? + +> `optional` **opacity**: `number` + +The opacity of the highlighter, between 0 and 1. + +##### Default + +```ts +0.5 +``` + +#### coordinates? + +> `optional` **coordinates**: [`LngLatTuple`](client.md#lnglattuple)\[]\[]\[] + +A multipolygon describing the area that is highlighted. + +If `renderHoles` is set to false, only the outer ring of each polygon +will be rendered, filling in the area inside the highlighted region. + +## TextElementUpdate + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### type + +> **type**: `"Text"` + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### rotation? + +> `optional` **rotation**: `number` + +The rotation of the element in degrees. + +##### Default + +```ts +0 +``` + +#### scale? + +> `optional` **scale**: `number` + +The relative scale of the element from the default size. This is combined +with the `zoom` to determine the actual size of the element. + +##### Default + +```ts +1 +``` + +#### zoom? + +> `optional` **zoom**: `number` + +The zoom level at which the element was created. This is combined with +the `scale` to determine the actual size of the element. + +When creating an element, if you don't supply this value it defaults to +the current zoom of the map when you call `createElement`. + +#### text? + +> `optional` **text**: `string` + +The text in the element. + +#### align? + +> `optional` **align**: `"center"` | `"left"` | `"right"` + +The alignment of the text, either `left`, `center` or `right`. + +##### Default + +```ts +"center" +``` + +#### style? + +> `optional` **style**: `"italic"` | `"light"` | `"regular"` | `"caps"` + +The style of the text, either `italic`, `light`, `regular` or `caps`. + +##### Default + +```ts +"regular" +``` + +#### position? + +> `optional` **position**: [`LngLatTuple`](client.md#lnglattuple) + +The geographical position of the center of the text element. + +## NoteElementUpdate + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### type + +> **type**: `"Note"` + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### color? + +> `optional` **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### rotation? + +> `optional` **rotation**: `number` + +The rotation of the element in degrees. + +##### Default + +```ts +0 +``` + +#### scale? + +> `optional` **scale**: `number` + +The relative scale of the element from the default size. This is combined +with the `zoom` to determine the actual size of the element. + +##### Default + +```ts +1 +``` + +#### zoom? + +> `optional` **zoom**: `number` + +The zoom level at which the element was created. This is combined with +the `scale` to determine the actual size of the element. + +When creating an element, if you don't supply this value it defaults to +the current zoom of the map when you call `createElement`. + +#### text? + +> `optional` **text**: `string` + +The text in the element. + +#### align? + +> `optional` **align**: `"center"` | `"left"` | `"right"` + +The alignment of the text, either `left`, `center` or `right`. + +##### Default + +```ts +"center" +``` + +#### style? + +> `optional` **style**: `"italic"` | `"light"` | `"regular"` | `"caps"` + +The style of the text, either `italic`, `light`, `regular` or `caps`. + +##### Default + +```ts +"regular" +``` + +#### widthScale? + +> `optional` **widthScale**: `number` + +#### position? + +> `optional` **position**: [`LngLatTuple`](client.md#lnglattuple) + +The geographical position of the center of the note element. + +## ImageElementUpdate + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for the element. + +#### type + +> **type**: `"Image"` + +#### groupId? + +> `optional` **groupId**: `null` | `string` + +The ID of the element group that the element belongs to. +For elements that are not part of a group, this will be null. + +#### name? + +> `optional` **name**: `null` | `string` + +The element's name. For elements that can show a label or text on +the map (e.g. a Place or Text element) this is the text that will be shown. + +For elements such as Polygons or Paths, the name is what is shown when +the element is selected by clicking on it. + +#### description? + +> `optional` **description**: `null` | `string` + +Text describing the element, which is shown in an element's popup when it +is selected. + +Note that some elements are not selectable on the map, such as Notes, Text +and Markers, so their description will not be shown. + +#### attributes? + +> `optional` **attributes**: `Record`\<`string`, `unknown`> + +A set of key-value pairs that can be used to store arbitrary data about the element. + +This is most useful for associating additional data with an element that is not +part of the element's core data, such as a Place's address or some other +data. + +#### interaction? + +> `optional` **interaction**: `"default"` | `"locked"` + +Whether the element is interactive. + +The `default` interaction mode means that the element can be selected and edited by +the user, if it was created by the SDK or by the user using a tool. + +If the interaction mode is `locked`, the element will not be editable by the user, +which is often used for elements that you don't want the user to edit or move by +accident. + +Elements that were created by the map author (i.e. not during an SDK "session") are +not editable and have special behaviour depending on their name, description and +attributes. + +##### Default + +```ts +"default" +``` + +#### coordinates? + +> `optional` **coordinates**: \[`number`, `number`]\[]\[] = `MultiLineStringGeometrySchema.shape.coordinates` + +#### imageUrl? + +> `optional` **imageUrl**: `string` + +The URL of the image that is rendered in this element + +#### opacity? + +> `optional` **opacity**: `number` + +The opacity of the image, between 0 and 1. + +##### Default + +```ts +1 +``` + +## ElementGroup + +### Properties + +#### id + +> **id**: `string` + +A string identifying the element group. + +#### name + +> **name**: `string` + +The name of the element group. This is shown in the legend. + +#### caption + +> **caption**: `null` | `string` + +The caption of the element group. This is shown in the legend. + +#### elementIds + +> **elementIds**: `string`\[] + +The ids of the elements in the element group. + +##### Remarks + +You can use these ids to get the full element objects via the ElementsController.getElements | \`getElements\` method. + +#### visible + +> **visible**: `boolean` + +Whether the element group is visible or not. + +#### shownInLegend + +> **shownInLegend**: `boolean` + +Whether the element group is shown in the legend or not. + +## GetElementsConstraint + +The constraints to apply when getting elements. + +### Properties + +#### ids? + +> `optional` **ids**: `string`\[] + +The ids of the elements to get. + +## GetElementGroupsConstraint + +The constraints to apply when getting element groups. + +### Properties + +#### ids? + +> `optional` **ids**: `string`\[] + +The ids of the element groups to get. + +## ElementChangeCallbackParams + +The parameters for the ElementsController.onElementChange | \`onElementChange\` and the ElementsController.onElementCreate | \`onElementCreate\` listeners. + +### Properties + +#### element + +> **element**: `null` | [`Element`](client.md#element-1) + +The new data for the element or null if the element was removed. + +#### isBeingCreated + +> **isBeingCreated**: `boolean` + +Whether or not this element is still being created by a drawing tool. + +For example, if the user begins drawing a polygon, they need to place +multiple points until they've ultimately completed the polygon. All +the time they are still placing points, this will be true. + +For elements that require text entry (such as Places, Text and Notes) +this will be true all the time the user is typing text until the point +at which the user finishes, by pressing Escape for example. + +If the user is editing an existing element, this will be false. + +For elements that are created programatically, this will be false. + +## ElementGroupChangeCallbackParams + +The parameters for the ElementsController.onElementGroupChange | \`onElementGroupChange\` listener. + +### Properties + +#### elementGroup + +> **elementGroup**: `null` | [`ElementGroup`](client.md#elementgroup) + +## MapInteractionEvent + +The event object passed to the interaction listeners. + +### Properties + +#### coordinate + +> **coordinate**: [`LatLng`](client.md#latlng) + +The cursor position in world coordinates. + +#### point + +> **point**: `object` + +The pixel coordinates of the mouse cursor, relative to the map and measured from the top left corner. + +##### x + +> **x**: `number` + +##### y + +> **y**: `number` + +#### features + +> **features**: [`LayerFeature`](client.md#layerfeature)\[] + +The vector features that are under the cursor. + +#### rasterValues + +> **rasterValues**: [`RasterValue`](client.md#rastervalue)\[] + +The raster pixel values that are under the cursor. + +## LayerFeature + +A LayerFeature is a single geographical item in a layer. + +It is intended to be a lightweight object that contains the properties of a +feature, but not the geometry. It is returned by methods like +[FeltController.getRenderedFeatures](client.md#getrenderedfeatures) and [FeltController.getFeature](client.md#getfeature), +and as part of the methods in the SelectionController + +The geometry can be obtained via the [FeltController.getGeoJsonFeature](client.md#getgeojsonfeature) +method, which returns a [GeoJsonFeature](client.md#geojsonfeature) object. + +### Properties + +#### id + +> **id**: `string` | `number` + +The identifier of the feature, unique within the layer. + +#### isDeterministicId + +> **isDeterministicId**: `boolean` + +Whether the id is deterministic. + +##### Remarks + +If the id is deterministic, it means that the id can be used to reference the feature +in the layer and therefore in all the SDK feature-related methods. + +When the id is not deterministic, the feature cannot be referenced on SDK methods like [FeltController.getFeature](client.md#getfeature) +or [SelectionController.selectFeature](client.md#selectfeature). + +For layers created and processed on Felt servers, the feature IDs are deterministic because Felt ensures every feature is correctly identified in vector tiles. +This cannot be guaranteed for layers created using a GeoJSON source on the SDK (see [LayersController.createLayersFromGeoJson](client.md#createlayersfromgeojson)) +where the ID will only be deterministic if GeoJSON features have an `id` property. + +#### layerId + +> **layerId**: `string` + +The identifier of the layer that the feature belongs to. + +#### geometryType + +> **geometryType**: `"Polygon"` | `"MultiPolygon"` | `"LineString"` | `"MultiLineString"` | `"Point"` | `"MultiPoint"` | `string` & `object` + +The type of geometry of the feature. + +##### Remarks + +Because LayerFeatures can be read from tiled features, it's +possible that this `geometryType` won't match the `geometry.type` of the +[GeoJsonFeature](client.md#geojsonfeature) returned by [FeltController.getGeoJsonFeature](client.md#getgeojsonfeature). + +For example, this may return `LineString` but the full feature is a `MultiLineString`, +or, similarly `Polygon` here may be a `MultiPolygon` in the full feature. + +As a result, you should treat this property as being indicative only. + +#### bbox + +> **bbox**: `undefined` | \[`number`, `number`, `number`, `number`] + +The bounding box of the feature. + +##### Remarks + +Because LayerFeatures can be read from tiled features and considering +that feature geometry can go through multiple tiles, it's possible that this +is not the complete bounding box of the feature. + +#### properties + +> **properties**: [`GeoJsonProperties`](client.md#geojsonproperties) + +The properties of the feature, as a bag of attributes. + +## RasterValue + +A raster pixel value for a specific layer. + +### Properties + +#### value + +> **value**: `number` + +The value of the pixel. + +#### layerId + +> **layerId**: `string` + +The ID of the layer that the pixel belongs to. + +#### categoryName + +> **categoryName**: `null` | `string` + +The name of the category that the pixel belongs to. + +#### color + +> **color**: `null` | \{ `r`: `number`; `g`: `number`; `b`: `number`; `a`: `number`; } + +The color of the pixel. Each value is between 0 and 255. + +## LayerFilters + +The filters that are currently set on a layer. + +A layer's filters are the combination of various different places +in which filters can be applied. + +### Properties + +#### style + +> **style**: [`Filters`](client.md#filters) + +Filters that are set in the layer's style. These are the lowest level +of filters, and can only be set by editing the map. + +#### components + +> **components**: [`Filters`](client.md#filters) + +Filters that are set in the layer's components, which are interactive +elements in the legend. These can be set by viewers for their own session, +but their default value can be set by the map creator. + +#### ephemeral + +> **ephemeral**: [`Filters`](client.md#filters) + +Filters that are set ephemerally by viewers in their own session. + +These are the filters that are set when the LayersController.setLayerFilters | \`setLayerFilters\` method is +called. There is no way to set these in the Felt UI - they can only be +set using the SDK. + +#### combined + +> **combined**: [`Filters`](client.md#filters) + +The combined result of all the filters set on the layer. + +## LayerBoundaries + +All the different sources for boundaries for a layer, including their combined result. + +### Properties + +#### spatialFilters + +> **spatialFilters**: `null` | [`MultiPolygonGeometry`](client.md#multipolygongeometry) + +Boundaries set by drawing spatial filters on the map. + +When there are multiple spatial filters, they are combined into a multi-polygon. + +#### ephemeral + +> **ephemeral**: `null` | [`GeometryFilter`](client.md#geometryfilter) + +Boundaries that are set ephemerally by viewers in their own session. + +These are the filters that are set when the LayersController.setLayerBoundary +method is called. There is no way to set these in the Felt UI - they can only be +set using the SDK. + +#### combined + +> **combined**: `null` | [`MultiPolygonGeometry`](client.md#multipolygongeometry) + +The combined result of all the boundaries set on the layer. + +Each different source of boundary is intersected to produce the combined result. + +## AggregationConfig + +Defines how to aggregate a value across features in a layer. + +### Properties + +#### attribute + +> **attribute**: `string` + +The attribute to use for the aggregation. This must be a numeric attribute. + +#### method + +> **method**: `"avg"` | `"max"` | `"min"` | `"sum"` | `"median"` + +The method to use for the aggregation. + +## MultiAggregationConfig\ + +Defines how to aggregate a value across features in a layer with multiple aggregations +returned at once. + +### Type Parameters + +• **T** *extends* [`AggregationMethod`](client.md#aggregationmethod) | `"count"` + +### Properties + +#### methods + +> **methods**: `T`\[] + +The operations to use on the values from the features in the layer + +#### attribute? + +> `optional` **attribute**: `string` + +The attribute to use for the aggregation when aggregations other than "count" are used. + +This can be omitted if the only aggregation is "count", but must be a numeric attribute +otherwise. + +## ValueConfiguration + +Configuration for filtering and aggregating values across features. + +This can be used to restrict the features considered for aggregation via the `boundary` +and `filters` properties. + +It can also be used to specify how to aggregate the values via the `aggregation` property. + +### Properties + +#### boundary? + +> `optional` **boundary**: [`GeometryFilter`](client.md#geometryfilter) + +The spatial boundary for what to count or aggregate. + +#### filters? + +> `optional` **filters**: [`Filters`](client.md#filters) + +Attribute filters to determine what gets counted or aggregated. + +#### aggregation? + +> `optional` **aggregation**: [`AggregationConfig`](client.md#aggregationconfig) + +Specifies how to aggregate values within each category or bin. When omitted, +features are counted. When specified, the chosen calculation (avg, sum, etc.) +is performed on the specified attribute. + +For example, instead of counting buildings in each category, you might want +to sum their square footage or average their assessed values. + +## GetLayerCategoriesParams + +The parameters for getting categories from a layer, passed to +the [LayersController.getCategoryData](client.md#getcategorydata) method. + +### Properties + +#### layerId + +> **layerId**: `string` + +The ID of the layer to get categories from. + +#### attribute + +> **attribute**: `string` + +The attribute to use for categorization. + +#### limit? + +> `optional` **limit**: `number` + +The maximum number of categories to return. + +#### filters? + +> `optional` **filters**: [`Filters`](client.md#filters) + +Attribute filters for the features to include when calculating the categories. + +#### boundary? + +> `optional` **boundary**: [`GeometryFilter`](client.md#geometryfilter) + +The spatial boundary for the features to include when calculating the categories. + +#### values? + +> `optional` **values**: [`ValueConfiguration`](client.md#valueconfiguration) + +Configuration for filtering and aggregating values while preserving the full set of +categories in the results. + +This is particularly useful when you want to compare different subsets of data while +maintaining consistent categories. For example: + +* Show all building types in a city, but only count recent buildings in each type +* Keep all neighborhood categories but only sum up residential square footage + +Unlike top-level filters which affect both what categories appear AND their values, +filters in this configuration only affect the values while keeping all possible +categories in the results. + +## GetLayerCategoriesGroup + +A single category from the response from the [LayersController.getCategoryData](client.md#getcategorydata) method. + +### Properties + +#### key + +> **key**: `string` | `number` | `boolean` + +The category for which the value was calculated. + +#### value + +> **value**: `null` | `number` + +The value calculated for the category, whether a count, sum, average, etc. + +`null` is returned if there are no features in the category as opposed to zero, +so as not to confuse with a real zero value from some aggregation. + +## GetLayerHistogramParams + +The params used to request a histogram of values from a layer, passed to +the [LayersController.getHistogramData](client.md#gethistogramdata) method. + +### Properties + +#### layerId + +> **layerId**: `string` + +#### attribute + +> **attribute**: `string` + +#### steps + +> **steps**: `number`\[] | \{ `type`: `"equal-intervals"`; `count`: `number`; } | \{ `type`: `"time-interval"`; `interval`: `"hour"` | `"day"` | `"week"` | `"month"` | `"year"`; } + +#### values? + +> `optional` **values**: `object` + +Configuration for filtering and aggregating values while preserving the full set of +bin ranges in the results. + +This is particularly useful when you want to compare different subsets of data while +maintaining consistent ranges. For example: + +* Use the same height ranges for comparing old vs new buildings + +Unlike top-level filters which affect both what ranges appear AND their values, +filters in this configuration only affect the values while keeping all possible +ranges in the results. + +##### boundary? + +> `optional` **boundary**: \[`number`, `number`]\[] | \[`number`, `number`, `number`, `number`] | \{ `type`: `"Polygon"`; `coordinates`: \[`number`, `number`]\[]\[]; } | \{ `type`: `"MultiPolygon"`; `coordinates`: \[`number`, `number`]\[]\[]\[]; } + +##### Type declaration + +\[`number`, `number`]\[] + +\[`number`, `number`, `number`, `number`] + +\{ `type`: `"Polygon"`; `coordinates`: \[`number`, `number`]\[]\[]; } + +\{ `type`: `"MultiPolygon"`; `coordinates`: \[`number`, `number`]\[]\[]\[]; } + +##### filters? + +> `optional` **filters**: `null` | `boolean` | \[`null` | `string`, `"in"` | `"ni"`, `null` | (`null` | `string` | `number` | `boolean`)\[]] | \[`null` | `string`, `"lt"` | `"gt"` | `"le"` | `"ge"` | `"eq"` | `"ne"` | `"cn"` | `"nc"` | `"is"` | `"isnt"`, `null` | `string` | `number` | `boolean`] | [`FilterTernary`](client.md#filterternary) + +##### aggregation? + +> `optional` **aggregation**: `object` + +##### aggregation.method + +> **method**: `"avg"` | `"max"` | `"min"` | `"sum"` | `"median"` = `AggregateMethodSchema` + +The operation to use on the values from the features in the layer + +##### aggregation.attribute + +> **attribute**: `string` + +The attribute to use for the aggregation. This must be a numeric attribute. + +#### filters? + +> `optional` **filters**: [`Filters`](client.md#filters) + +Attribute filters for the features to include when calculating the histogram bins. + +#### boundary? + +> `optional` **boundary**: [`GeometryFilter`](client.md#geometryfilter) + +The spatial boundary for the features to include when calculating the histogram bins. + +## GetLayerHistogramBin + +One bin from the response from the [LayersController.getHistogramData](client.md#gethistogramdata) method. + +### Properties + +#### min + +> **min**: `number` + +The left edge of the bin. + +#### max + +> **max**: `number` + +The right edge of the bin. + +#### value + +> **value**: `number` + +The number of features in the bin. + +## GetLayerCalculationParams\ + +The parameters for calculating a single aggregate value for a layer, passed to +the [LayersController.getAggregates](client.md#getaggregates) method. + +### Type Parameters + +• **T** *extends* [`AggregationMethod`](client.md#aggregationmethod) | `"count"` + +### Properties + +#### layerId + +> **layerId**: `string` + +The ID of the layer to calculate an aggregate value for. + +#### aggregation + +> **aggregation**: [`MultiAggregationConfig`](client.md#multiaggregationconfigt)\<`T`> + +Specifies how to aggregate values within each category or bin. When omitted, +features are counted. When specified, the chosen calculation (avg, sum, etc.) +is performed on the specified attribute. + +#### filters? + +> `optional` **filters**: [`Filters`](client.md#filters) + +Attribute filters for the features to include when calculating the aggregate value. + +#### boundary? + +> `optional` **boundary**: [`GeometryFilter`](client.md#geometryfilter) + +The spatial boundary for the features to include when calculating the aggregate value. + +## CountGridConfig + +The grid configuration for a count-based precomputed aggregate value. Compared to the +[AggregatedGridConfig](client.md#aggregatedgridconfig), the `attribute` property is not required, because the count +is the same regardless of the attribute. + +Used inside [GetLayerPrecomputedCalculationParams](client.md#getlayerprecomputedcalculationparams). + +### Properties + +#### resolution + +> **resolution**: `number` + +The resolution of the grid to use for the precomputed calculation. + +#### type + +> **type**: `"h3"` + +The type of grid to use for the precomputed calculation. + +#### method + +> **method**: `"count"` + +The method to use for the precomputed calculation, which in this case is always "count". + +## AggregatedGridConfig + +The grid configuration for an aggregated precomputed aggregate value. This requires +an `attribute` property, because the numeric aggregation requires it. + +If you just want to count the features in each grid cell, use the [CountGridConfig](client.md#countgridconfig) +instead, where you are not required to specify an `attribute`. + +Used inside [GetLayerPrecomputedCalculationParams](client.md#getlayerprecomputedcalculationparams). + +### Properties + +#### resolution + +> **resolution**: `number` + +The resolution of the grid to use for the precomputed calculation. + +#### attribute + +> **attribute**: `string` + +The attribute to use for the precomputed calculation. + +This must be a numeric attribute; + +#### type + +> **type**: `"h3"` + +The type of grid to use for the precomputed calculation. + +#### method + +> **method**: `"avg"` | `"max"` | `"min"` | `"sum"` + +The method to use for the precomputed calculation. + +## GetLayerPrecomputedCalculationParams + +The parameters for calculating a single aggregate value for a layer, passed to +the [LayersController.getPrecomputedAggregates](client.md#getprecomputedaggregates) method. + +### Properties + +#### layerId + +> **layerId**: `string` + +The ID of the layer to calculate an aggregate value for. + +#### gridConfig + +> **gridConfig**: [`GridConfig`](client.md#gridconfig-1) + +The grid configuration to use for the precomputed calculation. + +#### filters? + +> `optional` **filters**: [`Filters`](client.md#filters) + +Attribute filters for the features to include when calculating the aggregate value. + +#### boundary? + +> `optional` **boundary**: [`GeometryFilter`](client.md#geometryfilter) + +The spatial boundary for the features to include when calculating the aggregate value. + +## LayerCommon + +The common properties for all layers. + +### Properties + +#### id + +> **id**: `string` + +A string identifying the layer + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the layer group that the layer belongs to. + +Layers that appear at the root level in Felt will not have a group ID. + +#### name + +> **name**: `string` + +The name of the layer can be displayed in the Legend, depending +on how the layer's legend is configured in its style. + +#### caption + +> **caption**: `null` | `string` + +The layer's caption is shown in the legend. + +#### description + +> **description**: `null` | `string` + +The layer description forms part of the layer's metadata. This is visible +to users via the layer info button in the legend. + +#### visible + +> **visible**: `boolean` + +Whether the layer is visible or not. + +#### shownInLegend + +> **shownInLegend**: `boolean` + +Whether the layer is shown in the legend or not. + +#### style + +> **style**: `object` + +The FSL style for the layer. + +See the [FSL documentation](https://developers.felt.com/felt-style-language) for details +on how to read and write styles. + +As the types of the styles are very complex, we return `object` here and advise that you +program defensively while reading the styles. + +#### status + +> **status**: `"processing"` | `"completed"` | `"failed"` | `"incomplete"` + +The current processing status of the layer. + +#### bounds + +> **bounds**: `null` | \[`number`, `number`, `number`, `number`] + +The bounding box of the layer in \[west, south, east, north] order + +There are cases where the bounds are not available, such as for layers added to the map +from URL sources, as these are not (depending on their type) processed and analyzed by +Felt. + +[FeltBoundary](client.md#feltboundary) + +## RasterLayer + +A raster layer is a layer that contains raster data that can be rendered on the map + +### Properties + +#### id + +> **id**: `string` + +A string identifying the layer + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the layer group that the layer belongs to. + +Layers that appear at the root level in Felt will not have a group ID. + +#### name + +> **name**: `string` + +The name of the layer can be displayed in the Legend, depending +on how the layer's legend is configured in its style. + +#### caption + +> **caption**: `null` | `string` + +The layer's caption is shown in the legend. + +#### description + +> **description**: `null` | `string` + +The layer description forms part of the layer's metadata. This is visible +to users via the layer info button in the legend. + +#### visible + +> **visible**: `boolean` + +Whether the layer is visible or not. + +#### shownInLegend + +> **shownInLegend**: `boolean` + +Whether the layer is shown in the legend or not. + +#### style + +> **style**: `object` + +The FSL style for the layer. + +See the [FSL documentation](https://developers.felt.com/felt-style-language) for details +on how to read and write styles. + +As the types of the styles are very complex, we return `object` here and advise that you +program defensively while reading the styles. + +#### status + +> **status**: `"processing"` | `"completed"` | `"failed"` | `"incomplete"` + +The current processing status of the layer. + +#### bounds + +> **bounds**: `null` | \[`number`, `number`, `number`, `number`] + +The bounding box of the layer in \[west, south, east, north] order + +There are cases where the bounds are not available, such as for layers added to the map +from URL sources, as these are not (depending on their type) processed and analyzed by +Felt. + +[FeltBoundary](client.md#feltboundary) + +#### geometryType + +> **geometryType**: `"Raster"` + +Identifies the type of geometry in the layer. + +#### source + +> **source**: [`RasterLayerSource`](client.md#rasterlayersource) + +The source of the raster layer's data. + +## RasterLayerSource + +The source of a raster layer's data. + +### Properties + +#### imageTileTemplateUrl + +> **imageTileTemplateUrl**: `string` + +A URL template for fetching image tiles for the raster. + +#### encodedTileTemplateUrl + +> **encodedTileTemplateUrl**: `string` + +A URL template for fetching encoded tiles for the raster. + +The encoded raster value can be calculated from the red, green, and blue values of the pixel +using the following formula: + +``` +base + ((RED << 16) + (GREEN <<8) + BLUE) * interval +``` + +or + +``` +base + (RED * 256 * 256 + GREEN * 256 + BLUE) * interval +``` + +#### bands + +> **bands**: [`RasterBand`](client.md#rasterband)\[] + +List of encoded raster bands + +## RasterBand + +The RasterBand interface describes the metadata for a raster band, necessary for +calculating the encoded raster value from the red, green, and blue values of the pixel. + +### Properties + +#### base + +> **base**: `number` + +Encoding base value as a floating point number + +#### interval + +> **interval**: `number` + +Encoding interval as a floating point number + +#### bandIndex + +> **bandIndex**: `number` + +1-based index of the band in the raster + +## VectorLayer + +A vector layer is a layer that contains vector data that can be rendered on the map + +### Properties + +#### id + +> **id**: `string` + +A string identifying the layer + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the layer group that the layer belongs to. + +Layers that appear at the root level in Felt will not have a group ID. + +#### name + +> **name**: `string` + +The name of the layer can be displayed in the Legend, depending +on how the layer's legend is configured in its style. + +#### caption + +> **caption**: `null` | `string` + +The layer's caption is shown in the legend. + +#### description + +> **description**: `null` | `string` + +The layer description forms part of the layer's metadata. This is visible +to users via the layer info button in the legend. + +#### visible + +> **visible**: `boolean` + +Whether the layer is visible or not. + +#### shownInLegend + +> **shownInLegend**: `boolean` + +Whether the layer is shown in the legend or not. + +#### style + +> **style**: `object` + +The FSL style for the layer. + +See the [FSL documentation](https://developers.felt.com/felt-style-language) for details +on how to read and write styles. + +As the types of the styles are very complex, we return `object` here and advise that you +program defensively while reading the styles. + +#### status + +> **status**: `"processing"` | `"completed"` | `"failed"` | `"incomplete"` + +The current processing status of the layer. + +#### bounds + +> **bounds**: `null` | \[`number`, `number`, `number`, `number`] + +The bounding box of the layer in \[west, south, east, north] order + +There are cases where the bounds are not available, such as for layers added to the map +from URL sources, as these are not (depending on their type) processed and analyzed by +Felt. + +[FeltBoundary](client.md#feltboundary) + +#### geometryType + +> **geometryType**: `"Polygon"` | `"Point"` | `"Line"` + +Identifies the type of geometry in the layer. + +#### source + +> **source**: [`GeoJsonUrlVectorSource`](client.md#geojsonurlvectorsource) | [`FeltTiledVectorSource`](client.md#felttiledvectorsource) | `Omit`\<[`GeoJsonDataVectorSource`](client.md#geojsondatavectorsource), `"data"`> + +The source of the vector layer's data. + +## GeoJsonUrlVectorSource + +A GeoJSON URL source is a layer that is populated from a GeoJSON file at a remote URL. + +These sources are ones that have not been uploaded to and processed by Felt, and as such +their capabilities are limited. + +For instance, they cannot be filtered, nor can statistics be fetched for them. + +### Properties + +#### type + +> **type**: `"geoJsonUrl"` + +Identifies this as a GeoJSON URL source. + +#### url + +> **url**: `string` + +The remote URL of the GeoJSON file used to populate the layer. + +#### refreshInterval? + +> `optional` **refreshInterval**: `null` | `number` + +The interval in milliseconds between automatic refreshes of the GeoJSON. + +The value must be in the range of 250ms - 5 minutes (300,000ms). + +If the value is `null`, the GeoJSON will not be refreshed automatically. + +## GeoJsonDataVectorSource + +A GeoJSON data source is a layer that is populated from GeoJSON data, such as +from a local file, or programatically-created data. + +### Properties + +#### type + +> **type**: `"geoJsonData"` + +Identifies this as a GeoJSON data source. + +#### data + +> **data**: `object` + +The GeoJSON data for the layer. + +This must be a GeoJSON FeatureCollection. + +## GeoJsonFileVectorSource + +A GeoJSON file source is a layer that is populated from a GeoJSON file +on your local machine. + +This is an input-only type. It is converted to a [GeoJsonDataVectorSource](client.md#geojsondatavectorsource) +when passed to [LayersController.createLayersFromGeoJson](client.md#createlayersfromgeojson). + +### Properties + +#### type + +> **type**: `"geoJsonFile"` + +Identifies this as a GeoJSON file source. + +#### file + +> **file**: `File` + +The GeoJSON file for the layer. + +## UpdateLayerParams + +The value you need to pass to [LayersController.updateLayer](client.md#updatelayer) + +### Properties + +#### id + +> **id**: `string` + +The id of the layer to update. + +#### shownInLegend? + +> `optional` **shownInLegend**: `boolean` + +Changes whether the layer is shown in the legend. + +#### name? + +> `optional` **name**: `string` + +Changes the name of the layer. + +#### caption? + +> `optional` **caption**: `string` + +Changes the caption of the layer. + +#### description? + +> `optional` **description**: `string` + +Changes the description of the layer. + +#### bounds? + +> `optional` **bounds**: \[`number`, `number`, `number`, `number`] + +Changes the bounds of the layer. + +#### style? + +> `optional` **style**: `object` + +The style of the layer. + +#### source? + +> `optional` **source**: [`GeoJsonUrlVectorSource`](client.md#geojsonurlvectorsource) | [`GeoJsonDataVectorSource`](client.md#geojsondatavectorsource) | [`GeoJsonFileVectorSource`](client.md#geojsonfilevectorsource) + +Updates the source of the layer. + +Only layers that have a GeoJSON source can have their source udpated. + +For URL sources, if you pass the same URL again it will cause the data to be +refreshed. + +## DataOnlyLayer + +A data-only layer doesn't have any geometry, but can be used to join with other layers + +### Properties + +#### id + +> **id**: `string` + +A string identifying the layer + +#### groupId + +> **groupId**: `null` | `string` + +The ID of the layer group that the layer belongs to. + +Layers that appear at the root level in Felt will not have a group ID. + +#### name + +> **name**: `string` + +The name of the layer can be displayed in the Legend, depending +on how the layer's legend is configured in its style. + +#### caption + +> **caption**: `null` | `string` + +The layer's caption is shown in the legend. + +#### description + +> **description**: `null` | `string` + +The layer description forms part of the layer's metadata. This is visible +to users via the layer info button in the legend. + +#### visible + +> **visible**: `boolean` + +Whether the layer is visible or not. + +#### shownInLegend + +> **shownInLegend**: `boolean` + +Whether the layer is shown in the legend or not. + +#### style + +> **style**: `object` + +The FSL style for the layer. + +See the [FSL documentation](https://developers.felt.com/felt-style-language) for details +on how to read and write styles. + +As the types of the styles are very complex, we return `object` here and advise that you +program defensively while reading the styles. + +#### status + +> **status**: `"processing"` | `"completed"` | `"failed"` | `"incomplete"` + +The current processing status of the layer. + +#### geometryType + +> **geometryType**: `null` + +Indicates that this layer has no geometry. + +#### bounds + +> **bounds**: `null` + +This is always null for data-only layers. + +## LayerGroup + +### Properties + +#### id + +> **id**: `string` + +A string identifying the layer group. + +#### name + +> **name**: `string` + +The name of the layer group. This is shown in the legend. + +#### caption + +> **caption**: `null` | `string` + +The caption of the layer group. This is shown in the legend. + +#### layerIds + +> **layerIds**: `string`\[] + +The ids of the layers in the layer group. + +##### Remarks + +You can use these ids to get the full layer objects via the [\`getLayers\`](client.md#getlayers) method. + +#### visible + +> **visible**: `boolean` + +Whether the layer group is visible or not. + +#### shownInLegend + +> **shownInLegend**: `boolean` + +Whether the layer group is shown in the legend or not. + +#### bounds + +> **bounds**: `null` | \[`number`, `number`, `number`, `number`] + +The bounding box of the layer group in \[west, south, east, north] order. + +[FeltBoundary](client.md#feltboundary) + +## GetLayersConstraint + +The constraints to apply when getting layers. + +### Properties + +#### ids? + +> `optional` **ids**: `string`\[] + +The ids of the layers to get. + +## GetLayerGroupsConstraint + +The constraints to apply when getting layer groups. + +### Properties + +#### ids? + +> `optional` **ids**: `string`\[] + +The ids of the layer groups to get. + +## LayerChangeCallbackParams + +The parameters for the [\`onLayerChange\`](client.md#onlayerchange) listener. + +### Properties + +#### layer + +> **layer**: `null` | [`Layer`](client.md#layer-1) + +The new data for the layer or null if the layer was removed. + +## LayerGroupChangeCallbackParams + +The parameters for the [\`onLayerGroupChange\`](client.md#onlayergroupchange) listener. + +### Properties + +#### layerGroup + +> **layerGroup**: `null` | [`LayerGroup`](client.md#layergroup) + +## LegendItem + +A legend item, which often represents a sub-class of features in a +layer in the case of categorical or classed layers. + +### Properties + +#### title + +> **title**: `string` | `string`\[] + +The title of the legend item. + +#### titleDependsOnZoom + +> **titleDependsOnZoom**: `boolean` + +Whether the title depends on the zoom level or not. If it does, you +need to call [\`getLegendItem\`](client.md#getlegenditem) when the zoom level changes. + +Note that as the zoom level changes, the [\`onLegendItemChange\`](client.md#onlegenditemchange) handler +will not be called, so you need to call [\`getLegendItem\`](client.md#getlegenditem) yourself. + +#### visible + +> **visible**: `boolean` + +Whether the legend item is visible or not. + +#### id + +> **id**: `string` + +The id of the legend item. + +#### layerId + +> **layerId**: `string` + +The id of the layer the legend item belongs to. + +## LegendItemIdentifier + +The identifier for a legend item. It is a compound key of the layer to +which the legend item belongs and the legend item's own id. + +### Properties + +#### id + +> **id**: `string` + +The id of the legend item. + +#### layerId + +> **layerId**: `string` + +The id of the layer the legend item belongs to. + +## LegendItemsConstraint + +Constraints for legend items. If nothing is passed, all legend items will be returned. + +### Properties + +#### ids? + +> `optional` **ids**: `object`\[] + +Array of legend item identifiers to constrain by. + +##### id + +> **id**: `string` + +The id of the legend item. + +##### layerId + +> **layerId**: `string` + +The id of the layer the legend item belongs to. + +#### layerIds? + +> `optional` **layerIds**: `string`\[] + +Array of layer ids to constrain legend items by. + +## LegendItemChangeCallbackParams + +The parameters for the [\`onLegendItemChange\`](client.md#onlegenditemchange) listener. + +### Properties + +#### legendItem + +> **legendItem**: `null` | [`LegendItem`](client.md#legenditem) + +The new data for the legend item or null if the legend item was removed. + +## GetRenderedFeaturesConstraint + +Constraints for the [\`getRenderedFeatures\`](client.md#getrenderedfeatures) method. This can include layer constriants, spatial constraints, or both. If no constraints are +provided, all rendered features will be returned. + +### Properties + +#### areaQuery? + +> `optional` **areaQuery**: \{ `coordinates`: [`LatLng`](client.md#latlng); } | \{ `boundary`: \[`number`, `number`, `number`, `number`]; } + +The area to query for rendered features. This can be specific coordinates or a [FeltBoundary](client.md#feltboundary). If omitted, the entire viewport will be queried. + +#### layerIds? + +> `optional` **layerIds**: `string`\[] + +The ids of the layers to get rendered features for. + +## LayerSchema + +The schema that describes the structure of the features in a layer. + +### Remarks + +This can be useful to build generic UIs that need to know the structure of the data in +a layer, such as a dropdown to choose an attribute. + +### Properties + +#### featureCount + +> **featureCount**: `number` + +The total number of features in the layer. + +#### attributes + +> **attributes**: [`LayerSchemaAttribute`](client.md#layerschemaattribute)\[] + +Array of attribute schemas describing the properties available on features in this layer. + +## LayerSchemaCommonAttribute + +The common schema for all attributes. + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for this attribute. + +This can be used to fetch statistics, categories, histograms etc. for this attribute +via the [LayersController.getCategoryData](client.md#getcategorydata), [LayersController.getHistogramData](client.md#gethistogramdata), +and [LayersController.getAggregates](client.md#getaggregates) methods. + +#### displayName + +> **displayName**: `string` + +The human-readable name of this attribute. + +#### detailedType + +> **detailedType**: `string` + +The specific data type of this attribute, providing more detail than the basic type. + +For instance, a numeric attribute might be "INTEGER", "FLOAT, etc. + +#### distinctCount + +> **distinctCount**: `number` + +The number of distinct values present for this attribute across all features. + +## LayerSchemaNumericAttribute + +The schema for a numeric attribute on a layer. + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for this attribute. + +This can be used to fetch statistics, categories, histograms etc. for this attribute +via the [LayersController.getCategoryData](client.md#getcategorydata), [LayersController.getHistogramData](client.md#gethistogramdata), +and [LayersController.getAggregates](client.md#getaggregates) methods. + +#### displayName + +> **displayName**: `string` + +The human-readable name of this attribute. + +#### detailedType + +> **detailedType**: `string` + +The specific data type of this attribute, providing more detail than the basic type. + +For instance, a numeric attribute might be "INTEGER", "FLOAT, etc. + +#### distinctCount + +> **distinctCount**: `number` + +The number of distinct values present for this attribute across all features. + +#### type + +> **type**: `"numeric"` + +Indicates this is a numeric attribute. + +#### sampleValues + +> **sampleValues**: `object`\[] + +A small sample of values for this attribute and their frequency. + +##### value + +> **value**: `number` + +##### count + +> **count**: `number` + +#### min + +> **min**: `number` + +The minimum value present for this attribute across all features. + +#### max + +> **max**: `number` + +The maximum value present for this attribute across all features. + +## LayerSchemaTextAttribute + +The schema for a text attribute on a layer. + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for this attribute. + +This can be used to fetch statistics, categories, histograms etc. for this attribute +via the [LayersController.getCategoryData](client.md#getcategorydata), [LayersController.getHistogramData](client.md#gethistogramdata), +and [LayersController.getAggregates](client.md#getaggregates) methods. + +#### displayName + +> **displayName**: `string` + +The human-readable name of this attribute. + +#### detailedType + +> **detailedType**: `string` + +The specific data type of this attribute, providing more detail than the basic type. + +For instance, a numeric attribute might be "INTEGER", "FLOAT, etc. + +#### distinctCount + +> **distinctCount**: `number` + +The number of distinct values present for this attribute across all features. + +#### type + +> **type**: `"text"` + +Indicates this is a text attribute. + +#### sampleValues + +> **sampleValues**: `object`\[] + +A small sample of string values for this attribute and their frequency. + +##### value + +> **value**: `string` + +##### count + +> **count**: `number` + +## LayerSchemaBooleanAttribute + +The schema for a boolean attribute on a layer. + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for this attribute. + +This can be used to fetch statistics, categories, histograms etc. for this attribute +via the [LayersController.getCategoryData](client.md#getcategorydata), [LayersController.getHistogramData](client.md#gethistogramdata), +and [LayersController.getAggregates](client.md#getaggregates) methods. + +#### displayName + +> **displayName**: `string` + +The human-readable name of this attribute. + +#### detailedType + +> **detailedType**: `string` + +The specific data type of this attribute, providing more detail than the basic type. + +For instance, a numeric attribute might be "INTEGER", "FLOAT, etc. + +#### distinctCount + +> **distinctCount**: `number` + +The number of distinct values present for this attribute across all features. + +#### type + +> **type**: `"boolean"` + +Indicates this is a boolean attribute. + +#### sampleValues + +> **sampleValues**: `object`\[] + +A representative sample of boolean values for this attribute and their frequency. + +##### value + +> **value**: `boolean` + +##### count + +> **count**: `number` + +## LayerSchemaDateAttribute + +The schema for a date attribute on a layer. + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for this attribute. + +This can be used to fetch statistics, categories, histograms etc. for this attribute +via the [LayersController.getCategoryData](client.md#getcategorydata), [LayersController.getHistogramData](client.md#gethistogramdata), +and [LayersController.getAggregates](client.md#getaggregates) methods. + +#### displayName + +> **displayName**: `string` + +The human-readable name of this attribute. + +#### detailedType + +> **detailedType**: `string` + +The specific data type of this attribute, providing more detail than the basic type. + +For instance, a numeric attribute might be "INTEGER", "FLOAT, etc. + +#### distinctCount + +> **distinctCount**: `number` + +The number of distinct values present for this attribute across all features. + +#### type + +> **type**: `"date"` + +Indicates this is a date attribute. + +#### min + +> **min**: `string` + +The earliest date present for this attribute in truncated ISO8601 format (YYYY-MM-DD). + +#### max + +> **max**: `string` + +The latest date present for this attribute in truncated ISO8601 format (YYYY-MM-DD). + +#### sampleValues + +> **sampleValues**: `object`\[] + +A representative sample of date values for this attribute and their frequency. + +##### value + +> **value**: `string` + +##### count + +> **count**: `number` + +## LayerSchemaDateTimeAttribute + +The schema for a datetime attribute on a layer. + +### Properties + +#### id + +> **id**: `string` + +The unique identifier for this attribute. + +This can be used to fetch statistics, categories, histograms etc. for this attribute +via the [LayersController.getCategoryData](client.md#getcategorydata), [LayersController.getHistogramData](client.md#gethistogramdata), +and [LayersController.getAggregates](client.md#getaggregates) methods. + +#### displayName + +> **displayName**: `string` + +The human-readable name of this attribute. + +#### detailedType + +> **detailedType**: `string` + +The specific data type of this attribute, providing more detail than the basic type. + +For instance, a numeric attribute might be "INTEGER", "FLOAT, etc. + +#### distinctCount + +> **distinctCount**: `number` + +The number of distinct values present for this attribute across all features. + +#### type + +> **type**: `"datetime"` + +Indicates this is a datetime attribute. + +#### min + +> **min**: `string` + +The earliest datetime present for this attribute in ISO8601 format. + +#### max + +> **max**: `string` + +The latest datetime present for this attribute in ISO8601 format. + +#### sampleValues + +> **sampleValues**: `object`\[] + +A representative sample of datetime values for this attribute and their frequency. + +##### value + +> **value**: `string` + +##### count + +> **count**: `number` + +## CreateLayersFromGeoJsonParams + +The parameters for the [LayersController.createLayersFromGeoJson](client.md#createlayersfromgeojson) method. + +### Properties + +#### name + +> **name**: `string` + +The name of the layer to create. + +#### source + +> **source**: [`GeoJsonUrlVectorSource`](client.md#geojsonurlvectorsource) | [`GeoJsonDataVectorSource`](client.md#geojsondatavectorsource) | [`GeoJsonFileVectorSource`](client.md#geojsonfilevectorsource) + +The source of the GeoJSON data. + +#### bounds? + +> `optional` **bounds**: \[`number`, `number`, `number`, `number`] + +Sets the bounds of the layer. + +#### caption? + +> `optional` **caption**: `string` + +Sets the caption of the layer. + +#### description? + +> `optional` **description**: `string` + +Sets the description of the layer. + +#### geometryStyles? + +> `optional` **geometryStyles**: `object` + +The styles to apply to each geometry on the layer. + +Each style should be a valid FSL style, as described in [Layer.style](client.md#style-9). + +These are optional, and if missing will use a default style determined by +Felt, which you can consider to be undefined behaviour. + +##### Point? + +> `optional` **Point**: `object` + +##### Line? + +> `optional` **Line**: `object` + +##### Polygon? + +> `optional` **Polygon**: `object` + +##### Example + +```typescript +const layer = await layersController.createLayersFromGeoJson({ + name: "My Layer", + geometryStyles: { + Point: { + paint: { color: "red", size: 8 }, + }, + Line: { + paint: { color: "blue", size: 4 }, + config: { labelAttribute: ["name"] }, + label: { minZoom: 0 }, + }, + Polygon: { + paint: { color: "green", strokeColor: "darkgreen" }, + }, + }, +}); +``` + +## FeltController + +This is the main interface for interacting with a Felt map. + +This interface is composed of the various controllers, each having a +different area of responsibility. + +All the methods are listed here, but each controller is documented on its +own to make it easier to find related methods and events. + +### Extends + +* `ViewportController`.`UiController`.`LayersController`.`ElementsController`.`SelectionController`.`InteractionsController`.[`ToolsController`](client.md#toolscontroller).`MiscController` + +### Methods + +#### getElement() + +> **getElement**(`id`): `Promise`\<`null` | [`Element`](client.md#element-1)> + +Get a single element from the map by its id. + +##### Parameters + +##### id + +`string` + +The id of the element you want to get. + +##### Returns + +`Promise`\<`null` | [`Element`](client.md#element-1)> + +The requested element. + +##### Example + +```typescript +const element = await felt.getElement("element-1"); +``` + +#### getElementGeometry() + +> **getElementGeometry**(`id`): `Promise`\<`null` | [`GeoJsonGeometry`](client.md#geojsongeometry)> + +Get the geometry of an element in GeoJSON geometry format. + +For most element types, the geometry returned is based on the `coordinates` +property of the element, with some differences: + +* For Circle elements, the geometry is a Polygon drawn from the `center` and + `radius` properties. + +* Path elements become MultiLineString geometries. + +* Marker elements return a MultiLineString of the path traced by the user + as they drew the marker. Note that this is not the polygon formed by filled-in + "pen" stroke, which doesn't exactly follow the path traced by the user as it + is smoothed and interpolated to create a continuous line. + +* Text, Note and Image elements do not return geometry, so will return `null`. + +##### Parameters + +##### id + +`string` + +The id of the element you want to get the geometry of. + +##### Returns + +`Promise`\<`null` | [`GeoJsonGeometry`](client.md#geojsongeometry)> + +##### Example + +```typescript +const geometry = await felt.getElementGeometry("element-1"); +console.log(geometry?.type, geometry?.coordinates); +``` + +#### getElements() + +> **getElements**(`constraint`?): `Promise`\<(`null` | [`Element`](client.md#element-1))\[]> + +Gets elements from the map, according to the constraints supplied. If no +constraints are supplied, all elements will be returned. + +##### Parameters + +##### constraint? + +[`GetElementsConstraint`](client.md#getelementsconstraint) + +The constraints to apply to the elements returned from the map. + +##### Returns + +`Promise`\<(`null` | [`Element`](client.md#element-1))\[]> + +All elements on the map. + +##### Remarks + +The elements in the map, ordered by the order specified in Felt. This is not +necessarily the order that they are drawn in, as Felt draws points above +lines and lines above polygons, for instance. + +##### Example + +```typescript +const elements = await felt.getElements(); +``` + +#### getElementGroup() + +> **getElementGroup**(`id`): `Promise`\<`null` | [`ElementGroup`](client.md#elementgroup)> + +Get an element group from the map by its id. + +##### Parameters + +##### id + +`string` + +##### Returns + +`Promise`\<`null` | [`ElementGroup`](client.md#elementgroup)> + +The requested element group. + +##### Example + +```typescript +const elementGroup = await felt.getElementGroup("element-group-1"); +``` + +#### getElementGroups() + +> **getElementGroups**(`constraint`?): `Promise`\<(`null` | [`ElementGroup`](client.md#elementgroup))\[]> + +Gets element groups from the map, according to the filters supplied. If no +constraints are supplied, all element groups will be returned in rendering order. + +##### Parameters + +##### constraint? + +[`GetElementGroupsConstraint`](client.md#getelementgroupsconstraint) + +The constraints to apply to the element groups returned from the map. + +##### Returns + +`Promise`\<(`null` | [`ElementGroup`](client.md#elementgroup))\[]> + +The requested element groups. + +##### Example + +```typescript +const elementGroups = await felt.getElementGroups({ ids: ["element-group-1", "element-group-2"] }); +``` + +#### setElementGroupVisibility() + +> **setElementGroupVisibility**(`visibility`): `Promise`\<`void`> + +Hide or show element groups with the given ids. + +##### Parameters + +##### visibility + +[`SetVisibilityRequest`](client.md#setvisibilityrequest) + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +felt.setElementGroupVisibility({ show: ["element-group-1", "element-group-2"], hide: ["element-group-3"] }); +``` + +#### createElement() + +> **createElement**(`element`): `Promise`\<[`Element`](client.md#element-1)> + +Create a new element on the map. + +##### Parameters + +##### element + +[`ElementCreate`](client.md#elementcreate) + +##### Returns + +`Promise`\<[`Element`](client.md#element-1)> + +##### Example + +```typescript +const element = await felt.createElement({ type: "Place", coordinates: [10, 10] }); +``` + +#### updateElement() + +> **updateElement**(`element`): `Promise`\<[`Element`](client.md#element-1)> + +Update an element on the map. + +##### Parameters + +##### element + +[`ElementUpdate`](client.md#elementupdate) + +##### Returns + +`Promise`\<[`Element`](client.md#element-1)> + +##### Example + +```typescript +// Update a place element's coordinates +await felt.updateElement({ + id: "element-1", + coordinates: [10, 20] +}); + +// Update a polygon's style +await felt.updateElement({ + id: "element-2", + color: "#ABC123", + fillOpacity: 0.5 +}); +``` + +#### deleteElement() + +> **deleteElement**(`id`): `Promise`\<`void`> + +Delete an element from the map. + +##### Parameters + +##### id + +`string` + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +await felt.deleteElement("element-1"); +``` + +#### getLayer() + +> **getLayer**(`id`): `Promise`\<`null` | [`Layer`](client.md#layer-1)> + +Get a single layer from the map by its id. + +##### Parameters + +##### id + +`string` + +The id of the layer you want to get. + +##### Returns + +`Promise`\<`null` | [`Layer`](client.md#layer-1)> + +The requested layer. + +##### Example + +```typescript +const layer = await felt.getLayer("layer-1"); +``` + +#### getLayers() + +> **getLayers**(`constraint`?): `Promise`\<(`null` | [`Layer`](client.md#layer-1))\[]> + +Gets layers from the map, according to the constraints supplied. If no +constraints are supplied, all layers will be returned. + +##### Parameters + +##### constraint? + +[`GetLayersConstraint`](client.md#getlayersconstraint) + +The constraints to apply to the layers returned from the map. + +##### Returns + +`Promise`\<(`null` | [`Layer`](client.md#layer-1))\[]> + +All layers on the map. + +##### Remarks + +The layers in the map, ordered by the order specified in Felt. This is not +necessarily the order that they are drawn in, as Felt draws points above +lines and lines above polygons, for instance. + +##### Example + +```typescript +const layers = await felt.getLayers(); +``` + +#### setLayerVisibility() + +> **setLayerVisibility**(`visibility`): `Promise`\<`void`> + +Hide or show layers with the given ids. + +##### Parameters + +##### visibility + +[`SetVisibilityRequest`](client.md#setvisibilityrequest) + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +felt.setLayerVisibility({ show: ["layer-1", "layer-2"], hide: ["layer-3"] }); +``` + +#### setLayerStyle() + +> **setLayerStyle**(`params`): `Promise`\<`void`> + +Set the style for a layer using FSL, the Felt Style Language. + +Changes are only for this session, and not persisted. This is useful to make +temporary changes to a layer's style, such as to highlight a particular layer +or feature. + +See the [FSL documentation](https://developers.felt.com/felt-style-language) for details +on how to read and write styles. + +If the style you set is invalid, you will receive an error explaining the problem +in the rejected promise value. + +##### Parameters + +##### params + +##### id + +`string` + +The id of the layer to set the style for. + +##### style + +`object` + +The style to set for the layer. + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +// first get the current style +const oldStyle = (await felt.getLayer("layer-1")).style; + +felt.setLayerStyle({ id: "layer-1", style: { + ...oldStyle, + paint: { + ...oldStyle.paint, + color: "red", + }, +} }); +``` + +#### setLayerLegendVisibility() + +> **setLayerLegendVisibility**(`params`): `Promise`\<`void`> + +Hide or show layers with the given ids from the legend. + +##### Parameters + +##### params + +[`SetVisibilityRequest`](client.md#setvisibilityrequest) + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +felt.setLayerLegendVisibility({ show: ["layer-1", "layer-2"], hide: ["layer-3"] }); +``` + +#### createLayersFromGeoJson() + +> **createLayersFromGeoJson**(`params`): `Promise`\<`null` | \{ `layerGroup`: [`LayerGroup`](client.md#layergroup); `layers`: [`Layer`](client.md#layer-1)\[]; }> + +Adds layers to the map from file or URL sources. + +##### Parameters + +##### params + +[`CreateLayersFromGeoJsonParams`](client.md#createlayersfromgeojsonparams) + +##### Returns + +`Promise`\<`null` | \{ `layerGroup`: [`LayerGroup`](client.md#layergroup); `layers`: [`Layer`](client.md#layer-1)\[]; }> + +The layer groups that were created. + +##### Remarks + +This allows you to add temporary layers to the map that don't depend on +any processing by Felt. This is useful for viewing data from external sources or +remote files. + +##### Example + +```typescript +const layerFromFile = await felt.createLayersFromGeoJson({ + source: { + type: "geoJsonFile", + file: someFile, + }, + name: "Parcels", +}); + +const layerFromUrl = await felt.createLayersFromGeoJson({ + source: { + sourceType: "geoJsonUrl", + url: "https://example.com/parcels.geojson", + }, + name: "Parcels", +``` + +#### updateLayer() + +> **updateLayer**(`params`): `Promise`\<[`Layer`](client.md#layer-1)> + +Update a layer by passing a subset of the layer's properties. + +Note that not all properties can be updated, so check the [UpdateLayerParams](client.md#updatelayerparams) +type to see which properties can be updated. + +##### Parameters + +##### params + +[`UpdateLayerParams`](client.md#updatelayerparams) + +##### Returns + +`Promise`\<[`Layer`](client.md#layer-1)> + +##### Example + +```typescript +await felt.updateLayer({ + id: "layer-1", + name: "My Layer", + caption: "A description of the layer", +}); +``` + +#### deleteLayer() + +> **deleteLayer**(`id`): `Promise`\<`void`> + +Delete a layer from the map by its id. + +##### Parameters + +##### id + +`string` + +##### Returns + +`Promise`\<`void`> + +##### Remarks + +This only works for layers created via the SDK `createLayersFromGeoJson` method, not layers added via the Felt UI. + +##### Example + +```typescript +await felt.deleteLayer("layer-1"); +``` + +#### getLayerGroup() + +> **getLayerGroup**(`id`): `Promise`\<`null` | [`LayerGroup`](client.md#layergroup)> + +Get a layer group from the map by its id. + +##### Parameters + +##### id + +`string` + +##### Returns + +`Promise`\<`null` | [`LayerGroup`](client.md#layergroup)> + +The requested layer group. + +##### Example + +```typescript +const layerGroup = await felt.getLayerGroup("layer-group-1"); +``` + +#### getLayerGroups() + +> **getLayerGroups**(`constraint`?): `Promise`\<(`null` | [`LayerGroup`](client.md#layergroup))\[]> + +Gets layer groups from the map, according to the constraints supplied. If no +constraints are supplied, all layer groups will be returned in rendering order. + +##### Parameters + +##### constraint? + +[`GetLayerGroupsConstraint`](client.md#getlayergroupsconstraint) + +The constraints to apply to the layer groups returned from the map. + +##### Returns + +`Promise`\<(`null` | [`LayerGroup`](client.md#layergroup))\[]> + +The requested layer groups. + +##### Example + +```typescript +const layerGroups = await felt.getLayerGroups({ ids: ["layer-group-1", "layer-group-2"] }); +``` + +#### setLayerGroupVisibility() + +> **setLayerGroupVisibility**(`visibility`): `Promise`\<`void`> + +Hide or show layer groups with the given ids. + +##### Parameters + +##### visibility + +[`SetVisibilityRequest`](client.md#setvisibilityrequest) + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +felt.setLayerGroupVisibility({ show: ["layer-group-1", "layer-group-2"], hide: ["layer-group-3"] }); +``` + +#### setLayerGroupLegendVisibility() + +> **setLayerGroupLegendVisibility**(`params`): `Promise`\<`void`> + +Hide or show layer groups with the given ids from the legend. + +##### Parameters + +##### params + +[`SetVisibilityRequest`](client.md#setvisibilityrequest) + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +felt.setLayerGroupLegendVisibility({ show: ["layer-1", "layer-2"], hide: ["layer-3"] }); +``` + +#### getLegendItem() + +> **getLegendItem**(`id`): `Promise`\<`null` | [`LegendItem`](client.md#legenditem)> + +Allows you to get the state of a single legend item. + +##### Parameters + +##### id + +[`LegendItemIdentifier`](client.md#legenditemidentifier) + +##### Returns + +`Promise`\<`null` | [`LegendItem`](client.md#legenditem)> + +##### Example + +```typescript +const legendItem = await felt.getLegendItem({ + id: "legend-item-1", + layerId: "layer-1", +}) +``` + +#### getLegendItems() + +> **getLegendItems**(`constraint`?): `Promise`\<(`null` | [`LegendItem`](client.md#legenditem))\[]> + +Allows you to obtain the state of several legend items, by passing in +constraints describing which legend items you want. + +If you do not pass any constraints, you will receive all legend items. + +##### Parameters + +##### constraint? + +[`LegendItemsConstraint`](client.md#legenditemsconstraint) + +##### Returns + +`Promise`\<(`null` | [`LegendItem`](client.md#legenditem))\[]> + +##### Example + +```typescript +const legendItems = await felt.getLegendItems({layerId: "layer-1"}); +``` + +#### setLegendItemVisibility() + +> **setLegendItemVisibility**(`visibility`): `Promise`\<`void`> + +Hide or show legend items with the given identifiers. + +##### Parameters + +##### visibility + +##### show + +[`LegendItemIdentifier`](client.md#legenditemidentifier)\[] + +##### hide + +[`LegendItemIdentifier`](client.md#legenditemidentifier)\[] + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +felt.setLegendItemVisibility({ + show: [{layerId: "layer-group-1", id: "item-1-0"}], + hide: [{layerId: "layer-group-2", id: "item-2-0"}], +}) +``` + +#### getLayerFilters() + +> **getLayerFilters**(`layerId`): `Promise`\<`null` | [`LayerFilters`](client.md#layerfilters)> + +Get the filters for a layer. + +##### Parameters + +##### layerId + +`string` + +##### Returns + +`Promise`\<`null` | [`LayerFilters`](client.md#layerfilters)> + +##### Remarks + +The return type gives you the filters split up into the various sources +that make up the overall filters for a layer. + +##### Example + +```typescript +const filters = await felt.getLayerFilters("layer-1"); +console.log(filters.combined, filters.style, filters.ephemeral, filters.components); +``` + +#### setLayerFilters() + +> **setLayerFilters**(`params`): `Promise`\<`void`> + +Sets the **ephemeral** filters for a layer. + +##### Parameters + +##### params + +##### layerId + +`string` + +The layer that you want to set the filters for. + +##### filters + +[`Filters`](client.md#filters) + +The filters to set for the layer. This will replace any ephemeral filters +that are currently set for the layer. + +##### note + +`string` + +A note to display on the layer legend when this filter is applied. When the +note is shown, a reset button will also be shown, allowing the user to clear +the filter. + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +await felt.setLayerFilters({ + layerId: "layer-1", + filters: ["AREA", "gt", 30_000], +}); +``` + +#### getLayerBoundaries() + +> **getLayerBoundaries**(`layerId`): `Promise`\<`null` | [`LayerBoundaries`](client.md#layerboundaries)> + +Get the spatial boundaries that are filtering a layer. + +##### Parameters + +##### layerId + +`string` + +##### Returns + +`Promise`\<`null` | [`LayerBoundaries`](client.md#layerboundaries)> + +##### Remarks + +The return type gives you the boundaries split up into the various sources +that make up the overall boundary for a layer. + +The combined boundary is the intersection of the other sources of boundaries. + +##### Example + +```typescript +const boundaries = await felt.getLayerBoundaries("layer-1"); + +console.log(boundaries?.combined); +console.log(boundaries?.spatialFilters); +console.log(boundaries?.ephemeral); +``` + +#### setLayerBoundary() + +> **setLayerBoundary**(`params`): `Promise`\<`void`> + +Set the [\`ephemeral\`](client.md#ephemeral-1) boundary for one or more layers. + +##### Parameters + +##### params + +##### layerIds + +`string`\[] + +The ids of the layers to set the boundary for. + +##### boundary + +`null` | [`GeometryFilter`](client.md#geometryfilter) + +The boundary to set for the layer. + +Passing `null` clears the ephemeral boundary for the layer. + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +await felt.setLayerBoundary({ + layerIds: ["layer-1", "layer-2"], + boundary: { type: "MultiPolygon", coordinates: [[[100, 0], [101, 0], [101, 1], [100, 1], [100, 0]]] } +}); +``` + +#### getRenderedFeatures() + +> **getRenderedFeatures**(`params`?): `Promise`\<[`LayerFeature`](client.md#layerfeature)\[]> + +Get the features that are currently **rendered** on the map in the viewport. + +Note that this is explicitly about the features that are rendered, which isn't +necessarily a complete list of all the features in the viewport. This is because +of the way features are tiled: at low zoom levels or high feature densities, many +features are omitted from what is rendered on the screen. + +##### Parameters + +##### params? + +[`GetRenderedFeaturesConstraint`](client.md#getrenderedfeaturesconstraint) + +The constraints to apply to the features returned from the map. + +##### Returns + +`Promise`\<[`LayerFeature`](client.md#layerfeature)\[]> + +##### Example + +```typescript +const features = await felt.getRenderedFeatures(); +``` + +#### getFeature() + +> **getFeature**(`params`): `Promise`\<`null` | [`LayerFeature`](client.md#layerfeature)> + +Get a feature from the map by its ID and layer ID. + +The response is a [LayerFeature](client.md#layerfeature) object, which does not include the +geometry of the feature. + +You may want to use this when you don't need the geometry of a feature, +but you know the ID of the feature you need. + +##### Parameters + +##### params + +##### id + +`string` | `number` + +##### layerId + +`string` + +##### Returns + +`Promise`\<`null` | [`LayerFeature`](client.md#layerfeature)> + +##### Example + +```typescript +const feature = await felt.getFeature({ layerId: "layer-1", id: 123 }); +``` + +#### getFeatures() + +> **getFeatures**(`params`): `Promise`\<\{ `features`: [`LayerFeature`](client.md#layerfeature)\[]; `count`: `number`; `previousPage`: `null` | `string`; `nextPage`: `null` | `string`; }> + +Get a list of layer features. + +##### Parameters + +##### params + +##### layerId + +`string` + +The ID of the layer to get features from. + +##### filters + +[`Filters`](client.md#filters) + +Filters to be applied. These filters will merge with layer's own filters. + +##### sorting + +[`SortConfig`](client.md#sortconfig) + +Attribute to sort by. + +##### boundary + +[`GeometryFilter`](client.md#geometryfilter) + +The spatial boundary to be applied. + +##### search + +`string` + +Search term to search by. + +Search is case-insensitive and looks for matches across all feature properties. + +##### pagination + +`null` | `string` + +Pagination token. It comes from either the `previousPage` or `nextPage` +properties of the previous response. + +##### Returns + +`Promise`\<\{ `features`: [`LayerFeature`](client.md#layerfeature)\[]; `count`: `number`; `previousPage`: `null` | `string`; `nextPage`: `null` | `string`; }> + +The response is an object which contains: + +* `features`: list of [LayerFeature](client.md#layerfeature) objects, which does not include + the geometry of the feature but it does include its bounding box. +* `count`: the total number of features that match the query. +* `previousPage` & `nextPage`: The tokens to pass in the `pagination` param + to navigate between pages. + +##### Remarks + +This list is paginated in sets of 20 features for each page. In order to paginate +between pages, the response includes `previousPage` and `nextPage` that are tokens +that should be sent in the `pagination` params for requesting sibling pages. + +Text search is case-insensitive and looks for matches across all feature properties. + +##### Example + +```typescript +const page1Response = await felt.getFeatures({ + layerId: "layer-1", + search: "abc123", + pagination: undefined, +}); + +// Note that the search term here matches the one for the first page. +if (page1Response.nextPage) { + const page2Response = await felt.getFeatures({ + layerId: "layer-1", + search: "abc123", + pagination: page1Response.nextPage, + }); +} +``` + +#### getGeoJsonFeature() + +> **getGeoJsonFeature**(`params`): `Promise`\<`null` | [`GeoJsonFeature`](client.md#geojsonfeature)> + +Get a feature in GeoJSON format from the map by its ID and layer ID. + +The response is a GeoJSON Feature object with the complete geometry of the +feature. Note that for some *very* large geometries, the response may take a +long time to return, and may return a very large object. + +##### Parameters + +##### params + +##### id + +`string` | `number` + +##### layerId + +`string` + +##### Returns + +`Promise`\<`null` | [`GeoJsonFeature`](client.md#geojsonfeature)> + +##### Example + +```typescript +const feature = await felt.getGeoJsonFeature({ layerId: "layer-1", id: 123 }); +``` + +#### getCategoryData() + +> **getCategoryData**(`params`): `Promise`\<[`GetLayerCategoriesGroup`](client.md#getlayercategoriesgroup)\[]> + +Gets values from a layer grouped by a given attribute. + +##### Parameters + +##### params + +[`GetLayerCategoriesParams`](client.md#getlayercategoriesparams) + +##### Returns + +`Promise`\<[`GetLayerCategoriesGroup`](client.md#getlayercategoriesgroup)\[]> + +##### Remarks + +Groups features in your layer by unique values in the specified attribute and calculates +a value for each group. By default, this value is the count of features in each group. + +You can apply filters in two ways: + +1. At the top level (using `boundary` and `filters`), which affects both what categories + are included and how values are calculated +2. In the `values` configuration, which only affects the values but keeps all categories + +This two-level filtering is particularly useful when you want to compare subsets of data +while maintaining consistent categories. For example, you might want to show the distribution +of all building types in a city, but only count buildings built after 2000 in each category. + +##### Example + +```typescript +// Basic grouping: Count of buildings by type +const buildingsByType = await felt.getCategoryData({ + layerId: "buildings", + attribute: "type" +}); + +// Filtered grouping: Only count buildings in downtown +const downtownBuildingsByType = await felt.getCategoryData({ + layerId: "buildings", + attribute: "type", + boundary: [-122.43, 47.60, -122.33, 47.62] // downtown boundary +}); + +// Advanced: Show all building types, but only sum floor area of recent buildings +const recentBuildingAreaByType = await felt.getCategoryData({ + layerId: "buildings", + attribute: "type", + values: { + filters: ["year_built", "gte", 2000], + aggregation: { + method: "sum", + attribute: "floor_area" + } + } +}); + +// Compare residential density across neighborhoods while only counting recent buildings +const newBuildingDensityByNeighborhood = await felt.getCategoryData({ + layerId: "buildings", + attribute: "neighborhood", + values: { + filters: ["year_built", "gte", 2000], + aggregation: { + method: "avg", + attribute: "units_per_acre" + } + } +}); +``` + +#### getHistogramData() + +> **getHistogramData**(`params`): `Promise`\<[`GetLayerHistogramBin`](client.md#getlayerhistogrambin)\[]> + +Gets a histogram of values from a layer for a given attribute. + +##### Parameters + +##### params + +[`GetLayerHistogramParams`](client.md#getlayerhistogramparams) + +##### Returns + +`Promise`\<[`GetLayerHistogramBin`](client.md#getlayerhistogrambin)\[]> + +##### Remarks + +Creates bins (ranges) for numeric data and counts how many features fall into each bin, +or returns aggregated values for each bin. + +You can control how the bins are created using the `steps` parameter, choosing from +several methods like equal intervals, quantiles, or natural breaks (Jenks), or passing +in the step values directly if you know how you want to bin the data. + +Like getCategoryData, you can apply filters in two ways: + +1. At the top level (using `boundary` and `filters`), which affects both how the bins + are calculated and what features are counted in each bin +2. In the `values` configuration, which only affects what gets counted but keeps the + bin ranges the same + +This is particularly useful when you want to compare distributions while keeping +consistent bin ranges. For example, you might want to compare the distribution of +building heights in different years while using the same height ranges. + +##### Example + +```typescript +// Basic histogram: Building heights in 5 natural break bins +const buildingHeights = await felt.getHistogramData({ + layerId: "buildings", + attribute: "height", + steps: { type: "jenks", count: 5 } +}); + +// Compare old vs new buildings using the same height ranges +const oldBuildingHeights = await felt.getHistogramData({ + layerId: "buildings", + attribute: "height", + steps: [0, 20, 50, 100, 200, 500], + values: { + filters: ["year_built", "lt", 1950] + } +}); + +const newBuildingHeights = await felt.getHistogramData({ + layerId: "buildings", + attribute: "height", + steps: [0, 20, 50, 100, 200, 500], // Same ranges as above + values: { + filters: ["year_built", "gte", 1950] + } +}); +``` + +#### getAggregates() + +> **getAggregates**\<`T`>(`params`): `Promise`\<`Record`\<`T`, `null` | `number`>> + +Calculates a single aggregate value for a layer based on the provided configuration. + +##### Type Parameters + +• **T** *extends* `"avg"` | `"max"` | `"min"` | `"sum"` | `"median"` | `"count"` + +##### Parameters + +##### params + +[`GetLayerCalculationParams`](client.md#getlayercalculationparamst)\<`T`> + +##### Returns + +`Promise`\<`Record`\<`T`, `null` | `number`>> + +##### Remarks + +Performs statistical calculations on your data, like counting features or computing +averages, sums, etc. You can focus your calculation on specific areas or subsets +of your data using boundaries and filters. + +When no aggregation is specified, it counts features. When an aggregation is provided, +it performs that calculation (average, sum, etc.) on the specified attribute. + +##### Example + +```typescript +// Count all residential buildings +const residentialCount = await felt.getAggregates({ + layerId: "buildings", + filters: ["type", "eq", "residential"] +}); + +// Calculate average home value in a specific neighborhood +const avgHomeValue = await felt.getAggregates({ + layerId: "buildings", + boundary: [-122.43, 47.60, -122.33, 47.62], // neighborhood boundary + aggregation: { + method: "avg", + attribute: "assessed_value" + } +}); + +// Find the maximum building height for buildings built after 2000 +const maxNewBuildingHeight = await felt.getAggregates({ + layerId: "buildings", + filters: ["year_built", "gte", 2000], + aggregation: { + method: "max", + attribute: "height" + } +}); +``` + +#### getPrecomputedAggregates() + +> **getPrecomputedAggregates**(`params`): `Promise`\<\{ `avg`: `null` | `number`; `max`: `null` | `number`; `min`: `null` | `number`; `sum`: `null` | `number`; `count`: `null` | `number`; }> + +Calculates aggregates for spatial cells of a layer. + +##### Parameters + +##### params + +[`GetLayerPrecomputedCalculationParams`](client.md#getlayerprecomputedcalculationparams) + +##### Returns + +`Promise`\<\{ `avg`: `null` | `number`; `max`: `null` | `number`; `min`: `null` | `number`; `sum`: `null` | `number`; `count`: `null` | `number`; }> + +##### Remarks + +Performs statistical calculations on spatial cells of a layer, returning min, max, avg, sum, and count. You can focus your calculation on specific areas or subsets +of your data using boundaries and filters. When using the count method, an attribute is not required. + +##### Example + +```typescript +const aggregates = await felt.getPrecomputedAggregates({ + layerId: "buildings", + gridConfig: { + type: "h3", + resolution: 10, + method: "avg", + attribute: "assessed_value" + }, +}); +``` + +#### getLayerSchema() + +> **getLayerSchema**(`layerId`): `Promise`\<[`LayerSchema`](client.md#layerschema)> + +Get the schema for a layer. + +##### Parameters + +##### layerId + +`string` + +##### Returns + +`Promise`\<[`LayerSchema`](client.md#layerschema)> + +##### Remarks + +The schema describes the structure of the data in a layer, including the attributes +that are available on the features in the layer. + +This can be useful to build generic UIs that need to know the structure of the data in +a layer, such as a dropdown to choose an attribute. + +##### Example + +```typescript +const schema = await felt.getLayerSchema("layer-1"); +const attributeIds = schema.attributes.map((attr) => attr.id); +``` + +#### getMapDetails() + +> **getMapDetails**(): `Promise`\<[`MapDetails`](client.md#mapdetails)> + +Gets the details of the map. + +##### Returns + +`Promise`\<[`MapDetails`](client.md#mapdetails)> + +##### Example + +```typescript +const details = await felt.getMapDetails(); +console.log({ + id: details.id, + title: details.title, + description: details.description, +}); +``` + +#### getSelection() + +> **getSelection**(): `Promise`\<[`EntityNode`](client.md#entitynode)\[]> + +Gets the current selection as a list of entity identifiers. + +##### Returns + +`Promise`\<[`EntityNode`](client.md#entitynode)\[]> + +##### Example + +```typescript +const selection = await felt.getSelection(); +``` + +#### selectFeature() + +> **selectFeature**(`params`): `Promise`\<`void`> + +Selects a feature on a layer. This will show the feature's popup, modal or +sidebar (if configured) and highlight the feature. + +##### Parameters + +##### params + +[`FeatureSelection`](client.md#featureselection) + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +felt.selectFeature({ + id: 123, + layerId: "my-layer", + showPopup: true, + fitViewport: { maxZoom: 15 }, +}); +``` + +#### clearSelection() + +> **clearSelection**(`params`?): `Promise`\<`void`> + +Clears the current selection. This clears the selection of + +##### Parameters + +##### params? + +The parameters to clear the selection. If this is not provided, +both features and elements will be cleared. + +##### features + +`boolean` + +Whether to clear the features from the selection. + +##### elements + +`boolean` + +Whether to clear the elements from the selection. + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript + +// Removes all features and elements from the selection +felt.clearSelection(); + +// Removes only features from the selection +felt.clearSelection({ features: true }); + +// Removes only elements from the selection +felt.clearSelection({ elements: true }); +``` + +##### Default + +```typescript +{ features: true, elements: true } +``` + +#### setTool() + +> **setTool**(`tool`): `void` + +Sets the tool to use for drawing elements on the map. + +##### Parameters + +##### tool + +The tool to set. + +`null` | [`ToolType`](client.md#tooltype) + +##### Returns + +`void` + +##### Example + +```typescript +// Set the tool to "marker" +await felt.setTool("marker"); + +// put down the tool +await felt.setTool(null); +``` + +#### getTool() + +> **getTool**(): `Promise`\<`null` | [`ToolType`](client.md#tooltype)> + +Gets the current tool, if any is in use. + +##### Returns + +`Promise`\<`null` | [`ToolType`](client.md#tooltype)> + +The current tool, or `null` if no tool is in use. + +##### Example + +```typescript +const tool = await felt.getTool(); // "marker", "polygon", etc. +``` + +#### onToolChange() + +> **onToolChange**(`args`): `VoidFunction` + +Listens for changes to the current tool. + +##### Parameters + +##### args + +##### handler + +(`tool`) => `void` + +This callback is called with the current tool whenever the tool changes. + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onToolChange({ + handler: tool => console.log(tool), +}); + +// later on... +unsubscribe(); +``` + +#### setToolSettings() + +> **setToolSettings**(`settings`): `void` + +Sets the settings for the current tool. + +##### Parameters + +##### settings + +[`InputToolSettings`](client.md#inputtoolsettings) + +The settings to set. + +##### Returns + +`void` + +##### Example + +```typescript +// Set the settings for the marker tool +await felt.setToolSettings({ + tool: "marker", + color: "#FE17", +}); +``` + +#### getToolSettings() + +> **getToolSettings**\<`T`>(`tool`): `Promise`\<[`ToolSettingsMap`](client.md#toolsettingsmap)\[`T`]> + +Gets the settings for the chosen tool + +##### Type Parameters + +• **T** *extends* [`ConfigurableToolType`](client.md#configurabletooltype) + +##### Parameters + +##### tool + +`T` + +##### Returns + +`Promise`\<[`ToolSettingsMap`](client.md#toolsettingsmap)\[`T`]> + +The settings for the chosen tool. + +##### Example + +```typescript +const settings = await felt.getToolSettings("marker"); +``` + +#### onToolSettingsChange() + +> **onToolSettingsChange**(`args`): `VoidFunction` + +Listens for changes to the settings on all tools. + +##### Parameters + +##### args + +##### handler + +(`settings`) => `void` + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onToolSettingsChange({ + handler: settings => console.log(settings), +}); + +// later on... +unsubscribe(); +``` + +#### addPanel() + +> **addPanel**(`args`): `void` + +Adds a panel. +Panels are rendered on the right side of the map. + +By default, the panel will be added to the end of the stack but you can +specify a placement to add it at a specific position in the stack. + +When adding a panel, its id is optional as well as its elements' ids. +It is recommended to provide an id for the panel and its elements to make +it easier to update or delete them later. + +Panels have two sections: + +* `items` - Body of the panel, scrollable. +* `footer` - It sticks to the bottom of the panel, useful to add submit buttons. + +##### Parameters + +##### args + +[`AddPanelInput`](client.md#addpanelinput) + +The arguments for the method. + +##### Returns + +`void` + +##### Example + +```typescript +await felt.addPanel({ + panel: { + id: "panel-1", // not required but useful for further updates + title: "My Panel", + items: [ + { + type: "Text", + content: "Hello, world!", + }, + { + type: "TextInput", + label: "Name", + placeholder: "Enter your name", + value: "", + onChange: ({ value }) => setName(value), + }, + ], + footer: [ + { + type: "Button", + label: "Submit", + onClick: () => submitForm(), + }, + ], + }, + placement: { at: "start" }, // add the panel to the start of the stack +}); +``` + +#### updatePanel() + +> **updatePanel**(`panel`): `void` + +Updates a panel. + +Panel to update is identified by the `id` property. + +##### Parameters + +##### panel + +[`UpdatePanelElementInput`](client.md#updatepanelelementinput) + +The panel to update. + +##### Returns + +`void` + +##### Remarks + +Properties provided will override the existing properties. +Override is done at Panel level, so if you want to update a specific element, +you need to provide the entire element. For partial updates of elements, use +[updatePanelElements](client.md#updatepanelelements) instead. + +##### Example + +```typescript +await felt.updatePanel({ + id: "panel-1", + title: "A new title for my panel", // only title changes +}); +``` + +#### deletePanel() + +> **deletePanel**(`id`): `void` + +Deletes a panel. + +##### Parameters + +##### id + +`string` + +The id of the panel to delete. + +##### Returns + +`void` + +##### Example + +```typescript +await felt.deletePanel("panel-1"); +``` + +#### addPanelElements() + +> **addPanelElements**(`args`): `void` + +Adds elements to a panel. + +##### Parameters + +##### args + +[`AddPanelElementsInput`](client.md#addpanelelementsinput) + +The arguments for the method. + +##### Returns + +`void` + +##### Example + +```typescript +await felt.addPanelElements({ + panelId: "panel-1", + elements: [ + { + element: { type: "Text", content: "Hello, world!" }, + on: "items", + placement: { at: "start" }, + }, + ], +}); +``` + +#### updatePanelElements() + +> **updatePanelElements**(`args`): `void` + +Updates an element in a panel. + +##### Parameters + +##### args + +[`UpdatePanelElementsInput`](client.md#updatepanelelementsinput) + +The arguments for the method. + +##### Returns + +`void` + +##### Example + +```typescript +await felt.updatePanelElements({ + panelId: "panel-1", + elements: { + "element-1": { type: "Text", content: "Hello, world!" }, + }, +}); +``` + +#### deletePanelElements() + +> **deletePanelElements**(`args`): `void` + +Deletes elements from a panel. + +##### Parameters + +##### args + +[`DeletePanelElements`](client.md#deletepanelelements-1) + +The arguments for the method. + +##### Returns + +`void` + +##### Example + +```typescript +await felt.deletePanelElements({ + panelId: "panel-1", + elements: ["element-1", "element-2"], +}); +``` + +#### updateUiControls() + +> **updateUiControls**(`controls`): `void` + +Updates the UI controls on the embedded map. + +##### Parameters + +##### controls + +[`UiControlsOptions`](client.md#uicontrolsoptions) + +The controls to update. + +##### Returns + +`void` + +##### Example + +```typescript +// Show some UI controls +await felt.updateUiControls({ + showLegend: true, + fullScreenButton: true, +}); + +// Disable some UI options +await felt.updateUiControls({ + cooperativeGestures: false, + geolocation: false, +}); +``` + +#### setOnMapInteractionsUi() + +> **setOnMapInteractionsUi**(`options`): `void` + +Control the on-map UI shown when interacting with features and elements. + +If you add your own click, selection or hover handlers you may want to disable +various parts of the Felt UI. This method allows you to control the visibility of +various parts of the UI that might otherwise be shown when people click or hover +on things. + +This does not affect selection. That means that selectable features and elements +will still be selected when clicked. + +##### Parameters + +##### options + +[`OnMapInteractionsOptions`](client.md#onmapinteractionsoptions) + +##### Returns + +`void` + +##### Example + +```typescript +// Disable UI when hovering or selecting features +await felt.setOnMapInteractionsUi({ + featureSelectPanel: false, + featureHoverPanel: false, +}); +``` + +#### showLayerDataTable() + +> **showLayerDataTable**(`params`?): `Promise`\<`void`> + +Shows a data table view for the specified layer, optionally sorted by a given attribute. + +##### Parameters + +##### params? + +##### layerId + +`string` + +##### sorting + +[`SortConfig`](client.md#sortconfig) + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +// Show data table with default sorting +await felt.showLayerDataTable({ + layerId: "layer-1", +}); + +// Show data table sorted by height in descending order +await felt.showLayerDataTable({ + layerId: "layer-1", + sorting: { + attribute: "height", + direction: "desc", + }, +}); + +// Show the data table pane with no table visible +await felt.showLayerDataTable(); +``` + +#### hideLayerDataTable() + +> **hideLayerDataTable**(): `Promise`\<`void`> + +Hides the data table. + +##### Returns + +`Promise`\<`void`> + +##### Example + +```typescript +await felt.hideLayerDataTable(); +``` + +#### getViewport() + +> **getViewport**(): `Promise`\<[`ViewportState`](client.md#viewportstate)> + +Gets the current state of the viewport. + +##### Returns + +`Promise`\<[`ViewportState`](client.md#viewportstate)> + +##### Example + +```typescript +// Get current viewport state +const viewport = await felt.getViewport(); +console.log({ + center: viewport.center, + zoom: viewport.zoom, +}); +``` + +#### setViewport() + +> **setViewport**(`viewport`): `void` + +Moves the map to the specified location. + +##### Parameters + +##### viewport + +[`SetViewportCenterZoomParams`](client.md#setviewportcenterzoomparams) + +##### Returns + +`void` + +##### Example + +```typescript +felt.setViewport({ + center: { latitude: 0, longitude: 0 }, + zoom: 10, +}); +``` + +#### getViewportConstraints() + +> **getViewportConstraints**(): `Promise`\<`null` | [`ViewportConstraints`](client.md#viewportconstraints)> + +Gets the current state of the viewport constraints. + +##### Returns + +`Promise`\<`null` | [`ViewportConstraints`](client.md#viewportconstraints)> + +##### Example + +```typescript +// Get current viewport constraints +const constraints = await felt.getViewportConstraints(); +if (constraints) { + console.log({ + bounds: constraints.bounds, + minZoom: constraints.minZoom, + maxZoom: constraints.maxZoom + }); +} else { + console.log("No viewport constraints set"); +} +``` + +#### setViewportConstraints() + +> **setViewportConstraints**(`constraints`): `void` + +Constrains the map viewport so it stays inside certain bounds and/or certain zoom levels. + +##### Parameters + +##### constraints + +`null` | `Partial`\<[`ViewportConstraints`](client.md#viewportconstraints)> + +##### Returns + +`void` + +##### Examples + +```typescript +felt.setViewportConstraints({ + bounds: [-122.5372532, 37.6652478, -122.1927016, 37.881707], + minZoom: 1, + maxZoom: 23, +}); +``` + +every constraint is optional + +```typescript +felt.setViewportConstraints({ + bounds: [-122.5372532, 37.6652478, -122.1927016, 37.881707], +}); +``` + +if a constraint is null, it will be removed but keeping the others + +```typescript +felt.setViewportConstraints({ bounds: null }); +``` + +if method receives null, it will remove the constraints + +```typescript +felt.setViewportConstraints(null); +``` + +#### fitViewportToBounds() + +> **fitViewportToBounds**(`bounds`): `void` + +Fits the map to the specified bounds. + +##### Parameters + +##### bounds + +[`ViewportFitBoundsParams`](client.md#viewportfitboundsparams) + +##### Returns + +`void` + +##### Example + +```typescript +const west = -122.4194; +const south = 37.7749; +const east = -122.4194; +const north = 37.7749; +felt.fitViewportToBounds({ bounds: [west, south, east, north] }); +``` + +### Events + +#### onElementCreate() + +> **onElementCreate**(`args`): `VoidFunction` + +Adds a listener for when an element is created. + +##### Parameters + +##### args + +##### handler + +(`change`) => `void` + +The handler that is called when an element is created. + +This will fire when elements are created programatically, or when the +user starts creating an element with a drawing tool. + +When the user creates an element with a drawing tool, it can begin in +an invalid state, such as if you've just placed a single point in a polygon. + +You can use the `isBeingCreated` property to determine if the element is +still being created by a drawing tool. + +If you want to know when the element is finished being created, you can +use the [\`onElementCreateEnd\`](client.md#onelementcreateend) listener. + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onElementCreate({ + handler: (element) => console.log(element.id), +}); + +// later on... +unsubscribe(); +``` + +#### onElementCreateEnd() + +> **onElementCreateEnd**(`args`): `VoidFunction` + +Listens for when a new element is finished being created by a drawing tool. + +This differs from the [\`onElementCreate\`](client.md#onelementcreate) listener, which fires whenever an +element is first created. This fires when the user finishes creating an element +which could be after a series of interactions. + +For example, when creating a polygon, the user places a series of points then +finishes by pressing Enter or Escape. Or when creating a Place element, they +add the marker, type a label, then finally deselect the element. + +##### Parameters + +##### args + +##### handler + +(`params`) => `void` + +The handler to call whenever this event fires. + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onToolCreatedElement({ + handler: (params) => console.log(params), +}); + +// later on... +unsubscribe(); +``` + +#### onElementChange() + +> **onElementChange**(`args`): `VoidFunction` + +Adds a listener for when an element changes. + +This will fire when an element is being edited, either on the map by the user +or programatically. + +Like the [\`onElementCreate\`](client.md#onelementcreate) listener, this will fire when an element is +still being created by a drawing tool. + +You can check the [\`isBeingCreated\`](client.md#isbeingcreated) property to determine if the element is +still being created by a drawing tool. + +##### Parameters + +##### args + +##### options + +\{ `id`: `string`; } + +##### options.id + +`string` + +The id of the element to listen for changes to. + +##### handler + +(`change`) => `void` + +The handler that is called when the element changes. + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onElementChange({ + options: { id: "element-1" }, + handler: ({element}) => console.log(element.id), +}); + +// later on... +unsubscribe(); +``` + +#### onElementDelete() + +> **onElementDelete**(`args`): `VoidFunction` + +Adds a listener for when an element is deleted. + +##### Parameters + +##### args + +##### options + +\{ `id`: `string`; } + +##### options.id + +`string` + +The id of the element to listen for deletions of. + +##### handler + +() => `void` + +The handler that is called when the element is deleted. + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onElementDelete({ + options: { id: "element-1" }, + handler: () => console.log("element-1 deleted"), +}); + +// later on... +unsubscribe(); +``` + +#### onElementGroupChange() + +> **onElementGroupChange**(`args`): `VoidFunction` + +Adds a listener for when an element group changes. + +##### Parameters + +##### args + +##### options + +\{ `id`: `string`; } + +##### options.id + +`string` + +##### handler + +(`change`) => `void` + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onElementGroupChange({ + options: { id: "element-group-1" }, + handler: elementGroup => console.log(elementGroup.id), +}); + +// later on... +unsubscribe(); +``` + +#### onPointerClick() + +> **onPointerClick**(`params`): `VoidFunction` + +Allows you to be notified the user clicks on the map. + +##### Parameters + +##### params + +##### handler + +(`event`) => `void` + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onPointerClick({ + handler: (event) => console.log(event.center, event.features), +}); + +// later on... +unsubscribe(); +``` + +#### onPointerMove() + +> **onPointerMove**(`params`): `VoidFunction` + +Allows you to be notified the user moves the mouse over the map. + +##### Parameters + +##### params + +Params for the listener + +##### handler + +(`event`) => `void` + +The handler function + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +// Track mouse movement and features under cursor +const unsubscribe = felt.onPointerMove({ + handler: (event) => { + console.log("Mouse position:", event.center); + console.log("Features under cursor:", event.features); + } +}); + +// later on... +unsubscribe(); +``` + +#### onLayerChange() + +> **onLayerChange**(`args`): `VoidFunction` + +Adds a listener for when a layer changes. + +##### Parameters + +##### args + +##### options + +\{ `id`: `string`; } + +##### options.id + +`string` + +The id of the layer to listen for changes to. + +##### handler + +(`change`) => `void` + +The handler that is called when the layer changes. + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onLayerChange({ + options: { id: "layer-1" }, + handler: ({layer}) => console.log(layer.bounds), +}); + +// later on... +unsubscribe(); +``` + +#### onLayerGroupChange() + +> **onLayerGroupChange**(`args`): `VoidFunction` + +Adds a listener for when a layer group changes. + +##### Parameters + +##### args + +##### options + +\{ `id`: `string`; } + +##### options.id + +`string` + +##### handler + +(`change`) => `void` + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onLayerGroupChange({ + options: { id: "layer-group-1" }, + handler: ({layerGroup}) => console.log(layerGroup.id), +}); + +// later on... +unsubscribe(); +``` + +#### onLegendItemChange() + +> **onLegendItemChange**(`args`): `VoidFunction` + +Adds a listener for when a legend item changes. + +##### Parameters + +##### args + +##### options + +[`LegendItemIdentifier`](client.md#legenditemidentifier) + +##### handler + +(`change`) => `void` + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onLegendItemChange({ + options: { layerId: "layer-1", id: "item-1-0" }, + handler: ({legendItem}) => console.log(legendItem.visible), +}); + +// later on... +unsubscribe(); +``` + +#### onLayerFiltersChange() + +> **onLayerFiltersChange**(`params`): `VoidFunction` + +Adds a listener for when a layer's filters change. + +##### Parameters + +##### params + +##### options + +\{ `layerId`: `string`; } + +##### options.layerId + +`string` + +##### handler + +(`change`) => `void` + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Remarks + +This event fires whenever any type of filter changes on the layer, including +ephemeral filters set via the SDK, style-based filters, or filters set through +the Felt UI via Components. + +##### Example + +```typescript +const unsubscribe = felt.onLayerFiltersChange({ + options: { layerId: "layer-1" }, + handler: ({combined, ephemeral, style, components}) => { + console.log("Layer filters updated:", { + combined, // All filters combined + ephemeral, // Filters set via SDK + style, // Filters from layer style + components // Filters from UI components + }); + }, +}); + +// later on... +unsubscribe(); +``` + +#### onLayerBoundariesChange() + +> **onLayerBoundariesChange**(`params`): `VoidFunction` + +Adds a listener for when a layer's spatial boundaries change. + +##### Parameters + +##### params + +##### options + +\{ `layerId`: `string`; } + +##### options.layerId + +`string` + +The id of the layer to listen for boundary changes on. + +##### handler + +(`boundaries`) => `void` + +A function that is called when the boundaries change. + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Remarks + +This event fires whenever any type of spatial boundary changes on the layer, including +ephemeral boundaries set via the SDK or boundaries set through the Felt UI via +Spatial filter components. + +##### Example + +```typescript +const unsubscribe = felt.onLayerBoundariesChange({ + options: { layerId: "layer-1" }, + handler: ({combined, ephemeral, spatialFilters}) => { + console.log("Layer boundaries updated:", { + combined, // All boundaries combined + ephemeral, // Boundaries set via SDK + spatialFilters // Boundaries set via UI + }); + }, +}); + +// later on... +unsubscribe(); +``` + +#### onSelectionChange() + +> **onSelectionChange**(`params`): `VoidFunction` + +Adds a listener for when the selection changes. + +##### Parameters + +##### params + +##### handler + +(`change`) => `void` + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onSelectionChange({ + handler: ({selection}) => console.log(selection), +}); + +// later on... +unsubscribe(); +``` + +#### onViewportMove() + +> **onViewportMove**(`args`): `VoidFunction` + +Adds a listener for when the viewport changes. + +##### Parameters + +##### args + +##### handler + +(`viewport`) => `void` + +This callback is called with the current viewport state whenever +the viewport changes. + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onViewportMove({ + handler: viewport => console.log(viewport.center.latitude), +}); + +// later on... +unsubscribe(); +``` + +#### onViewportMoveEnd() + +> **onViewportMoveEnd**(`args`): `VoidFunction` + +Adds a listener for when the viewport move ends, which is when the user +stops dragging or zooming the map, animations have finished, or inertial +dragging ends. + +##### Parameters + +##### args + +##### handler + +(`viewport`) => `void` + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onViewportMoveEnd({ + handler: viewport => console.log(viewport.center.latitude), +}); + +// later on... +unsubscribe(); +``` + +#### onMapIdle() + +> **onMapIdle**(`args`): `VoidFunction` + +Adds a listener for when the map is idle, which is defined as: + +* No transitions are in progress +* The user is not interacting with the map, e.g. by panning or zooming +* All tiles for the current viewport have been loaded +* Any fade transitions (e.g. for labels) have completed + +##### Parameters + +##### args + +##### handler + +() => `void` + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onMapIdle({ handler: () => console.log("map is idle") }); + +// later on... +unsubscribe(); +``` + +### Properties + +#### iframe + +> `readonly` **iframe**: `null` | `HTMLIFrameElement` + +The iframe element containing the Felt map, if it is an embedded map. + +## FeltEmbedOptions + +### Properties + +#### uiControls? + +> `optional` **uiControls**: [`UiControlsOptions`](client.md#uicontrolsoptions) + +#### initialViewport? + +> `optional` **initialViewport**: [`ViewportCenterZoom`](client.md#viewportcenterzoom) + +#### token? + +> `optional` **token**: `string` + +A short-lived (15 minutes) authentication token to use for showing embeds that are configured to be +private. + +## ElementNode + +References an element on the map. + +### Properties + +#### type + +> **type**: `"element"` + +#### entity + +> **entity**: [`Element`](client.md#element-1) + +## ElementGroupNode + +References an element group. + +### Properties + +#### type + +> **type**: `"elementGroup"` + +#### entity + +> **entity**: [`ElementGroup`](client.md#elementgroup) + +## LayerNode + +References a layer on the map. + +### Properties + +#### type + +> **type**: `"layer"` + +#### entity + +> **entity**: [`Layer`](client.md#layer-1) + +## LayerGroupNode + +References a layer group on the map. + +### Properties + +#### type + +> **type**: `"layerGroup"` + +#### entity + +> **entity**: [`LayerGroup`](client.md#layergroup) + +## FeatureNode + +References a feature on the map. + +### Properties + +#### type + +> **type**: `"feature"` + +#### entity + +> **entity**: [`LayerFeature`](client.md#layerfeature) + +## FeatureSelection + +The options for selecting a feature in a layer. + +### Properties + +#### id + +> **id**: `string` | `number` + +The id of the feature to select. + +#### layerId + +> **layerId**: `string` + +The id of the layer that the feature belongs to. + +#### showPopup? + +> `optional` **showPopup**: `boolean` + +Whether to show the feature's popup, if it is configured in the layer's style. + +##### Default + +```ts +true +``` + +#### fitViewport? + +> `optional` **fitViewport**: `boolean` | \{ `maxZoom`: `number`; } + +Whether to center the view on the feature after selecting it. + +When true, the viewport will be centered on the feature and zoomed to fit the feature +in the viewport. If you need to control the zoom level to prevent it zooming in too +far, you can pass an object with a `maxZoom` property. + +This is useful for avoiding zooming in too far on point features, or if you want +to maintain the current zoom level. + +##### Default + +```ts +true +``` + +## LatLng + +Represents a point in world coordinates. + +### Properties + +#### latitude + +> **latitude**: `number` + +#### longitude + +> **longitude**: `number` + +## GeoJsonFeature + +A GeoJSON feature object, compliant with: +[https://datatracker.ietf.org/doc/html/rfc7946#section-3.2](https://datatracker.ietf.org/doc/html/rfc7946#section-3.2) + +### Properties + +#### type + +> **type**: `"Feature"` + +#### geometry + +> **geometry**: [`GeoJsonGeometry`](client.md#geojsongeometry) + +The feature's geometry + +#### properties + +> **properties**: [`GeoJsonProperties`](client.md#geojsonproperties) + +Properties associated with this feature. + +#### bbox? + +> `optional` **bbox**: \[`number`, `number`, `number`, `number`] + +The bounding box of the feature in \[west, south, east, north] order. + +#### id? + +> `optional` **id**: `string` | `number` + +A value that uniquely identifies this feature in a +[https://tools.ietf.org/html/rfc7946#section-3.2](https://tools.ietf.org/html/rfc7946#section-3.2). + +## PointGeometry + +### Properties + +#### type + +> **type**: `"Point"` + +#### coordinates + +> **coordinates**: [`LngLatTuple`](client.md#lnglattuple) + +## MultiPointGeometry + +A GeoJSON multi-point geometry. + +### Remarks + +You shouldn't expect this to come from Felt - it is here for completeness +of the GeoJSON spec. + +### Properties + +#### type + +> **type**: `"MultiPoint"` + +#### coordinates + +> **coordinates**: [`LngLatTuple`](client.md#lnglattuple)\[] + +## PolygonGeometry + +### Properties + +#### type + +> **type**: `"Polygon"` + +#### coordinates + +> **coordinates**: \[`number`, `number`]\[]\[] + +The coordinates of a polygon. The first array is the exterior ring, and +any subsequent arrays are the interior rings. + +Each ring must have at least 4 points: 3 to make a valid triangle and the +last to close the path, which must be identical to the first. + +## MultiPolygonGeometry + +A GeoJSON multi-polygon geometry. + +### Properties + +#### type + +> **type**: `"MultiPolygon"` + +#### coordinates + +> **coordinates**: \[`number`, `number`]\[]\[]\[] + +## LineStringGeometry + +A GeoJSON line string geometry. + +### Properties + +#### type + +> **type**: `"LineString"` + +#### coordinates + +> **coordinates**: [`LngLatTuple`](client.md#lnglattuple)\[] + +## MultiLineStringGeometry + +A GeoJSON multi-line string geometry. + +### Properties + +#### type + +> **type**: `"MultiLineString"` + +#### coordinates + +> **coordinates**: [`LngLatTuple`](client.md#lnglattuple)\[]\[] + +## SortConfig + +Configuration for sorting data by a specific attribute + +### Properties + +#### direction + +> **direction**: `"asc"` | `"desc"` + +The direction to sort in + +#### attribute + +> **attribute**: `string` + +The attribute to sort by. What this represents depends on the context. +For instance, when sorting features in a data table, the attribute is +the column to sort by. + +## ToolsController + +The Tools controller allows you to let users draw elements on the map. + +### Extended by + +* [`FeltController`](client.md#feltcontroller) + +### Methods + +#### setTool() + +> **setTool**(`tool`): `void` + +Sets the tool to use for drawing elements on the map. + +##### Parameters + +##### tool + +The tool to set. + +`null` | [`ToolType`](client.md#tooltype) + +##### Returns + +`void` + +##### Example + +```typescript +// Set the tool to "marker" +await felt.setTool("marker"); + +// put down the tool +await felt.setTool(null); +``` + +#### getTool() + +> **getTool**(): `Promise`\<`null` | [`ToolType`](client.md#tooltype)> + +Gets the current tool, if any is in use. + +##### Returns + +`Promise`\<`null` | [`ToolType`](client.md#tooltype)> + +The current tool, or `null` if no tool is in use. + +##### Example + +```typescript +const tool = await felt.getTool(); // "marker", "polygon", etc. +``` + +#### onToolChange() + +> **onToolChange**(`args`): `VoidFunction` + +Listens for changes to the current tool. + +##### Parameters + +##### args + +##### handler + +(`tool`) => `void` + +This callback is called with the current tool whenever the tool changes. + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onToolChange({ + handler: tool => console.log(tool), +}); + +// later on... +unsubscribe(); +``` + +#### setToolSettings() + +> **setToolSettings**(`settings`): `void` + +Sets the settings for the current tool. + +##### Parameters + +##### settings + +[`InputToolSettings`](client.md#inputtoolsettings) + +The settings to set. + +##### Returns + +`void` + +##### Example + +```typescript +// Set the settings for the marker tool +await felt.setToolSettings({ + tool: "marker", + color: "#FE17", +}); +``` + +#### getToolSettings() + +> **getToolSettings**\<`T`>(`tool`): `Promise`\<[`ToolSettingsMap`](client.md#toolsettingsmap)\[`T`]> + +Gets the settings for the chosen tool + +##### Type Parameters + +• **T** *extends* [`ConfigurableToolType`](client.md#configurabletooltype) + +##### Parameters + +##### tool + +`T` + +##### Returns + +`Promise`\<[`ToolSettingsMap`](client.md#toolsettingsmap)\[`T`]> + +The settings for the chosen tool. + +##### Example + +```typescript +const settings = await felt.getToolSettings("marker"); +``` + +#### onToolSettingsChange() + +> **onToolSettingsChange**(`args`): `VoidFunction` + +Listens for changes to the settings on all tools. + +##### Parameters + +##### args + +##### handler + +(`settings`) => `void` + +##### Returns + +`VoidFunction` + +A function to unsubscribe from the listener + +##### Example + +```typescript +const unsubscribe = felt.onToolSettingsChange({ + handler: settings => console.log(settings), +}); + +// later on... +unsubscribe(); +``` + +## PinToolSettings + +### Properties + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### frame + +> **frame**: `null` | `"frame-circle"` | `"frame-square"` + +The frame that is rendered around the Place's symbol. This is +only available for non-emoji symbols. + +#### symbol + +> **symbol**: [`PlaceSymbol`](client.md#placesymbol) + +The symbol that is rendered for the Place. + +This can be an emoji by using colon-enclosed characters (e.g. `":smiley:"`) +or one of the symbols available in Felt's symbol library. + +You can see the available symbols in the Felt UI when editing a Place +by hovering a symbol and converting the tooltip to kebab-case. For example, +the "Oil barrel" symbol is `oil-barrel`. + +#### afterCreation + +> **afterCreation**: `"enter name"` | `"add another"` | `"select"` + +What to do after creating the Place element. + +* `"enter name"`: Enter a name for the Place, focusing the name input. +* `"add another"`: Add another Place, leaving the tool still selected. +* `"select"`: Puts the tool down and selects the new Place element. + +##### Default Value + +`"enter name"` + +## LineToolSettings + +### Properties + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### strokeOpacity + +> **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth + +> **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle + +> **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### distanceMarker + +> **distanceMarker**: `boolean` + +Whether a distance marker is shown at the midpoint of the path. + +##### Default + +```ts +false +``` + +## RouteToolSettings + +### Properties + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### strokeOpacity + +> **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth + +> **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle + +> **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### distanceMarker + +> **distanceMarker**: `boolean` + +Whether a distance marker is shown at the midpoint of the path. + +##### Default + +```ts +false +``` + +#### routingMode + +> **routingMode**: `null` | `"driving"` | `"cycling"` | `"walking"` | `"flying"` + +Whether this represents a route, and if so, what mode of transport +is used. + +If this is `null`, the path is not considered to be a route, so while it +can have a `distanceMarker`, it will does not have a start or end cap. + +##### Default + +```ts +null +``` + +#### endCaps + +> **endCaps**: `boolean` + +Whether or not to show Start and End caps on the path. This is +only available if the `routingMode` is set. + +##### Default + +```ts +false +``` + +## PolygonToolSettings + +### Properties + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### strokeOpacity + +> **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth + +> **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle + +> **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### fillOpacity + +> **fillOpacity**: `number` + +The opacity of the polygon's fill, between 0 and 1. + +##### Default + +```ts +0.25 +``` + +#### areaMarker + +> **areaMarker**: `boolean` + +Whether to show an area marker on the polygon. + +##### Default + +```ts +false +``` + +## CircleToolSettings + +### Properties + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### strokeOpacity + +> **strokeOpacity**: `number` + +A value between 0 and 1 that describes the opacity of the element's stroke. + +##### Default + +```ts +1 +``` + +#### strokeWidth + +> **strokeWidth**: `number` + +The width of the element's stroke in pixels. + +##### Default + +```ts +2 +``` + +#### strokeStyle + +> **strokeStyle**: `"solid"` | `"dashed"` | `"dotted"` + +The style of the element's stroke. + +##### Default + +```ts +"solid" +``` + +#### radiusMarker + +> **radiusMarker**: `boolean` + +Whether to show a marker on the circle that indicates the radius + +##### Default + +```ts +false +``` + +#### fillOpacity + +> **fillOpacity**: `number` + +The opacity of the circle's fill. + +##### Default + +```ts +0.25 +``` + +## MarkerToolSettings + +### Properties + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### opacity + +> **opacity**: `number` + +The opacity of the marker, between 0 and 1. + +##### Default + +```ts +1 +``` + +#### size + +> **size**: `number` + +The size of the marker, used in conjunction with the `zoom` to determine +the actual size of the marker. + +##### Default + +```ts +10 +``` + +## HighlighterToolSettings + +### Properties + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### renderHoles + +> **renderHoles**: `boolean` + +Whether to render the holes of the highlighted area. + +##### Default + +```ts +false +``` + +#### opacity + +> **opacity**: `number` + +The opacity of the highlighter, between 0 and 1. + +##### Default + +```ts +0.5 +``` + +#### size + +> **size**: `number` + +## TextToolSettings + +### Properties + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### align + +> **align**: `"center"` | `"left"` | `"right"` + +The alignment of the text, either `left`, `center` or `right`. + +##### Default + +```ts +"center" +``` + +#### style + +> **style**: `"italic"` | `"light"` | `"regular"` | `"caps"` + +The style of the text, either `italic`, `light`, `regular` or `caps`. + +##### Default + +```ts +"regular" +``` + +## NoteToolSettings + +### Properties + +#### color + +> **color**: `string` + +The color of the element in some CSS-like format. + +##### Example + +```typescript +"#ABC123"; +"rgb(255, 0, 0)"; +"hsl(200, 100%, 50%)"; +``` + +##### Default + +```ts +"#C93535" +``` + +#### align + +> **align**: `"center"` | `"left"` | `"right"` + +The alignment of the text, either `left`, `center` or `right`. + +##### Default + +```ts +"center" +``` + +#### style + +> **style**: `"italic"` | `"light"` | `"regular"` | `"caps"` + +The style of the text, either `italic`, `light`, `regular` or `caps`. + +##### Default + +```ts +"regular" +``` + +## AddPanelInput + +The input for adding a panel to the map by using [UiController.addPanel](client.md#addpanel). + +### Properties + +#### panel + +> **panel**: [`UIPanelInput`](client.md#uipanelinput) + +The panel to add. + +#### placement? + +> `optional` **placement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } + +The placement of the panel on the right sidebar stack. + +##### Default Value + +`{ at: "end" }` + +## UpdatePanelElementInput + +### Properties + +#### id + +> **id**: `string` + +#### type? + +> `optional` **type**: `"Panel"` + +#### onCreate()? + +> `optional` **onCreate**: (...`args`) => `void` + +##### Parameters + +##### args + +...`unknown`\[] + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (...`args`) => `void` + +##### Parameters + +##### args + +...`unknown`\[] + +##### Returns + +`void` + +#### title? + +> `optional` **title**: `string` + +#### onClose()? + +> `optional` **onClose**: (...`args`) => `void` + +##### Parameters + +##### args + +...`unknown`\[] + +##### Returns + +`void` + +#### items? + +> `optional` **items**: [`UIPanelElementsInput`](client.md#uipanelelementsinput)\[] + +#### footer? + +> `optional` **footer**: [`UIPanelElementsInput`](client.md#uipanelelementsinput)\[] + +## AddPanelElementsInput + +### Properties + +#### panelId + +> **panelId**: `string` + +#### elements + +> **elements**: `object`\[] + +##### element + +> **element**: [`UIFlexibleSpaceElementInput`](client.md#uiflexiblespaceelementinput) | [`UIPanelElementsInput`](client.md#uipanelelementsinput) + +##### on? + +> `optional` **on**: `"footer"` | `"items"` | \{ `id`: `string`; } + +The section of the panel to add the element to. +It can be either one of the top-level sections of the panel (`"items"` or `"footer"`) +or a specific container (like `ButtonGroup`) in the panel (`{ id: string }`). + +##### Default Value + +`"items"` + +##### placement? + +> `optional` **placement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } + +The placement of the element in the target container (based on the `on` property). + +##### Default Value + +`{ at: "end" }` + +## UpdatePanelElementsInput + +### Properties + +#### panelId + +> **panelId**: `string` + +The ID of the panel to update. + +#### elements + +> **elements**: `Record`\<`string`, [`UIFlexibleSpaceElementInput`](client.md#uiflexiblespaceelementinput) | [`UIPanelElementsInput`](client.md#uipanelelementsinput)> + +Dictionary of element IDs to the element to update. + +## DeletePanelElements + +### Properties + +#### panelId + +> **panelId**: `string` + +#### elements + +> **elements**: `string`\[] + +## UiControlsOptions + +### Properties + +#### showLegend? + +> `optional` **showLegend**: `boolean` + +Whether or not the legend is shown. + +##### Default Value + +```ts +true +``` + +#### cooperativeGestures? + +> `optional` **cooperativeGestures**: `boolean` + +When co-operative gestures are enabled, the pan and zoom gestures are +adjusted to work better when the map is embedded in another page. + +##### Remarks + +On mobile devices, enabling co-operative gestures will allow the user to +pan past the embedded map with a single finger drag. To pan the map, they +must use two fingers. + +On desktop devices, enabling co-operative gestures allows the user to +scroll past the embedded map using their scroll wheel or trackpad. To +zoom the map, they must hold the Ctrl (Windows) or Command key (Mac) while +scrolling. + +##### Default Value + +```ts +true +``` + +#### fullScreenButton? + +> `optional` **fullScreenButton**: `boolean` + +Whether or not the full screen button is shown in an embedded map. + +##### Remarks + +When clicked, this will open the map in a new tab or window. + +##### Default Value + +```ts +true +``` + +#### geolocation? + +> `optional` **geolocation**: `boolean` + +Whether or not the geolocation button is shown in an embedded map. + +##### Remarks + +The geolocation feature will plot your position on the map. If you +click the button again, it will start tracking your position. + +##### Default Value + +```ts +false +``` + +#### zoomControls? + +> `optional` **zoomControls**: `boolean` + +Whether or not the zoom controls are shown in an embedded map. + +##### Remarks + +This does not affect whether or not the map can be zoomed, just +the display of the zoom controls in the bottom right corner of the map. + +##### Default Value + +```ts +true +``` + +#### scaleBar? + +> `optional` **scaleBar**: `boolean` + +Whether or not the scale bar is shown in an embedded map. + +##### Default Value + +```ts +true +``` + +## OnMapInteractionsOptions + +The options for which parts of the Felt UI can be shown when interacting with +features and elements on the map. + +Switching these off can be useful if you add your own click, selection or hover +handlers for features and elements. + +### Properties + +#### featureSelectPanel? + +> `optional` **featureSelectPanel**: `boolean` + +Set this to `false` to prevent the panel that shows information about a selected +feature from being shown. + +#### featureHoverPanel? + +> `optional` **featureHoverPanel**: `boolean` + +Set this to `false` to prevent the panel that shows information about a hovered +feature from being shown. + +#### elementSelectPanel? + +> `optional` **elementSelectPanel**: `boolean` + +Set this to `false` to prevent the panel that shows information about a selected +element from being shown. + +#### linkClickOpen? + +> `optional` **linkClickOpen**: `boolean` + +Set this to `false` to prevent clicking on a map link element from opening that link +in a new tab or window. + +#### imageLightboxOpen? + +> `optional` **imageLightboxOpen**: `boolean` + +Set this to `false` to prevent clicking on an image element from opening the image +in a lightbox. + +## UIButtonElementInput + +Represents a button element in a panel. + +### Properties + +#### type + +> **type**: `"Button"` + +#### label + +> **label**: `string` + +The label to display in the button. + +#### onClick() + +> **onClick**: () => `void` + +Event handler for when the button is clicked. + +##### Returns + +`void` + +#### variant? + +> `optional` **variant**: `"primary"` | `"outlined"` | `"transparent"` | `"transparentThin"` + +The style variant of the button. + +* `"primary"`: A solid button with Felt's primary background color (pink). +* `"outlined"`: A button with a border and no background color. +* `"transparent"`: A button with no background color and no border. +* `"transparentThin"`: Same as `transparent` but with lighter font weight. + +##### Default Value + +`"primary"` + +#### disabled? + +> `optional` **disabled**: `boolean` + +Whether the button is disabled. + +##### Default Value + +`false` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +## UIButtonGroupElementInput + +Represents a button group element in a panel. + +### Remarks + +This element is used to group buttons and text elements together. + +### Properties + +#### type + +> **type**: `"ButtonGroup"` + +#### items + +> **items**: ([`UIButtonElementInput`](client.md#uibuttonelementinput) | [`UITextElementInput`](client.md#uitextelementinput) | [`UIFlexibleSpaceElementInput`](client.md#uiflexiblespaceelementinput))\[] + +#### align? + +> `optional` **align**: `"start"` | `"end"` + +The alignment of the button group. + +##### Default Value + +`"start"` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +## UIDividerElementInput + +Represents a divider element in a panel. + +### Remarks + +This element is used to separate other elements in a panel. + +### Properties + +#### type + +> **type**: `"Divider"` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +## UIFlexibleSpaceElementInput + +Only accepted for [UIButtonGroupElementInput](client.md#uibuttongroupelementinput) elements. + +### Properties + +#### type + +> **type**: `"FlexibleSpace"` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +## UIPanelInput + +The input panel to add to the map by using the [UiController.addPanel](client.md#addpanel) method. + +### Remarks + +For the sake of convenience, the `id` of the panel and its elements are optional, +but it is recommended to provide them if you want to be able to perform updates. + +### Properties + +#### items + +> **items**: [`UIPanelElementsInput`](client.md#uipanelelementsinput)\[] + +The elements to add to the panel body. + +#### type? + +> `optional` **type**: `"Panel"` + +#### title? + +> `optional` **title**: `string` + +The title to display in the panel header. + +#### footer? + +> `optional` **footer**: [`UIPanelElementsInput`](client.md#uipanelelementsinput)\[] + +The elements to add to the panel footer. + +#### onClose()? + +> `optional` **onClose**: () => `void` + +A function to call when panel's close button is clicked. + +##### Returns + +`void` + +#### onCreate()? + +> `optional` **onCreate**: (...`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +...`unknown`\[] + +This function doesn't receive any parameters + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (...`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +...`unknown`\[] + +This function doesn't receive any parameters + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +## UISelectElementInput + +Represents a selector element in a panel. + +### Remarks + +This element is used to select a single option from a list of options. + +### Properties + +#### type + +> **type**: `"Select"` + +#### options + +> **options**: `object`\[] + +##### label + +> **label**: `string` + +##### value + +> **value**: `string` + +#### onChange() + +> **onChange**: (`args`) => `void` + +Event handler for when the value of the select changes. + +##### Parameters + +##### args + +##### value + +`string` + +The new value of the select. + +##### Returns + +`void` + +#### value? + +> `optional` **value**: `string` + +#### search? + +> `optional` **search**: `boolean` + +#### placeholder? + +> `optional` **placeholder**: `string` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## UITextElementInput + +Represents a text element in a panel. + +### Properties + +#### type + +> **type**: `"Text"` + +#### content + +> **content**: `string` + +The text to display in the element. + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +## UITextInputElementInput + +Represents a text input element. + +### Properties + +#### type + +> **type**: `"TextInput"` + +#### value + +> **value**: `string` + +The value of the input. Use `""` for empty values. + +#### placeholder? + +> `optional` **placeholder**: `string` + +The placeholder text to display in the input. + +#### onChange()? + +> `optional` **onChange**: (`args`) => `void` + +Event handler for when the value of the input changes. + +##### Parameters + +##### args + +##### value + +`string` + +The new value of the input. + +##### Returns + +`void` + +#### onBlur()? + +> `optional` **onBlur**: (`args`) => `void` + +Event handler for when the input loses focus. + +##### Parameters + +##### args + +##### value + +`string` + +The input value when the input loses focus. + +##### Returns + +`void` + +#### onFocus()? + +> `optional` **onFocus**: (`args`) => `void` + +Event handler for when the input gains focus. + +##### Parameters + +##### args + +##### value + +`string` + +The input value when the input gains focus. + +##### Returns + +`void` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## ViewportCenterZoom + +The input type for setting the viewport to a particular center and zoom. + +### Properties + +#### center + +> **center**: [`LatLng`](client.md#latlng) + +The center of the viewport in latitude and longitude. + +#### zoom + +> **zoom**: `number` + +The zoom level of the viewport. + +## ViewportState + +The current state of the viewport, including the derived bounds. + +### Properties + +#### center + +> **center**: [`LatLng`](client.md#latlng) + +The center of the viewport in latitude and longitude. + +[LatLng](client.md#latlng) + +#### zoom + +> **zoom**: `number` + +The zoom level of the viewport. + +[FeltZoom](client.md#feltzoom) + +#### bounds + +> **bounds**: \[`number`, `number`, `number`, `number`] + +The bounding box of the viewport in \[west, south, east, north] order. + +This is derived, and depends on the center and zoom of the viewport, as +well as its size. + +[FeltBoundary](client.md#feltboundary) + +## SetViewportCenterZoomParams + +The parameters for the ViewportController.setViewport | \`setViewport\` method. + +### Properties + +#### center? + +> `optional` **center**: `object` + +##### latitude + +> **latitude**: `number` = `Latitude` + +##### longitude + +> **longitude**: `number` = `Longitude` + +#### zoom? + +> `optional` **zoom**: `number` + +## ViewportConstraints + +The constraints for the viewport. Used to ensure that the viewport stays +within certain bounds and zoom levels. + +### Properties + +#### minZoom + +> **minZoom**: `null` | `number` + +The minimum zoom level for the viewport. + +[FeltZoom](client.md#feltzoom) + +#### maxZoom + +> **maxZoom**: `null` | `number` + +The maximum zoom level for the viewport. + +[FeltZoom](client.md#feltzoom) + +#### bounds + +> **bounds**: `null` | \[`number`, `number`, `number`, `number`] + +The bounds for the viewport. + +[FeltBoundary](client.md#feltboundary) + +## ViewportFitBoundsParams + +The parameters for the ViewportController.fitViewportToBounds | \`fitViewportToBounds\` method. + +### Properties + +#### bounds + +> **bounds**: \[`number`, `number`, `number`, `number`] + +The bounds to fit the viewport to. + +[FeltBoundary](client.md#feltboundary) + +## ElementCreate + +> **ElementCreate**: [`PlaceElementCreate`](client.md#placeelementcreate) | [`PathElementCreate`](client.md#pathelementcreate) | [`PolygonElementCreate`](client.md#polygonelementcreate) | [`CircleElementCreate`](client.md#circleelementcreate) | [`MarkerElementCreate`](client.md#markerelementcreate) | [`HighlighterElementCreate`](client.md#highlighterelementcreate) | [`ImageElementCreate`](client.md#imageelementcreate) | [`TextElementCreate`](client.md#textelementcreate) | [`NoteElementCreate`](client.md#noteelementcreate) + +## ElementUpdate + +> **ElementUpdate**: [`PlaceElementUpdate`](client.md#placeelementupdate) | [`PathElementUpdate`](client.md#pathelementupdate) | [`PolygonElementUpdate`](client.md#polygonelementupdate) | [`CircleElementUpdate`](client.md#circleelementupdate) | [`MarkerElementUpdate`](client.md#markerelementupdate) | [`HighlighterElementUpdate`](client.md#highlighterelementupdate) | [`TextElementUpdate`](client.md#textelementupdate) | [`NoteElementUpdate`](client.md#noteelementupdate) | [`ImageElementUpdate`](client.md#imageelementupdate) + +## Element + +> **Element**: [`PlaceElementRead`](client.md#placeelementread) | [`PathElementRead`](client.md#pathelementread) | [`PolygonElementRead`](client.md#polygonelementread) | [`CircleElementRead`](client.md#circleelementread) | [`MarkerElementRead`](client.md#markerelementread) | [`HighlighterElementRead`](client.md#highlighterelementread) | [`TextElementRead`](client.md#textelementread) | [`NoteElementRead`](client.md#noteelementread) | [`ImageElementRead`](client.md#imageelementread) | [`LinkElementRead`](client.md#linkelementread) + +## FilterLogicGate + +> **FilterLogicGate**: `"and"` | `"or"` + +## FilterExpression + +> **FilterExpression**: \[`null` | `string`, `"in"` | `"ni"`, `null` | (`null` | `string` | `number` | `boolean`)\[]] | \[`null` | `string`, `"lt"` | `"gt"` | `"le"` | `"ge"` | `"eq"` | `"ne"` | `"cn"` | `"nc"` | `"is"` | `"isnt"`, `null` | `string` | `number` | `boolean`] + +## FilterTernary + +> **FilterTernary**: \[[`FilterTernary`](client.md#filterternary) | [`FilterExpression`](client.md#filterexpression) | `null` | `boolean`, [`FilterLogicGate`](client.md#filterlogicgate), [`FilterTernary`](client.md#filterternary) | [`FilterExpression`](client.md#filterexpression) | `null` | `boolean`] + +A `FilterTernary` is a tree structure for combining expressions with logical operators. + +When combining three or more conditions, you must use proper nesting rather than a flat list. + +### Example + +```typescript +// A simple filter with a single condition +const filter = [ + ["AREA", "gt", 30_000], + "and", + ["COLOR", "eq", "red"] +] + +// A complex filter with multiple conditions +const filter = [ + ["AREA", "gt", 30_000], + "and", + [ + ["COLOR", "eq", "red"], + "or", + ["TYPE", "eq", "residential"] + ] +] +``` + +## Filters + +> **Filters**: [`FilterTernary`](client.md#filterternary) | [`FilterExpression`](client.md#filterexpression) | `null` | `boolean` + +Filters can be used to change which features in a layer are rendered. Filters can be +applied to a layer by the LayersController.setLayerFilters | \`setLayerFilters\` method on the Felt controller. + +Filters use a tree structure for combining expressions with logical operators, called a +[FilterTernary](client.md#filterternary). When combining three or more conditions, you must use proper nesting +rather than a flat list. + +See the examples below for the correct structure to use when building complex filters. + +### Remarks + +The possible operators are: + +* `lt`: Less than +* `gt`: Greater than +* `le`: Less than or equal to +* `ge`: Greater than or equal to +* `eq`: Equal to +* `ne`: Not equal to +* `cn`: Contains +* `nc`: Does not contain + +The allowed boolean operators are: + +* `and`: Logical AND +* `or`: Logical OR + +### Example + +```typescript +// 1. Simple filter: single condition +felt.setLayerFilters({ + layerId: "layer-1", + filters: ["AREA", "gt", 30_000], +}); + +// 2. Basic compound filter: two conditions with AND +felt.setLayerFilters({ + layerId: "layer-1", + filters: [ + ["AREA", "gt", 30_000], // First condition + "and", // Logic operator + ["COLOR", "eq", "red"] // Second condition + ] +}); + +// 3. Complex filter: three or more conditions require nesting +// ⚠️ IMPORTANT: Filters use a tree structure, not a flat list +felt.setLayerFilters({ + layerId: "layer-1", + filters: [ + ["AREA", "gt", 30_000], // First condition + "and", // First logic operator + [ // Nested group starts + ["COLOR", "eq", "red"], // Second condition + "and", // Second logic operator + ["TYPE", "eq", "residential"] // Third condition + ] // Nested group ends + ] +}); + +// 4. Even more complex: four conditions with proper nesting +// Visual structure: +// AND +// / \ +// condition AND +// / \ +// condition AND +// / \ +// condition condition +felt.setLayerFilters({ + layerId: "layer-1", + filters: [ + ["AREA", "gt", 30_000], // First condition + "and", + [ + ["COLOR", "eq", "red"], // Second condition + "and", + [ + ["TYPE", "eq", "residential"], // Third condition + "and", + ["YEAR", "gt", 2000] // Fourth condition + ] + ] + ] +}); + +// 5. Mixed operators: combining AND and OR +// Visual structure: +// AND +// / \ +// condition OR +// / \ +// condition condition +felt.setLayerFilters({ + layerId: "layer-1", + filters: [ + ["AREA", "gt", 30_000], // Must have large area + "and", + [ + ["COLOR", "eq", "red"], // Must be either red + "or", + ["TYPE", "eq", "residential"] // OR residential type + ] + ] +}); +``` + +## GeometryFilter + +> **GeometryFilter**: [`FeltBoundary`](client.md#feltboundary) | [`PolygonGeometry`](client.md#polygongeometry) | [`MultiPolygonGeometry`](client.md#multipolygongeometry) | [`LngLatTuple`](client.md#lnglattuple)\[] + +The common type for filtering data by a spatial boundary. + +This can be either: + +* `FeltBoundary`: a \[w, s, e, n] bounding box +* `PolygonGeometry`: a GeoJSON Polygon geometry +* `MultiPolygonGeometry`: a GeoJSON MultiPolygon geometry +* `LngLatTuple[]`: a list of coordinates describing a single ring of a polygon + +## AggregationMethod + +> **AggregationMethod**: `"avg"` | `"max"` | `"min"` | `"sum"` | `"median"` + +The method to use for the aggregation. + +## PrecomputedAggregationMethod + +> **PrecomputedAggregationMethod**: `"avg"` | `"max"` | `"min"` | `"sum"` | `"count"` + +The method to use for the precomputed aggregation. + +## GridType + +> **GridType**: `"h3"` + +The type of grid to use for precomputed aggregate values. + +## GridConfig + +> **GridConfig**: [`CountGridConfig`](client.md#countgridconfig) | [`AggregatedGridConfig`](client.md#aggregatedgridconfig) + +Describes the type of grid to use for precomputed aggregate values. + +## LayerProcessingStatus + +> **LayerProcessingStatus**: `"processing"` | `"completed"` | `"failed"` | `"incomplete"` + +This describes the processing status of a layer. + +The various values are: + +* `processing`: The layer has been uploaded or updated and is still processing. +* `completed`: The layer has been processed and can be viewed on the map. +* `failed`: The layer failed to process and cannot be viewed on the map. +* `incomplete`: The layer has not been processed. + +## Layer + +> **Layer**: [`RasterLayer`](client.md#rasterlayer) | [`VectorLayer`](client.md#vectorlayer) | [`DataOnlyLayer`](client.md#dataonlylayer) + +## FeltTiledVectorSource + +> **FeltTiledVectorSource**: `object` + +A tiled vector source is a layer that is populated from data the has been uploaded +to Felt, and processed into vector tiles. + +### Type declaration + +#### type + +> **type**: `"felt"` + +Identifies this as a tiled vector source. Typically, these tiles will have been +uploaded to and processed by Felt. + +#### tileTemplateUrl + +> **tileTemplateUrl**: `string` + +The template URL used for fetching tiles. + +## LayerSchemaAttribute + +> **LayerSchemaAttribute**: [`LayerSchemaNumericAttribute`](client.md#layerschemanumericattribute) | [`LayerSchemaTextAttribute`](client.md#layerschematextattribute) | [`LayerSchemaBooleanAttribute`](client.md#layerschemabooleanattribute) | [`LayerSchemaDateAttribute`](client.md#layerschemadateattribute) | [`LayerSchemaDateTimeAttribute`](client.md#layerschemadatetimeattribute) + +A single attribute from the layer schema. + +### Remarks + +Each feature in a layer has a set of attributes, and these types describe the +structure of a single attribute, including things like id, display name, type, and sample values. + +## MapDetails + +> **MapDetails**: `object` + +The details of a map. + +### Type declaration + +#### id + +> **id**: `string` + +The id of the map. + +#### title + +> **title**: `string` + +The title of the map. + +#### description + +> **description**: `string` | `null` + +The description of the map. + +## EntityNode + +> **EntityNode**: [`ElementNode`](client.md#elementnode) | [`ElementGroupNode`](client.md#elementgroupnode) | [`LayerNode`](client.md#layernode) | [`LayerGroupNode`](client.md#layergroupnode) | [`FeatureNode`](client.md#featurenode) + +A reference to any kind of entity in the map. + +### Remarks + +EntityNodes are used when you have some collection of entities and you need to + +## LngLatTuple + +> **LngLatTuple**: \[`number`, `number`] + +A tuple representing a longitude and latitude coordinate. + +This is used hen serializing geometry because that's the standard used in +GeoJSON. + +## GeoJsonProperties + +> **GeoJsonProperties**: `Record`\<`string`, `unknown`> + +A GeoJSON properties object. + +## GeoJsonGeometry + +> **GeoJsonGeometry**: [`PointGeometry`](client.md#pointgeometry) | [`PolygonGeometry`](client.md#polygongeometry) | [`LineStringGeometry`](client.md#linestringgeometry) | [`MultiLineStringGeometry`](client.md#multilinestringgeometry) | [`MultiPolygonGeometry`](client.md#multipolygongeometry) | [`MultiPointGeometry`](client.md#multipointgeometry) + +A GeoJSON geometry of any type + +## FeltZoom + +> **FeltZoom**: `number` + +The zoom level of the map. + +It is a floating-point number between 1 and 23, where 1 is the most +zoomed out and 23 is the most zoomed in. + +## FeltBoundary + +> **FeltBoundary**: \[`number`, `number`, `number`, `number`] + +The edges of the map in the form of a bounding box. + +The boundary is a tuple of the form `[west, south, east, north]`. + +## SortDirection + +> **SortDirection**: `"asc"` | `"desc"` + +Specifies the direction to sort data in + +## ToolType + +> **ToolType**: `"circle"` | `"highlighter"` | `"line"` | `"link"` | `"marker"` | `"note"` | `"pin"` | `"polygon"` | `"route"` | `"text"` + +## ConfigurableToolType + +> **ConfigurableToolType**: `Exclude`\<[`ToolType`](client.md#tooltype), `"link"`> + +## InputToolSettings + +> **InputToolSettings**: `object` & `Partial`\<[`PinToolSettings`](client.md#pintoolsettings)> | `object` & `Partial`\<[`LineToolSettings`](client.md#linetoolsettings)> | `object` & `Partial`\<[`RouteToolSettings`](client.md#routetoolsettings)> | `object` & `Partial`\<[`PolygonToolSettings`](client.md#polygontoolsettings)> | `object` & `Partial`\<[`CircleToolSettings`](client.md#circletoolsettings)> | `object` & `Partial`\<[`MarkerToolSettings`](client.md#markertoolsettings)> | `object` & `Partial`\<[`HighlighterToolSettings`](client.md#highlightertoolsettings)> | `object` & `Partial`\<[`TextToolSettings`](client.md#texttoolsettings)> | `object` & `Partial`\<[`NoteToolSettings`](client.md#notetoolsettings)> + +The parameters for changing the settings of each tool. + +## ToolSettingsChangeEvent + +> **ToolSettingsChangeEvent**: `object` & [`PinToolSettings`](client.md#pintoolsettings) | `object` & [`LineToolSettings`](client.md#linetoolsettings) | `object` & [`RouteToolSettings`](client.md#routetoolsettings) | `object` & [`PolygonToolSettings`](client.md#polygontoolsettings) | `object` & [`CircleToolSettings`](client.md#circletoolsettings) | `object` & [`MarkerToolSettings`](client.md#markertoolsettings) | `object` & [`HighlighterToolSettings`](client.md#highlightertoolsettings) | `object` & [`TextToolSettings`](client.md#texttoolsettings) | `object` & [`NoteToolSettings`](client.md#notetoolsettings) + +The result of listening for changes to the settings of each tool. + +## ToolSettingsMap + +> **ToolSettingsMap**: `object` + +### Type declaration + +#### pin + +> **pin**: [`PinToolSettings`](client.md#pintoolsettings) + +#### line + +> **line**: [`LineToolSettings`](client.md#linetoolsettings) + +#### route + +> **route**: [`RouteToolSettings`](client.md#routetoolsettings) + +#### polygon + +> **polygon**: [`PolygonToolSettings`](client.md#polygontoolsettings) + +#### circle + +> **circle**: [`CircleToolSettings`](client.md#circletoolsettings) + +#### marker + +> **marker**: [`MarkerToolSettings`](client.md#markertoolsettings) + +#### highlighter + +> **highlighter**: [`HighlighterToolSettings`](client.md#highlightertoolsettings) + +#### text + +> **text**: [`TextToolSettings`](client.md#texttoolsettings) + +#### note + +> **note**: [`NoteToolSettings`](client.md#notetoolsettings) + +## PlaceFrame + +> **PlaceFrame**: `"frame-circle"` | `"frame-square"` | `null` + +## PlaceSymbol + +> **PlaceSymbol**: `"dot"` | `"square"` | `"diamond"` | `"triangle"` | `"x"` | `"plus"` | `"circle-line"` | `"circle-slash"` | `"star"` | `"heart"` | `"hexagon"` | `"octagon"` | `"pedestrian"` | `"bicycle"` | `"wheelchair"` | `"airport"` | `"car"` | `"bus"` | `"train"` | `"truck"` | `"ferry"` | `"sailboat"` | `"electric-service"` | `"gas-service"` | `"blood-clinic"` | `"badge"` | `"traffic-light"` | `"traffic-cone"` | `"road-sign-caution"` | `"person"` | `"restroom"` | `"house"` | `"work"` | `"letter"` | `"hotel"` | `"factory"` | `"hospital"` | `"religious-facility"` | `"school"` | `"government"` | `"university"` | `"bank"` | `"landmark"` | `"museum"` | `"clothing"` | `"shopping"` | `"store"` | `"bar"` | `"pub"` | `"cafe"` | `"food"` | `"park"` | `"amusement-park"` | `"camping-tent"` | `"cabin"` | `"picnic"` | `"water-refill"` | `"trailhead"` | `"guidepost"` | `"viewpoint"` | `"camera"` | `"us-football"` | `"football"` | `"tennis"` | `"binoculars"` | `"swimming"` | `"zap"` | `"battery-full"` | `"battery-half"` | `"battery-low"` | `"boom"` | `"radar"` | `"wind-turbine"` | `"solar-panel"` | `"antenna"` | `"telephone-pole"` | `"oil-well"` | `"oil-barrel"` | `"railroad-track"` | `"bridge"` | `"lighthouse"` | `"lock-closed"` | `"lock-open"` | `"wifi"` | `"trash"` | `"recycle"` | `"tree"` | `"flower"` | `"leaf"` | `"fire"` | `"mountain"` | `"snowy-mountain"` | `"volcano"` | `"island"` | `"wave"` | `"hot-springs"` | `"water"` | `"lake"` | `"ocean"` | `"animal"` | `"bird"` | `"duck"` | `"dog"` | `"fish"` | `"beach"` | `"wetland"` | `"sun"` | `"moon"` | `"cloud"` | `"partial-sun"` | `"rain"` | `"lightning"` | `"snowflake"` | `"wind"` | `"snow"` | `"fog"` | `"sleet"` | `"hurricane"` | `"warning"` | `"parking"` | `"info"` | `"circle-exclamation"` | `"circle-triangle"` | `"circle-x"` | `"circle-plus"` | `` `:${string}:` `` & `object` + +## UIPanelElementsInput + +> **UIPanelElementsInput**: [`UITextElementInput`](client.md#uitextelementinput) | [`UIButtonElementInput`](client.md#uibuttonelementinput) | [`UITextInputElementInput`](client.md#uitextinputelementinput) | [`UIDividerElementInput`](client.md#uidividerelementinput) | [`UIButtonGroupElementInput`](client.md#uibuttongroupelementinput) | [`UISelectElementInput`](client.md#uiselectelementinput) + +This is a union of all the possible elements that can be added to a panel. + +### Remarks + +For the sake of convenience, `id` is optional but recommended if you want to be able to +perform updates. + +## PlacementForUIElement + +> **PlacementForUIElement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } + +Used in [UiController.addPanel](client.md#addpanel) to specify the position of a panel in the stack +and in [UiController.addPanelElements](client.md#addpanelelements) to specify the position of an element in a panel. + +In both cases, the default value is `{ at: "end" }`. + +## Felt + +> `const` **Felt**: `object` + +The Felt SDK is a library for embedding Felt maps into your website, +allowing you to control and inspect the map programmatically. + +### Type declaration + +#### embed() + +Embeds a Felt map into the provided container, returning a promise that resolves +to a [FeltController](client.md#feltcontroller) object that you can use to control the map. + +##### Parameters + +##### container + +`HTMLElement` + +The container element to embed the map into. + +##### mapId + +`string` + +The ID of the map to embed. + +##### options? + +[`FeltEmbedOptions`](client.md#feltembedoptions) + +The options to configure the map. + +##### Returns + +`Promise`\<[`FeltController`](client.md#feltcontroller)> + +A promise for a [FeltController](client.md#feltcontroller). + +#### connect() + +Binds to an existing Felt map iframe. + +##### Parameters + +##### feltWindow + +`Pick`\<`Window`, `"postMessage"`> + +The iframe element containing the Felt map. + +##### Returns + +`Promise`\<[`FeltController`](client.md#feltcontroller)> + +# Visibility + +## SetVisibilityRequest + +The parameters for the methods that change the visibility of entities. + +### Properties + +#### show? + +> `optional` **show**: `string`\[] + +The ids of the entities you want to change the visibility of. + +#### hide? + +> `optional` **hide**: `string`\[] diff --git a/minimalTheme.mjs b/minimalTheme.mjs new file mode 100644 index 00000000..7fd38e91 --- /dev/null +++ b/minimalTheme.mjs @@ -0,0 +1,76 @@ +import { MarkdownTheme, MarkdownThemeContext } from "typedoc-plugin-markdown"; + +/** + * @param {import('typedoc-plugin-markdown').MarkdownApplication} app + */ +export function load(app) { + app.renderer.defineTheme("customTheme", MyMarkdownTheme); +} + +class MyMarkdownTheme extends MarkdownTheme { + render(page, template) { + const defaultValue = super.render(page, template); + if ( + page.filename.endsWith("CHANGELOG.md") || + page.filename.endsWith("docs/README.md") + ) { + return defaultValue; + } else { + // Remove extra newlines and simplify headers + return defaultValue + .replace(/^##/gm, "#") + .replace(/\n{3,}/g, "\n\n") + .replace(/\*\*\*\n/g, ""); + } + } + + getRenderContext(page) { + return new MyMarkdownThemeContext(this, page, this.application.options); + } + + // this puts all the docs just inside their module directory, not nested for types, interfaces, etc. + getTemplateMapping(kind) { + const prev = super.getTemplateMapping(kind); + if (!prev) return prev; + prev.directory = "."; + + return prev; + } +} + +class MyMarkdownThemeContext extends MarkdownThemeContext { + _oldPartials = this.partials; + + // customise partials + partials = { + ...this.partials, + // Simplify hierarchy display + hierarchy: (model, options) => { + if (model.types[0].qualifiedName.endsWith("Controller")) { + return this._oldPartials.hierarchy(model, options); + } + }, + // Remove inheritance section + inheritance: () => {}, + // Simplify property display + property: (model, options) => { + const defaultValue = this._oldPartials.property(model, options); + if (!defaultValue) return defaultValue; + + // Remove redundant property descriptions and simplify format + return defaultValue + .replace(/>\s*\*\*([^*]+)\*\*:\s*`([^`]+)`/g, "**$1**: `$2`") + .replace(/\n{3,}/g, "\n\n") + .replace(/\*\*\*\n/g, ""); + }, + // Simplify type display + type: (model, options) => { + const defaultValue = this._oldPartials.type(model, options); + if (!defaultValue) return defaultValue; + + return defaultValue + .replace(/\n{3,}/g, "\n\n") + .replace(/\*\*\*\n/g, ""); + } + }; +} diff --git a/package.json b/package.json index 2f906d39..1acbcb0c 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,8 @@ "scripts": { "build:compile": "tsup && ./scripts/dtsroll.sh", "build:docs": "typedoc", + "build:docs-minimal": "typedoc --options typedoc-minimal.json", + "build:docs-llm": "tsx scripts/process-docs.ts", "build": "npm run build:compile && npm run build:docs", "changeset": "changeset", "check:api": "npm run build:compile && attw --pack . --profile node16 && api-extractor run", diff --git a/src/modules/elements/index.ts b/src/modules/elements/index.ts index d1610dd6..7c7d2a4a 100644 --- a/src/modules/elements/index.ts +++ b/src/modules/elements/index.ts @@ -50,6 +50,6 @@ export type { TextElementUpdate, } from "./types"; -export type { ElementsController } from "./controller"; +// export type { ElementsController } from "./controller"; import type { ToolsController } from "../tools"; diff --git a/src/modules/interactions/index.ts b/src/modules/interactions/index.ts index 005acdc7..10611761 100644 --- a/src/modules/interactions/index.ts +++ b/src/modules/interactions/index.ts @@ -7,4 +7,4 @@ */ export type { MapInteractionEvent } from "./types"; -export type { InteractionsController } from "./controller"; +// export type { InteractionsController } from "./controller"; diff --git a/src/modules/layers/features/types.ts b/src/modules/layers/features/types.ts index e0406e1e..5ac43d06 100644 --- a/src/modules/layers/features/types.ts +++ b/src/modules/layers/features/types.ts @@ -1,6 +1,6 @@ -import type { LayersController } from "~/modules/layers"; +import type { LayersController } from "~/modules/layers/controller"; import type { FeltController } from "~/modules/main/controller"; -import type { SelectionController } from "~/modules/selection"; +import type { SelectionController } from "~/modules/selection/controller"; import type { FeltBoundary, GeoJsonFeature, diff --git a/src/modules/layers/index.ts b/src/modules/layers/index.ts index 7fd284aa..07d375cb 100644 --- a/src/modules/layers/index.ts +++ b/src/modules/layers/index.ts @@ -84,4 +84,4 @@ export type { ValueConfiguration, } from "./stats/types"; -export type { LayersController } from "./controller"; +// export type { LayersController } from "./controller"; diff --git a/src/modules/misc/index.ts b/src/modules/misc/index.ts index 6f803fb3..c8c2dcb9 100644 --- a/src/modules/misc/index.ts +++ b/src/modules/misc/index.ts @@ -5,4 +5,4 @@ */ export type { MapDetails } from "./types"; -export type { MiscController } from "./controller"; +// export type { MiscController } from "./controller"; diff --git a/src/modules/selection/index.ts b/src/modules/selection/index.ts index 3a4dc2d4..76b664df 100644 --- a/src/modules/selection/index.ts +++ b/src/modules/selection/index.ts @@ -11,4 +11,4 @@ export type { LayerNode, } from "./types"; -export type { SelectionController } from "./controller"; +// export type { SelectionController } from "./controller"; diff --git a/src/modules/tools/index.ts b/src/modules/tools/index.ts index 9aa3ccf0..7e04a3e4 100644 --- a/src/modules/tools/index.ts +++ b/src/modules/tools/index.ts @@ -46,4 +46,4 @@ export type { export type { ToolsController } from "./controller"; -import type { ElementsController } from "../elements"; +// import type { ElementsController } from "../elements"; diff --git a/src/modules/ui/index.ts b/src/modules/ui/index.ts index 02f178d2..19413a61 100644 --- a/src/modules/ui/index.ts +++ b/src/modules/ui/index.ts @@ -103,9 +103,11 @@ export type { UIControlElementOption } from "./uiElements/base"; export type { UIActionTriggerCreate } from "./uiElements/UIActionTrigger"; + export type { UIFeatureAction as uiFeatureAction, UIFeatureActionCreate as uiFeatureActionCreate, } from "./uiElements/UIFeatureAction"; -export type { UiController } from "./controller"; + +// export type { UiController } from "./controller"; diff --git a/src/modules/viewport/index.ts b/src/modules/viewport/index.ts index 93b9410e..f6c982e8 100644 --- a/src/modules/viewport/index.ts +++ b/src/modules/viewport/index.ts @@ -12,4 +12,4 @@ export type { ViewportState, } from "./types"; -export type { ViewportController } from "./controller"; +// export type { ViewportController } from "./controller"; diff --git a/typedoc-minimal.json b/typedoc-minimal.json new file mode 100644 index 00000000..11b39a39 --- /dev/null +++ b/typedoc-minimal.json @@ -0,0 +1,50 @@ +{ + "$schema": "https://typedoc-plugin-markdown.org/schema.json", + "disableSources": true, + "out": "./docs-minimal", + "entryPoints": ["src/client.ts"], + "sort": ["kind", "required-first", "source-order"], + "plugin": [ + "typedoc-plugin-zod", + "typedoc-plugin-markdown", + "typedoc-plugin-remark", + "./minimalTheme.mjs" + ], + "projectDocuments": ["./CHANGELOG.md"], + "groupOrder": ["Controller", "Methods", "Interfaces", "Type Aliases"], + "cleanOutputDir": true, + "indexFormat": "list", + "parametersFormat": "list", + "interfacePropertiesFormat": "list", + "classPropertiesFormat": "list", + "enumMembersFormat": "list", + "typeDeclarationFormat": "list", + "propertyMembersFormat": "list", + + "expandParameters": false, + "expandObjects": false, + + "categoryOrder": ["Controller", "*"], + + "hideBreadcrumbs": true, + "hidePageHeader": true, + "hidePageTitle": true, + "hideGroupHeadings": true, + + "treatWarningsAsErrors": false, + + // don't enable this, because it breaks references to some types on some pages, + // even though it gives us nice syntax highlighting. + "useCodeBlocks": false, + + "tableColumnSettings": { + "hideInherited": true, + "hideDefaults": false + }, + + "outputFileStrategy": "modules", + "flattenOutputFiles": false, + "theme": "customTheme", + "readme": "./src/docs_api_readme_prepend.md", + "mergeReadme": true +} From 5c41401aaf22bd25bc8bf4a6cb16171f4f207b36 Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Mon, 16 Jun 2025 08:53:30 -0400 Subject: [PATCH 20/30] docs --- docs-minimal/client.md | 337 ++++++++++++++++++++++++++++++++++------- 1 file changed, 281 insertions(+), 56 deletions(-) diff --git a/docs-minimal/client.md b/docs-minimal/client.md index 5997ab9d..1e628368 100644 --- a/docs-minimal/client.md +++ b/docs-minimal/client.md @@ -7621,30 +7621,132 @@ const unsubscribe = felt.onToolSettingsChange({ unsubscribe(); ``` -#### addPanel() +#### createActionTrigger() -> **addPanel**(`args`): `void` +> **createActionTrigger**(`args`): `void` -Adds a panel. -Panels are rendered on the right side of the map. +Creates an action trigger. +Action triggers are rendered on map's left sidebar as a button, +similar to other map extensions like measure and spatial filter. + +The goal of action triggers is to allow users to perform actions on the map +by clicking on a button. + +##### Parameters + +##### args + +[`CreateActionTriggerParams`](client.md#createactiontriggerparams) + +The arguments for the method. + +##### Returns + +`void` + +##### Example + +```typescript +await felt.createActionTrigger({ + actionTrigger: { + id: "layerTurnPurple", // not required but useful for further updates + label: "Turn layer purple", + onTrigger: async () => { + await felt.setLayerStyle("layer-1", { ..., paint: { color: "purple" } }); + }, + disabled: false, // optional, defaults to false + }, + placement: { at: "start" }, // optional, defaults to { at: "end" } +}); +``` + +#### updateActionTrigger() + +> **updateActionTrigger**(`args`): `void` + +Updates an action trigger. + +Action trigger to update is identified by the `id` property. + +##### Parameters + +##### args + +[`UpdateActionTriggerParams`](client.md#updateactiontriggerparams) + +The action trigger to update. + +##### Returns + +`void` + +##### Remarks + +Properties provided will override the existing properties. + +##### Example + +```typescript +await felt.updateActionTrigger({ + id: "layerTurnPurple", + label: "Turn layer points purple", // only label changes +}); +``` + +#### deleteActionTrigger() + +> **deleteActionTrigger**(`id`): `void` + +Deletes an action trigger. + +##### Parameters + +##### id + +`string` + +The id of the action trigger to delete. + +##### Returns + +`void` + +##### Example + +```typescript +await felt.deleteActionTrigger("layerTurnPurple"); +``` + +#### createPanel() + +> **createPanel**(`args`): `void` + +Creates a panel on map's right sidebar. + +Panels are useful to extend Felt UI for your own use cases (e.g. a form, a settings panel, etc.) +by using Felt UI elements (e.g. Text, Button, etc.). This way the user experience is consistent +with the rest of Felt. + +Panels have two sections: + +* `body` - Body of the panel, scrollable. +* `footer` - It sticks to the bottom of the panel, useful to add submit buttons. By default, the panel will be added to the end of the stack but you can specify a placement to add it at a specific position in the stack. +Once created, you can add elements to the panel by using the [createPanelElements](client.md#createpanelelements) method or +perform partial updates of elements by using the [updatePanelElements](client.md#updatepanelelements) method. + When adding a panel, its id is optional as well as its elements' ids. It is recommended to provide an id for the panel and its elements to make it easier to update or delete them later. -Panels have two sections: - -* `items` - Body of the panel, scrollable. -* `footer` - It sticks to the bottom of the panel, useful to add submit buttons. - ##### Parameters ##### args -[`AddPanelInput`](client.md#addpanelinput) +[`CreatePanelParams`](client.md#createpanelparams) The arguments for the method. @@ -7655,11 +7757,11 @@ The arguments for the method. ##### Example ```typescript -await felt.addPanel({ +await felt.createPanel({ panel: { id: "panel-1", // not required but useful for further updates title: "My Panel", - items: [ + body: [ { type: "Text", content: "Hello, world!", @@ -7696,7 +7798,7 @@ Panel to update is identified by the `id` property. ##### panel -[`UpdatePanelElementInput`](client.md#updatepanelelementinput) +[`UpdatePanelParams`](client.md#updatepanelparams) The panel to update. @@ -7744,17 +7846,17 @@ The id of the panel to delete. await felt.deletePanel("panel-1"); ``` -#### addPanelElements() +#### createPanelElements() -> **addPanelElements**(`args`): `void` +> **createPanelElements**(`args`): `void` -Adds elements to a panel. +Creates elements in a panel. ##### Parameters ##### args -[`AddPanelElementsInput`](client.md#addpanelelementsinput) +[`CreatePanelElementsParams`](client.md#createpanelelementsparams) The arguments for the method. @@ -7765,12 +7867,12 @@ The arguments for the method. ##### Example ```typescript -await felt.addPanelElements({ +await felt.createPanelElements({ panelId: "panel-1", elements: [ { element: { type: "Text", content: "Hello, world!" }, - on: "items", + container: "body", placement: { at: "start" }, }, ], @@ -7787,7 +7889,7 @@ Updates an element in a panel. ##### args -[`UpdatePanelElementsInput`](client.md#updatepanelelementsinput) +[`UpdatePanelElementsParams`](client.md#updatepanelelementsparams) The arguments for the method. @@ -7816,7 +7918,7 @@ Deletes elements from a panel. ##### args -[`DeletePanelElements`](client.md#deletepanelelements-1) +[`DeletePanelElementsParams`](client.md#deletepanelelementsparams) The arguments for the method. @@ -9839,15 +9941,81 @@ The style of the text, either `italic`, `light`, `regular` or `caps`. "regular" ``` -## AddPanelInput +## CreateActionTriggerParams + +### Properties + +#### actionTrigger + +> **actionTrigger**: [`UIActionTriggerCreate`](client.md#uiactiontriggercreate) -The input for adding a panel to the map by using [UiController.addPanel](client.md#addpanel). +#### placement? + +> `optional` **placement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } + +## UpdateActionTriggerParams + +### Properties + +#### id + +> **id**: `string` + +#### label? + +> `optional` **label**: `string` + +The label of the action trigger. + +#### disabled? + +> `optional` **disabled**: `boolean` + +Whether the action trigger is disabled or not. + +#### type? + +> `optional` **type**: `undefined` + +#### onTrigger()? + +> `optional` **onTrigger**: () => `void` + +The function to call when the action trigger is triggered. + +##### Returns + +`void` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +## CreatePanelParams + +The parameters for adding a panel to the map by using [UiController.createPanel](client.md#createpanel). ### Properties #### panel -> **panel**: [`UIPanelInput`](client.md#uipanelinput) +> **panel**: [`UIPanelCreate`](client.md#uipanelcreate) The panel to add. @@ -9861,7 +10029,7 @@ The placement of the panel on the right sidebar stack. `{ at: "end" }` -## UpdatePanelElementInput +## UpdatePanelParams ### Properties @@ -9919,15 +10087,15 @@ The placement of the panel on the right sidebar stack. `void` -#### items? +#### body? -> `optional` **items**: [`UIPanelElementsInput`](client.md#uipanelelementsinput)\[] +> `optional` **body**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] #### footer? -> `optional` **footer**: [`UIPanelElementsInput`](client.md#uipanelelementsinput)\[] +> `optional` **footer**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] -## AddPanelElementsInput +## CreatePanelElementsParams ### Properties @@ -9941,31 +10109,31 @@ The placement of the panel on the right sidebar stack. ##### element -> **element**: [`UIFlexibleSpaceElementInput`](client.md#uiflexiblespaceelementinput) | [`UIPanelElementsInput`](client.md#uipanelelementsinput) +> **element**: [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIPanelElementsCreate`](client.md#uipanelelementscreate) -##### on? +##### container? -> `optional` **on**: `"footer"` | `"items"` | \{ `id`: `string`; } +> `optional` **container**: `"footer"` | `"body"` | \{ `id`: `string`; } The section of the panel to add the element to. -It can be either one of the top-level sections of the panel (`"items"` or `"footer"`) +It can be either one of the top-level sections of the panel (`"body"` or `"footer"`) or a specific container (like `ButtonGroup`) in the panel (`{ id: string }`). ##### Default Value -`"items"` +`"body"` ##### placement? > `optional` **placement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } -The placement of the element in the target container (based on the `on` property). +The placement of the element in the target container (based on the `container` property). ##### Default Value `{ at: "end" }` -## UpdatePanelElementsInput +## UpdatePanelElementsParams ### Properties @@ -9977,11 +10145,11 @@ The ID of the panel to update. #### elements -> **elements**: `Record`\<`string`, [`UIFlexibleSpaceElementInput`](client.md#uiflexiblespaceelementinput) | [`UIPanelElementsInput`](client.md#uipanelelementsinput)> +> **elements**: `Record`\<`string`, [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIPanelElementsCreate`](client.md#uipanelelementscreate)> Dictionary of element IDs to the element to update. -## DeletePanelElements +## DeletePanelElementsParams ### Properties @@ -10140,7 +10308,64 @@ in a new tab or window. Set this to `false` to prevent clicking on an image element from opening the image in a lightbox. -## UIButtonElementInput +## UIActionTriggerCreate + +Represents an action trigger. +It can be added to the map by using the [UiController.createActionTrigger](client.md#createactiontrigger) method. + +### Properties + +#### label + +> **label**: `string` + +The label of the action trigger. + +#### onTrigger() + +> **onTrigger**: () => `void` + +The function to call when the action trigger is triggered. + +##### Returns + +`void` + +#### disabled? + +> `optional` **disabled**: `boolean` + +Whether the action trigger is disabled or not. + +#### type? + +> `optional` **type**: `undefined` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +## UIButtonElementCreate Represents a button element in a panel. @@ -10215,7 +10440,7 @@ A function to call when the element is destroyed. > `optional` **id**: `string` -## UIButtonGroupElementInput +## UIButtonGroupElementCreate Represents a button group element in a panel. @@ -10231,7 +10456,7 @@ This element is used to group buttons and text elements together. #### items -> **items**: ([`UIButtonElementInput`](client.md#uibuttonelementinput) | [`UITextElementInput`](client.md#uitextelementinput) | [`UIFlexibleSpaceElementInput`](client.md#uiflexiblespaceelementinput))\[] +> **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate))\[] #### align? @@ -10267,7 +10492,7 @@ A function to call when the element is destroyed. > `optional` **id**: `string` -## UIDividerElementInput +## UIDividerElementCreate Represents a divider element in a panel. @@ -10305,9 +10530,9 @@ A function to call when the element is destroyed. > `optional` **id**: `string` -## UIFlexibleSpaceElementInput +## UIFlexibleSpaceElementCreate -Only accepted for [UIButtonGroupElementInput](client.md#uibuttongroupelementinput) elements. +Only accepted for [UIButtonGroupElementCreate](client.md#uibuttongroupelementcreate) elements. ### Properties @@ -10339,9 +10564,9 @@ A function to call when the element is destroyed. > `optional` **id**: `string` -## UIPanelInput +## UIPanelCreate -The input panel to add to the map by using the [UiController.addPanel](client.md#addpanel) method. +The panel to add to the map by using the [UiController.createPanel](client.md#createpanel) method. ### Remarks @@ -10350,9 +10575,9 @@ but it is recommended to provide them if you want to be able to perform updates. ### Properties -#### items +#### body -> **items**: [`UIPanelElementsInput`](client.md#uipanelelementsinput)\[] +> **body**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] The elements to add to the panel body. @@ -10368,7 +10593,7 @@ The title to display in the panel header. #### footer? -> `optional` **footer**: [`UIPanelElementsInput`](client.md#uipanelelementsinput)\[] +> `optional` **footer**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] The elements to add to the panel footer. @@ -10422,7 +10647,7 @@ This function doesn't receive any parameters > `optional` **id**: `string` -## UISelectElementInput +## UISelectElementCreate Represents a selector element in a panel. @@ -10510,7 +10735,7 @@ A function to call when the element is destroyed. Label text to display above the element and used for screen readers. -## UITextElementInput +## UITextElementCreate Represents a text element in a panel. @@ -10550,7 +10775,7 @@ A function to call when the element is destroyed. > `optional` **id**: `string` -## UITextInputElementInput +## UITextInputElementCreate Represents a text input element. @@ -11179,9 +11404,9 @@ The result of listening for changes to the settings of each tool. > **PlaceSymbol**: `"dot"` | `"square"` | `"diamond"` | `"triangle"` | `"x"` | `"plus"` | `"circle-line"` | `"circle-slash"` | `"star"` | `"heart"` | `"hexagon"` | `"octagon"` | `"pedestrian"` | `"bicycle"` | `"wheelchair"` | `"airport"` | `"car"` | `"bus"` | `"train"` | `"truck"` | `"ferry"` | `"sailboat"` | `"electric-service"` | `"gas-service"` | `"blood-clinic"` | `"badge"` | `"traffic-light"` | `"traffic-cone"` | `"road-sign-caution"` | `"person"` | `"restroom"` | `"house"` | `"work"` | `"letter"` | `"hotel"` | `"factory"` | `"hospital"` | `"religious-facility"` | `"school"` | `"government"` | `"university"` | `"bank"` | `"landmark"` | `"museum"` | `"clothing"` | `"shopping"` | `"store"` | `"bar"` | `"pub"` | `"cafe"` | `"food"` | `"park"` | `"amusement-park"` | `"camping-tent"` | `"cabin"` | `"picnic"` | `"water-refill"` | `"trailhead"` | `"guidepost"` | `"viewpoint"` | `"camera"` | `"us-football"` | `"football"` | `"tennis"` | `"binoculars"` | `"swimming"` | `"zap"` | `"battery-full"` | `"battery-half"` | `"battery-low"` | `"boom"` | `"radar"` | `"wind-turbine"` | `"solar-panel"` | `"antenna"` | `"telephone-pole"` | `"oil-well"` | `"oil-barrel"` | `"railroad-track"` | `"bridge"` | `"lighthouse"` | `"lock-closed"` | `"lock-open"` | `"wifi"` | `"trash"` | `"recycle"` | `"tree"` | `"flower"` | `"leaf"` | `"fire"` | `"mountain"` | `"snowy-mountain"` | `"volcano"` | `"island"` | `"wave"` | `"hot-springs"` | `"water"` | `"lake"` | `"ocean"` | `"animal"` | `"bird"` | `"duck"` | `"dog"` | `"fish"` | `"beach"` | `"wetland"` | `"sun"` | `"moon"` | `"cloud"` | `"partial-sun"` | `"rain"` | `"lightning"` | `"snowflake"` | `"wind"` | `"snow"` | `"fog"` | `"sleet"` | `"hurricane"` | `"warning"` | `"parking"` | `"info"` | `"circle-exclamation"` | `"circle-triangle"` | `"circle-x"` | `"circle-plus"` | `` `:${string}:` `` & `object` -## UIPanelElementsInput +## UIPanelElementsCreate -> **UIPanelElementsInput**: [`UITextElementInput`](client.md#uitextelementinput) | [`UIButtonElementInput`](client.md#uibuttonelementinput) | [`UITextInputElementInput`](client.md#uitextinputelementinput) | [`UIDividerElementInput`](client.md#uidividerelementinput) | [`UIButtonGroupElementInput`](client.md#uibuttongroupelementinput) | [`UISelectElementInput`](client.md#uiselectelementinput) +> **UIPanelElementsCreate**: [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UIButtonGroupElementCreate`](client.md#uibuttongroupelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) This is a union of all the possible elements that can be added to a panel. @@ -11194,8 +11419,8 @@ perform updates. > **PlacementForUIElement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } -Used in [UiController.addPanel](client.md#addpanel) to specify the position of a panel in the stack -and in [UiController.addPanelElements](client.md#addpanelelements) to specify the position of an element in a panel. +Used in [UiController.createPanel](client.md#createpanel) to specify the position of a panel in the stack +and in [UiController.createPanelElements](client.md#createpanelelements) to specify the position of an element in a panel. In both cases, the default value is `{ at: "end" }`. From 58b90889bf443497b5b4659a60b9b42b7caf8559 Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Mon, 16 Jun 2025 10:02:04 -0400 Subject: [PATCH 21/30] docs v1.7.0-9 --- docs-minimal/client.md | 1800 +++++++++++++++++++++++++++++++++++----- 1 file changed, 1592 insertions(+), 208 deletions(-) diff --git a/docs-minimal/client.md b/docs-minimal/client.md index 1e628368..fb9f1752 100644 --- a/docs-minimal/client.md +++ b/docs-minimal/client.md @@ -4482,11 +4482,13 @@ The operations to use on the values from the features in the layer > `optional` **attribute**: `string` -The attribute to use for the aggregation when aggregations other than "count" are used. +The attribute ID to use for the aggregation when aggregations other than "count" are used. This can be omitted if the only aggregation is "count", but must be a numeric attribute otherwise. +Use `getLayerSchema` to get the attributes available for a layer. + ## ValueConfiguration Configuration for filtering and aggregating values across features. @@ -7259,7 +7261,7 @@ const avgHomeValue = await felt.getAggregates({ layerId: "buildings", boundary: [-122.43, 47.60, -122.33, 47.62], // neighborhood boundary aggregation: { - method: "avg", + methods: ["avg"], attribute: "assessed_value" } }); @@ -7269,7 +7271,7 @@ const maxNewBuildingHeight = await felt.getAggregates({ layerId: "buildings", filters: ["year_built", "gte", 2000], aggregation: { - method: "max", + methods: ["max"], attribute: "height" } }); @@ -7902,9 +7904,13 @@ The arguments for the method. ```typescript await felt.updatePanelElements({ panelId: "panel-1", - elements: { - "element-1": { type: "Text", content: "Hello, world!" }, - }, + elements: [ + { + id: "element-1", + type: "Text", + content: "Hello, world!", + }, + ], }); ``` @@ -10037,63 +10043,59 @@ The placement of the panel on the right sidebar stack. > **id**: `string` -#### type? +The ID of the element. -> `optional` **type**: `"Panel"` +#### title? -#### onCreate()? +> `optional` **title**: `string` -> `optional` **onCreate**: (...`args`) => `void` +The title to display in the panel header. -##### Parameters +#### onClose()? -##### args +> `optional` **onClose**: () => `void` -...`unknown`\[] +A function to call when panel's close button is clicked. ##### Returns `void` -#### onDestroy()? - -> `optional` **onDestroy**: (...`args`) => `void` - -##### Parameters - -##### args +#### type? -...`unknown`\[] +> `optional` **type**: `"Panel"` -##### Returns +#### body? -`void` +> `optional` **body**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] -#### title? +The elements to add to the panel body. -> `optional` **title**: `string` +#### footer? -#### onClose()? +> `optional` **footer**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] -> `optional` **onClose**: (...`args`) => `void` +The elements to add to the panel footer. -##### Parameters +#### onCreate()? -##### args +> `optional` **onCreate**: () => `void` -...`unknown`\[] +A function to call when the element is created. ##### Returns `void` -#### body? +#### onDestroy()? -> `optional` **body**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] +> `optional` **onDestroy**: () => `void` -#### footer? +A function to call when the element is destroyed. -> `optional` **footer**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] +##### Returns + +`void` ## CreatePanelElementsParams @@ -10145,10 +10147,14 @@ The ID of the panel to update. #### elements -> **elements**: `Record`\<`string`, [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIPanelElementsCreate`](client.md#uipanelelementscreate)> +> **elements**: `object`\[] Dictionary of element IDs to the element to update. +##### element + +> **element**: [`UIPanelElementsUpdate`](client.md#uipanelelementsupdate) + ## DeletePanelElementsParams ### Properties @@ -10331,6 +10337,10 @@ The function to call when the action trigger is triggered. `void` +#### id? + +> `optional` **id**: `string` + #### disabled? > `optional` **disabled**: `boolean` @@ -10361,13 +10371,19 @@ A function to call when the element is destroyed. `void` -#### id? +## UIButtonElement -> `optional` **id**: `string` +Represents a button element in a panel. -## UIButtonElementCreate +### Example -Represents a button element in a panel. +```typescript +{ + type: "Button", + label: "Click me", + onClick: () => alert("Button clicked"), +} +``` ### Properties @@ -10385,12 +10401,18 @@ The label to display in the button. > **onClick**: () => `void` -Event handler for when the button is clicked. +The action to perform when the button is clicked. ##### Returns `void` +#### id + +> **id**: `string` + +The ID of the element. + #### variant? > `optional` **variant**: `"primary"` | `"outlined"` | `"transparent"` | `"transparentThin"` @@ -10436,75 +10458,62 @@ A function to call when the element is destroyed. `void` -#### id? - -> `optional` **id**: `string` +## UIButtonElementCreate -## UIButtonGroupElementCreate +The parameters for creating a button element. -Represents a button group element in a panel. +See [UIButtonElement](client.md#uibuttonelement) for more details. ### Remarks -This element is used to group buttons and text elements together. +`id` is optional but recommended if you want to be able to perform updates. ### Properties #### type -> **type**: `"ButtonGroup"` - -#### items - -> **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate))\[] - -#### align? - -> `optional` **align**: `"start"` | `"end"` +> **type**: `"Button"` -The alignment of the button group. +#### label -##### Default Value +> **label**: `string` -`"start"` +The label to display in the button. -#### onCreate()? +#### onClick() -> `optional` **onCreate**: () => `void` +> **onClick**: () => `void` -A function to call when the element is created. +The action to perform when the button is clicked. ##### Returns `void` -#### onDestroy()? - -> `optional` **onDestroy**: () => `void` - -A function to call when the element is destroyed. - -##### Returns +#### variant? -`void` +> `optional` **variant**: `"primary"` | `"outlined"` | `"transparent"` | `"transparentThin"` -#### id? +The style variant of the button. -> `optional` **id**: `string` +* `"primary"`: A solid button with Felt's primary background color (pink). +* `"outlined"`: A button with a border and no background color. +* `"transparent"`: A button with no background color and no border. +* `"transparentThin"`: Same as `transparent` but with lighter font weight. -## UIDividerElementCreate +##### Default Value -Represents a divider element in a panel. +`"primary"` -### Remarks +#### disabled? -This element is used to separate other elements in a panel. +> `optional` **disabled**: `boolean` -### Properties +Whether the button is disabled. -#### type +##### Default Value -> **type**: `"Divider"` +`false` #### onCreate()? @@ -10530,78 +10539,77 @@ A function to call when the element is destroyed. > `optional` **id**: `string` -## UIFlexibleSpaceElementCreate - -Only accepted for [UIButtonGroupElementCreate](client.md#uibuttongroupelementcreate) elements. +The ID of the element. -### Properties - -#### type +##### Remarks -> **type**: `"FlexibleSpace"` +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. -#### onCreate()? +If provided, it must be unique within the UI. -> `optional` **onCreate**: () => `void` +##### Default Value -A function to call when the element is created. +`undefined` -##### Returns +## UIButtonElementUpdate -`void` +The parameters for updating a button element. -#### onDestroy()? +See [UIButtonElement](client.md#uibuttonelement) for more details. -> `optional` **onDestroy**: () => `void` +### Remarks -A function to call when the element is destroyed. +`id` and `type` are required to identify the element to update. -##### Returns +### Properties -`void` +#### type -#### id? +> **type**: `"Button"` -> `optional` **id**: `string` +#### id -## UIPanelCreate +> **id**: `string` -The panel to add to the map by using the [UiController.createPanel](client.md#createpanel) method. +The ID of the element. -### Remarks +#### label? -For the sake of convenience, the `id` of the panel and its elements are optional, -but it is recommended to provide them if you want to be able to perform updates. +> `optional` **label**: `string` -### Properties +The label to display in the button. -#### body +#### variant? -> **body**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] +> `optional` **variant**: `"primary"` | `"outlined"` | `"transparent"` | `"transparentThin"` -The elements to add to the panel body. +The style variant of the button. -#### type? +* `"primary"`: A solid button with Felt's primary background color (pink). +* `"outlined"`: A button with a border and no background color. +* `"transparent"`: A button with no background color and no border. +* `"transparentThin"`: Same as `transparent` but with lighter font weight. -> `optional` **type**: `"Panel"` +##### Default Value -#### title? +`"primary"` -> `optional` **title**: `string` +#### disabled? -The title to display in the panel header. +> `optional` **disabled**: `boolean` -#### footer? +Whether the button is disabled. -> `optional` **footer**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] +##### Default Value -The elements to add to the panel footer. +`false` -#### onClose()? +#### onClick()? -> `optional` **onClose**: () => `void` +> `optional` **onClick**: () => `void` -A function to call when panel's close button is clicked. +The action to perform when the button is clicked. ##### Returns @@ -10609,101 +10617,73 @@ A function to call when panel's close button is clicked. #### onCreate()? -> `optional` **onCreate**: (...`args`) => `void` +> `optional` **onCreate**: () => `void` A function to call when the element is created. -##### Parameters - -##### args - -...`unknown`\[] - -This function doesn't receive any parameters - ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: (...`args`) => `void` +> `optional` **onDestroy**: () => `void` A function to call when the element is destroyed. -##### Parameters - -##### args - -...`unknown`\[] - -This function doesn't receive any parameters - ##### Returns `void` -#### id? - -> `optional` **id**: `string` +## UIButtonGroupElement -## UISelectElementCreate +Represents a button group element in a panel. +A button group is an horizontal container of buttons and text elements. -Represents a selector element in a panel. +### Example -### Remarks +Thanks to the FlexibleSpace element, button 1 and text 1 are aligned to the start of the panel, +while button 2 is aligned to the end. -This element is used to select a single option from a list of options. +```typescript +{ + type: "ButtonGroup", + items: [ + { type: "Button", label: "Button 1", onClick: () => {} }, + { type: "Text", content: "Text 1" }, + { type: "FlexibleSpace" }, + { type: "Button", label: "Button 2", onClick: () => {} }, + ], +} +``` ### Properties #### type -> **type**: `"Select"` - -#### options - -> **options**: `object`\[] - -##### label - -> **label**: `string` - -##### value - -> **value**: `string` - -#### onChange() - -> **onChange**: (`args`) => `void` - -Event handler for when the value of the select changes. - -##### Parameters - -##### args +> **type**: `"ButtonGroup"` -##### value +#### items -`string` +> **items**: ([`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement))\[] -The new value of the select. +The items to add to the button group. -##### Returns +#### id -`void` +> **id**: `string` -#### value? +The ID of the element. -> `optional` **value**: `string` +#### align? -#### search? +> `optional` **align**: `"start"` | `"end"` -> `optional` **search**: `boolean` +The alignment of the button group. -#### placeholder? +##### Default Value -> `optional` **placeholder**: `string` +`"end"` #### onCreate()? @@ -10725,31 +10705,1293 @@ A function to call when the element is destroyed. `void` -#### id? +## UIButtonGroupElementCreate + +The parameters for creating a button group element. + +See [UIButtonGroupElement](client.md#uibuttongroupelement) for more details. + +### Remarks + +`id` is optional but recommended if you want to be able to perform updates. + +### Properties + +#### type + +> **type**: `"ButtonGroup"` + +#### items + +> **items**: ([`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate))\[] + +The items to add to the button group. + +#### align? + +> `optional` **align**: `"start"` | `"end"` + +The alignment of the button group. + +##### Default Value + +`"end"` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +The ID of the element. + +##### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +##### Default Value + +`undefined` + +## UIButtonGroupElementUpdate + +The parameters for updating a button group element. + +See [UIButtonGroupElement](client.md#uibuttongroupelement) for more details. + +### Remarks + +`id` and `type` are required to update the button group element. + +### Properties + +#### type + +> **type**: `"ButtonGroup"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### align? + +> `optional` **align**: `"start"` | `"end"` + +The alignment of the button group. + +##### Default Value + +`"end"` + +#### items? + +> `optional` **items**: ([`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate))\[] + +The items to add to the button group. + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +## UIDividerElement + +Represents a divider element in a panel. +This element is used to separate other elements in a panel. +It is rendered as a gray horizontal line of 1px height. + +### Example + +Divider element is useful to separate sections of a panel. + +```typescript +{ + body: [ + { type: "Text", content: "Contact" }, + { type: "TextInput", placeholder: "Enter your name", ... }, + { type: "TextInput", placeholder: "Enter your email", ... }, + { type: "Divider" }, + { type: "Text", content: "Address" }, + { type: "TextInput", placeholder: "Enter your address", ... }, + ], +} +``` + +### Properties + +#### type + +> **type**: `"Divider"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +## UIDividerElementCreate + +The parameters for creating a divider element. + +See [UIDividerElement](client.md#uidividerelement) for more details. + +### Remarks + +`id` is optional but recommended if you want to be able to delete the element. + +### Properties + +#### type + +> **type**: `"Divider"` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +The ID of the element. + +##### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +##### Default Value + +`undefined` + +## UIDividerElementUpdate + +The parameters for updating a divider element. + +See [UIDividerElement](client.md#uidividerelement) for more details. + +### Remarks + +`id` and `type` are required to identify the element to update. + +### Properties + +#### type + +> **type**: `"Divider"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +## UIFlexibleSpaceElement + +Represents a flexible space element in a button group. +Useful to customize the spacing between button group items. + +### Example + +Buttons with a flexible space between makes them more visually separated. + +```typescript +{ + type: "ButtonGroup", + items: [ + { type: "Button", label: "Button 1", onClick: () => {} }, + { type: "FlexibleSpace" }, + { type: "Button", label: "Button 2", onClick: () => {} }, + ], +} +``` + +### Properties + +#### type + +> **type**: `"FlexibleSpace"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +## UIFlexibleSpaceElementCreate + +The parameters for creating a flexible space element. + +### Remarks + +`id` is optional but recommended if you want to be able to perform updates. + +### Properties + +#### type + +> **type**: `"FlexibleSpace"` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +The ID of the element. + +##### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +##### Default Value + +`undefined` + +## UIFlexibleSpaceElementUpdate + +The parameters for updating a flexible space element. + +See [UIFlexibleSpaceElement](client.md#uiflexiblespaceelement) for more details. + +### Remarks + +`id` and `type` are required to identify the element to update. + +### Properties + +#### type + +> **type**: `"FlexibleSpace"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +## UIPanel + +Represents a panel in the UI. +It can be added to the map by using the [UiController.createPanel](client.md#createpanel) method. + +A panel is a container for other UI elements. +It can have a title, a body, a footer as well as a close button. + +The body and footer are arrays of UI elements and turn into vertical stacks of elements. +The close button is a button that can be used to close the panel. + +### Body + +Body is the main content of the panel. It is scrollable which means +that it can contain a lot of elements. + +### Footer + +Footer is sticky to the bottom of the panel, and can be used to add actions to the panel (e.g. save, cancel, etc.). +Normally, it should contain a `ButtonGroup` element with a `Cancel` and `Save` button. Using `ButtonGroup` is recommended +because it will automatically align the buttons to the end of the panel giving it a nice look. + +### Examples + +### basic + +```typescript +{ + title: "My Panel", + body: [ + { type: "Text", text: "Hello" }, + ], +}); +``` + +### form + +```typescript +{ + title: "My Panel", + body: [ + { type: "Text", text: "Introduce your name and last name" }, + { type: "TextInput", label: "Name", value: "", placeholder: "John", onChange: (value) => setName(value) }, + { type: "TextInput", label: "Last name", value: "", placeholder: "Doe", onChange: (value) => setLastName(value) }, + ], + footer: [ + { type: "ButtonGroup", items: [ + { type: "Button", label: "Reset", onClick: () => alert("Reset") }, + { type: "Button", label: "Save", onClick: () => alert("Save") }, + ] }, + ], +}); +``` + +### Properties + +#### type + +> **type**: `"Panel"` + +#### body + +> **body**: [`UIPanelElements`](client.md#uipanelelements)\[] + +The elements to add to the panel body. + +#### id + +> **id**: `string` + +The ID of the element. + +#### title? + +> `optional` **title**: `string` + +The title to display in the panel header. + +#### footer? + +> `optional` **footer**: [`UIPanelElements`](client.md#uipanelelements)\[] + +The elements to add to the panel footer. + +#### onClose()? + +> `optional` **onClose**: () => `void` + +A function to call when panel's close button is clicked. + +##### Returns + +`void` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +## UIPanelCreate + +The parameters for creating a panel by using [UiController.createPanel](client.md#createpanel). + +### See + +[UIPanel](client.md#uipanel) for more information about panels. + +### Remarks + +`id` is optional but recommended if you want to be able to perform updates. + +### Properties + +#### body + +> **body**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] + +The elements to add to the panel body. + +#### title? + +> `optional` **title**: `string` + +The title to display in the panel header. + +#### onClose()? + +> `optional` **onClose**: () => `void` + +A function to call when panel's close button is clicked. + +##### Returns + +`void` + +#### type? + +> `optional` **type**: `"Panel"` + +#### footer? + +> `optional` **footer**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] + +The elements to add to the panel footer. + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +The ID of the element. + +##### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +##### Default Value + +`undefined` + +## UISelectElement + +Represents a select element in a panel. + +### Remarks + +`options` property is required. +`label` property is displayed above the select and used for screen readers. +`value` property is optional, for empty value use `undefined`. +`placeholder` property is displayed in the select when no value is selected. +`search` property is used to enable searching through the options. +`onChange` property is used to handle the value change event. + +### Examples + +### empty select + +```typescript +{ + type: "Select", + options: [{ label: "Option 1", value: "option1" }, { label: "Option 2", value: "option2" }], + value: undefined, + placeholder: "Select an option", + onChange: (args) => console.log(args.value), +} +``` + +### with search + +```typescript +{ + type: "Select", + options: [{ label: "Option 1", value: "option1" }, { label: "Option 2", value: "option2" }], + value: "option1", + placeholder: "Select an option", + search: true, + onChange: (args) => console.log(args.value), +} +``` + +### Properties + +#### type + +> **type**: `"Select"` + +#### options + +> **options**: `object`\[] + +The options to display in the select. + +##### label + +> **label**: `string` + +##### value + +> **value**: `string` + +#### onChange() + +> **onChange**: (`args`) => `void` + +The function to call when the value of the select changes. + +##### Parameters + +##### args + +##### value + +`string` + +##### Returns + +`void` + +#### id + +> **id**: `string` + +The ID of the element. + +#### value? + +> `optional` **value**: `string` + +The value of the select. + +#### placeholder? + +> `optional` **placeholder**: `string` + +The placeholder text to display in the select. + +#### search? + +> `optional` **search**: `boolean` + +Whether the select should allow searching through the options. + +##### Default Value + +`false` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## UISelectElementCreate + +The parameters for creating a select element. + +See [UISelectElement](client.md#uiselectelement) for more details. + +### Remarks + +`id` is optional but recommended if you want to be able to perform updates. + +### Properties + +#### type + +> **type**: `"Select"` + +#### options + +> **options**: `object`\[] + +The options to display in the select. + +##### label + +> **label**: `string` + +##### value + +> **value**: `string` + +#### onChange() + +> **onChange**: (`args`) => `void` + +The function to call when the value of the select changes. + +##### Parameters + +##### args + +##### value + +`string` + +##### Returns + +`void` + +#### value? + +> `optional` **value**: `string` + +The value of the select. + +#### placeholder? + +> `optional` **placeholder**: `string` + +The placeholder text to display in the select. + +#### search? + +> `optional` **search**: `boolean` + +Whether the select should allow searching through the options. + +##### Default Value + +`false` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +The ID of the element. + +##### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +##### Default Value + +`undefined` + +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## UISelectElementUpdate + +The parameters for updating a select element. + +See [UISelectElement](client.md#uiselectelement) for more details. + +### Remarks + +`id` and `type` are required to identify the element to update. + +### Properties + +#### type + +> **type**: `"Select"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### options? + +> `optional` **options**: `object`\[] + +The options to display in the select. + +##### label + +> **label**: `string` + +##### value + +> **value**: `string` + +#### value? + +> `optional` **value**: `string` + +The value of the select. + +#### placeholder? + +> `optional` **placeholder**: `string` + +The placeholder text to display in the select. + +#### search? + +> `optional` **search**: `boolean` + +Whether the select should allow searching through the options. + +##### Default Value + +`false` + +#### onChange()? + +> `optional` **onChange**: (`args`) => `void` + +The function to call when the value of the select changes. + +##### Parameters + +##### args + +##### value + +`string` + +##### Returns + +`void` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## UITextElement + +Represents a text element in a panel. +Markdown is supported. + +### Examples + +### simple + +```typescript +{ + type: "Text", + content: "Hello, world!", +} +``` + +### with links + +```typescript +{ + type: "Text", + content: "Fill the form https://www.google.com.", +} +``` + +### markdown + +```typescript +{ + type: "Text", + content: "**Hello**, _world_!", +} +``` + +### complex markdown + +Complex markdown syntax is supported like tables, images, quotes, etc. + +```typescript +{ + type: "Text", + content: ` + +# Heading + +This is a paragraph. + +## Subheading + +This is a paragraph. + +| Name | Age | +| ---- | --- | +| John | 25 | +| Jane | 30 | + +![Image](https://via.placeholder.com/150) + +> This is a quote. + +[Link](https://www.google.com) +`, +} +``` + +### Properties + +#### type + +> **type**: `"Text"` + +#### content + +> **content**: `string` + +The text to display in the element. + +#### id + +> **id**: `string` + +The ID of the element. + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +## UITextElementCreate + +The parameters for creating a text element. + +See [UITextElement](client.md#uitextelement) for more details. + +### Remarks + +`id` is optional but recommended if you want to be able to perform updates. + +### Properties + +#### type + +> **type**: `"Text"` + +#### content + +> **content**: `string` + +The text to display in the element. + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +The ID of the element. + +##### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +##### Default Value + +`undefined` + +## UITextElementUpdate + +The parameters for updating a text element. + +See [UITextElement](client.md#uitextelement) for more details. + +### Remarks + +`id` and `type` are required to identify the element to update. + +### Properties + +#### type + +> **type**: `"Text"` + +#### id + +> **id**: `string` -> `optional` **id**: `string` +The ID of the element. -#### label? +#### content? -> `optional` **label**: `string` +> `optional` **content**: `string` -Label text to display above the element and used for screen readers. +The text to display in the element. -## UITextElementCreate +#### onCreate()? -Represents a text element in a panel. +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + +## UITextInputElement + +Represents a text input element in a panel. + +### Remarks + +`value` property is required, for empty value use `""`. +`label` property is displayed above the input and used for screen readers. + +### Examples + +### empty input + +```typescript +{ + type: "TextInput", + value: "", + onChange: (args) => console.log(args.value), + placeholder: "Enter your name", +} +``` + +### with label + +```typescript +{ + type: "TextInput", + label: "Name", + value: "Hello", + onChange: (args) => console.log(args.value), + placeholder: "Enter your name", +} +``` ### Properties #### type -> **type**: `"Text"` +> **type**: `"TextInput"` -#### content +#### value -> **content**: `string` +> **value**: `string` -The text to display in the element. +The value of the input. Use `""` for empty values. + +#### id + +> **id**: `string` + +The ID of the element. + +#### placeholder? + +> `optional` **placeholder**: `string` + +The placeholder text to display in the input. + +#### onChange()? + +> `optional` **onChange**: (`args`) => `void` + +The function to call when the value of the input changes. + +##### Parameters + +##### args + +##### value + +`string` + +##### Returns + +`void` + +#### onBlur()? + +> `optional` **onBlur**: (`args`) => `void` + +The function to call when the input is blurred. + +##### Parameters + +##### args + +##### value + +`string` + +##### Returns + +`void` + +#### onFocus()? + +> `optional` **onFocus**: (`args`) => `void` + +The function to call when the input is focused. + +##### Parameters + +##### args + +##### value + +`string` + +##### Returns + +`void` #### onCreate()? @@ -10771,13 +12013,21 @@ A function to call when the element is destroyed. `void` -#### id? +#### label? -> `optional` **id**: `string` +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. ## UITextInputElementCreate -Represents a text input element. +The parameters for creating a text input element. + +See [UITextInputElement](client.md#uitextinputelement) for more details. + +### Remarks + +`id` is optional but recommended if you want to be able to perform updates. ### Properties @@ -10801,7 +12051,7 @@ The placeholder text to display in the input. > `optional` **onChange**: (`args`) => `void` -Event handler for when the value of the input changes. +The function to call when the value of the input changes. ##### Parameters @@ -10811,8 +12061,6 @@ Event handler for when the value of the input changes. `string` -The new value of the input. - ##### Returns `void` @@ -10821,7 +12069,7 @@ The new value of the input. > `optional` **onBlur**: (`args`) => `void` -Event handler for when the input loses focus. +The function to call when the input is blurred. ##### Parameters @@ -10831,8 +12079,6 @@ Event handler for when the input loses focus. `string` -The input value when the input loses focus. - ##### Returns `void` @@ -10841,7 +12087,7 @@ The input value when the input loses focus. > `optional` **onFocus**: (`args`) => `void` -Event handler for when the input gains focus. +The function to call when the input is focused. ##### Parameters @@ -10851,8 +12097,6 @@ Event handler for when the input gains focus. `string` -The input value when the input gains focus. - ##### Returns `void` @@ -10881,6 +12125,133 @@ A function to call when the element is destroyed. > `optional` **id**: `string` +The ID of the element. + +##### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +##### Default Value + +`undefined` + +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## UITextInputElementUpdate + +The parameters for updating a text input element. + +See [UITextInputElement](client.md#uitextinputelement) for more details. + +### Remarks + +`id` and `type` are required to identify the element to update. + +### Properties + +#### type + +> **type**: `"TextInput"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### value? + +> `optional` **value**: `string` + +The value of the input. Use `""` for empty values. + +#### placeholder? + +> `optional` **placeholder**: `string` + +The placeholder text to display in the input. + +#### onChange()? + +> `optional` **onChange**: (`args`) => `void` + +The function to call when the value of the input changes. + +##### Parameters + +##### args + +##### value + +`string` + +##### Returns + +`void` + +#### onBlur()? + +> `optional` **onBlur**: (`args`) => `void` + +The function to call when the input is blurred. + +##### Parameters + +##### args + +##### value + +`string` + +##### Returns + +`void` + +#### onFocus()? + +> `optional` **onFocus**: (`args`) => `void` + +The function to call when the input is focused. + +##### Parameters + +##### args + +##### value + +`string` + +##### Returns + +`void` + +#### onCreate()? + +> `optional` **onCreate**: () => `void` + +A function to call when the element is created. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: () => `void` + +A function to call when the element is destroyed. + +##### Returns + +`void` + #### label? > `optional` **label**: `string` @@ -11404,25 +12775,38 @@ The result of listening for changes to the settings of each tool. > **PlaceSymbol**: `"dot"` | `"square"` | `"diamond"` | `"triangle"` | `"x"` | `"plus"` | `"circle-line"` | `"circle-slash"` | `"star"` | `"heart"` | `"hexagon"` | `"octagon"` | `"pedestrian"` | `"bicycle"` | `"wheelchair"` | `"airport"` | `"car"` | `"bus"` | `"train"` | `"truck"` | `"ferry"` | `"sailboat"` | `"electric-service"` | `"gas-service"` | `"blood-clinic"` | `"badge"` | `"traffic-light"` | `"traffic-cone"` | `"road-sign-caution"` | `"person"` | `"restroom"` | `"house"` | `"work"` | `"letter"` | `"hotel"` | `"factory"` | `"hospital"` | `"religious-facility"` | `"school"` | `"government"` | `"university"` | `"bank"` | `"landmark"` | `"museum"` | `"clothing"` | `"shopping"` | `"store"` | `"bar"` | `"pub"` | `"cafe"` | `"food"` | `"park"` | `"amusement-park"` | `"camping-tent"` | `"cabin"` | `"picnic"` | `"water-refill"` | `"trailhead"` | `"guidepost"` | `"viewpoint"` | `"camera"` | `"us-football"` | `"football"` | `"tennis"` | `"binoculars"` | `"swimming"` | `"zap"` | `"battery-full"` | `"battery-half"` | `"battery-low"` | `"boom"` | `"radar"` | `"wind-turbine"` | `"solar-panel"` | `"antenna"` | `"telephone-pole"` | `"oil-well"` | `"oil-barrel"` | `"railroad-track"` | `"bridge"` | `"lighthouse"` | `"lock-closed"` | `"lock-open"` | `"wifi"` | `"trash"` | `"recycle"` | `"tree"` | `"flower"` | `"leaf"` | `"fire"` | `"mountain"` | `"snowy-mountain"` | `"volcano"` | `"island"` | `"wave"` | `"hot-springs"` | `"water"` | `"lake"` | `"ocean"` | `"animal"` | `"bird"` | `"duck"` | `"dog"` | `"fish"` | `"beach"` | `"wetland"` | `"sun"` | `"moon"` | `"cloud"` | `"partial-sun"` | `"rain"` | `"lightning"` | `"snowflake"` | `"wind"` | `"snow"` | `"fog"` | `"sleet"` | `"hurricane"` | `"warning"` | `"parking"` | `"info"` | `"circle-exclamation"` | `"circle-triangle"` | `"circle-x"` | `"circle-plus"` | `` `:${string}:` `` & `object` +## PlacementForUIElement + +> **PlacementForUIElement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } + +Used in [UiController.createPanel](client.md#createpanel) to specify the position of a panel in the stack +and in [UiController.createPanelElements](client.md#createpanelelements) to specify the position of an element in a panel. + +In both cases, the default value is `{ at: "end" }`. + +## UIPanelElements + +> **UIPanelElements**: [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIButtonGroupElement`](client.md#uibuttongroupelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) + ## UIPanelElementsCreate -> **UIPanelElementsCreate**: [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UIButtonGroupElementCreate`](client.md#uibuttongroupelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) +> **UIPanelElementsCreate**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIButtonGroupElementCreate`](client.md#uibuttongroupelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) -This is a union of all the possible elements that can be added to a panel. +This is a union of all the possible elements that can be created inside panel's body or footer. ### Remarks -For the sake of convenience, `id` is optional but recommended if you want to be able to -perform updates. +For the sake of convenience, `id` is optional but recommended if you want to be able to perform updates. -## PlacementForUIElement +## UIPanelElementsUpdate -> **PlacementForUIElement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } +> **UIPanelElementsUpdate**: [`UIButtonElementUpdate`](client.md#uibuttonelementupdate) | [`UITextElementUpdate`](client.md#uitextelementupdate) | [`UIButtonGroupElementUpdate`](client.md#uibuttongroupelementupdate) | [`UITextInputElementUpdate`](client.md#uitextinputelementupdate) | [`UISelectElementUpdate`](client.md#uiselectelementupdate) | [`UIFlexibleSpaceElementUpdate`](client.md#uiflexiblespaceelementupdate) | [`UIDividerElementUpdate`](client.md#uidividerelementupdate) -Used in [UiController.createPanel](client.md#createpanel) to specify the position of a panel in the stack -and in [UiController.createPanelElements](client.md#createpanelelements) to specify the position of an element in a panel. +This is a union of all the possible elements that can be updated inside panel's body or footer (excluding Divider and FlexibleSpace elements because they cannot be updated). -In both cases, the default value is `{ at: "end" }`. +### Remarks + +`id` and `type` are required to identify the element to update. ## Felt From 3a6e5b6e0ae080a57a381a9ad0fdfe3e1545ebd8 Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Thu, 26 Jun 2025 18:36:19 -0400 Subject: [PATCH 22/30] 1.7.0-next.13 --- docs-minimal/CHANGELOG.md | 6 + docs-minimal/client.md | 1155 +++++++++++++++++++++++++++++++++---- 2 files changed, 1056 insertions(+), 105 deletions(-) diff --git a/docs-minimal/CHANGELOG.md b/docs-minimal/CHANGELOG.md index 293d8948..8ab80172 100644 --- a/docs-minimal/CHANGELOG.md +++ b/docs-minimal/CHANGELOG.md @@ -1,5 +1,11 @@ # @feltmaps/js-sdk +## 1.7.0 + +### Minor Changes + +* e4c2b4e: Add method getPrecomputedAggregates + ## 1.6.0 ### Minor Changes diff --git a/docs-minimal/client.md b/docs-minimal/client.md index fb9f1752..d27d524a 100644 --- a/docs-minimal/client.md +++ b/docs-minimal/client.md @@ -7625,7 +7625,7 @@ unsubscribe(); #### createActionTrigger() -> **createActionTrigger**(`args`): `void` +> **createActionTrigger**(`args`): `Promise`\<[`UIActionTriggerCreate`](client.md#uiactiontriggercreate)> Creates an action trigger. Action triggers are rendered on map's left sidebar as a button, @@ -7644,7 +7644,7 @@ The arguments for the method. ##### Returns -`void` +`Promise`\<[`UIActionTriggerCreate`](client.md#uiactiontriggercreate)> ##### Example @@ -7664,7 +7664,7 @@ await felt.createActionTrigger({ #### updateActionTrigger() -> **updateActionTrigger**(`args`): `void` +> **updateActionTrigger**(`args`): `Promise`\<[`UIActionTriggerCreate`](client.md#uiactiontriggercreate)> Updates an action trigger. @@ -7680,7 +7680,7 @@ The action trigger to update. ##### Returns -`void` +`Promise`\<[`UIActionTriggerCreate`](client.md#uiactiontriggercreate)> ##### Remarks @@ -7721,7 +7721,7 @@ await felt.deleteActionTrigger("layerTurnPurple"); #### createPanel() -> **createPanel**(`args`): `void` +> **createPanel**(`args`): `Promise`\<[`UIPanel`](client.md#uipanel)> Creates a panel on map's right sidebar. @@ -7754,7 +7754,7 @@ The arguments for the method. ##### Returns -`void` +`Promise`\<[`UIPanel`](client.md#uipanel)> ##### Example @@ -7790,7 +7790,7 @@ await felt.createPanel({ #### updatePanel() -> **updatePanel**(`panel`): `void` +> **updatePanel**(`panel`): `Promise`\<[`UIPanel`](client.md#uipanel)> Updates a panel. @@ -7806,7 +7806,7 @@ The panel to update. ##### Returns -`void` +`Promise`\<[`UIPanel`](client.md#uipanel)> ##### Remarks @@ -7850,7 +7850,7 @@ await felt.deletePanel("panel-1"); #### createPanelElements() -> **createPanelElements**(`args`): `void` +> **createPanelElements**(`args`): `Promise`\<[`UIPanel`](client.md#uipanel)> Creates elements in a panel. @@ -7864,7 +7864,7 @@ The arguments for the method. ##### Returns -`void` +`Promise`\<[`UIPanel`](client.md#uipanel)> ##### Example @@ -7883,7 +7883,7 @@ await felt.createPanelElements({ #### updatePanelElements() -> **updatePanelElements**(`args`): `void` +> **updatePanelElements**(`args`): `Promise`\<[`UIPanel`](client.md#uipanel)> Updates an element in a panel. @@ -7897,7 +7897,7 @@ The arguments for the method. ##### Returns -`void` +`Promise`\<[`UIPanel`](client.md#uipanel)> ##### Example @@ -7906,9 +7906,11 @@ await felt.updatePanelElements({ panelId: "panel-1", elements: [ { - id: "element-1", - type: "Text", - content: "Hello, world!", + element: { + id: "element-1", + type: "Text", + content: "Hello, world!", + }, }, ], }); @@ -9382,6 +9384,16 @@ The color of the element in some CSS-like format. The frame that is rendered around the Place's symbol. This is only available for non-emoji symbols. +#### showInspector + +> **showInspector**: `boolean` + +Whether to show the tool inspector. + +##### Default Value + +`false` + #### symbol > **symbol**: [`PlaceSymbol`](client.md#placesymbol) @@ -9481,6 +9493,16 @@ Whether a distance marker is shown at the midpoint of the path. false ``` +#### showInspector + +> **showInspector**: `boolean` + +Whether to show the tool inspector. + +##### Default Value + +`false` + ## RouteToolSettings ### Properties @@ -9582,6 +9604,16 @@ only available if the `routingMode` is set. false ``` +#### showInspector + +> **showInspector**: `boolean` + +Whether to show the tool inspector. + +##### Default Value + +`false` + ## PolygonToolSettings ### Properties @@ -9666,6 +9698,16 @@ Whether to show an area marker on the polygon. false ``` +#### showInspector + +> **showInspector**: `boolean` + +Whether to show the tool inspector. + +##### Default Value + +`false` + ## CircleToolSettings ### Properties @@ -9750,6 +9792,16 @@ The opacity of the circle's fill. 0.25 ``` +#### showInspector + +> **showInspector**: `boolean` + +Whether to show the tool inspector. + +##### Default Value + +`false` + ## MarkerToolSettings ### Properties @@ -9799,6 +9851,16 @@ the actual size of the marker. 10 ``` +#### showInspector + +> **showInspector**: `boolean` + +Whether to show the tool inspector. + +##### Default Value + +`false` + ## HighlighterToolSettings ### Properties @@ -9847,6 +9909,16 @@ The opacity of the highlighter, between 0 and 1. 0.5 ``` +#### showInspector + +> **showInspector**: `boolean` + +Whether to show the tool inspector. + +##### Default Value + +`false` + #### size > **size**: `number` @@ -9899,6 +9971,16 @@ The style of the text, either `italic`, `light`, `regular` or `caps`. "regular" ``` +#### showInspector + +> **showInspector**: `boolean` + +Whether to show the tool inspector. + +##### Default Value + +`false` + ## NoteToolSettings ### Properties @@ -9947,6 +10029,16 @@ The style of the text, either `italic`, `light`, `regular` or `caps`. "regular" ``` +#### showInspector + +> **showInspector**: `boolean` + +Whether to show the tool inspector. + +##### Default Value + +`false` + ## CreateActionTriggerParams ### Properties @@ -9985,30 +10077,66 @@ Whether the action trigger is disabled or not. #### onTrigger()? -> `optional` **onTrigger**: () => `void` +> `optional` **onTrigger**: (`args`) => `void` The function to call when the action trigger is triggered. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the action trigger. + ##### Returns `void` #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -10051,12 +10179,24 @@ The ID of the element. The title to display in the panel header. -#### onClose()? +#### onClickClose()? -> `optional` **onClose**: () => `void` +> `optional` **onClickClose**: (`args`) => `void` A function to call when panel's close button is clicked. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the panel. + ##### Returns `void` @@ -10067,32 +10207,56 @@ A function to call when panel's close button is clicked. #### body? -> `optional` **body**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] +> `optional` **body**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] The elements to add to the panel body. #### footer? -> `optional` **footer**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] +> `optional` **footer**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] The elements to add to the panel footer. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -10111,7 +10275,7 @@ A function to call when the element is destroyed. ##### element -> **element**: [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIPanelElementsCreate`](client.md#uipanelelementscreate) +> **element**: [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIPanelElementCreate`](client.md#uipanelelementcreate) ##### container? @@ -10153,7 +10317,7 @@ Dictionary of element IDs to the element to update. ##### element -> **element**: [`UIPanelElementsUpdate`](client.md#uipanelelementsupdate) +> **element**: [`UIPanelElementUpdate`](client.md#uipanelelementupdate) ## DeletePanelElementsParams @@ -10329,10 +10493,22 @@ The label of the action trigger. #### onTrigger() -> **onTrigger**: () => `void` +> **onTrigger**: (`args`) => `void` The function to call when the action trigger is triggered. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the action trigger. + ##### Returns `void` @@ -10353,20 +10529,44 @@ Whether the action trigger is disabled or not. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -10399,10 +10599,22 @@ The label to display in the button. #### onClick() -> **onClick**: () => `void` +> **onClick**: (`args`) => `void` The action to perform when the button is clicked. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the button. + ##### Returns `void` @@ -10440,20 +10652,44 @@ Whether the button is disabled. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -10482,10 +10718,22 @@ The label to display in the button. #### onClick() -> **onClick**: () => `void` +> **onClick**: (`args`) => `void` The action to perform when the button is clicked. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the button. + ##### Returns `void` @@ -10517,20 +10765,44 @@ Whether the button is disabled. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -10607,30 +10879,66 @@ Whether the button is disabled. #### onClick()? -> `optional` **onClick**: () => `void` +> `optional` **onClick**: (`args`) => `void` The action to perform when the button is clicked. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the button. + ##### Returns `void` #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -10687,19 +10995,43 @@ The alignment of the button group. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. -##### Returns +##### Parameters -`void` +##### args -#### onDestroy()? +The arguments passed to the function. -> `optional` **onDestroy**: () => `void` +##### id -A function to call when the element is destroyed. +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. ##### Returns @@ -10739,20 +11071,44 @@ The alignment of the button group. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -10814,20 +11170,44 @@ The items to add to the button group. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -10869,20 +11249,44 @@ The ID of the element. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -10905,20 +11309,44 @@ See [UIDividerElement](client.md#uidividerelement) for more details. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -10964,20 +11392,44 @@ The ID of the element. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11016,20 +11468,44 @@ The ID of the element. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11050,20 +11526,44 @@ The parameters for creating a flexible space element. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11109,20 +11609,44 @@ The ID of the element. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11136,7 +11660,11 @@ A panel is a container for other UI elements. It can have a title, a body, a footer as well as a close button. The body and footer are arrays of UI elements and turn into vertical stacks of elements. -The close button is a button that can be used to close the panel. + +The close button is a button rendered in the top right corner of the panel that can be +used to close the panel and is only visible if `onClickClose` is provided. +Usually, you want to call [UiController.deletePanel](client.md#deletepanel) when the close button is clicked, +e.g. `onClickClose: () => felt.deletePanel("my-panel")`. ### Body @@ -11159,11 +11687,20 @@ because it will automatically align the buttons to the end of the panel giving i body: [ { type: "Text", text: "Hello" }, ], -}); +} ``` -### form +### closable + +````typescript +{ + id: "my-panel", + title: "My Panel", + onClickClose: () => felt.deletePanel("my-panel"), +} +@example +### form ```typescript { title: "My Panel", @@ -11178,8 +11715,8 @@ because it will automatically align the buttons to the end of the panel giving i { type: "Button", label: "Save", onClick: () => alert("Save") }, ] }, ], -}); -``` +} +```` ### Properties @@ -11189,7 +11726,7 @@ because it will automatically align the buttons to the end of the panel giving i #### body -> **body**: [`UIPanelElements`](client.md#uipanelelements)\[] +> **body**: [`UIPanelElement`](client.md#uipanelelement)\[] The elements to add to the panel body. @@ -11207,36 +11744,72 @@ The title to display in the panel header. #### footer? -> `optional` **footer**: [`UIPanelElements`](client.md#uipanelelements)\[] +> `optional` **footer**: [`UIPanelElement`](client.md#uipanelelement)\[] The elements to add to the panel footer. -#### onClose()? +#### onClickClose()? -> `optional` **onClose**: () => `void` +> `optional` **onClickClose**: (`args`) => `void` A function to call when panel's close button is clicked. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the panel. + ##### Returns `void` #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11257,7 +11830,7 @@ The parameters for creating a panel by using [UiController.createPanel](client.m #### body -> **body**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] +> **body**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] The elements to add to the panel body. @@ -11267,12 +11840,24 @@ The elements to add to the panel body. The title to display in the panel header. -#### onClose()? +#### onClickClose()? -> `optional` **onClose**: () => `void` +> `optional` **onClickClose**: (`args`) => `void` A function to call when panel's close button is clicked. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the panel. + ##### Returns `void` @@ -11283,26 +11868,50 @@ A function to call when panel's close button is clicked. #### footer? -> `optional` **footer**: [`UIPanelElementsCreate`](client.md#uipanelelementscreate)\[] +> `optional` **footer**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] The elements to add to the panel footer. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11394,10 +12003,20 @@ The function to call when the value of the select changes. ##### args +The arguments passed to the function. + ##### value `string` +The value of the select. + +##### id + +`string` + +The id of the select element. + ##### Returns `void` @@ -11426,15 +12045,27 @@ The placeholder text to display in the select. Whether the select should allow searching through the options. -##### Default Value +##### Default Value + +`false` + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args -`false` +The arguments passed to the function. -#### onCreate()? +##### id -> `optional` **onCreate**: () => `void` +`string` -A function to call when the element is created. +The id of the element. ##### Returns @@ -11442,10 +12073,22 @@ A function to call when the element is created. #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11496,10 +12139,20 @@ The function to call when the value of the select changes. ##### args +The arguments passed to the function. + ##### value `string` +The value of the select. + +##### id + +`string` + +The id of the select element. + ##### Returns `void` @@ -11528,20 +12181,44 @@ Whether the select should allow searching through the options. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11637,30 +12314,64 @@ The function to call when the value of the select changes. ##### args +The arguments passed to the function. + ##### value `string` +The value of the select. + +##### id + +`string` + +The id of the select element. + ##### Returns `void` #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11756,20 +12467,44 @@ The ID of the element. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11798,20 +12533,44 @@ The text to display in the element. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11863,20 +12622,44 @@ The text to display in the element. #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -11949,10 +12732,20 @@ The function to call when the value of the input changes. ##### args +The arguments passed to the function. + ##### value `string` +The value of the input. + +##### id + +`string` + +The id of the input element. + ##### Returns `void` @@ -11967,10 +12760,20 @@ The function to call when the input is blurred. ##### args +The arguments passed to the function. + ##### value `string` +The value of the input. + +##### id + +`string` + +The id of the input element. + ##### Returns `void` @@ -11985,30 +12788,64 @@ The function to call when the input is focused. ##### args +The arguments passed to the function. + ##### value `string` +The value of the input. + +##### id + +`string` + +The id of the input element. + ##### Returns `void` #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -12057,10 +12894,20 @@ The function to call when the value of the input changes. ##### args +The arguments passed to the function. + ##### value `string` +The value of the input. + +##### id + +`string` + +The id of the input element. + ##### Returns `void` @@ -12075,10 +12922,20 @@ The function to call when the input is blurred. ##### args +The arguments passed to the function. + ##### value `string` +The value of the input. + +##### id + +`string` + +The id of the input element. + ##### Returns `void` @@ -12093,30 +12950,64 @@ The function to call when the input is focused. ##### args +The arguments passed to the function. + ##### value `string` +The value of the input. + +##### id + +`string` + +The id of the input element. + ##### Returns `void` #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -12188,10 +13079,20 @@ The function to call when the value of the input changes. ##### args +The arguments passed to the function. + ##### value `string` +The value of the input. + +##### id + +`string` + +The id of the input element. + ##### Returns `void` @@ -12206,10 +13107,20 @@ The function to call when the input is blurred. ##### args +The arguments passed to the function. + ##### value `string` +The value of the input. + +##### id + +`string` + +The id of the input element. + ##### Returns `void` @@ -12224,30 +13135,64 @@ The function to call when the input is focused. ##### args +The arguments passed to the function. + ##### value `string` +The value of the input. + +##### id + +`string` + +The id of the input element. + ##### Returns `void` #### onCreate()? -> `optional` **onCreate**: () => `void` +> `optional` **onCreate**: (`args`) => `void` A function to call when the element is created. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` #### onDestroy()? -> `optional` **onDestroy**: () => `void` +> `optional` **onDestroy**: (`args`) => `void` A function to call when the element is destroyed. +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + ##### Returns `void` @@ -12784,13 +13729,13 @@ and in [UiController.createPanelElements](client.md#createpanelelements) to spec In both cases, the default value is `{ at: "end" }`. -## UIPanelElements +## UIPanelElement -> **UIPanelElements**: [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIButtonGroupElement`](client.md#uibuttongroupelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) +> **UIPanelElement**: [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIButtonGroupElement`](client.md#uibuttongroupelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) -## UIPanelElementsCreate +## UIPanelElementCreate -> **UIPanelElementsCreate**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIButtonGroupElementCreate`](client.md#uibuttongroupelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) +> **UIPanelElementCreate**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIButtonGroupElementCreate`](client.md#uibuttongroupelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) This is a union of all the possible elements that can be created inside panel's body or footer. @@ -12798,9 +13743,9 @@ This is a union of all the possible elements that can be created inside panel's For the sake of convenience, `id` is optional but recommended if you want to be able to perform updates. -## UIPanelElementsUpdate +## UIPanelElementUpdate -> **UIPanelElementsUpdate**: [`UIButtonElementUpdate`](client.md#uibuttonelementupdate) | [`UITextElementUpdate`](client.md#uitextelementupdate) | [`UIButtonGroupElementUpdate`](client.md#uibuttongroupelementupdate) | [`UITextInputElementUpdate`](client.md#uitextinputelementupdate) | [`UISelectElementUpdate`](client.md#uiselectelementupdate) | [`UIFlexibleSpaceElementUpdate`](client.md#uiflexiblespaceelementupdate) | [`UIDividerElementUpdate`](client.md#uidividerelementupdate) +> **UIPanelElementUpdate**: [`UIButtonElementUpdate`](client.md#uibuttonelementupdate) | [`UITextElementUpdate`](client.md#uitextelementupdate) | [`UIButtonGroupElementUpdate`](client.md#uibuttongroupelementupdate) | [`UITextInputElementUpdate`](client.md#uitextinputelementupdate) | [`UISelectElementUpdate`](client.md#uiselectelementupdate) | [`UIFlexibleSpaceElementUpdate`](client.md#uiflexiblespaceelementupdate) | [`UIDividerElementUpdate`](client.md#uidividerelementupdate) This is a union of all the possible elements that can be updated inside panel's body or footer (excluding Divider and FlexibleSpace elements because they cannot be updated). From f6924171549981991cad814aa6d66e94532cebee Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Wed, 2 Jul 2025 16:02:56 -0400 Subject: [PATCH 23/30] update --- docs-minimal/CHANGELOG.md | 113 ++++- docs-minimal/_media/button-showcase.png | Bin 0 -> 129897 bytes docs-minimal/_media/grid-flexible-space.png | Bin 0 -> 54493 bytes docs-minimal/_media/grid-horizontal-stack.png | Bin 0 -> 61512 bytes .../_media/grid-two-groups-of-buttons.png | Bin 0 -> 43242 bytes docs-minimal/client.md | 464 ++++++++++++------ 6 files changed, 434 insertions(+), 143 deletions(-) create mode 100644 docs-minimal/_media/button-showcase.png create mode 100644 docs-minimal/_media/grid-flexible-space.png create mode 100644 docs-minimal/_media/grid-horizontal-stack.png create mode 100644 docs-minimal/_media/grid-two-groups-of-buttons.png diff --git a/docs-minimal/CHANGELOG.md b/docs-minimal/CHANGELOG.md index 8ab80172..5d4ab0d6 100644 --- a/docs-minimal/CHANGELOG.md +++ b/docs-minimal/CHANGELOG.md @@ -1,10 +1,119 @@ # @feltmaps/js-sdk -## 1.7.0 +## 1.7.0-next.16 ### Minor Changes -* e4c2b4e: Add method getPrecomputedAggregates +* f73dccf: Remove UIButtonGroupElement from custom ui panel + +## 1.7.0-next.15 + +### Minor Changes + +* 27cc597: Add UIGridContainerElement to custom ui panel + +## 1.7.0-next.14 + +### Minor Changes + +* 0754363: Add new variants, drop thin variants and add tint prop to UIButtonElement + +## 1.7.0-next.13 + +### Minor Changes + +* 535e539: Include element id on every custom ui callback args + +### Patch Changes + +* 2fd720d: Use singular for custom ui types + +## 1.7.0-next.12 + +### Minor Changes + +* b848937: Add tool setting to hide/show inspector + +## 1.7.0-next.11 + +### Minor Changes + +* 6ce4a76: Rename UIPanel onClose to onClickClose + +## 1.7.0-next.10 + +### Minor Changes + +* aff926a: Return UIPanel on custom panel API methods +* 1e8e6f1: Return UIActionTrigger on custom action trigger API methods + +### Patch Changes + +* 475c98e: Update getAggregates + MultiAggregationConfig docs + +## 1.7.0-next.9 + +### Minor Changes + +* b87393f: Better docs, types and method consistency for Custom Panels API + +## 1.7.0-next.8 + +### Patch Changes + +* ea5c7ff: Run patch on prepare, not install + +## 1.7.0-next.7 + +### Patch Changes + +* 4c83cfe: Don't try to patch packages not in dev mode + +## 1.7.0-next.6 + +### Minor Changes + +* f5ca219: Speed up initial Felt/SDK connection + +### Patch Changes + +* 07b27c6: Export bundled controller types file for consumption as single file + +## 1.7.0-next.5 + +### Minor Changes + +* 49d8895: Add Custom UI API for action triggers + +## 1.7.0-next.4 + +### Patch Changes + +* a1c6322: Make custom panel API consistent with other methods + +## 1.7.0-next.3 + +### Minor Changes + +* 2b0f08f: Add Custom UI API for panels + +## 1.7.0-next.2 + +### Patch Changes + +* 58bd6dd: Add isDeterministicId to LayerFeature + +## 1.7.0-next.1 + +### Minor Changes + +* f40a75c: Update getPrecomputedAggregates types + +## 1.7.0-next.0 + +### Minor Changes + +* 15a35a5: Add method getPrecomputedAggregates ## 1.6.0 diff --git a/docs-minimal/_media/button-showcase.png b/docs-minimal/_media/button-showcase.png new file mode 100644 index 0000000000000000000000000000000000000000..6f312d70304688b87e28756dca7683751af51dea GIT binary patch literal 129897 zcmeFZWmFv7);5X-4H7iCCO{w%NPyrT+}%C6JB@~5A-KD{dyoc#1b6o&xHjIwZ;^e@ z&ff2R?>QOw$M@qKn=zn^s#R5Ut!dAkYt9almlZ=tB|?RPfkBrL7g2?28@R1RL zGkB*|M=&rC`OJld0Yeh#2AY%y#NN&ks6~X4d z9~FWivkPHU#A3k3-|eI?z>qKy-AqdV z9Ts!!H|YoE(chdNEHgkQf{lb1;e0<3B{1|M2!KhCKT_#Fos@_8&q{O=e1OShp*SBJ z7}yj}MXW+UeI(2{VVZxJ8FRrgbV@11#Nmj{utCKUCt%?BI)VG_j3exmuS$F}wRHYev}q=+Dr_WY zga<}ch?^Y*2#E9>;k-D(*sF0|4Cioc0VMG*YrIKQx?qm+iK$&QpZN zBp$$*PRaC9LVhiTz|^tR5clHifB=HNzd$>T;_SE}UoT=u{c@nLTizB5qBaF=k^l@z z?BLg6WA_MTvQiQD#td-fQ6mI6mPwAw+4)^scPN-{zl&Yj~Gz;|6m8 zKb6H=9!d;@w21e`;G6f0YGUKL{uUDzgX`Rz2EuDQj#zJFT2@K2H|Mkq*F1_#vP;(D zqN=;(yE(mVUWLnhS?L+8H9m!WkNC0-OQYM z<15NPo7o?GI%I|)k{=;LN=u_3$kxg7%Ie{I1-zrLc73J48CoFuK1n0sA^tTL@?(-m zBlZZLbA5B@Fmq7Rqe~AQhC3UIrm~ercORIqj)waBUwd7d_7GsMc)qUs{NOh2e4l}# z0y9j$A@M{M6(fNZ`S7`*zg#lk3&f3f#Ni&oPw=*1G2aP14n{Fw~f;r73BeS%k$<8Xt$Z09~C6vV<765R^s zGkm8`bsqe(L&P(Rf(9-`STXVy4bCGqLPNND&P}^Kh0bnlXk+^{5UL@kZCz);Y6SrkuJoXH8aL^`d~f+ zRvK@jTbc#wV@Oq%86)06JI$B_PS69euQq!*(b`OHShrGtj zct6rbu!{EsqlL`&bH#VeL%wTbKgky~vp6ltBpr{1o*J-by_c7ree+u6HGD>%O$Rqs zRH0PuQ;&92mViW=)HmAF+H#A+JQ8~pd{pN#;xt~-ynR8qGT)<7C7$Fu=j!C*8!z6mOG z4f6-)M|B&P)?-{{XTjlPL)%td5quG?ao&N;WipfX(;H@{mI>yNX`6|IiLr6}DT(o< zY^5Sc=>jQ&iMsLit&JU~sig{#Fm&QYjzOuxJA=@`DfDL6J@B#}uMe-EZqYIsc-JH2 zl<-pUlJj!ljQA8n_!ZFwu?jH;o&9kt%NA)l?;_~6t=snDO{Xn!cA!h3ec;5yhR5|p z=fs4>0gpq%rU}#7ci5)c&N+tJbxk}MKlQw~`EE(|O2fpVV~tZd=(FJ(>olw8W3T+c z{H%P%iJ^S!{EVT}A?%@z9of*$*$q9=58~)GBJOO1p5^Gj8#az^a9DkS^d6CVOok#yiVSd z321V8N!P4xxzz~4;Qc1@Sn$rHGz<$2#vrO7%^;-krtnAMj-)H`l)s&VN#W;G!+4?37TxvyJ5p4lyZ^_U1dz~8QK zFPqyhX%1@c0uO_GIyHuf$)jSGOYU`bRlXfmPXI!^GN!zAL{KQVVbH`eU!lNT~`+d3YV z4Sy8WQ}pdL!2SIYvL%WdS_EbVvd?1!0?H7x4T`Gi?WIMo5`N`Z-H2* zSz-*syReOn3>l0vy23uBkhwCYlku~7n_f4+_kEv-;)-pJofk4BQJZTo!6pHTfsaw6 zaSbEneETI)iXM@^Ble53qJ`p4{p4+xppja{KG`OFx$$Dy(e!G;$F>)r^@R@J8{wGa zG~!_9J{pgnaLM=j_QtWK@n$>qwD^>dETth3`VKOp*A02}16dV0{p}Cq(q6at?U+W^ z8rlKo5}p#ZUVK$#J(Hlfwu9aoIB7M!rW72Uu5#&;x|+)dQSo$QlhL-R{7>41t(ch} zxyl?T*Lo;s&}dhe!O%a}8&xkv_gT}*V;|Sc#r)tI`Ye=BS~l5J|HB6ESnPC>ixPp1 zmnMn!^};JpB3sQ9r-^OHeE!7G$yM%8Szmg+Jz+f2I5Bk|!AJrdVVKAcr><;r4e78z z_gmK7Wlq92M$+%L5+e01q$Z_ko}{6*5LjskGvhK@X{}Y8EoIy0U5|&F$eOI1=;5E> z>s>ofR#^Iwsz+DlS{Gf7qYnfRhz!^;LbY0r0yaK;$BR&XQ(mgqt*+9vv%eEk!W`Qi zZ>ue=L9H`U$8Ko7$`$H7Fzr>;Tl`6vP`gw$JOpX1AZQ+7hZI#t(flP-C z2S<=qc}0CO(~8idV(oh0bZ*(Ex6!R?&5*vE7wr0jDPWY6}%ID;;f1q`kzCu^gXhUsS*#5+_H& zw(su4$Sc8QcHR)0lp5aAa)?x!#!(+;R2oLmak#?le7yr%F<&=tBj`g^Ki#~$thI;f zl7|&PL?{d$kSAU&>4V0xQg?W@=WkVPyKjG8Ni-a}5MJib@ROdxyY{>#@Y?Z|#&?W^j zCldI*zvqun_~<|wB;Y@6;MXk^?%$(PP&48GeGG>WT!Rr*5|)qvK9!6dOiXMX&1{|g z+0fU36DW4#8jdh9_)qSCVI>r44uR*-m@BJ0smn-n8QEGh85r9dnlQOp+uc70hR2Ny zIJ7o#GN5p?wz6^La^t1?If4r~zCX=OMe%cplO->ex{N%9u&sj$1v}FVrWaIvs1y_w zJPyWhxfDg-{Ofk$KVB*`Cnq~DW@cAcS0>k&OtucD%q*OooXjs+nORw%10$Y0y4yGz zxIMRVr2gX}|9*~$iKCH&xt)`_tqsNfa}5k_ot=28sP13%=g%K>nz)(&dXtUgzorFD zkoo=!GYiuT=0Bee+{$x*mP_8;&BRJW#M~NKGvFP3Y%gE&{2c%Py7KFdf4Nir*PW~{ zS^jqGUoQR6TU8uQ9E5GHfpcZ-uu^!|GJTf`F`quS&Bc_`R7?+q4`jGnEzxN zAL_$RO)$Vm5_1tbW#AK#vil!cG~f^2AD{Qf7oDz417a{R0x%LHg34~NdrL^3OOtc$ z-)0tMNlYQU$XM(q1%uIwl1gs|7^!2UV-@H?wI3^?`BweNIaYl0@^3omDBnM#@DuQT zA4zIDd$bJYt{~}aI<9-Z0R0kwaCb^j{$*@zjGB!zS~o2Qn?*t#nZg$a?zjG6S@_|? z1qgY0bG}Bv5`cmIoj;7QZ~>pNes?sMI2c-<3|IGr$dot4GR8EsqlsI6VitNZFbT40plg?qB%u=M|^&+DKhSNqTijY z00jyHGOpyim_bUa-<1l1OstvTo-CXMg+Qh}cB(PPqu-VaKm`#0QGx%k#Q&(ke^G{i zRN%iDnEz8=fIM>s3@d zzxp8=AFuUIv(u*9y^~I1ADX)@sc4P1uAlpotk>dJ^^uHsUc+@qIkw#puiHlaTb$CUa6Y=iO&G)cD-& z>aCAUF~{xg?IpUiZwjGnSHlOK8ogt)oPOPGdqCFF*M;!sWMJUzu|^}5B6!bdUE-9L zl&H4C)9yD+IT|mJWt#5(CY*EQ@h(jA6;UEt09OxZKK{RH zfPwprJF1@wkI5tdb~u&L8HP(6!gsYtz0~ZQpi%R-uf_c&dwTcdIZte`e%8*8Mc?3{ z(|Lg~3c2Uu=iwG!!OY0#pP7G=B!&u*6m|J+u3_aW^N@r^>>WT-tu6pRrcAJhShpPb&bfQv?vwQHw98fbekI+{?_Y)dg5`O*Q zrQa_bFF=B@v$G>|=Qa`jM9MhydA%Jz1PomcgFD@i+uq(jr)iUT_7%!UC*l6u3V3-t zu$IASuz-jnM+$)81CqIw;R2E;3`qZ+Fbtdw8ZI851~b#~$w`_tKvG4j_vQ9*3rNTx z+OX_l38ixX9zrVuf(bJ{u0LA9ro$b%l*j+e{nn301+t>3#kf-H&*3#qg`Y+XwL`q* z74_{R0Uin90D8d&+i3_;llc<0mP1~=XI-bw8|-M-8HAbe@#90w@7TVP`d@^-A*sbiPLq20`odQ;0nVwJ@Q)?`=w%tt~7pN*!vwHRY^lMv`8NwO$=? z7ZnypD&)NB3+Fzd^SV5(I%Ye|C@y|hf}~8EZoT>?ta^xjp|^g)X5qVwOk9t{pK|19 zhg|zqzIVxcDxLSNu{yt_Lnw*cwS3Ab3WIP@_HytVFfP^etI2Yp^~w4z4DLOwlcajS z6c-Sd^5tXq36!e!yc$T|ejTXmZ|N>%`=*Jug|XTw3x|8AdEeu`cjA>L!?G z*{w1*HPu?!17~(QXm7aFK^uO9wn@vO;9ij zFbAT80}o8on5Zd#q1aIkgmC^_w}P_beLbAa3B#${=La?nyS480->h5#8!uXx!ReS^ zGo1dSGg)-~;&_0$Oa-t=Zzmlf-cGmu3>CGZA&KozY1?F*m877s2iA4GwtV=(i3#ws z?&qy_=(c=3b_Aqs*6$LDtc`3zho6ze1_we5uLplcCo~c5fZ2RJrD}E1_^IK>0#1c$ zM$ZRa1LkY1k3o?P(YE{iV3@1<#{AAg3wn18x!cu4kMn&0DpDB3yf)3X?d99S;6=C9FcxSDMpK0PHo%+ECZx(;i@V~4i^rK` z`3LoP5N{}ViRT1Eam}4&1(@A}*sI)@FW7E+VSTrP55nQ6rEuZ=1@y73%6i{RJ}0f_ z-jRw^!QS+TzP~q3SXh3;By_o9-d;Z-HhVqE)5OfS;|VlF*1I|dCp3S`F5nnLeK}sd zA)mdHI6&H;cX8pTgW}LR0d`chu5Di+i~sIoL}9?FZUE;IT`uMo*xD7+y3aMwS65dT zwHnS{-hEjdM_4_y{88`EXZq1#o5^KHa$xmh;1-vchnrzVG=PaLZ+9!&!pF}MYxV%6 zG8FH)7A5w^y5gl6sk3s;f*Eh^Vt>D+>B98E%;_xo*m*s-j^hy9^8+<#ncwyDTB}de zYkNbH0as8Xe1J5hNMU#JVsV1G^@ri4jV9=$&Ap_G?k5rgL{RkIheg#m!{4ZU1u7r3 z_zA7{L_{PqU8GzqX={@>w=Y-Ff1k>UTvkrX>dq#*g)TbEbvY#wxvz$CWP8Amr@&0) znJa@^I7Bbw{JiVz2A(%`?PUcEWYO`x{T149$qTgAI`eN$n_DAYNh}kfj_^WLYcxP` z0c1YcN4-S_=|poN2smdaAM@C`@%A3?q#J8$KZyvIIcl_?m%m) zj>94IZRImw%`xX(7PbX#nx;3%pC8I#HEv~xW>1rP|M+$wll10Kuq2M{caDJCxRA_c zjfA@GXbI)=YQ1TP#}v^8?bijL$FJ&cS_gUfYwWemPfw)>oHl~NgSTv*Hk_urK6h7o zlOAOg1I%qC?q^eK)blC%;IP})+soZy7nyzN_fY0~56H)JuK0tFlA9Yqle!Mwom*^p#g{ z0ifatVb5OjZ`$2#t-9Q+8OfgB4)befP(>FSuYg-zz@fwK9(eetyAwb{Wz?!?EC!5) zsuv7|meg^OMPXrQ2JB)1h@sAx7&$&dmDZ~#eraMpOPJTr^J&S=L5DUaJ>FYcL2qi& zZE3x#zS#^|QbeZp4-62ai^|K(>sQo!pXG&sKoBt`g`_0GKUW?(@7`zEZc3rUjl+;W zmx|$_(}54#%Y|hwvI4fHi^5o+;Jpq2d|sFm0r>95v5PTE#64on8)w@Ux|e9bxEx&RTUuvf409mr3Ym(7j#|ma#aQ|dtdDr9)taa zVrb>UH7i~&pSST1xcZ1^y0?&HHV0vzkQrH8*LlJPDEr-8!&l6a*(F2#*gx%_9}IG0 zR!5ho=-1}_WY=#U0kXGBvYevQGwH)E@f>dlA6qUjKJMKb%Sm&lO>>IoIiEEe_H1!vYVRA5?WvN4d&F;OBaphj@lE~1e#IMP>OEg;Zm3K4`eZ{& zj|KBvnmZ^P2%KcKmUylc00L%9avQH;hSruAbg^+>tPeIXoHe~rZREc>jrsVPrDN`kCmn^)k52Mb_q0*9363SFm>Ow_ z!Kv<>80cdy%Mz0xV9fEBd%>YFe~=tOZTS4&?g*G-AD+|YE+tq@`Y8FFqQSaa*v$IY zWANtd872CNXx;Q2IB#Y8V|1(SQ=It;uB`!jAB9fLclFRs@x9ZdXI zBDu`$u+Ls?L()YSaO!6G1Zv-Ok{EO=OT1#U+i<#jJO6sRRXy;}d$IWZ&QIyqY>YrA z(iGA;S#~KF5y=8XrjE8198ZyZHB9ArZhx#QSnIfwd8Jo$X0g>VgBs5tuX%rgEI|Nc zZUJH1f!0pQhCTxgr*aN^kZxGb=(vVy+CoOIO85@eY-TvlKI%dOTGne{L6`;r2g}jS zG&E;H=7C$C_v1dEPR7^Ys>-)k_XlWl;)1o!jJ$BjR&kaV$&7Rf*|FZ*MHiOx*%(SO zozm%f;bOa@3=Al4@7rv(H^YNT`b$Pv+}9T)Y29Yx-g7-a=srCltP8V&99*sdwtGA6 zW${CZ6jmE%@1KTy)N{z%GGRhFy`;S9S@Eq!rhCejQENwi=sLll5e0<=!aNS0u?O{s zqSIdLh*uV&79b}eo(?v%YuYa3xA5WtOt?_~W?C?muft2uKu*u=Y)bY9EclAKOGA7KKrpq1GOTAD#(A$F#3> zXBr2N$*BE=Y;^L0+4=oI!J@1(aHc#XW&AJr>lEwD*V3@idG2qAUTDjd=Dv}nu&@=1?0Srd3O@Qmd@wa#ONdBO z{4w(ZD(}tdgu>ZO0^DCQT?;d~V5EhW&eS%n9_HfJh@_ot9&JHGg`#Sro z?H*X9*IC}Y3ht3zrby;K_|&P3clHwslcpR9$DGTr@x2ApYSdZ8)$9XaAE&Mr2!4rR z)|Z34-A0qwc;CPUXy%CN0-Dj@1~{DCvfhw;S@`tR;b4&GbHFd>ayVXo7rGnF;9t@3 zx;dK>TY7yDdxyC|-xqA#!uo}QK)>@Zfxao0dYiXb4znZMXhBi#z5%q;G3^|K*bchn zDz-j$aJD27L~+=mfBucT z`mcZj%f`#LYy!X`$>=X9=tdun=`orq{q7lNM6 zxfUtBr!s6SC@82*yl}&~1d=A^uyLxN2+0ZOdSFvbP;83;$XdOpIy`QdGq`Ux%DXr7t8TOOS?Uutqz zV3s}I=xXI0WzJb*mZ){5f*u-~n3y~Qf3x4TUs;^J`ua<-Vf?~zKLJr~_I&BQHyB9i zP+ev&rsd0JEYoFpAMMI8w_Q6Z^N}J7`1`*y*SZ3*9N-n3G;mP% zQhNz(GgobL{;Y%q%9Yl7Hm#L*#`O*3l>;ULeq7(68;I!`@e0WQASs-UW-aec>S{gj zf&7Ox^q^h^;7dv{3eHoJQwEED7V$PByA@+?`)<5p&QW4!Qs^95*Ov9PyJxaUsjOUO zY1b)PfHElJFWyX+D%0A~D;Q$kywg%2R!1NU^>=pVv)%+v0B&QckkMLgSFQDc0O`O1 z2qI24hAfo>H)cGR?K;tinU>DxQ~iWA{WjA4-rfXv{78YDvFP5)erqBBq;hHx;dsa=G?JKVhk{82!)y-cI-V@hym$7vc>} zxU71fco4`8uN0cfKwJ0CZv@&&=^#rL&7`)rtG8zuL8Zd!jWeJEHs3yCE2km0nb+P2 zH*5rSxx{9N;SJa7Cq&35(2d*$_lPlKgj{z`RNP|_d9F#+eXi3O4^Ul=5uP5vZTsOK zE@P3}wZoQig)7PNvK8AOv`UPdy9(=^G$}bQ%wL@5cQ2F`>f|qrY^e=g9@D6f+h-Yp zyIupCDC&U(=7>*v(ST2oiZuC^CQTF7-xy3%@H=oxnZ2Dty1g_MBG>0gsP)>n4zeV? zj5`t|_ri4tlp<&TaK-aPCg*!RlMc}sdmY&JYK9aD$S?NSmyvFlZ<-;LPNoOT!r+DZ zIP-E(?g$LbuS^5w5w|->J3SA6`3Ao=T=go$fC=5Ha|1`f5S^FU5HpzDeLzh8v{39a zR{=gxuImE=b+V~9b%2kAlDmSO0caWKas-IOn|1fg?Sh=+t(x2X^gPQs(==z*E-hDE ztf8C;KBC6+c}wC4ueMq4U6jIAjp^H=6edmRS@O($wX#sw3ft3MNO~BX*h+fe&P#E|7wLCNq2m77?UZbqCQ9Sa>NU zY;4LOlJTeqVvs%q(yPx8aw;q3@fp=AHu6ID0GJpZ7dQ2t-S|(*{F&o4OHp0uzRw6J z`nu0~?3Q)&$S0(xrmCtm)Yd9Xj|eNOsy^l3uT@H!?_FPCHzbRfl934m@{FR042 zc+?h;TMw4XdhqMN%T2usPUi*HSG{5v{D!oL3-3=JKQ7iLtSlc1k&1cBD68W_pvgUI*^>l;Dg=!_fE_&L-;?B z%w&O~8&2v$_s4 zZ4~bZ$hgN0qJ01LIsbk(93wDMUpX?BzwAi;``Z6bOM3-?dc5;`e-i%pMf{aT{Ogf` zFF+LPVPDS9F9Yyjj(!04r?&$4;(w>$f1wY#5+Dke&s~}HPcZzyjQZQ!wgH;~7jaa; zcG6#o{STam#RoXuP8(57{X4V1f6!MoV4tc@aqTY(^Pj1rXa|UT@MBHE`L`K(4P=+r z)INCr?ktcI?qw7vgQqzBKg{)SPxI9Sr1M%b3iEf@)(-{^u=rnN#HM~Z%KyU3Lk5A& zNIm-FU(vvS;R=>MKop$kaUs`lGw>hf_+19V{-YfKD93*>LH~G;-!?q|c#hvSJpXu( ze_+*rRjYqs)jzQ6zd-Q+-!X^sN6#sSY00_03q=;6DCN6aO$#(B!!<(%Q*80wCGReo#?K$>?TmTb!nP?tCbGo+&aqnyRR%C^|je1~_dj zEp;Nb2EHg+KOvtU_^#4jo%QJ%At9XeAh^k-ztC^VxPS$0va*lZTj|~CSM1aBOsmPN zXzdQdJ9pTvO|Q|S{tONEyUMF|8hMHmQ@K7;Hc5~DPc^3tAiZraCv`aJo3Rk=VC5Nc z9f`)tI5o-KV$IxoCWYqgMG=(TJW0v7fw>#T5*9Y$xyHG)7IJA#+SZ+F%F5yLx+LQc`>10&-o-i zGCi3}gU~!WCXH#yftBVZFDFD{x41aBDOcTMpg*s^zm{!qWhz%6B{y-C(L5*t z%G>aaCyIW!p0Hkxk>+H&Po&yM$FCLLugf6oWsMB}KF875$QX<6kDOS%)$lAQj=Pt9ZQ8Q+-R$T<^e8?dsyU zTyQ7r;M1sOTJg4dr{J^TGKcjHJi))M!&jlX!8GL-RtLiHgn6QIq9!(a~}A z^xNjc4o}}vVigs|iJQbt#;JxgpUCm0*X!R++IdK_d?_5ul zXvP6+#NFDu?CdCTIb-{xPAP(nS7gLCapKGPGYy?ltix%rRQ}pVu9VB$PVvv! zg)F?MD#}xm67FGEjFwy5&H^JO+skZ=yw%Fqi*$IFs@$}U)D_L!A^9b_Z#Tt@x6=Y~ z8U46$BDK^MY&-&=vH9r{r}djc$tjYSnz>J;{~iMxJOY*w&(vWR?PZ?bJaO6VyHY{y zE&FT1@f#=-LQ#L~ZZQ~n`w$`b5Ou5a!F;p)?e0yp*`OjS3QSw<1vnx8oP2KBJD{h7Fgclh@J@ynDfmVm=N-S+Ys^&Y$aBl7&{> zE3@7mdJCoY$n=%k^rd-Kb=sBU++2|l>}SeZur%|#4?hd0UFX(Sdl0?K1&hwX3cKeM zgf1@HVN5i&eo~yaF1>RTg@1qPG(z>dFm6W5bhunlc$Zz33s%^x$y5qrqmkCwZ(W{p zPNm#vlU4^tL^e6w7Pga5VdGv21Rl9LgYkI$qy&t1pPv1tL4GfQ?Y6ZOtMQmfxk6u4 zG@}urQySdE&}zJ?hBijq?x$&dB~vk@C;7CLiiHoDUORA4)QpbGljZ;?t?y56J@}F) zH6oO@Pty#-mfW4t8E*_WoLV_=TzgtFpEAbkTYdOz^2u+A2}lKC9`E2;nyeEx{OFa4e}Vk4 z3F_JRc#-2_5EWo;voTX8`lvIRBNdf8$4u@3L%{hhA4=0NPR6K#Ht-J#xYMaZ<)uZo}N%z*^c(iZq;^zuAQ& zK&X3zR+|>mqsF0ahfy(%23T87BjMwli$Ef5n zMx0xoyGUfi2qxG2(V)Yst~I?zAf84T$jHVaHhu*~Rb5Xhv=$Wf1598j21h=4ATnAk zv$ArOD3FnsR?Or4Vb6+D345%Bf=1nzoe{jpI?YI*^f9##IBO9YQXv)iaBu1fF4204 zTGF?|4KRJ?hvVY6KDzv6{BG$8%61{SD?}!Q3Z6UrU@morIGY zR}0Egqx8T*-R|CAt?U>r0ZctM=j|7$7s+#t4w@JH*PMI~z%-I~|cHM}@|wss&>2$Y9J$A777Nn*;A ztxB1n*VL%VZ#Av`tbS-@UEUeeqo?BT(ZsDmRbmq3h;ORj)~dtIrz-cy~LaTD>C za#D>r7f7?!g+mcNLmZPoqJ)P{CA{K7Sk(Imld-r`bNzAA%XuYEgse0u4_+Jp1=nC9 zrvUlr=c!}sG3D{|9nts>Ra{nZ=DZFjy+#QSE-O!^*2HPBw~R86t#QO9Bv7ssdV+K= z>aFO?Er?;X9;jxjHAuU!_rt^AGal5&uMFTnxPM6sFQ~tjxn=$jzN<*7h9nxuK6YVb zO7&ytBJ>`7Xc^0CsQ+~bQho>&iHin3dOOR~An72p&>4}JpWp8b3lHaY7^;ddA)_M# z+%{TJH5AtnL@p&K6E)_4Jg+TlI$JsWkQa|dSe|81-SjnaN*l)cp%MMt-bS0ZTb$T` zS6io_YU|HW>Y{+gsZOfu_pM^_@s=l6#M(Dvc1*@MBXFD!3McuciGDBc z+bB9Tp2!zI$i%96Do@u%%YlLs_OpqTl2-)iBk?edS*t|G-I>K9ji-nTS9y58-06V+ z{)qt1teR5K3?Ji+p!z!zuGC$RYVI{( zfKpc`Q$ASE2AhQFXFsH{M=%0vz-iahJ_DdmqKcM_QILwX5}5wHLh;xwOT^jj>3*|3-;`hV490-LnMKMjnjpFkGAuTV>}Ko(ZU zBF*bpKf7y#PO(sMQMW^6qC2VN3ytKQ?&()$nFRqWh7}JJrLQMLs&@q}r~wN0_74WC zPi)8oYyy$ub`_u9rcx~_bfaVME1dqETbdxSX@EZr2M9GxfE$~i5G7xugq_*XMpcY$ zN}v;C94Cb)NHkNvCw=Rl{!+tAC|SHE1tTog=hkGd)^meKj1Fv?@gp@6J4>v1OJ9np zue$z6#hfz&Ej08~TV4Q&wr1}g-Tvc%__j8j_ z#Q4j!kev{J3NRW1Y8?#j_bGrsKh~ap&U$p;LCl#OB%UcRE@u@@g6}6p3d-&T=&$WyEBJV)xUrIK#;g6zoN&adRwjKhT zJ9T#W$ha1;bX_F?e~$WO-U(CRH{&{pV@3&NMW)Zva5BOLaGi?;0rVT;`GcXA+VBP_ zSSaUHlSg%!1I}3Y0@_CPPRk#-fDnQJCHkl~)QI@~i3H~_ZUGyLgg`O4#WzMk^5Nuz z)qu+3?=dL|L2vH+TGt}Ur~n4?R!KOhBcM9(g<#y%{|pfXF=#~Wz^1_7D=AvFB#+;v zxED|#QG^CW-~uu>$^qNsieyLhE~#jTzgqvym-nqx9U6e-|6i$KlnQ=AoZMk?v4f{i zp=3p&;z00Nq}ifKgKf@A&VYTtQ*5=+(IHetuGuq8866cxDIEAP3fN`Oudd|zeBW|} zc#xdN#2vQ1zLMmGoH7f%D(r1+bV3jP0HtUT|ROJD8w7m#k4< zKxcc>t$4cRs;H#_e6y1(jVhpqU6=LB9#sA!R8wq zPed0UrNrsuyZ!p}OhJFcQtP|y05k$g0651y$V;?r6pJ9szM3&t>_Miv?!n|IQ`FRo^8Dv28Ip)bXO;t(w;28tM z`W2+j)+M4SpZAr1I}A`htX6ZO9@4&nuWmVi{3KsyMZ3RW{N?@yiGM0NKftUZI!1{I4<8! z{+1N#_y&Nj>FQ5v%_r7QC*&f)<26o)Uq3s{8U$%v1YwZwXbf0U0ejOHrOgAgd=3k- zOGFjHRU)e|XYf>dJ1cx>D}1VX-eBNA0oo0-W~)K`XUu(sFJ7EWjwpf^G@wUf$3r@< z;_FRy>2-ro6@f7#JN4Qw0B0;z%VY2gRu&zeNQY0RGWIRIOZ9O(+4d1}56-X~e~1vE zs_^?UIjTn=f`PTY($==Nxp`GQxD0|kH_h;>CjrVWqtlm9gP2-Tsg+6)u)RoYi&^)3 zQvo(@=cjph)|_}wl~@pAvnQG&$}Eq91Ia?4WxgyaFpTr$)6OF{MR!DfmkX&q0QtLrwG zH)xyPz9kpBPgoaDh``?PM+52fjLn(*QHA#z11F^A#26?|gw~-aVTtFq*Nu46+j=&2 z%rL!q*c%tpj2Wi~VOKu&*T;qMoyKIrp z&>eZomX1JMIQvbwhK7D$})}~+iZ9dO`xoo90F9utpoMklH!%}5)vWG zDk>Vy{lmlYOdFJ%rE45|rPltR7{_KlZ?H-jM~YhlwYoi^kt9(6IrZwDVM9~CY(Gcc z=7geBvZtSdsmD9UBC{XJrCPFYlzal3OGsz80lSfc^JGkrstg6UI-(hp4(bb6s*vez z+n?(0e#>#TA9R|^6g@6dX=d%-IGN?@L^9-3tA-1-mM&`Ff+wvN6ONV0&5C|U38j|arpdz;1fZ& ziDt%UTPI%X9rJW@wzG$=nVIbm^A+xF!}tcK6;Q?dp4{J|^@bnD?MKCGo@oOkNMX@? zfWb1asebqw^Gn{kK3$2M`m0q{7StUlIA9hIYTkQm6UJR*Jx##VxeU{Breot@o0zP* zSRQj`t+=!*J;urU8M;g~H^K#2pq(PNQ08qUr5rxid!RC?M`OtZs-!d`$**mmG`MT} zLSJ-P#9_R8@-odG+BI5Gj=L-RUPHanuBfziOBcE$F9SH*D<=>5fG-~jskLmubuk*` zU)z8}+xxBv%ckC2pkpu3cBS<^`_uJ~3{aCdsn-T{L)F~(3a|{Mv028G+_wTZ;W4O+ zkNTUZ`iHPQIyG9@Y}sZBFZK!r$}v62i$8O^u#Oz(iIuzi5#GEv1`Hb%=ims+s7nkMl=)v zD!)wXrFaC?G)`HLVi={uhbJOQ#OXc9N6&@k->S*P@9m3$2pTL~zweTp46Piv_CLNn zolIoLe5G%<4PkOVK5M>?h&J-zMzxe&W2@vG!X~Boj*dIN{Lbk$9JhIj7tmXEUV6gq zyrbNBeLRqM;U=@!1~hgM-vYJ0@j#&--`g?olkUaWzGygJq*hGPB8VYCXI0?&{xj;K zgfA}RNH-atGj6lJOmpVPgHNucMiwt4GWV|cZ>H*7>bKdf*-D#v+|GX_ih4J?`CqRu zN2EGe=v@sw_5YA64Vx~0Pm=~VDGfl=4#(}L0wz=npE z%?Y`-0fVcZ-f(l*Hkz+_|Jz_QEgvt05y;yUOlL>++zQtJn83Z44BAT~WIR?TV9_tub5+N576&!XLsjMnvWU@r?=oV-)tmOvL42_ zbukXxwk8tSyubxozA3$)-Z%4e^{5)%%Fb-AcdNn_*32d+vKR%D*a>v5K*uZ>*rB&q zkO82>a@VR3DZ`MDDu&O4tj?wSNWfoVSd;d8loE>aP7c zK`)rE6PmAM(`%m9k-{Kv zwms%!I~gi>j-e$EnTUuyy+t?b*-?X&in!K7tFu|!0Z@%`FaOmf!50G&k=(yIqHh`vqqX?fHXhU{5f2SwC-B(%vwU!lI zhRZ46v{pR@nu5i1KVIU5m1TF0<72!wyMBvj^1Zfv1)08bK%LVS0-*4%U?`KuN?lk zN>D@zQUR^}d)8tSca}WN9k0~Q#vJAjBNB2g`koauxwkE8dEBzJ?q?h~qCL4Q7EAMb zg-4g`Cp8dmjl2gW5Gi*jaR4xJ1XR4+@-0`mo&|JHsp&nJb$r^w zQlr4kcPV5DY{m@qH!RzQ>q219Jx)gSmnNyjOPiUyNXt@0r~o! z4DYDt=>nG3TV~r4$QrjPr=P^o1Jny^XhQ*$)k5R_%fT*-3NDRj<%N=#m66NBjGy-3 z(z6TRxe(o6+S^&At)j1-=xr{!Xm??r4}kJnl& zE-9}zU5}Pxs=9rR_Wi~EcL}^^egR0G$N8LTSqdd60ReRmJME+)2PkC^>pUlVx_N7( z1yb#QX1S)8(7HX?V`O-x0A5RfNz~eJbuZ|xZj(hXV+8>iRP&WqzIWN-{~_wF#l$LIZWu;9(y1TnO1XQHEW9eR+U2^vszQ5;r-@kW1 z_kGXInKS2H*PQEMbkIyx>jZqFP)|%t&>A6Dk=S6oWVu!>jF8DEDOXRx5>N)aI5ls#vpB=5}H{S*zcZ9M+d^A zjsKB7lPF|XuL^pN!sSTXV5(^4$Y-T(y&EQB><}{!+z3rtNrY`0dSsdv_z}6h)Xn?; z5PVIm5EIztBw1#$-}Cu9hh5J9%8s-+)?i%>E4x|XZJwXVz`v=;Zj&F}1Y#3^DJ|bD zRfl|P+3Sjr8}E|EU`7UJC*Y^3=EuyAlXx+L|7|XVopz5DlV6~q3rY?oKKyrqItH@% zJAsXB?9gN6Wf-hO3}D^h0$?G*?M=EmCzmB()nM#CRcVzVI{{QSX({~T}&n6vD0SG3{7kFXdIin#Y1fp^$7}@oXOSBr%+SJBC%`L?mpF=laz)D-~L8OK|fD) zUxf_wzR*fe?-?S+cf9x5q7%DJ_xPg5Wt{kw_;>PsOGuaMz=A{dDQk(U=P*>q_dHP3 zudUBF4q(T(-NsRyN9h{+k3uT&$?{d1lu$sW0(7#zhom(IdpIZnVjS%P-r9 z%qpH=pRk!bZV?VNoQx>SF`#F+x)@+?e;EgQdLr8c@n(yX;TFBIUp(XrUz=#&f5iJM z(HPWo`5yNRxq#xGZ$zHCHbo`1r1N(%Iu`{IJ& zPB{>%sL;`CbGK9)%*n+IbL@|E_Fl8(P$aU~^X7;N+txZ@a<_|Hu_H&e35<4Jk+2`s7l7wTg#+ONODgJzG_X z)EOeR(;RRd>TiuWW~xT|26bLnZ2e$=`{gFTy@{9cHmq$3FwS*XC(Fm$?IN;z3lwH4 zDbZzmOx}TuDg~BGXY{l6SZjSGcn{BQi+K{890gQD=+L56<#6->%Z$OWkmm$ySKG|^ z870@1cH@s}$i;4BlAUvpIqR?bfh!{k)beo(0>5ua@TWowe;FCO&S0xoB_ojmRgRy+kLKT{YX%K7+jFtaQA#PCFiRB5{n0Y*B_@ z%1SCIASMp>BU0o;WlN1?dB%GubuBFK(>$hgLjQzpQZcFxsh2-4wzV-k<+$9}|rq8_9yiZtk{_eu1ty{&dXgIv0P7 z(iCDnAOK6Rt#wHn0l*t-oCh|d(9`X44`)8NO|@YUSP9WLEA;gcC6-m{^uaHsHka1L zfQz!l%KnJN85LBN>g?2lrj2nf3?%5e?62thCj+1tzfl?0MtGM(!;}6kX|foPSSdzFrvV07O|Vj8 zd9dpl$3&9gX|6nZ0#$*w&x~G!&3kw0h6axvew#}@AM{vtX+FfyQ0qyY_+dh{)|h_p zt9ZttQb{jLTYU_Fz9%JnL4ItErKFIgq)DrR@oKTp>Rg&)T=9jE5|>6Vl7)`Xt2>eO zy!&dnSs#7i*YNy!yB3E9mO$m*uY!bj0j~G_oyAW(&Z0;^aToLK2CLylWP-3s1Bk-YQJfw<|9Yz=z7F{WVjYjj z?OUkx^X2rWw@*OB5T+a98;+S}{vRh|D)o78l3K?hzi=~F1ymMswFh-U;ZOZhbdAOb zq0#k$(<^aX?CrA z_g%QW52Y`=EHwt)woX}`+i|looW?x9wlRAgc7Ju(dQ{dvqd~}-u)?lQKHs=PyU@?j zrsW$5z&oi6`&%6kW7~a~?*P03Y^33IM!IKxDl_OYWNXTch^|?Oi4C}15;|pg=^J7L z4oceAY<>Lp<{CU6OjKVd>(5T;r`GN})-U0D0kM;0Ut-Cta(;8Y!Bp`a&;1aTmIupx zSu637vC1j^t6AjCj!kiMpi<#GH`#UXtGc~pr$ldA6IWgC5TXYFEzvcJwRup|v z3tih6GHVbMfQ7Yn+puZsRWaKxiz-YM(KFCp(yTU!yWhb{@&P8?pw z-#Zy^b;tm%(sqDt+4|I6c?@Q_?E0Oy+aa(0;T~-$4-GiYW^0Xj+j}D$sOVhv1|Dkb z1A1G4*y;V#{xbK8=$M3O(4)%JGAF(AYPHxhu9%)g{UW-yKj~uNN=vIa$De$nZ(=tn z!x8Sr$()1F^l6w+GAYMoS=7u|<-uG1Bi!rzZ}!{ZTEXi^UN+b8LH6~;ZYt}e_-uO^ zmx&M8vkSDSZ35bA5Rd+6b@Bx=bb&ZK9&>K9VQVm(bkdq}lE-ZMJAhd`Va8)$#P?&C z&wZb!M80FO^7Nt97`x+L+1X94;NVOKTAkwFxV}B{;_z>$=WQt9ViKk}Z>WY}bHkw2 zjVGc-CLF}fPe*IEUT(1A(|aj@HNO0nF!|-SP#QZmiFsa)kOaF$Ra>OAXDSm_=T0E^ zuKNP~YZ-;XZ7Hu%#EQ{Ffql9ODIKK5if5$gySjW|m(O6DMnci5VuwK*5uTgRJyDsU?mf7y?58)CaEd4!TMI^2*EeAD|#;y*sZV5zC zrylma&#i0+xrWD5yFcaWzidOs2Uhmx72<3nM)j;xm_a>oWy+uP@#dM?NY8jYRvA&& zU7B(aiqUsTo^IignWPBhGjrDcA+s{$a{|`83dhzYKXJ(#Mw2EPR>kTkUtP6ssMcvq zdY~8hdhRT|h?6j>Hg5FnK8e}ih4ndq9eJE>z_L&M@MNX<1(|oCGZN}r{P;1-#nChx z_aU^&E-Tse?|bCJ)5-Warn**M___X!k&0L@0AWfth1A&k#SW%0F|edx2_Z>K#F&qn z(eZzqbN%tq>a|U)`xDh@t4_+a-n@+zMBmQuO)}NkVb+vgPJ`<`r3BB@7(S1lt@U=y z^MNB>vKeSWSZJ{j6IV_`oA}h+;)^?!_a)9qs8Ex~)PxnLF=lAh>W?#IN1bLrdfibD znns3CkIP#0J({=mhvUfJc1Kq%w~emt7&v^_ryZoi3SKUlzNjRndb(`8S)r`O4Mn+* z&Z^2RR(ft$fZQwUNVV0O$Z6_$^39u9*97lU9kLL+_K)}*U>A|PW7wOEHkvS z`gT5xDeP894(q6kU3bRsAc8N(tNgC*SfLpiw-rQ+^@_(L0JuoNZbSD zc)bl9sXMe&eF^*)nCpIM62}(Fpa0Y>Ru##fHUe$DUQk{8_@+p%N^By?Z|Q2X4Lz@(7>2k;YX5smh{^~aeKTxVjc@89Wuuy^SbYFD7LOtriwgm=VwZ*UN=Bza?)`kId`}wj^qY}Ub$~%%E3XQWOn$9Z z)6EQ&ZElyW2%#T+7F%Y_jJfO_REe;;xUNhxQXh19NnalQCg|=w#dnkL$$Q=f#`{=0(Ju1kr zFCE2h6dLZtQ)}#7?;|v`tg2B=Nk-t%#J-IaeNIN?2*COGx_h!((9TjfkfcV^GF`+UW{$Awv`892&i z!IgA+t67$zyhejeZW#P$S3fv3e0yRZ`Tcas-;<_gW7Bo7BC={{VnJ(Jd?7>Ch<&Hu zsn?=vU7)83B_XaNqN_eajn^XB(-%;GBUPu6wv*=6ac{uyW>%1OZ4aR;4y=TclaFDZ z7t@1&>vynhlBS5LN32e%v*Ct`08KkhzDo6>MyGs@!2of!XpYkQ4!s=llx;o~G`MO+ zX*2ZqjKkzDCeI_JL$>r=z>BD8PJ5tl1VQP6NYIYVZ6B((FO&x~Y?}61oUHS-^RXV1 zX_FgMQTy?0np2l=Kb6K`E4Lb+9OS8_y7~bbrPfI&FVBS!4OfRDi-N3yw(pyMiYw2; zSPy6SCW$=}C#R~xE~gqMx(xTHdUxRf+;o{{@Q6HIxtRWzY~s29swt5;U{Jz0+3;|6 zqte=?^;PorwIkzNgyhfP^So@Y7f~f&I{61THWQbNyaVv}uWI!5@?I z4(CvmCjLt}`ihm6gl*n;%At#E$_XC3{Zi-D4Z?RM`4O%oY62&iDsY+CKfjnr zGN11v+)vwezbHbuKy?M|{{f8Q9nL5b*&EVl zO7xkU0?i?{`Kap%<69mg!PbMYt(j`Z_zubKQ6u& zrut1I9bapM-2^33Z`k}v#IHLi_r1JfOxwFz3>WPywo77GR)O?`+_S=`%(KUt zgWdKleTtH{Y=WvhZ}vFtQ@{<7+T=7T#veVCrinYHO#|%ap>!VQ)XRGdA3+uT2+xC% zq<@;C(?InD!LZZbnlgwUm&%y;m{pGbefO;5c(Y7YZL=MZA^Lbw65b-RUX6QU2!ozr zb33LF(fjN&-snU1A>1>+77Cp>&{uO$h-Ip2m^!x52$_| za(coSku;uHrtukB%J0*|KG2*dmGL}E<>y=0NRd z_D~WeX7(pfJky7WbPSoVQPVskGT(*w53MOY(7-Qs2k&0dg%L}#qouPMp`-ufN z&OH+=xDVccT-plJZUd4Wtp#7`xYM3pqvqjyh-<8-rmffBSzG4~1<})0p}W^(uF8H( zb7LNUv4G7u(7-!-s&WH8Ausga&rI!oI_rBIXpw%dFuC`mO9$v4SxfET+cn3-w;4op zpvkX`hX+>BbiVN5%H`@1DLa%1s#;Vn|4fphCnPixgQ;`ax&9{|=XJ9RmMt*rXQzoS z_4j;dvI@pI!>c}l4U1sj1fX^dyGE{TjeU(31LAO01=!dLRU0z7tQ){tEyOnAkbY*s zBY9i^sVummAO{-|V;tGIoH>50D6MdWeWm27tOafW>eTUE-O@YImfI$MC=s=A zI6hE^9gN?W$m7b>@VIcH0y*62`>Cdv%TuH!=>xrEdc-=ro4CPIEWauI+WfM2M>681 z)J)>=CKE7i2JB|B#LArem&1Uf)qY{^>Q+$$Alm4i<`-n1kbyVi?NJqitn3|Mq@{Zz zr7<0PToU)dD|FwMP-xMwJHx%U&3b~8;=)B*qfCQXz+cWsZ*&5tBvC{=T4FOWVDJj{ z-h4ujM@-PYZkv$2lAxkdLqI0QX0mV#n#I)l%_I$R-`{d0yo<*lQt=RQHi?Qp(-l$T z_v6LO+Ab^(Wr)R}&X{`U)dKqB)=y~F;$Eg^Z|V!1$SMLTdq(>kk*6I^`>iw&d0#j$ z%jOxV6CMng(VrCAv`jnaf#_~Xzt(#A3E&Bp+ntj5n$OphGKC&_0MV!|7euS3iT36Y zj;gptE%&zT4tl!5B=#d5OBX=0rp;O zxJNMMbC`IaTJ!i&&+79+^i+X3@JuU%pR>Yi=o@zq?s$wWb-I1#RlW#57V=!+7Bw-! z45^zusn^)53|aIK&%Np{G#I4wh&FO;>P=BTvCK9_i}7DgS#MPtbi%6=yDzai0Ypxj z*=1-K0#)MgoY>^G-ph867ufoEbM*nx)1q$rZ}*lKi@sEdyO#9XxXmCp zj6TF8jf}XJ;i*=LBPUnEq)^p@MtuGhfJ06rD64kI?lW6i%e&67mP;&k@(R!Lx3b>* z?Ae%&x~|=R2SLMbBNxweLWW9v4-aIMYmhrcUDsUDvv+@3mfGV{d_(xOI^J8c zK%_;YOsv;B*8gagW6U*+i{$wq-hW9=3!BW}{j~R=2&}xFRc_#)g*V$~ ztHlWrDY}#GrZT9#`M|Guy>fSNRAX+yW&JLOIhxN#LY%9r1a6;_dk^~_Yg3{%0G;cM3xp=YMVa! zu~t{G5Tw)beLSKhB9Lt%vSpbk`cP>2^<9hUpMGa@kvbCu^WHMWb#;>7m$V*xWV3)W zZ?WO(Wg^!XJ%(wEi}|eK7jc)8g}lu35H(3@TpI3DD6E_+UmsPCc2`?7c3Ci_Q+_;R z<7+2m+mu_mH=5g~`l#7&!0Kpr9z6h?GYIVsdHv=Z_k+jbVAyp3%L&A|5Etsb!apwZ z5lUO%xx?6^=VOS;ezeklZEX3ov0@#Du2uy**{1ulPr{X$e6budNYwduF83NG!t&@c z4IND2CXw40m+yO+$e#`L{Iuus`*!$Khx*HL3ICLlT7RAMpur4#4SpM6`#uL0?RRaE`skRze zcoD=Oe{<}hIPz~iK1@k8)zZ&zJ;cz?i)?yJa=Lfa9O9t*I=4LP^HqJerZU5d7m}G& z{Z?&dHUqn;vIE)4M=p7nmNv1e2`;YTXLIn$z!hts?_&F=bTPebWKIOZP7PA0 zp1N(jVjj(7TlH;Bo?x$Vc_D4s)vlizz_cC83ES0HR+{woTAUbld1nqM)1=3bX&8K( zO`q)P#1VPuKKtPPo<}-S?#)5vd38D_&B$W-a#^MoqrmH+w=JDI%#~;082g+R}2eQKTq3b2y!(z zA3mIO7{b>sj;moxrpp<(%~LF*jEV1fR344hxt;tBN7$i|$ACEL3%gJ->Q!VT zXR~)(?i4!g`Joq<4<>sn$U$?jf8gZ=hC5lpu|W*^&SpuM_fSPFJHZ02nfJp#n1E#< zig4DY#7ICRYBgon=L@@%x8Gk-K#b^AlIe?Wb#BY{P!4Twc&{Nb=0T zZ+KqCBx@ZEVRVd0g)r{tPZ*zJ8Kbv*3zyMfnY6uvAR-x!c&a1T0Bl`qtLRd%=myt*_KYb{{CPlP&Ey`t&eT1ZZVe2VP^(So-x;(f9MI zrTPYYJ5=L5F@7K4vi5*(i|N((2$d8O;mjC$wrnz&CLx)WYk)cqhaxO^4|z4H-R;N9 z+?@=rZiN2lfEw^cxvBcE?AKAd_ChqDV;5PJ>&zCPokwe2!AbfYLI?t_gRJ8MtyiZx z`a!qK<{*f%*U;tAG^~MiEZI#~F;sw&R%n*NxU_2y;$#0-A@9eUa8G3f1-$x0G-KJ^ z$h??cS<`%a3x8?ei{ceKvPQXcabkOxI${yc!u>5mzP# z4d$ik>0k8z&fQp*wt4naUan02pHEI$6D=M?^zJ`Pu>K}H2g#61fXMsoR1Mb5eM)c! z9%W>!ex9kmBG4)Q%smO1sbpvpuYJ3MydfY@!aNj{(Ae3XLmb7O z#*mEb5R)8Sv4P1v0$hb5|k1$6>f_C7tw9VJYRt5F?WBNjhVyVSg!+}G-%`wB7NR43yE@IMAU2vhPZ zGx^0{)Bc_JOm}qE5yM%bGMuYxD$`&4B;PVFGLz5D2CJ#I<$L07HJZrCSA#LQL3V1_ z|DAgdjwZPv4=?|@TM5tpx-jKEMOXBsOmFm*BoH|eq?RKkUA9pdM0&e+CJy$=GvjVQW`6lGTbqsih-C}x{6w|>#MThTflq^`JVlW5=0K`eLh3Wnr+`KglJVr! zneY11N-OVWJJ)ji_hr!8;>o496s#^#&UqDpBLZ0}sd&y-km5S)!N&q~DeSG68SF^(L42Fy&P_g@_ z#lfjprNNzYlvA_EOdenx1d9=1q*D=T4xTHtG}$Ttpiz6j8RgnSRlyt#SzuGV7p&Rv zTavEuwZLE_wyc;5ag*#DQ~fu=x@7oTiYl=Z{Og;u<$b>W!Yi5rqQbLnswJnX8NU3i zm$dYrp#7-Sh~TC!ow)l=JvQlKH#-IygxTOQNZx8G@Np(ZqoWhu7~<( zS!W*?dEszj#S7T#D^YH3k5);O1{(Cgg~@|P^u&F0ANe5dOg-Eu(SOn-ztl?o<_d8( zxPB2VXc=PSdnhMw}H9ZoNksQO^ct87g7Dm2;PY3I>Yc_hVZ7ls$Mj`9?OF|>c(6`?H58fph z!izTza%cJt@`wpw-q+g z7KM_V!17s|606uvU|D=mOYyKyTJea0w!;hhP^s9yc>C{6qg5ZU0h3=}tK@ff^|d4Q zRho?E4JuoRIW`R@Q?bi`y!7q>5!>ooYTtaW_2C#>Z^yHd_n*0Mb}{d%&+l_^C6Q|< zK_nEIX2;V78po45uKhNQUzgw!ASxVhsEi^jGmuJqI;9cWfVqtn z)JA)sFzTJ}%_1d6=_(D_%qI}1_c#_3xnYur@e9#`@^H%^22-N->hJEbk>h`A%nX8X z47Mr1Ir8O)yT_^{?OEJ;ME+j!MihK9ssYDS`x94aIYWrEnErW6#@|qcv~ejyHp?e7Kw&SDMn=U`atL0Vup%{o@VkI4qgnjQiLvGYQ9riEQ;!N&TF+QPVBY&nm#zo%K!xf?7n6&o!ZdJOGs9+^E zH5c`TX!pB}jqlEB-Q4a(kpDJGz5B}jOXEH7(@FKc5fQek+(AH1#h4B}@gN9Z99Ud^ z&W|`LUtX_!m7owjo~eL`AKd(W>cuYOR9A$t3+l&1<{;}_C z_7`L7&Wq3NwfE`6R({R^->v?%Q;{|C$%8sIHbi>u$ZBbC3YAvMK{;0A@jMUb@#V#1 z!w3P`Dy~mDBY4+3r}?T^n&&eTWbFcOi|ZFO{% z9DDw8xRa@@HQw|~pUJ-b0J*cmD$mr5OfC}VZ|~GR%ieZMl7#q{8q^JJ>v~QeW7PcC z-VKx8yu<0()?+(slmQ!O?^awVP(!Wtq+}y-)4y7=#1^v4O|nQf|J#16H-wO8xB5u~ zDZ+)MyLpeR1jI%lCQ($~V+*{j_B79v(i1Q^*%$P>SZTv?z;S!Ib(cAy?H5l#xIjjP zup*Tg`UV>WuN?S;VdzDpphtCz+T@;O9 z%^LcbGxi6w_CR{e5|e9NuMAcKz%yH}=x{ zw+*?FPfe}(JLw76-om6j?3|I!ZQB2kaS}1jZBQ~DlJ?{=YVe*8m?An*g#(ip%xHyQB@6AAL zi*kSU`*3%Y!4E?`UCRNN@KD4IxO|w5o$vr#WP*bObG>(jAqw9a(`7MMZzNuoX1;=T zk)S1=5fvjg3~9P^T;z$)gRim5Zd>xM{0i8-TuFgGw=^u3kNwny)-%zQ6kYZYrK4>B zJx{yFf`V_Abth7VI4SAri6Rqh)WrqHzcPRcSB!v~m=aY&=#AN>b7xEnUfLNmV z9feCj_vMyyZzECh?&IHyYWdysaffaR=H_Qpu7cenF4duaxe{pYvG-YP^Zu{Nf6ZbktICm(6U%efl#Ipm*;{G3h zBh{=In!N)4Mi5b&_*RIW49R$p8h2>5gDNI7$E*q$^!bJX2nr+O?pmK6ECop4r)yr` zG+WbCXVXkfHP{5X=!jK&Hs+GdTiBASO#ox!b=D$T%mxmY3%EFxS$rJ+#rKblNjC$> zH8$hF7u2NIYMW}=mV(LkR+iw1s@6VN+k*{?(T(e8{tWq>NJNfrLpre5XUzK2Q`VZ} zQAR|o<~NP8`!h+ez+{vi6i0dM&w_`~pqh_!Rvzk1dj-cl)+KNWWupJ6u+88d-{Lcl zx8I#ce7+6IRmJJdckT*VdHHI*zY=Ih@!RPF^+^4}Ek~tAtTL`1um1;b%w3U%D^i-?& zx}wEwu;(6Y@}iUKtvXBa?=tr>bB)-$Z1FGmY(uK(fa6g~?GOge^QS4uF9%7kh!am5 z%$$}Gvp#RKluX)WIqwB~Y*4<25A(ZCQr<}WbnTaRrb9WIzPD_ zN4hsJPvP}ekb-nF%r4mXL$%x!U;N~uHV{t|EVB$VP3uy0HBI*kQ2$P zcWvnvUV(02P$lC3hU{lpsaFa+5>0VGZ!^>HR^GVS-a@L>9CZ{kAI)K6rB3)#(KW=cjqKGo`87C_u zidjFg5y`Q;1936eUHY@q_k!u0RZLS9LY1S8BLQl(rCb2}qo;mpj#=CvK((or-uA6J zK`4B{$<<6!p>^1Qrdwe=5q4JA^5dcIh5sK0y1CMk6SQ{O{JR8^@!6eHn8Hz98JES| z&k#mswi64^yTK7V{@9?4)6V9>O)rMlzzRAAwmWrrh}pWyyq=qjOryEVRdp2sRQ(6; z-#^vgG;gWdL%V|ZRRqt_BBm5_RhDS@9~~1YGi#b}rG#CB*2mrF8=L~PK?--@Gtxyc ztP+4qZ{?gT#j32CYx#fl)5A&I)@vBTtFf}W6f7|kI&!jJxR5F!bc>1VXUX4-z% z*w;!D*%+wOH*7x=rPr=S^k}4rR-&8sA{9j+P@&Uvo)nRvAf7HcI!9c-&=PKc?~_aSvlyy$dbXxm@|e-Efl#> z9T)3-D7Z<(osTm!_g}HC)~a~-jcw$3%zB6j>!GHV^j;ov`&>rMvMNOFvChnTGkac( zBuEYkIpbgIr+L-x!hXPh-MR$b;N}Co|Kw!a?tcdcdizrqSr+2=y4c9Ef~SZw?glqsOrEYzgAX_1 zG%TCJmYkLp`(Ne`(QDpI*!i}cO{iSCm zT?P#GQ9rpPuOCZ>HMcJ~)?%}fS62M~gC7jJO|Jnq@!T6s%e`RJ3%9P>V_MJgqx0FP z1;+N^5`8e_l>0pVmudx3!v~hrzoMz5Nl2HpI@YhdR8o|u!6wcVTocdr$txek_%Le+ zL9CLULptZ!uW(UYqg{=X8f;@Zij@9Z4E&si^=hC6=}R9S@JOe!Pa$DM)}L<*V?kil zh$Bz(h|X!oZ{zIAxB{yrCZxxMA%aWi&c&_PleL-Yy{ z41Y(e-E}vrl4upm82V1dpAD*siAZl`1F}@;lrx4vb369yi_@yIo2Ft7fC@+0w~Q2O z{nwYQW{Z9f2%2boo#TrQf(S{Rruepftb)2)+zUoJrm(AqAJoY>cZ}4Cu0`UtRuBHj zRl7^M1%gEX7*)D;6$v@_49(G`377S7+dJH$?)7Lpfhp%?$MQgM!Z5q^>XPC&>>L0m zNGGv%+r~*&2k*1V-}z@WZOM-N-#|=QZ4kf_Z4hu9S#$c;q0Dra_9|VDQTcPPHQ8M) zwmT2Rf1ij%Gn4m-=_o&Xw3@`5zS8lB(h#~uqMV^NJdsj)5!rN_lfC|qF6Xdb5e#aX z0$YHeg}y2LEn9ZMpTB&XAddV6q0R2(s+)U4##&fG{SdHsJVMRm(GNZ7=G<*|!?V@y zLJ>2G>?5G(W7!($Z2h;84tu^G+%(E=S1-uMSfwk_;6*v!qoOvk7NL4xI&M~*Gq z1UTo$@;p&7->c05C(6A$uM(2F%&;Rp=Sf){foVM!)h+>F88N*d_KmIqCer}h{MkxC z1Dl7Q4Z_EiX9SK<5C3Nn&cdayBBb&m8Ea)NPZU$VdIqGE2yowo_Hx(N&O)m;%_b%h$nLys_9^SkV^BhOp0w#$BY)LIj+6#N*)VYT$~}>^qw?YYz^B(!fe14_ z{)e#^u3lJ>)Pm6PFafUHt(kg%^&z4CI~zqnH-yD<~G5OytqRH-H_+Fb#!4B!%9(AlNCeV$0N(v z4l`2n535SUQ$V1Ws7%GkZl5%3vl*j~m6q{l(KS(ZF>A%H(JFD(7Zth?&EiQERUJ4x zJ*zu?wdkfulI@wOEelv(%_nu=!HEvUGT1;9!3syBs_>fN$0$2<-I?aiCm56!xYwSaqqv} z1lmO`4;n0r?*|cH z#COGfIuA!Oj5bUT)2bYWg9y?b8y+b)AsoGp(mHo6BCoYee9qZHC+M$8RWAypx^q~N5^P9+-;RfRezQo ze_FSm)B+0}W*>@84!l5r`+z(tC49-~IhnVRD|Lf9ojNFL@5!d6|3@OI7~>bB(Q~QCYGq7$)hhi;5|st*t6pp{?^kJX`)V=Kh&TWrilnl9xLsf z>>jmCJ&3asDT14~uZ_)a&s_Xe$*-@M9cVPG?G!lb`@%ZC^5DNTEvu}{!u%eHR-dtR zYEJN%Mbp8~|Hei{$^3=0D>u5=@vTuDGGIn*BNyh%?oFKz@|}Bc{y`GnVIuGNZKyQl zj#u}qt0)!Ii!d`^!NTlsea54Yz6iaz)Q?!t^x2QCsj{5vW{~ju`eM^1s0Mi4AI#j~ zfW<$Ef2PQ$$;GUvK2sOz9jN+q?An*V!%bUR2RHubr-XYVQt?&mm0tpKG|L~H$_6V(L#Dt?vA*k&JsojJ}y zmaXp++2T0+Ev;w3b6szCJTfx-Jc^0A;jQ@P$AJL2`RJ<7|1yF#;{v4&lF}d3UHS1C z3*RgKYHLOqdMiyD23kLhge6UcJf`mWZmto%!b~m#x~y6ZXUYkdO&a_3AJy3HPgU`O zUaY;&%=aLl*b?gh~hndX&iWF+16py|FqgiYF~)Jma5Kk-m*@W4v{!s zDN6Pxn}9y0K!~k72BxP6$@s9Hl(tZrQ%(2r=Zl^3E=H08ZLA&~%1e<2{%9W5N-As` zmQ`5n>$=7}jLiUmINcdSq>vcNFmUEN`$sD#zWr$-`j^OU4)d-wzYKqgsmsy9Z11md z^{=z1x0V}9aO_P^l0Jx?i-r=>^G|rH`jGa|R_fi0y25_=Kf^mV{Qq1j2SDQ@O&;SE z3F@<4DlZZ475^DC*uB`V-H?b(Vd$%KoT?TK5)s2C>YMHcM5X;;(TfG4k(W)O=0v+3 z`L;=nI`=*aK4Xj^vcao~d1Z!6z(TgUNI@q3bnN3Ua{%%#R()yH;X68`#nj?I8d-K6 z3cyuZKdDuphGam-zu+8R^AC!d4RTKip|*?4z$BdA$-TLAiU^?WV(d!*?c1|+ataP} z-xtx_H}1;O)~Q*4BTW*t+awcQeAxjy+h^BY7$-2se|&WIDQED{H_F+(MD4K07oidN zQ0dseRq{J`{;#vOAPBDXr0f9)mwo^SHfc32G?DL+*eqU~*8&}0<@qhN_p0a9H zp}@SmZw*Q9H5C_SKh>#Q<}_}R;lA9*5|#L^Jld6PP0XprW}fwB>T4;_h^&>+0we2ns z>d~X~?UDA#7VnspRGYPYStt+1yiZ(l(scrKF8QYt@DITpZ&^sbgMj(8SrQ#%KPpkX zeJ!H+f04%G{!F^*O7C*j>`!$0y+W{)SJJdWa}4OnAD-flB|DM;R8%7Udk2e-`UgGd zmb@^l*)q6eGY4V#j%_L?6Yqux=4UFQr9RHT`Ri!-(d_%(<01LMD*KzUOVu=*Bz0MS14ujD|qC zf0{;PF~%=BwekKB7x_#=6c2`KM-|(7p&21-qdsUejdK}TfNEmJyRW@+E3WYH7M;YI zcMgE(V1~Wohc6%9fV?NCfOPN&S?(V%ugIEZlk<%=8=@sb7nhDAM+N<;T7$*qipn*4*!d|)7g$NFw=a5M4GTQQF6J~6S*2dAaju&PuLe?%nT@9 zgak?QOiy1aevBSz&Cwh@fay9j6yb)E8Qwr>1TwN{&1f~Y=)TM>`WR0-?uJ#;S@Qe^ z&ym-xde{V(SuzaAr1*sNVpB^4x18UlyfA0u7_f zwIDK;h|`@(1B$@Dm!LOf;*A)Mwi*83{k{Vrk4Iog`CmBo7HuJSHyF~L)AZbV_LEHZ z{*s@T&`3`|M`Us{gqiov+gR1Bl&hDyGcQK2b5+YfggSf}T67TjxJYy!{0Hls6jR=X zCF%~%em9`o{Y#*0bT$yqlZ`?;_3XaN4k&~WvG0j$&V*xoS`Ig9H`KBKoPQr~@-x8F(rxL2g)4mey z8tK0$mDhoQyR)~ggB_8P%o8QBi9$CxFq#`Yn?V;K z^7dy?v2v9HWGduwsA$|TGRr1Bzo*H(j&?~4)s|X?2e*AJE!@0&j?|#Ec4J^XHt*z1 zFocN3-TIPocoU@Wz^vq0Fc?!M)sU&Qb_Km~@BxhS{tcSV>=~7L1mAAmv_0nN`JZX! zOQtJ861~pRA?K`&A&+5=xRu5qk#v3gg{^oaCI&%G#-!q%I}B#q^P_Ao zYi1noeI>+_9DNDB4p0c!ybt$qoW}8-(#=>{s8X{w8}&|WvL4)~l`)VDYYL6UTxaJN z)rjFc4RbHLOKiD$@AYy&$z^Kil!IF3Z2rsLHp+BCGZF6?KwcDDrX2=?B*8Zj>jU_U zNS*E@yf*IAQQfg^KkS-gXWI=b#d)6wv|ftj8pmRPa~-v}N-10&Ri&H&Q%B=KX= zeQMnSx5}j4FL|D;38JuTww*~GzJmJh5`K+5#@z-`bn{<5cvFTQ_v745Nrn|oI8cA* zPRnWIw+5cc?#CjU*U!=(ysoZw*mrY(g&A2x6qP=T#^8rMmZ!pg*iacFf#R$J?g96g zTDz{@M4x~YRqtEhTefvC3EZ->1f>?=FAtvSM(psEu4n!nTa=5X zuMNwYt46KX>vhcucvF)O$Kz2mZ7gZSMIVCcIE}*2_S=RE+_Ql5AviE+wk;5o4;;0 z(mURfgIh}9B?&D8rP388k#x`{`!}ugS>&nm1EZp6Gu;~6+Y~4bRdPz*Ts9-2&Rb*O zqS>9p{%nO_YUSoLkmWKsXO@LpU2jPTi=WEtWCCKddFy15K%aTZB z7+3+^>+4$7ZIC_0duu&ugr6M85X+|#ot7N0p1($ymB6_$waQz4n50W=u^bQ}r z)^>RSrcVk2kcuC^rPlGF6u#Jbg#do(K zHfwyhd2*U#^c~*Mr0E778PDMnXvh8c&T+E$TpYs@-yMzclZ|3p#|U9cthesZ9Ikzu zPLZAuCtA#!>}OIM_t%BzwxzLeXh?YX4y2SCblh)P!P$UbB9dHQ%L>-U{H2S zED2+T;R-X7t_Z9;R6-B8CyyP6Zn#x- z0g$gp-A9e22W>70;%fu4A4%Sa*%H0Y(v3#QENsoL9{QzD$FM!)$44Koe9&SXHDUU- zxe1Efcw>d7$LE`XKV<|=mGlMxd7=)as`3SGM%8D zGdwCL`H0kDp7B3)(_m!(Ya1d7!Yj{viW>Qd*Ylo~1NysHIQVT(GzK+u(>~{ju6fSyRef zR`Z+YJKX#~8Ib^Uhl6jaX4NvnTN54f>K>~o)R~{QPUwnH`x#-zt6GXySrZO`{D?31 zvB)kULNNjAV1tQ>=E%aYQ7{e>Kn-g{edEO1Yk-Uy@}}Y8rMp_&&kq&n^tn;E9B;_g zN8m*usCks6=dRXDS_+oQ%?!|CoH&=FDp>S1!EJ(gY9H@S5j-@86h zC;G})%4sn%6*yaCZG9!y9Ri<~-X-uEpZ{jB(uuzb;b;T^Ye=kMHvRbM1~*_bdF*3S z^e0b??b$s+a0EeS*c%sb-?hnzZtm+|NA^#F^Y*z~m@rQ+T%R z^G%aK@H1)vmMX_LvX2~rhye&Re|?S9vSF5w3Cf;wHSP_cZo7tpPSdQbMOz%CbSiHE z_V4u+ZJ4Qq1Bi3U6F5#kxXNcQ$D|y!+wsu@aIrHe-!QT!)>f%x;wI$YvdX($5gPxJ zF&;y`se#4hjx%DCs#^8Oy^9u{Oq>`QuwL(GB-q4|NRs^Ganzb0DVZ}e5)`M&yE1vXz?biEhBnd-sVm)lanc!3`mtf^C{4JadD-v}PK^sx0K>2kTpeYtk?HI`E* z(*~5Hiq9hgZljtL3WxE`c(gJb@F=|J4FMwDQ`>?&FNp5Lv2QrXusK?KsBjtA8Jg14>TzY1vA)X9Qx09R<*im-0iR ziL(cFb4Lc^_!|#gmKO~O-D$1g1K&pfxN(XY?H;V^67Z~l11(3CY3UKX^7_SpcBF^J zWn3FZhu?lqxju5)=IjmaDonO~3MyPKpP}IXBKxXD?h^`<*%~t@BHImLJD0$3Qx5(p z3%b;Y-oHi`HdE3=5Ure1jq6m)@X+jOz#8>41~_U~1&HXK3Q0Iw(_1#d`WYD!+h$CP z-&$sON##oJpOf}?oV)qjp2wW;~fmY02^~C%>XRCev?S~=9-a^$M z+%4-{yXHDAP${ZaRzF`k$rcj^=wICF>l69oNh)mKqU4=Utz_FAhuXbhrRQ>ONM9U2 z19p<#(o?Tp!YOQq>=)X9($~F}lXjDBPs@)PGj)(*(OfB7UI+)*1!}>0P+Bev$nVfy z=>aONh>%t6^7$j)mBQcUd_uZuJEvqkPMPuz=TZ_f(l^h;n)i^^lBs@OlWYh5cnWAQ zLM$`ONvEGd1@?QO6uefdhnk(YuJ(>5C-yD`hmnTMQeo%C;PhFG_1>M;4^eIfY1uc9 zRpx}_zlN5jPf^pzh*wgC;V0f)C{8S}nh~nrCl*=%XE*t`b<2F*~IYsGCBn;7b1y+ws z8&0x?>BCb{OPjTdj>PK5LB=}O>KeUaZu~1!q}k^1tLVa(NB}HE-ejzPI^LNps=pfp z+lR@pr{k3+s`TcOJBMC3ectPTE*>06L{ra+daB~?G)-Uu7gskG)(6gIx0`vYVYRML z#6j(w<`_nzm#9GY7<~#&xe0Zn=QLJIHUkio+@S8O$Ew@?o?li#J(u$qs93tU`^;Ka zgt-qU+wWD&XxKVvGgHa5>O3$qII8!_T8xP8IPt1$CfOBay@kv>b<~xiU-x()LM<`8 zE2F=X=SkHZNUJ;4wF)FSjqlRnw@b}>>wOykwfwRl6Vya+{E9b?iu8YT$kVGCa>$@X z*y!Ep35e`C^UO8I{A%_(_;R&hf_8rI*Ao(J(sVsFt8UxC#i2vTM`=g3^AET*whl#(%}_QzD~&ZVQ1N}r?Oz7Bjzj#R-2PeUsOkX*+#jcuCsqrR6Y8LzbQCh4?W z#6c~>S)#J~8SVZsRvbfBBTXUoq4l^%HobHCD+qo;EiDqE)E25Koqm?KlQ zwwW}~r9XW5bxYLoBteVOx1n7Y2{k$@Dhes%bw9~l9jq-r7G=b}7ZBk&;F6#t$y#~C zc&&<-dn9ObvuSp#z*R{7HexvQVsMtQ0+{Wvn+BH(%VGSr6=OfC#|_b(GR*%&>%`RrP|z z5*FOkBn3n<3CHtUFm!8I+Q2D}vrqq``)PKRuO!51(UXx2DZpHqTi)@~w9px(9S;-) zXvBBO?BZX-nNdv_jDFsg7eY5t?G#N@$g@jT;tv*EYOc|rH^~PR3OO|yFw&SOW7}|; z1_ys>-?mFbkXe?z)G?i-c|)Ua5%fHDo@y)06dQcN$%|7GB|B$PNiMKC!Ro8WS;>a< zWsQ$0-S!x{Fum&YAslqU5Bg+k+E-!Rhg2CsK`-LTKju@i1NOesN7v&>fl?>S=EvF{qo*tW~64`LG=0Eii43Z1b|f^q+tD!c`MYn zub4|_5I_6jTTZ9XAURUkiHo`$evouETJwKhX59B&qd;5L@R()pY2e4eg=WtNl@~q=RU-)UU4n7to787blpbCsV^^n?^8PJ8)!(kH ze<|-H*=zZyYDXZyv(5-T0D-^H1sDBEEx{|SNI1ZgL@+vyrxZ?CkQKl(d5r|ngaL3r z6pg~bt=Jn$TybipI{ej}o$pG>xZ>ovi`n_d_NkC{az!!9SUt)WE);MBg8O}u{Y8FK zC8k&~^(X~AF8M#bf}T7A6kPz%=?Pp+YakuI^irVK6RS{>bo##$c&E?7g<%veaVron z!aRq+Q{v`p2OoK!iP0f`r^NYwIHG)2Cm&-M0ile9u{=9U^aD5Wzjs;_g(wdKCXjg4 zb_5*SKfgK=K&}db{|R`5lV0k;N2mGQQH)UYK3##pr5DZZ2e`21S4>$Wp02PixFz=N zyE1dvWwTpGjIY?UpiXDAg4;P-X&y=ZNXd0*(B;6pj2QS}v6ULk_w<{Lh>?`P9VC5_ z{`qC-3swp~1i-hs?31>;Nlm3hJ$bHqxfo}NZf;Tu}G!FoY zK=P_pS(*T*8UdTWvs3%A;Iw zai6vDNXD=WM@rttwMnig8IvnfCt&@H^df{AaR3FR_2VOlFAYghHeCThXpY{-0v}z) zH!vx!1|%TA3Qp16X@Ls|esYguQVKaNq?IO;#P^l-fabu4JTqea9_8xwJ!p}HTAC|JKg({A9fvMTHt=7hCrSPs6=W=y=)fDC0s>i%0>qchilCMgJ)odfRBl)cnQ#;i&_ zrbI#bQaPgkB0XvxjK}lyFFtsKgZN^9gv7LB*Pze63=mOSqM+SkQi8;!VOIywJ%8MO zX?Xv?ZNI|6IXdy#N`%gpWihG<<(jxE4}&k-i>j)saWOG5oo529C(F)GnOtN}5jL}BwLw~@Qz z3nRX0w3LQh@5%4@1TvwXKc#=IWg)d_Eu zn9$`3g%;1!{2niqYS?gGx!!QTtCW>S$H-Qlby5=G;VC%`NWe}OE_XZED8N+yIMiHC zkBIrtd+6~q&fz}uNAN7m2hVQzaY@Ic8*Z zboIL1+GR)U%HSxjwi(4l&;dch;S2dkW+D1hJfp1;GV5mD>f1{r%=I9RdI zmcteTM;_fCKjF5S0i~!!+TR~`WzIr=zGACoh(yCT-IQLwE>$rm6f;~a8c(dC;VV_pd?N|fjmv7i}5fRXZ+_qTuA>64Ufg7 zw4K|xteP)G4MfI+|7_15Ka)#7+HAOAtHnGOck4v(hDSCT&+_=TsDJakkx%Lqw;eqccb*W}t0)CQ{Yt|IfAJCK7{bxT<@LQk3r+Omg^`+ zS0{4^T+;%!4{06QqS*sJ7)HF|-&5)`EE}>u@5<%t^65koPs*ImuHV(6;#lO)gtiSLpvVp-dG zzf^w{OUiOeL20+A#)kvhh8^SIREF&zmKQr+f8e!-`}o~|tjg#6sSiq-;+eJ0OtlQX zgM(qa?)n=YR1uMp26c3(hkH}p79i0;^k)0VR4=Bzq5+cbE61-@RwRp7ClzYNF;7I1 zRbFuDLYz=ZF53H|{uDUweab`M$jVAnKnGnY4w4Rf3RL0C=EL%5Oa9bmD6S%%zDP`FK~Od)~apNZop_ww$`B?nmZryP-z27ok<)K@TIk%4WC|-#0$1(W>e! z>Yke2Izvt(hTX;W3B;_M@`8_Hwz)I=FD5MZXWtj}Ty-+ep&l+G5~mjwrp#PAo_x1qK!`qj^5hAcElcC~CDgGzMJfYr<+&>u%VP9ojc#7;{UioBF0&@czzi;1oI`5{pyvSGtA z>R){aYF^+we06EBqQ^(dLJE#To$xyv*Y-2QOOt`iq%ZA8kdW?=d#&sz z1eWlfk|H!?>P{w2)c|Hy)c|!TycJjE#_#5oJp%F;BJeya3P_^`3Q8TaQm_zf24ez$ zrV^HqRa7#;Zx723D4rFeZ3h}?62SWV@yCu{;HJVcwjWF_GYoy#{~#&E2EG|x&zWsi zeCZTjboisM0`1EX4El7|z8LlKA1vmZsX#tx+)C#szAzN@^wy4h9Z{Tz+`(LFge2WXt)m~F5=Lz5R@#XBhZj&k(n&BmweU|DX)hg#r%GEaj&3bMq>45-d z6(IZ&`HnAmYZ5E#Wp6+^k9*kV*V=o66*n4gwQfu8}< zq?zL6Hhe_Hc8wJ5Y$CIqvp*34c^)iy2y6UGhbwKRtX427#mM$SPA;sq9uuKUBvxaD zeq$y_G7rG=;yCkz>+HI;jU}9#ixxNV!W0;l+4>oF>A`KYrk_y>k?QSb9yA-XO$JQ? zP{VW>y)l8k&PVE)iLCrA$TIW)OLeKyfjC86qWBhmQqAh6JZmQkc`1*ygT*VwKD19H zuYtu|dUbULY%ZaL$NLZ=gvW9BQBmroW!H3#|6$6?7uML@P%#C5Wol0qdVZacJ#_k? zhD-#IpJ5XJ(~y0qLPo>4oTU-ha@OQ2d^BV`lac1XrP$&>n$VFT&;*E2oG^hZeR9}l zqH?Jdw^Y|HkA{Xu#mBn3cark*P|!G9MhUmiu3xAYhh1G+nHsd$!A0%B*?~;H{bf#* z!&$}DaQx{6Ymqvx{}kUWK7szX)VOF`S6;bnT3MdDz#{*2WVE$$rGd%MH+jh~`!ull ztX;KgBo{UYCaySlK1rK*e0w|^_fB05zdVC5GsZMBC1&e~2XOH(j$J=BWQgv6`meeI zhZYn4kMJPNI335gOX^gtihAw6e4mIF<@d_upg8|Id6c+-18 z#!`8X+KZxT{aSGW_l1lY<$K5?1bRKO4dsZXxisnO-k)=fDb@(Srtc7$DKT*dWPnR9 zude*K^Qc+$f-9YWJV&L_q}0T)pp{B5pk#fW%?d|q%AfntsS853Gv zYS4e&E>Pjn7*UFXytL~G_OlG~dnC81TBS4Lh*abKiHf+fjgJFK^RMYIf3at|X?_5| zs%%A{cqPryIJ7|+%>l#dT3eWMwu%}b1v^}W`k%rU5W=AT0RMjjeFpVPDJR(n*@~7+ znvhCYX~t)d_U|`;OU>BlKajWzf?tjJgoGGH80jB>Qrx4p4!kHrRVmfwG+8d0i)RAG ziAW8h;?RdcwXVZ7XXpldmb|;!JU5$ZUjv!-c|q*)kPJ(2{d8&_wk;nP8o-`u&FFHA zv1`&)_cCFTg__36prd=nnO1llSn*TYnrh?b=@#Y;DJh2*7__A;Jk@XCk+ov(v(tV) z1(#3)CP5oB(bom5Q~zdRjAP<+?i(bjmO;c1t>x3EZTj{mFZwmzZN3hIkw|ht!IW<+E`bH!&A&I{D(&}9V9hUt;tSD=xR;W6F z`@{ea{-H2fxc80~#Y%WXi}S29nN;2COND(=ox5aABeLgGHrAvSn+q)RoH<23p5^6St4GB^AW|Cpg^Go5pNJft zUB+wuTb#xE7>6LgNfG(ic;R1zzkl;c{^Q4^_aGv4aX0K|`S%_C&vEg8`q}>-_$q7K z5&pkE%)jn~e~#w=*XJNE;39U-;u(2K{hO}*Z+|4md`vRHhvxpLkMv(%6mEP5&aZ`( z7bi0R?Nu^(j4Lre^9THE{P(|oS|6m9P+$j+&O77v{@bgB>i1|ugjebQQ^EaL7jdjX zcoJMg+kN|QKFWW!KL6p(2)}rYY!F|{|63;Jf64Cu^MkJo6^Qd21=u#A|Ls+3f6NoS z7M%?#Y(>LxZkYhL#}B4548PX zR?PSRZq@$-CH%iz_5WZa{Ew}w$(;+5Fuj1HLf6&Rl`U7Q(@d_?nuD=>w>Oyhb5) zPksQgm~${Y*kIjh_Dgp;u}xnE%I@V_t6MsTqLsfB8G-wWF&w=;S!(MDdh7f2Ju zTC`f#U)atsRgapx+zAi$ka5X>|#>m$Rio< zCmsWca36pRGq>EGCl={6OkC%90)}_&^(+AU*Q|j~<5e@9j}+9i;?P{v{>ET@0s@UY zmY?E1VWc!PG~(8FQV47ktzW`_CKM`WeyjR2t;EjG-aoHR3y&Lw;|rk2Y84d~(%Ikc z#ZRA(7imtHfjG?Z~-pR#H?Q@sLB zK#CX70Pul$)7CfKVo#E0?_X)1o92L^=DMR<2kpR32lB62HN+9ZH(CeSKoL zSKh;WuCj)V%!9?VhO-+bFK`xvN&L2ml4Zyu;2j)7ZGXS)P5*L7pcbO)IaW!8Fb&?; zWNGSSr(oj^gs-chSF~Oj_X;Wzk6jiR7M;^y%m0|;;)nO>0f^4vrj*BSaD4+@i;RH1 z`d;pb0* z7ZcB68g{xf-Z%ILxoA-6!NWa~ff~mGX=f~->IDu1gK$!avm%(2W84|^?Ca%Yx^0~n zr{B61G&NH7Bx_H%X$J!?p0pbwjh*pKkz$FbRB|D-#jFNjf19)GV`2wfPYEYlxg^Mx zUc&O6{ZMSpqLOTx>LS0;RmBiE4*h^Fio6O0UWc`vVy|0vgm zAU(pqHyl|%I{|)!CgRk_y=0M*Njqp;U`!K0lyN!r2)UHwS&xw}exn4z|DLN=Zq^7y zZwK1Z%n)|*xqw{|7eMb$t0tL-i-z=a%+d5|a`={idNu_YkyW(tXC#sQ3t`qb0Pqyi zb&n&qb}yX4pf5X^Pq1D})cSL9fZO0AsWYO+x7I zf6}>cL>^JrkD#^lw`!8)6R1cp*EmmpobNmWMWMQGbf)x)`n7Th1~{neH7MmnuA9k( z$13DeFTemI$A#Ogll9BhaBQBZDZ&WuR5;Q+VH;eZ27YonrSg~f9pWR8U~@0Qy>qW) zM+8}CDWOvfBN3I|iDF{_;W+<|&HvXY?XFiCpqQvMvBzk-h1&H!H z`A!epke8g&`Ug1heuyBmThkwto{nt+K~-=SWyCKqra%v1^ti>NLD=w_20iIn0ATD_ zi9d|k1gT?e8%(+}tV86egsX8cb9(k0u8_rs?;G659EGiJ5mah?P@HcmLdHEt-_`St z=_$97|DF;UEib5H(jUKE3;LImI~e_a)+&sFtUWxu*`FB9La>p>yih))LN{mLO1c(B zBl8K2cRF4UB%4X_^TD+>qo04@PJoM=;G=PP1!xLcV3xe5zsX=Pftjf8SZ&JiSM!Q^h%?P!Sex+op-vY>GDAA-lS*2=OS z-tc;DMGHmQk_(tSt$uL=W(xDZHjcY_-IpLto<1y2sPpM=;*V;EMTK2^SnKwp$4Tfv z_!cp&y66_An1To-Mg?9>5MyaMNi=w;@KDalV;Y2#uAAR0}6UF!xDK zM?lT%=1(Hfe0UrVGQ?2e`!x#Ky7{nN-Y@*C`<9#F%#n_PbX>R8xbVM6SjKSy^9lEl z^J`TLmf_%dETqKVDc@elCHNQQ#Q+=J6IS?=p2l3Exc_pQJJ&JCpr$67 z*rj5z@2~f3VWdj2OC5>SzMr3=<}73)Ka-B(!?|$|bQ8{dH#x5uZVF5s9x!pi_xni> zBT|2w_ajEU!G79btl9}-c4Xca&yMIE!&+Bu_wtgKG$;)mZNdG>^?bR1tDXkNA-ayI zfX7}`Q6To)*aUeW?&QwjG>_3ZmM9ekc%BG&s2eq0#xVRFEnGRhKj8G;Yrfvw+iOiQ z#Kc976lPtorEI2<-ZFnsZ3e_`oI}d`KSMm5Bn;O2>jW`pQoG!7n6dIpk5tIMsAB|u z@W&UGuAK3bNo+#sc(wgLaK;~bWd#U|(ok3Qu`axWh3b|;4ft{Ma1fLz)Rx7izk1r{ zX^5Q5ASP>qBUuLND-rAH)xgjYi=wo313v@dr)veVI8fT6M0*d36c$MbLv=e%02bRn z4N65+nW>^-%kZwJ=-`cncvzc+a9w#tU4&E@9;%Z9Ab8y4$iq-v>X8p=vR&0eUqesY{w6LLG1M6H1&)ec5SQ~v2vcr&uEKnBFT=x*n2&D_J6!(@U%jOWj* ztrvB_`tBe1zgJ-XBppN7f~!seDYSog1!YR$FqQiax)Z2oXv^#~$(*yTp(Pgpo`o5j zpeDC`on(19N@Y}HqE?1%ZS2xDX8AkvDR_=#t#$WV<{`*r-qt=7qh9kIJqs+x8qEvC z9RtvD6{@{&k0dOr=l7;7Wq`|7QtWF*E+)kChpIStt3sZTm zrszV5l3`Mn21XM!AP&`tn~jKoGT1@<>T8GRofj>ISl$%$p+{b-GMwbA5{YRjl?;9@ zi53nD>=uOCaH}duILGL$+YS6oR-6!s`<3b#QqgPEB1JyshP}{HfA0lcu0*LA&7O<& z#^jv5p8iCx(zPEf&3`=}R_`!(!}0>XuhyY7uz9(B50`xf<}pUwbh}EEyJpr167wLj z8|pC&cCXJ!8D}5fF)OqPHxL?Qp9Kn2sDo|+;_kSXO6w-01sxD)e%~nUo67}%ks`u? z&|e~QV#%s4;ek(yO?2!5x8Yo{k=XAk#Ca=Rm~=BY)r-FEhACblEzuBUG)`1h5c^OVUc2o>O~=D^;3<7llFb^ zVKCsm6< zk2U5<=VZn$*%9+Yh9UIPF*?-OBe^`<4l52L<(sJ+Wr<`n>W+a39n<9eAhC}#dbq#a zKiQAIC~AEgB}e=;*mkvhde%({dEnO>yu;U@WF(}yrb8*l=->Xb*R6)}NoW7CKcesk znD4piifYGZThGScrIZhP*jMj!%NA6d(*;IbWh8s*j=G5jR&7kLP?7lbO?11yc(^2x zic8QS|8gXn9Kz`X(*<~ulc9_nhC)UhDRm`%EXO|K1y@>Zs{poVJApFV&oD8txWqZB zy(;*{GLvMtinZ7BTZO*}AgNUj{n`8}6HoprPaR=vZEQ&Y_VQ?=>kr(-&EI~6Coy{J zeaG}IpS2AY+8F%ZUyZcu2W;y~ZxSZMbiZO$%4QfKIb-Jhl}HsbAA{`P6`o)`*S*MI zH3IIn_0E>|`$*wDzj~au_@UqPI9L~2mRLy{tMj|=;p`{JeJoHZ#1=lLVUCla>4%M_ zS33}0_|4Tj%ak9EV+q4J7wEn_FLXC;$k2R*%g$Z}MLH&oE!vL_oe4I&9|;UQ!r#jE zr!D@vB(3$+@G>A0wcf2N@BBh7pbsDEv^ki(Z?WqF)2q*vGuA~Bp)Fk`7!(&kx5O?@ zJJC_S5nE(w<}r3;)ppy?cG5i)aMAg3Ln%Q%vWUNinNa}1E^Jr7-4#!HVPr+? ze}6q~^c5AM)7Wj%9}N#-gD5(`UyANpn~@FA0Tk;~%>3PTAuVK{29+V-lxRXJs^F*@kZ)i0WaVg)}|2N^2@WIX&f3 zZ%6mxN$8)4W=I9jEOfd4)YEXpO$M(1((AN7xwOTUX`vF@s-JgzI2IY+Vv`!=O5<%I zn+H^OHAMRR;<@SGLR$~6*W0#-r?0f!J>a*GTc+glk%K-{5PJ#-# z7wCDT+c#|ueiXb&UzvKYcYK>Ef(T&^FV0YOo;Ste(aMcMt6$fdHieQ39QRV4 zbHaYY6$uchS?*$8-yo~e=f-@ZLGrYsZEAXj}|OLmwwG3l&ye-}e_9VoF^| z#1G*Ok=0q}yHIBNORLq{@M`39*CwqY@1$L%uk61f|8_<|dWwR4G~c!-JF-#hSigZw;NpSb^zxkdm7u=vj!vcD3o_l( zcPOP;Pm-;(ESz*#-9BTcpQx(2^;LxV$bC*0`pCGl(Yg=p*5fW+{zhz7miohLYG>7@ z|JXk)JBSD?9KF9mX-jKGY%Tu=Nw3>@6v66yReXs_Kcd zXnf~L73nHUeEPBf`2_soi#zSVa?A{Ae%*J>;+bQNE$Up0euRF&O>shX?osy^yto^wqA)ty5ypM5n4Gw-jr_o+xvg*IS*yD5IV z`^+Te)Ult&guK>|?t0vI;Mk%$6JUb3F5h_Txs?7qbj{+ioOyF$ynl!};=DO~r$g_^ z?yPL~=+2ObjT&Er0IWPd;c%hcsAs0<8TR@V=Cw9UdPE6rdQn4PgCMp{jHUhSELYi5 zQJfttlU0(VzohnhD2PEiuCK5|f5>xZ{^oF2)alPSD2@>qlSbh7beX=J`^@X!gCaQLr@qRO;~3!5AJDn zO3rYj@mSvpTQ@*^6Q8psOrq8Z8gCRAorer!m+Ysc`SZu)(aV+xB?y56k8s(#x}KT! zB2FjTna*BGYC~Vn)n3PbI6KM|6%D@I{;x^ct-!WB=L@^f^)^8)QeyNQ~|ZH5@E^^EfznZwv(-5g>os7TU>L7K)IYE+rx zLyTHuJ$S2{=qYf0VaPmSOZN2XA-7J?AKL-TTQ7$MKy?n_Z7wXe*k~x?{T9||e2NyM z8ZGwlQ{@;PIEJ#jv^iJ$cT}9vJavOK;#fXXhs;+;b8TPZm$+9%aF7g;OwbbuI6X-n z8h1{QRylu^!GC$ zC;cjW8fp?`=P(1(MlA_6g?n2@k@)E8{gmOCl`VOizE%BDSro6Kk6gJDP!V|3bwk|3 zb<1U1lTMk3=*3a*kzt$DSG*9IeLt{cUmJo2Uzt&g(uAP%+r#7q>v%f7lSKHdx4Sr!GElO9m$y&cBmo!qtA@_}m4CKbI+i05hvl8t*d%sN zSo$hR`@M#*WQKnhrY4*@#ptbxv+8w`p}k6qp~iiQ760zR>ijkSh^+$c2x(^gFB7a< z3M?@`b*km4eN1Q zbGcfTDQC9o2?mcllEWDqSYf9y!S&>5fR|^+gI74j8p~y1-so(gNN)>E8?~$d`pJm! z!l~`8)8CTG8@Ae_7Bq+`PI3apOA!i=#n;#zi`NY%8v(ln60J$fD^7@J=%4y|{rQ|t zT${lt#=VMw<1d3&PBqUcZFN~&$dVVq*8FUr(f`wr>9S?uM-mPa(J;nTNo)3duf%~nO0|0{ACq&eLN(WuMf^K7Z7>%OteHc z+emIl9eF%M`g%b~P0~=BGt_o6x`@_^wy9HevqLMN@&$@gIYfNNgSx&Q9t`@Qx3KA; zj96kgH~1ULPGsJApARyx{VecUjrPoq$&Mw`_#^d%)N!Im%0U4K{~a#A7}*F^in^3M zFF?xIOiD>wLs<+pr*zxbK|cXk!$cy3Mm+K;4tE;m6zwW?@!t9AWMv9xrRn)zQ|g85 z#jhn-lS2WEVvUnTPK){7=EGkT6Zds;_gjB5=N)yz<&#yCcPMWU5#4YEWLDCNDVUbk zTCT@a(3k{Yt8>otI>s6qmrTXqUzA~AF6|RFtcIY;DyyYx$i>+UgkI$KIoKQP?b~%m z%uB3ynaLTqbHU#U`r2k*EO+Mfpw}g_Pc+Ni8`u4AiD3(ZmXRXdG)Yz4&nGv)6gu9S zcKOUE`@7KLRN$Xh*nN6U^Zu9S-*=v_3n;HK55}eFUnPg=<-Re*8A5?uyzJ(Raj?BT zhPKRQUySqMfA0>z-7e}|T7R!lOhol}P~}QG0LeXdSKG4M!L`XlFVu%2=^E3-c(7*P zN$YHy+{a8oBsq_WUfDEA!UMaRr17C-NRv6dN^ohJUnFS<<1iTo8IHF`PJ%+G!&LEM zjaCRG9;_1JEJIT4^S63%((EA|7Vr|1<9aK-?*>-upGhIctBgjLGI;-GXYs@S=~?y> zUH8{M?rDkbB7NazxPg}J?S;nz7Caf_*bGdQPJKpiD8#qCJ*n9(fn?dzg2%Wjb3D-PR*riPF>%JMJnM68oD zY9-nAP5p{_=Lcy%DsEvAr@p1Zb4U-r}BRpZAt9VBSUp|Hj%-I~S zrc{tzHR~em?tP3fR>7WnUW(bP90iS+R6-tanGuUZdF7JUm-rpUSl^_gWI%n!?*eUC zQ?d6XTzlhDW995+~M~VtCD2n?ALTF)26>T7sSFu^uN8C$mte^1% z)>rO;uj$y>=g7Y(n2^ON-y8^s^ld?4ZPYHC{7|ovDF>6E-n zyn0p8J*5v@3VV4lS8iVKxJ{o6)1FfUT`5QB4=yO&z4fGQniWZzZ^T16a(6ah&GoM( zPNzMGGxPW_F(gyB*ISmpV$^dR&+_&(YsI-sn(nOs-W%6(ix?JdWWQ`hI-Jvt5Ej4w$<_fCW(eKoHX8PYCfAm9grLt$@XU_% z>2Qce1P*-_{(QD{p*nlexw>((gY*s4#IvrVr8=ddG^%Uw<=w*O+&UuW!0@DF91r?( z?K>UD-Jc_cCD6jsPDM$7xxLI9iR?cyd{DbsUQMg@F4xi)&Q${2&ll4ZK|+|u{wkyC zX(KmE=utmHX1)6dl}NlNwf~B26+DS)l>QNwkI5DkD^`8uNsxIED0rHFkl=R1lUsV; zTrD4FlM9!-#(~c&H{M=cvoI4|=YW5#^08{fAR!Q0B|8LYIOGI&f#c)TCjh~sX^~kj zc8aEIxst|QIJd(>wAWJ*>>~-V31R5~b)%6cuJtq>ThDcFE-RZ9I|`O@65Rxy{EDlc zFqqmV_j#y%QhJTJs9n?XkSzz&#B^>FsKDuv9%)$X+CisfRug9S1p^wp;DrGa#TU?W5A&R2vTv?p!yi)@JmR$Aly!D8CBReKoY&8%d?pvK%I2-`%h#^#1jc z-I_gWkk5j^PQ)kAu=|D`Ld#MV>mPkmL7qq7NCK`;IZIj|N0tlh9#q1#N09A!(yp5cSho=OcF4mXB}2U z^6)oM$l=a)`&3e6{-}K8jTFf?R^*Mvv7l{UZtn@m2cYN?8d&izWb)L*^4SRk!ZL>+ zgc|&=56``vd5P(<3*Du2AdZuTI~$Fq`_WX_dxDdo%eLApvc+owg;JFbrOhp;lKgWW z7OuNL5rboW(L;$8Ws8ZQI3}mBw40WPf2i;oP8AZt<3rnE3c!974WY1l4!${lEm5b6 z(Hvt_mz3Wl;o2HZy4TPfg6_{lgk48yLgMn*&gkzJh9I|{5$52lHJMB$`m~#4*x@Kz zZMo@Qu!!I+AywH|ckNY9&yJ^DdpAZKjXU?Conc0zx~Y9<6Yz21wdlUn?_eLhj5 zXa47&U(`8CyH#|sS^m!4tT0qRcK+3gY?P}Yuh=_lJTkc>)FSmqr3C4% zYWEg{n%ANZ0`o=x)83lTk4xARovb7Wkw({QKr`p~QSbJ5@2;RiW zLc9eeUme=xD`{T~l5pAN=qsTy^wfTI-u?u1IC3^Qb60E1D)05;4W_Z4rDBY7s@Y_& zf8F+HjNE1+`%ml#OkpA)Q~o-w$Z;NzFc*+@)s7S9Y>D)CtZ)3BYqPE|;X_|e%37Sx zDPh-F@BBmAlgzYVoA#A! z>fe5twg?jm7E(!h$(ORc&^2Jpu6LJdT@e9`TjfV6=rJMN&laoRPc2VW4WYF z3xfiy!JD0YCo(rXo( z(cYzJ)q~z5&u{L})+v1(Ooacw5zM<-yxK#Io~h>S{NuIi>1Tn7N-r~@i29@i`p&j* zH6jydeG8+xsHU3CUS5`q@q9gUQH^#9VOCv&LeJ~vko6P2{fr{AUx(VW9WNv(NTQW< zEnJVaNCJ{}tUQ=&%(e@OuSpG3-&LWMw)EE$5vzXKWU$ZI7L_2wsasO9*Uj83!pXf| zfxJ04vtn7Gf3HJ_P9z337;kn9A^Ecjp*FIa-f)}tusOJ^yErMx7411r(P2K?UAISN zq*}7WMpXNK@TKL4?T^^GYm@f=z8+%mN@(oCv>!wE)I)n8Lx(Y^n7JkpErLv=U_a2-F$PyA@O?k)e1z} zJqqO}ai*^Py>4n};OZwL)jt6dJ?wRU+y$8jkWTuh>!#Nn5n)UFm3-&}M2AtOB~7xg zDXc_Lx#64Kd)uSVcq)pYMt_kJt;#*Cu62NWNj%hp>3RJVWYud6S3TDw8TIV(HC0lM zE1rg$s+UV1rqy7~h^N0{6A`#-FJD5!u^N+Z$&(%mB6-6GvccS#9Ich}P0uq>cRcQ-52u{118 zJ_p~Q`aUzi=jUgh`Tg;mdC%;e+1Wk!Ip@Bw*VX5~F5}d#W>K{(BEqR?Ib#BzqYQTq zKn#+6!g>DXGj}t@r!+TeXMHAgw4=D0d%vXLMFat#_0njPcB-$Pre_eBeb0F5(BMFu znVmcD0$C7c2}-2Mp)|t7*{W( z+@qdQkyoGIb{Dm7%43wEOps zoJ7symK}SnWi7OM$~)k#uw?94*C*qCQ2g$$z+cFXK6+NNuW)TJ&@P2LA+BF!hAU34 zZgI%ysxbu>W3<e1jDDjSi|nHn zIqam1J?>IwYvx0Ky)6YclYzJ0ie?df?Do;{T4I|eaoEHtOU3^=WDkzAJ^*BiK zG2AuOsK3zTF*?vj&LqA2^&z5U=F%;~J-_vIk!W!tskM1{uOshGe1Yu_-{wbc1!9*u zn~f9;D6z6lo0@=aLc6zZ%%GmFse?Xf*-pdVAn~dD5;viAvVvB%?RGVDoi=^b1@zdi8OH}6?_0)H$(TrKwx;tGNfRzSm$qaiC2r zVtp^&@N5Z)ew4goh!{9inO)~XADyNnO^cktP=ofD8N+eN^f^R6qaUKJ8UlOs9DE(;n^^%=sv}Fh)8?42%xsN8|4#RnU$r5#)XN?y< z+;(TGp6j+&B)7-8^GyT~ScfHYqYnbkjX+(R=RG+nL5(BX@>TT>pw1O|8h>h&RbjVB zwPtLTc;6>`juf|!#>C&b@ROX{Jw1UJRgTMT$wPUnrs^< z2z4PZdPMY!CEV?>?gwYp$A)LU6J-s&Iv@(g^?`nJPFPdS0qzninUw%^cp4SUsByhY-^nO!b7jry=| zXQ$zxf-EFA3NRTyg(~8AOPq$Cfc0!Q&L$04Lj=Uh)1Ii51C?07=wqgW;9RU|cGhqT zjC5sxBZ`Z>0IVdD51|Xn>%93eRRRd%yfe;6ZW~>&4tHcVLS~#hLSz->9PZrv6t6TS zu2L7t9gok$C_Ve_L_yRZGU>UHdhkq+yG2wsn8RUOJ=cjcrF{9wb&KYtgY>47UVZC{ z$c6ob6fX2H+sk|x+X`I7n1O)F+Ezj+!*%rYG z)Ttx2AyFVuj^led$#}j;Qto5&OlJEUqhNcTP@6!91?k!H;&1|btl{4{TP={D*iND*A`AXnL~c~Z(l?@lnM=*~cH)H*cK4**RKjs}K&JwZ zbcEMBYv$oAr%c@jrTVgeNVmOmEJWp}yI>NBckg0Ldt6ZNdkLo9YT=3il3$769#VOc z_?PgYBaVD+Jy!_(r3KFr!#=H+jx^d^h%!LLMWF5ZF>>_B`5PX|rWqg^J~44USmDYR zMjtMyKdEJs9lTdf)sh_|R=H9^gz|(N9nroDq%WZ^%38Dj)st#DF{3%oL;bSufRmAJ zoW5{6tq+AfUeN#UjCQ_zm`#bRS`5@AbQ}&dE%055oFfUyn=_)T2F_a-P1S{$8 zd8TxujL-jeTyy`4y@)yAK{Dd?QvpH|kblR!s&ZnwSRr8H|%@@9LX`Vb9nKQ7DZ^=O5aLJtfUa`S4v}GK_3-(Yyiaq1Kzs?Rn~!=4xM9hC zC*#EUrvC!mBUVT4^|o#F)^b6!#IR1O*HuzGKv-sZ9(v=f&cxWf`RaOsnAyKCWSJ*Y zb$sx*Mn+!*H1eKH+oi5c#lGhTFM@X27p;&4^QGHM>1M{<(vF4iI=Vf8b!b^g%JfyO z)Tr2DtvEl=&{!vZW3xGqdqtON{6%uWIT|?`lHn46Cqty++{ZE37HhzGj4sFzH*J*f zTE2-mcAG`vAEO+gew$Acxh1+@-?{XV*=_7|{|2Kt?GVd+^v0c^Nu%lFcx`PyKs5#^ z=!jP>tn7qhF4>+My!T1xC#h)S@jZdM-p%zv8|%vyqzDO@i1;skz7DN(v<)xIQf$VX zrQ+-2ni?x+lKKk3i~EMKYp%IQhE!%tZUf5*8ygw@MN{}UKjrI(*7{AMtV6v5&W!VF z4Y6`{`w_Ho=gdtTed{*PUYp~YnZ-zJt_$=mIfL0ObrHKys*CPH_i8%VHOj(=u5i4xXXl2PhJ2Tre%-tR z8Bd2yeGvWn#mUWYJD-2`xtxbKyS|8@RGd_6Ji@4zK54@gycmsa<_R`H+Mj8=IjxAS z3Jls#nU)-4eW5hs?EFL6?A?7?;Lw*skmDQ=n)4>hH1y`VK=bewC!h2aTwXHzjg9b(``WCp#+`UtjP0Ko^&)c_e=b z_$elz4-nT!8*zV(d-CGta}N3Tug$KTB`{Eh@g!Tu7aZSW=;#)_Ipptze|vb?0s}=Z^N&LkBi>oSyZc^vFy8S(`&tI+)z62q z8sX+1@!8vZfQiro+gR+>e5APx^c98XKFRW=`PoQ~Ne2fQ!h9iHa_emjwN++&^97Dn z#MOY_iFjxX=8;f5q^lvZJ z)v1PRSe~Q%Y?I3o8($Pfh(w3Eigb(H6)@EYlVBGX6xa0ZqE9?i4|oNaFcn@jY$bAqTv!)Ms3+I?t3| z+v<^wmdWE%fZlf0Old(~D2ZV$<;+wnx<4U84dk;4WzjlQ;(Mw<{vh8ezBy58J!fHQ zy{jvax(Sjye`&6-UTWSkjR?JDg6Q95tE9BnkJ79zXKNbO=BI7&Gg3g|lwvQNgVIXdB#JHE{zF=*Qj z(D|u6M=nnO1pCPmzy58wUrId36(?WjCK1+(aRz z#xEMsz|I6!DVO4UN!m_~O{F$8v?qHobnXxs8>m@6kvQpZ45 zdcSWC0PK>!+mi9i`dder{m@!LcT}#bNVFfyDfS}h7_oXTUkcod*|?k%SO?W*8vt8G zo$7NeuiefP*F~f2li?qln10nu2v%A_!-3sYGq&G&Rdcg=PfryWchvNY72^OGRa&>N zcttnEx13pxN^@9Qnvog_aPX;%fhdieML1*c&ONW(wp(_@(8|W~#iK%!5(Xk3j8pPB zGdXR(RhoB80`+hDd-$KsM%bMlprISPZ)XfmhtKw3a3+@V**55Z!bIDlY5oa=`JD5iOvNUPSuy+c~^Tdfzid*Il#MGT(7DE!-GCg+U27%8d?JQOLc5T#4mF^aZ~jX(X%^;}!uh=m^2;@w3C%F8E*1g{P{!f+$_1X1L} zRZ>QO$>D=U;^1OVs%{7Av$?IW*VA2=nl_GZ$~#K%Br5KQ9_@K-SZp27TcE7A-*Zq) zA|Uicb3%oX+#E*wyfJA?bPBXQU_2>ntg+xJAH4S?o~c;$#q!&fc)v5fPZ!&(xavBi zom=#*(w7z^Wmg}u=*?}{!Gzy_=!ws<2eKK)SHwxG18*qR=P z!04%`vxV#^$d%hB;Vv8+k0ZX#*@hU@EY1bGb>{wq8yH@$J->u5qDG4Upx59 zEQ~R3d@cSdltpgK@dtANJbBXegs_hp^JWiz>JlB6HuKH%EI!vxDCzmarzXe74@5f= zM#a>%ZkzVCeF|<6)$y{Un^I9K(Y<18Y~_fs{>uUQAeKUA@x{9Ms)Z4X+Kve>LwKX8 zK?LJFFO;>d$8>}+4~EJ)>J@3C^JutvW^#}3=eO1cV>O|U3^K&~F~R3w<0UPo2W`QU zLQW6eTr6HtFhvz~)2lxRHYPNlj7fvx`L<5jb7)Hp7Zog}bbxKH?Z&X=0$FM4N1G?l za({E?oi-O-_@kt@bC)a266&!J=_}?P8WoR5J0rco)fE-rhV&ck;wS_euUM=~omliK zi#O=UyRBb(BDK=VWs+1n;{qJ=ep9T!ooiGbQ%Pqj*nZwZ9&FL9>KMNh)%4NusGwnS z*v3}z`iSB*k|9IzvC-FR$iQXY(G$SNtRd>!)pD8g-;uGeEoTz!xo`K#Yd>F zSeFJ4)h&m}&rhp!YCi+8Gzk5s3P);#*7H^M*i6%%)Q$tF`3&@zVD0&CbK@CPe28B8 zB^R3kOq~_LYWE%|U`mw!9^vcJhAtAwpKcrqaefG;`lp$Yo*)LaRw*& zN7?-{^Z2Ym?9B5YVqR}pt@x*b-OzJsK&AJ=6%u$Of5H50r)&wAUY_7eIBQBGWY>65 zIpZjf|I@msdHnYMhX5Q=bpVoU{ zt&lQZIF8k!=dTm*yNcW5l|`2~0iouUDXh_!pAVQcS{!z)GCi2mu*vQGp9|sT=(}~X zW{mP(&JHiRB-UP*`Pq_J?DBFS1y9X3yFo9P8bTI_Y;5#yFQy}9lFfnx?|Jnzc^`)5 z>sA?)Q`Cmeh^40}dmDkKHW%yQJ*38FxSfyP3fW`g3R0Yd=0!40uMj!-kU}@WIct_* zhbEeR$BYi6YUeRhRLv~%*muQJz-qW*WS3SsjajQaPIG2zvHTpEmtQ6f?mw1 zOx>M^N0MnPk?lmfJ^6e2PGlBy4Daz~mG@tCoCSU+*guP>ZVPTVpn9vGLEy0u=kZA6#58TgP;bX&(+~;ed{&%pz0mRtx55l~!Sowyw;a*U zN?d|FHWD?)eJXR7qQrx87f1qWp64B;XX6M@|GR85+7X${GDlK+D76dt$^1tSmJ+mV9W%JyKqwwq;l6$3 zUzZC`xW{Vo_6b%JEO4xHvCE8^-f#B9fJEcPb_xE5Chb8vcrO(DoB#Wp!1iTI-_nTB zSV8Ud6)n{UV&o!VC;4$3X**ZjHlDrK1J zOA^sD38w`k!; zrnW$wi}!L96Z&=9grM$njRU3^8N6?z^y?plonc0Lfx_5!b@UBv^7C7QyXZXD6O*V| zU{$)G-d}=`k#DXs`M5a@^TXfNSMb@Or}+Q%7{GCW$~StM!PZUs7_#qW`?lil-Iy>g z!}=q_0UByiG8BxocEY8DprQK;fo}UA(0Lu;&ESg^!+*>pp#787Pr!;D)P`P6fk5EX zDeY8F$d;`13g!3Z*8nU#5DU)L6MHl#X&Zc|%$J*s``&Q5>K@tP-^&otZt&U;@JiYA zuYTdD^6oVn${%VPhm>^#-DDQlfpYna4vhLDz(Y{`jVW$g+j?j_bmFSt$<(Rkmh3nl z6yU$R&xfe?yU1yfHQJ1G5G2@mAMdJ7Pb8t=Z^bC2`o z;8bNfZjjraLnhc2DqqSwu=o%1wcB8w1MEBh;dA%lZSA<6<(*(&Y&={r#um?3@&5-p z{$l<=InLY%W;+K|*VBITPagP_VZYDeLI+{|3srymr5)pryD|7y7e4+IQGWsB4~{<+ zX`KEd|9^9I_7x%ubpA=cfd_#5AMp9pFA*X|$bU(i|KeDQjPi@778#Sf;l)45{pW)} z;YbnxF#-NXZDKNj@rYe}nmYgW)1Q6`$yM0?gQfp}k$3l=9~U~TU37>c=)WFJ6sYv@ zza#^|?++jSP&9i;VsFFz-_j5uMjX#S_0OMEf>#L0Zt@;PIfVWBn17xro;~qja}(D8 zA6C3YzIX5TR$bc1>z^%{cNZU~O&HyDACk@|8slrsjR{wNSg|tQ&wv*|5O7!R0qJ0d?%~>#8(`!GYq67r~l9qbI-B{p%_@C6#uphqV6FHH_TsSVc{I* zz9asRbD!&wZN_5yi=cV?R=WRN^+_@br3!AjkQ4sLB~bsm1oq#TAdC8YE&gS*{k;}{ z^9a)4^5SpV`L`bVhjIOXvre6OpMIm6ZVbL!sy4TAc^S7T)@;09s~9``yjYAUFzN|Ato zAg{b!E+r*p%0^i7rYwAjpR#77D`wQX(8zI%B7Feb7WV_sjM-+_Wyw8lF@^sb_Tf z?u$3^Vx`J{>!{}DrO^q^@ncHh0U2r=UfK-C2kQjV`wK){8LP0%$NNjfh_V; z_d>GZ>SKg24z^hlZQ^?019R*bW4M!CQr{i=+w@Gd4M7o^PVMO^TXpE@=|TDVUE9`U2;VPx&qgw`j*gE( z()i=7RkLl*nvHhZn>Vs+Im@@<<)Ue_Rz;e0gLU+Ipl?^)96o}|F*5B}kOf+>5X(_> z%1?E9)3sFf0S?RuZ$2#*{0cb3YyM===%W2Jnu!_mS(S}Vs%$GgC`Jd#Eg!!yXZOvP zv47J=R|X} zBV&WK`r9ddCn_S=fA;k0Q`XCAj3=_JmoE8Rx-_`b!zBE9>ibJm`R2awJkm!E%xH@! zvO0tT)_^NUd` zyP7l;u_NR#8(!QPZL+`qS{0z0HiBUnnf~S?N}AO@$<67DH5PS`qO82UcA@dG&iCBe zOBza5rsOX2B4Kz8F+j~((5kmlt_ad1*d;M0X5?VKXr?9#Or5(7+)mxYq?Dp*`Tqv|H-{@W@uIK2Y{ald~3ikrdX_?{``=GMf< z4(hU_b7v*DO+6k6VqHjTgJcfWY2}^G2M-*eNXNQSq&ZDf%abmI8%PmHu_bZ&9N~-> z^nPZ%qrQkjAsL0Va}V&YFS>|`FlqG8I(*R}8;v~-RNVAw@yagEhZ5MF#$u&W$f+$N z@~KNMs}tNIGF~8`=*}9hNEauk=@v6L`q%^(&&h)n@9@QOc*{mjt{7) zF;~n!862!b`XyLVDsz5n{J@Z+Qqln5@sa!1)y`M>^TPx;Wu271pVx#eP1-ic?rE-_X7P*4eY8W&p; z{kV8(Ylma4tb=$XoSy!ksC172_Z_(ay}&WZU}ktX)=v1peNgY;v563DU{YHL-^uND zrWF$RVJd4YIL}|SeQa)NwO3QJRRoHofwHp5iW>al^?Ch@i|LBW<@T13s~^H%&5FXc zc<;5w*CIV-6^seu&ZLH2?1Yj|RYVd^x9Ka{BGb1yBdu&OMRDT2(E~GeZ)yXeMS*2NNq<37ZgPVxdI_bDumsbi2GkJu(*DPZa>L}F=w7J@Fz zI<0M@HjUCuzO}TDiIYhx{_kL1d%-u2(6UCh@Zz~c$)R!3D z)Ty+jLJgg!a;f|{k|nJ6(`Tv0jg~dfDupD$5;DsZaN>I(`5oy!pgQ!B78CWe)}&cO z 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�e6!M0podjWmvT(zR)H&aDw-+1S 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 literal 0 HcmV?d00001 diff --git a/docs-minimal/_media/grid-flexible-space.png b/docs-minimal/_media/grid-flexible-space.png new file mode 100644 index 0000000000000000000000000000000000000000..18180ec0703f2dd2d4af53634549c73222a5eadf GIT binary patch literal 54493 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 AEdT%j literal 0 HcmV?d00001 diff --git a/docs-minimal/_media/grid-horizontal-stack.png b/docs-minimal/_media/grid-horizontal-stack.png new file mode 100644 index 0000000000000000000000000000000000000000..01b22c4e3a7533378d40e68f4dbffe74c76b9fd5 GIT binary patch literal 61512 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 z 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 literal 0 HcmV?d00001 diff --git a/docs-minimal/_media/grid-two-groups-of-buttons.png b/docs-minimal/_media/grid-two-groups-of-buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..9996e3d5c5f952805c9357a0e2d43fce19cf4731 GIT binary patch literal 43242 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 **element**: [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIPanelElementCreate`](client.md#uipanelelementcreate) +> **element**: [`UIPanelElementCreate`](client.md#uipanelelementcreate) ##### container? @@ -10283,7 +10283,7 @@ The id of the element. The section of the panel to add the element to. It can be either one of the top-level sections of the panel (`"body"` or `"footer"`) -or a specific container (like `ButtonGroup`) in the panel (`{ id: string }`). +or a specific container (like [UIGridContainerElement](client.md#uigridcontainerelement)) in the panel (`{ id: string }`). ##### Default Value @@ -10575,6 +10575,12 @@ The id of the element. Represents a button element in a panel. +

+ Button variants + +
Button variants
+
+ ### Example ```typescript @@ -10627,18 +10633,35 @@ The ID of the element. #### variant? -> `optional` **variant**: `"primary"` | `"outlined"` | `"transparent"` | `"transparentThin"` +> `optional` **variant**: `"outlined"` | `"transparent"` | `"filled"` The style variant of the button. -* `"primary"`: A solid button with Felt's primary background color (pink). -* `"outlined"`: A button with a border and no background color. -* `"transparent"`: A button with no background color and no border. -* `"transparentThin"`: Same as `transparent` but with lighter font weight. +* `"filled"`: a button with background. + * `background` color is based on button's `tint` (defaults to `default` tint) +* `"transparent"`: a transparent button that gets a subtle dark background when hovered. + * `text` color is based on button's `tint` (defaults to `default` tint) +* `"outlined"`: a transparent button with a border. + * `text` and `border` colors are based on button's `tint` (defaults to `default` tint) ##### Default Value -`"primary"` +`"filled"` + +#### tint? + +> `optional` **tint**: `"default"` | `"primary"` | `"accent"` | `"danger"` + +The tint of the button. + +* `"default"`: Felt's theme-based light/dark colors. +* `"primary"`: Felt's primary color (pink). +* `"accent"`: Felt's accent color (blue). +* `"danger"`: Felt's danger color (red). + +##### Default Value + +`"default"` #### disabled? @@ -10740,18 +10763,35 @@ The id of the button. #### variant? -> `optional` **variant**: `"primary"` | `"outlined"` | `"transparent"` | `"transparentThin"` +> `optional` **variant**: `"outlined"` | `"transparent"` | `"filled"` The style variant of the button. -* `"primary"`: A solid button with Felt's primary background color (pink). -* `"outlined"`: A button with a border and no background color. -* `"transparent"`: A button with no background color and no border. -* `"transparentThin"`: Same as `transparent` but with lighter font weight. +* `"filled"`: a button with background. + * `background` color is based on button's `tint` (defaults to `default` tint) +* `"transparent"`: a transparent button that gets a subtle dark background when hovered. + * `text` color is based on button's `tint` (defaults to `default` tint) +* `"outlined"`: a transparent button with a border. + * `text` and `border` colors are based on button's `tint` (defaults to `default` tint) + +##### Default Value + +`"filled"` + +#### tint? + +> `optional` **tint**: `"default"` | `"primary"` | `"accent"` | `"danger"` + +The tint of the button. + +* `"default"`: Felt's theme-based light/dark colors. +* `"primary"`: Felt's primary color (pink). +* `"accent"`: Felt's accent color (blue). +* `"danger"`: Felt's danger color (red). ##### Default Value -`"primary"` +`"default"` #### disabled? @@ -10854,18 +10894,35 @@ The label to display in the button. #### variant? -> `optional` **variant**: `"primary"` | `"outlined"` | `"transparent"` | `"transparentThin"` +> `optional` **variant**: `"outlined"` | `"transparent"` | `"filled"` The style variant of the button. -* `"primary"`: A solid button with Felt's primary background color (pink). -* `"outlined"`: A button with a border and no background color. -* `"transparent"`: A button with no background color and no border. -* `"transparentThin"`: Same as `transparent` but with lighter font weight. +* `"filled"`: a button with background. + * `background` color is based on button's `tint` (defaults to `default` tint) +* `"transparent"`: a transparent button that gets a subtle dark background when hovered. + * `text` color is based on button's `tint` (defaults to `default` tint) +* `"outlined"`: a transparent button with a border. + * `text` and `border` colors are based on button's `tint` (defaults to `default` tint) + +##### Default Value + +`"filled"` + +#### tint? + +> `optional` **tint**: `"default"` | `"primary"` | `"accent"` | `"danger"` + +The tint of the button. + +* `"default"`: Felt's theme-based light/dark colors. +* `"primary"`: Felt's primary color (pink). +* `"accent"`: Felt's accent color (blue). +* `"danger"`: Felt's danger color (red). ##### Default Value -`"primary"` +`"default"` #### disabled? @@ -10943,24 +11000,25 @@ The id of the element. `void` -## UIButtonGroupElement +## UIDividerElement -Represents a button group element in a panel. -A button group is an horizontal container of buttons and text elements. +Represents a divider element in a panel. +This element is used to separate other elements in a panel. +It is rendered as a gray horizontal line of 1px height. ### Example -Thanks to the FlexibleSpace element, button 1 and text 1 are aligned to the start of the panel, -while button 2 is aligned to the end. +Divider element is useful to separate sections of a panel. ```typescript { - type: "ButtonGroup", - items: [ - { type: "Button", label: "Button 1", onClick: () => {} }, - { type: "Text", content: "Text 1" }, - { type: "FlexibleSpace" }, - { type: "Button", label: "Button 2", onClick: () => {} }, + body: [ + { type: "Text", content: "Contact" }, + { type: "TextInput", placeholder: "Enter your name", ... }, + { type: "TextInput", placeholder: "Enter your email", ... }, + { type: "Divider" }, + { type: "Text", content: "Address" }, + { type: "TextInput", placeholder: "Enter your address", ... }, ], } ``` @@ -10969,13 +11027,7 @@ while button 2 is aligned to the end. #### type -> **type**: `"ButtonGroup"` - -#### items - -> **items**: ([`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement))\[] - -The items to add to the button group. +> **type**: `"Divider"` #### id @@ -10983,16 +11035,6 @@ The items to add to the button group. The ID of the element. -#### align? - -> `optional` **align**: `"start"` | `"end"` - -The alignment of the button group. - -##### Default Value - -`"end"` - #### onCreate()? > `optional` **onCreate**: (`args`) => `void` @@ -11037,37 +11079,21 @@ The id of the element. `void` -## UIButtonGroupElementCreate +## UIDividerElementCreate -The parameters for creating a button group element. +The parameters for creating a divider element. -See [UIButtonGroupElement](client.md#uibuttongroupelement) for more details. +See [UIDividerElement](client.md#uidividerelement) for more details. ### Remarks -`id` is optional but recommended if you want to be able to perform updates. +`id` is optional but recommended if you want to be able to delete the element. ### Properties #### type -> **type**: `"ButtonGroup"` - -#### items - -> **items**: ([`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate))\[] - -The items to add to the button group. - -#### align? - -> `optional` **align**: `"start"` | `"end"` - -The alignment of the button group. - -##### Default Value - -`"end"` +> **type**: `"Divider"` #### onCreate()? @@ -11130,21 +11156,21 @@ If provided, it must be unique within the UI. `undefined` -## UIButtonGroupElementUpdate +## UIDividerElementUpdate -The parameters for updating a button group element. +The parameters for updating a divider element. -See [UIButtonGroupElement](client.md#uibuttongroupelement) for more details. +See [UIDividerElement](client.md#uidividerelement) for more details. ### Remarks -`id` and `type` are required to update the button group element. +`id` and `type` are required to identify the element to update. ### Properties #### type -> **type**: `"ButtonGroup"` +> **type**: `"Divider"` #### id @@ -11152,22 +11178,6 @@ See [UIButtonGroupElement](client.md#uibuttongroupelement) for more details. The ID of the element. -#### align? - -> `optional` **align**: `"start"` | `"end"` - -The alignment of the button group. - -##### Default Value - -`"end"` - -#### items? - -> `optional` **items**: ([`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate))\[] - -The items to add to the button group. - #### onCreate()? > `optional` **onCreate**: (`args`) => `void` @@ -11212,25 +11222,40 @@ The id of the element. `void` -## UIDividerElement +## UIFlexibleSpaceElement -Represents a divider element in a panel. -This element is used to separate other elements in a panel. -It is rendered as a gray horizontal line of 1px height. +Represents a flexible space element in a container. -### Example +When rendered... -Divider element is useful to separate sections of a panel. +* inside [UIGridContainerElement](client.md#uigridcontainerelement), it will add extra gap between items. It can be controlled by `grid` property. +* inside [UIPanelElement](client.md#uipanelelement) `body` or `footer`, since they work as vertically stacks, it will add extra gap between items. + +### Examples + +Paragraphs with a flexible space between makes them more visually separated. ```typescript { + type: "Panel", body: [ - { type: "Text", content: "Contact" }, - { type: "TextInput", placeholder: "Enter your name", ... }, - { type: "TextInput", placeholder: "Enter your email", ... }, - { type: "Divider" }, - { type: "Text", content: "Address" }, - { type: "TextInput", placeholder: "Enter your address", ... }, + { type: "Paragraph", text: "Paragraph 1" }, + { type: "FlexibleSpace" }, + { type: "Paragraph", text: "Paragraph 2" }, + ], +} +``` + +Horizontal stack of buttons with a flexible space between makes them more visually separated. + +```typescript +{ + type: "Grid", + grid: "auto-flow / auto 1fr auto", + items: [ + { type: "Button", label: "Button 1", onClick: () => {} }, + { type: "FlexibleSpace" }, + { type: "Button", label: "Button 2", onClick: () => {} }, ], } ``` @@ -11239,7 +11264,7 @@ Divider element is useful to separate sections of a panel. #### type -> **type**: `"Divider"` +> **type**: `"FlexibleSpace"` #### id @@ -11291,21 +11316,19 @@ The id of the element. `void` -## UIDividerElementCreate - -The parameters for creating a divider element. +## UIFlexibleSpaceElementCreate -See [UIDividerElement](client.md#uidividerelement) for more details. +The parameters for creating a flexible space element. ### Remarks -`id` is optional but recommended if you want to be able to delete the element. +`id` is optional but recommended if you want to be able to perform updates. ### Properties #### type -> **type**: `"Divider"` +> **type**: `"FlexibleSpace"` #### onCreate()? @@ -11368,11 +11391,11 @@ If provided, it must be unique within the UI. `undefined` -## UIDividerElementUpdate +## UIFlexibleSpaceElementUpdate -The parameters for updating a divider element. +The parameters for updating a flexible space element. -See [UIDividerElement](client.md#uidividerelement) for more details. +See [UIFlexibleSpaceElement](client.md#uiflexiblespaceelement) for more details. ### Remarks @@ -11382,7 +11405,7 @@ See [UIDividerElement](client.md#uidividerelement) for more details. #### type -> **type**: `"Divider"` +> **type**: `"FlexibleSpace"` #### id @@ -11434,22 +11457,87 @@ The id of the element. `void` -## UIFlexibleSpaceElement +## UIGridContainerElement -Represents a flexible space element in a button group. -Useful to customize the spacing between button group items. +Represents a container with a grid layout in a panel. -### Example +By default, the grid items are vertically stacked, +but you can change the grid to use a different layout by +setting the `grid` property to a different value. + +`grid` property is the exact same as CSS's shorthand property `grid`. +[See the MDN documentation for more details](https://developer.mozilla.org/en-US/docs/Web/CSS/grid). + +You can understand [UIPanel](client.md#uipanel) `body` and `footer` properties +as grid containers using default vertical stack layout. + +## Horizontal stack + +As part of CSS Grid Layout capabilities it is possible to create a horizontal stack. + +### Equal width columns + +
+ Horizontal stack -Buttons with a flexible space between makes them more visually separated. +
Two columns, each sharing 50% of the container width
+
```typescript { - type: "ButtonGroup", + type: "Grid", + grid: "auto-flow / 1fr 1fr", + items: [ + { type: "TextInput", label: "Name", value: "" }, + { type: "TextInput", label: "Last name", value: "" }, + ], +} +``` + +## FlexibleSpace element + +`FlexibleSpace` element is a handy solution to allow more control over grid layout. + +If `grid` is not set, `FlexibleSpace` will add some space between the items. +By using `grid` property it is possible to control FlexibleSpace's size. + +### to right align the input + +
+ Flexible space to right align the input + +
Flexible space takes 50% of the container width
+
+ +```typescript +{ + type: "Grid", + grid: "auto-flow / 1fr 1fr", items: [ - { type: "Button", label: "Button 1", onClick: () => {} }, { type: "FlexibleSpace" }, - { type: "Button", label: "Button 2", onClick: () => {} }, + { type: "TextInput", label: "An input" , value: "" }, + ], +} +``` + +### two columns of buttons with space between them + +
+ Two groups of buttons + +
Two groups of buttons
+
+ +```typescript +{ + type: "Grid", + grid: "auto-flow / auto auto 1fr auto auto", + items: [ + { type: "Button", label: "A" , onClick: () => {} }, + { type: "Button", label: "B" , onClick: () => {} }, + { type: "FlexibleSpace" }, + { type: "Button", label: "C" , onClick: () => {} }, + { type: "Button", label: "D" , onClick: () => {} }, ], } ``` @@ -11458,7 +11546,13 @@ Buttons with a flexible space between makes them more visually separated. #### type -> **type**: `"FlexibleSpace"` +> **type**: `"Grid"` + +#### items + +> **items**: ([`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement))\[] + +The items to add to the grid container. #### id @@ -11466,6 +11560,31 @@ Buttons with a flexible space between makes them more visually separated. The ID of the element. +#### grid? + +> `optional` **grid**: `string` + +The grid to use for the container. +It is the exact same as CSS's shorthand property `grid`. + +##### Example + +### horizontal stack + +two columns, the first column is 50px wide, the second column takes the remaining space + +```typescript +{ + type: "Grid", + grid: "auto-flow / 50px 1fr", + items: [...] +} +``` + +##### See + +[https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. + #### onCreate()? > `optional` **onCreate**: (`args`) => `void` @@ -11510,19 +11629,48 @@ The id of the element. `void` -## UIFlexibleSpaceElementCreate +## UIGridContainerElementCreate -The parameters for creating a flexible space element. +The parameters for creating a grid container element. -### Remarks - -`id` is optional but recommended if you want to be able to perform updates. +See [UIGridContainerElement](client.md#uigridcontainerelement) for more details. ### Properties #### type -> **type**: `"FlexibleSpace"` +> **type**: `"Grid"` + +#### items + +> **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate))\[] + +The items to add to the grid container. + +#### grid? + +> `optional` **grid**: `string` + +The grid to use for the container. +It is the exact same as CSS's shorthand property `grid`. + +##### Example + +### horizontal stack + +two columns, the first column is 50px wide, the second column takes the remaining space + +```typescript +{ + type: "Grid", + grid: "auto-flow / 50px 1fr", + items: [...] +} +``` + +##### See + +[https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. #### onCreate()? @@ -11585,11 +11733,11 @@ If provided, it must be unique within the UI. `undefined` -## UIFlexibleSpaceElementUpdate +## UIGridContainerElementUpdate -The parameters for updating a flexible space element. +The parameters for updating a grid container element. -See [UIFlexibleSpaceElement](client.md#uiflexiblespaceelement) for more details. +See [UIGridContainerElement](client.md#uigridcontainerelement) for more details. ### Remarks @@ -11599,7 +11747,7 @@ See [UIFlexibleSpaceElement](client.md#uiflexiblespaceelement) for more details. #### type -> **type**: `"FlexibleSpace"` +> **type**: `"Grid"` #### id @@ -11607,6 +11755,37 @@ See [UIFlexibleSpaceElement](client.md#uiflexiblespaceelement) for more details. The ID of the element. +#### grid? + +> `optional` **grid**: `string` + +The grid to use for the container. +It is the exact same as CSS's shorthand property `grid`. + +##### Example + +### horizontal stack + +two columns, the first column is 50px wide, the second column takes the remaining space + +```typescript +{ + type: "Grid", + grid: "auto-flow / 50px 1fr", + items: [...] +} +``` + +##### See + +[https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. + +#### items? + +> `optional` **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate))\[] + +The items to add to the grid container. + #### onCreate()? > `optional` **onCreate**: (`args`) => `void` @@ -11674,8 +11853,6 @@ that it can contain a lot of elements. ### Footer Footer is sticky to the bottom of the panel, and can be used to add actions to the panel (e.g. save, cancel, etc.). -Normally, it should contain a `ButtonGroup` element with a `Cancel` and `Save` button. Using `ButtonGroup` is recommended -because it will automatically align the buttons to the end of the panel giving it a nice look. ### Examples @@ -11710,10 +11887,15 @@ because it will automatically align the buttons to the end of the panel giving i { type: "TextInput", label: "Last name", value: "", placeholder: "Doe", onChange: (value) => setLastName(value) }, ], footer: [ - { type: "ButtonGroup", items: [ - { type: "Button", label: "Reset", onClick: () => alert("Reset") }, - { type: "Button", label: "Save", onClick: () => alert("Save") }, - ] }, + { + type: "Grid", + grid: "auto-flow / 1fr auto auto", + items: [ + { type: "FlexibleSpace" }, // this will make the buttons to be aligned to the end of the panel + { type: "Button", label: "Reset", onClick: () => alert("Reset") }, + { type: "Button", label: "Save", onClick: () => alert("Save") }, + ], + }, ], } ```` @@ -13731,11 +13913,11 @@ In both cases, the default value is `{ at: "end" }`. ## UIPanelElement -> **UIPanelElement**: [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIButtonGroupElement`](client.md#uibuttongroupelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) +> **UIPanelElement**: [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIGridContainerElement`](client.md#uigridcontainerelement) ## UIPanelElementCreate -> **UIPanelElementCreate**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIButtonGroupElementCreate`](client.md#uibuttongroupelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) +> **UIPanelElementCreate**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIGridContainerElementCreate`](client.md#uigridcontainerelementcreate) This is a union of all the possible elements that can be created inside panel's body or footer. @@ -13745,7 +13927,7 @@ For the sake of convenience, `id` is optional but recommended if you want to be ## UIPanelElementUpdate -> **UIPanelElementUpdate**: [`UIButtonElementUpdate`](client.md#uibuttonelementupdate) | [`UITextElementUpdate`](client.md#uitextelementupdate) | [`UIButtonGroupElementUpdate`](client.md#uibuttongroupelementupdate) | [`UITextInputElementUpdate`](client.md#uitextinputelementupdate) | [`UISelectElementUpdate`](client.md#uiselectelementupdate) | [`UIFlexibleSpaceElementUpdate`](client.md#uiflexiblespaceelementupdate) | [`UIDividerElementUpdate`](client.md#uidividerelementupdate) +> **UIPanelElementUpdate**: [`UIButtonElementUpdate`](client.md#uibuttonelementupdate) | [`UITextElementUpdate`](client.md#uitextelementupdate) | [`UITextInputElementUpdate`](client.md#uitextinputelementupdate) | [`UISelectElementUpdate`](client.md#uiselectelementupdate) | [`UIDividerElementUpdate`](client.md#uidividerelementupdate) | [`UIGridContainerElementUpdate`](client.md#uigridcontainerelementupdate) | [`UIFlexibleSpaceElementUpdate`](client.md#uiflexiblespaceelementupdate) This is a union of all the possible elements that can be updated inside panel's body or footer (excluding Divider and FlexibleSpace elements because they cannot be updated). From c66ee7a4c911274ebec9988d73966a32321c2aff Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Wed, 2 Jul 2025 16:05:26 -0400 Subject: [PATCH 24/30] v1.7.0-next.19 --- docs-minimal/CHANGELOG.md | 18 + .../_media/button-row-end-alignment.png | Bin 0 -> 44657 bytes docs-minimal/_media/button-row-label.png | Bin 0 -> 12041 bytes docs-minimal/_media/button-row-overflow.png | Bin 0 -> 57947 bytes .../_media/button-row-start-alignment.png | Bin 0 -> 59779 bytes .../_media/button-row-with-grid-container.png | Bin 0 -> 46593 bytes docs-minimal/client.md | 798 +++++++++++++----- 7 files changed, 598 insertions(+), 218 deletions(-) create mode 100644 docs-minimal/_media/button-row-end-alignment.png create mode 100644 docs-minimal/_media/button-row-label.png create mode 100644 docs-minimal/_media/button-row-overflow.png create mode 100644 docs-minimal/_media/button-row-start-alignment.png create mode 100644 docs-minimal/_media/button-row-with-grid-container.png diff --git a/docs-minimal/CHANGELOG.md b/docs-minimal/CHANGELOG.md index 5d4ab0d6..0b72ac84 100644 --- a/docs-minimal/CHANGELOG.md +++ b/docs-minimal/CHANGELOG.md @@ -1,5 +1,23 @@ # @feltmaps/js-sdk +## 1.7.0-next.19 + +### Minor Changes + +* 2688f9c: Add UIButtonRowElement to custom ui panel + +## 1.7.0-next.18 + +### Minor Changes + +* 0b06e28: Add support for align and distribute items on grid container + +## 1.7.0-next.17 + +### Minor Changes + +* bd1952f: Merge create and update panel methods and require using createPanelId + ## 1.7.0-next.16 ### Minor Changes diff --git a/docs-minimal/_media/button-row-end-alignment.png b/docs-minimal/_media/button-row-end-alignment.png new file mode 100644 index 0000000000000000000000000000000000000000..bfb218753ce4b6ec836727ebb414e617406fe44c GIT binary patch literal 44657 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 C5?ti~ literal 0 HcmV?d00001 diff --git a/docs-minimal/_media/button-row-overflow.png b/docs-minimal/_media/button-row-overflow.png new file mode 100644 index 0000000000000000000000000000000000000000..a14c8c9eaea4953dccc8caa2fe46f571c273b678 GIT binary patch literal 57947 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�Pj>-IHO8?JoWzjY%9)eb|sTho~=uMhz^ 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 literal 0 HcmV?d00001 diff --git a/docs-minimal/_media/button-row-start-alignment.png b/docs-minimal/_media/button-row-start-alignment.png new file mode 100644 index 0000000000000000000000000000000000000000..d16bbc6c02b5d35834393cb6e1911c3dac2840dc GIT binary patch literal 59779 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 literal 0 HcmV?d00001 diff --git a/docs-minimal/_media/button-row-with-grid-container.png b/docs-minimal/_media/button-row-with-grid-container.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6c9d32ce11344023b13eabb0ba17fe8396d80e GIT binary patch literal 46593 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 literal 0 HcmV?d00001 diff --git a/docs-minimal/client.md b/docs-minimal/client.md index f5366f5a..05bd5700 100644 --- a/docs-minimal/client.md +++ b/docs-minimal/client.md @@ -7719,36 +7719,58 @@ The id of the action trigger to delete. await felt.deleteActionTrigger("layerTurnPurple"); ``` -#### createPanel() +#### createPanelId() -> **createPanel**(`args`): `Promise`\<[`UIPanel`](client.md#uipanel)> +> **createPanelId**(): `Promise`\<`string`> -Creates a panel on map's right sidebar. +Creates a panel ID. -Panels are useful to extend Felt UI for your own use cases (e.g. a form, a settings panel, etc.) -by using Felt UI elements (e.g. Text, Button, etc.). This way the user experience is consistent -with the rest of Felt. +In order to create a panel using [createOrUpdatePanel](client.md#createorupdatepanel), you need to create a panel ID first. + +##### Returns + +`Promise`\<`string`> + +##### Example + +```typescript +const panelId = await felt.createPanelId(); +``` + +#### createOrUpdatePanel() + +> **createOrUpdatePanel**(`args`): `Promise`\<[`UIPanel`](client.md#uipanel)> + +Creates or updates a panel. + +Panels are rendered on map's right sidebar and are useful to extend Felt UI for your own use cases +(e.g. a form, a settings panel, etc.) using Felt UI elements (e.g. Text, Button, etc.). +This way it is possible to cover new use cases while keeping the user experience consistent with the rest of Felt. + +A panel is identified by its ID and must come from [createPanelId](client.md#createpanelid). +Custom IDs are not supported in order to prevent conflicts with other panels. Panels have two sections: * `body` - Body of the panel, scrollable. * `footer` - It sticks to the bottom of the panel, useful to add submit buttons. -By default, the panel will be added to the end of the stack but you can -specify a placement to add it at a specific position in the stack. - -Once created, you can add elements to the panel by using the [createPanelElements](client.md#createpanelelements) method or -perform partial updates of elements by using the [updatePanelElements](client.md#updatepanelelements) method. +Regarding panel placement, by default it is added to the end of the panels stack but you can +specify a different placement by using the `initialPlacement` parameter. +This placement cannot be updated later. -When adding a panel, its id is optional as well as its elements' ids. -It is recommended to provide an id for the panel and its elements to make +When adding a panel, its elements' ids are optional though it is recommended to make it easier to update or delete them later. +Once created, you can add elements to the panel by using the [createPanelElements](client.md#createpanelelements) method, +perform partial updates of elements by using the [updatePanelElements](client.md#updatepanelelements) method or +delete elements by using the [deletePanelElements](client.md#deletepanelelements) method. + ##### Parameters ##### args -[`CreatePanelParams`](client.md#createpanelparams) +[`CreateOrUpdatePanelParams`](client.md#createorupdatepanelparams) The arguments for the method. @@ -7759,9 +7781,11 @@ The arguments for the method. ##### Example ```typescript -await felt.createPanel({ +const id = await felt.createPanelId(); + +await felt.createOrUpdatePanel({ panel: { - id: "panel-1", // not required but useful for further updates + id, title: "My Panel", body: [ { @@ -7784,43 +7808,7 @@ await felt.createPanel({ }, ], }, - placement: { at: "start" }, // add the panel to the start of the stack -}); -``` - -#### updatePanel() - -> **updatePanel**(`panel`): `Promise`\<[`UIPanel`](client.md#uipanel)> - -Updates a panel. - -Panel to update is identified by the `id` property. - -##### Parameters - -##### panel - -[`UpdatePanelParams`](client.md#updatepanelparams) - -The panel to update. - -##### Returns - -`Promise`\<[`UIPanel`](client.md#uipanel)> - -##### Remarks - -Properties provided will override the existing properties. -Override is done at Panel level, so if you want to update a specific element, -you need to provide the entire element. For partial updates of elements, use -[updatePanelElements](client.md#updatepanelelements) instead. - -##### Example - -```typescript -await felt.updatePanel({ - id: "panel-1", - title: "A new title for my panel", // only title changes + initialPlacement: { at: "start" }, // when added, the panel will be added to the start of the stack }); ``` @@ -7870,7 +7858,7 @@ The arguments for the method. ```typescript await felt.createPanelElements({ - panelId: "panel-1", + panelId, elements: [ { element: { type: "Text", content: "Hello, world!" }, @@ -7903,7 +7891,7 @@ The arguments for the method. ```typescript await felt.updatePanelElements({ - panelId: "panel-1", + panelId, elements: [ { element: { @@ -7938,7 +7926,7 @@ The arguments for the method. ```typescript await felt.deletePanelElements({ - panelId: "panel-1", + panelId, elements: ["element-1", "element-2"], }); ``` @@ -10141,15 +10129,15 @@ The id of the element. `void` -## CreatePanelParams +## CreateOrUpdatePanelParams -The parameters for adding a panel to the map by using [UiController.createPanel](client.md#createpanel). +The parameters for creating or updating a panel by using [UiController.createOrUpdatePanel](client.md#createorupdatepanel). ### Properties #### panel -> **panel**: [`UIPanelCreate`](client.md#uipanelcreate) +> **panel**: [`UIPanelCreateOrUpdate`](client.md#uipanelcreateorupdate) The panel to add. @@ -10157,110 +10145,16 @@ The panel to add. > `optional` **placement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } +#### initialPlacement? + +> `optional` **initialPlacement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } + The placement of the panel on the right sidebar stack. ##### Default Value `{ at: "end" }` -## UpdatePanelParams - -### Properties - -#### id - -> **id**: `string` - -The ID of the element. - -#### title? - -> `optional` **title**: `string` - -The title to display in the panel header. - -#### onClickClose()? - -> `optional` **onClickClose**: (`args`) => `void` - -A function to call when panel's close button is clicked. - -##### Parameters - -##### args - -The arguments passed to the function. - -##### id - -`string` - -The id of the panel. - -##### Returns - -`void` - -#### type? - -> `optional` **type**: `"Panel"` - -#### body? - -> `optional` **body**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] - -The elements to add to the panel body. - -#### footer? - -> `optional` **footer**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] - -The elements to add to the panel footer. - -#### onCreate()? - -> `optional` **onCreate**: (`args`) => `void` - -A function to call when the element is created. - -##### Parameters - -##### args - -The arguments passed to the function. - -##### id - -`string` - -The id of the element. - -##### Returns - -`void` - -#### onDestroy()? - -> `optional` **onDestroy**: (`args`) => `void` - -A function to call when the element is destroyed. - -##### Parameters - -##### args - -The arguments passed to the function. - -##### id - -`string` - -The id of the element. - -##### Returns - -`void` - ## CreatePanelElementsParams ### Properties @@ -11000,25 +10894,128 @@ The id of the element. `void` -## UIDividerElement +## UIButtonRowElement -Represents a divider element in a panel. -This element is used to separate other elements in a panel. -It is rendered as a gray horizontal line of 1px height. +Represents a row of buttons. -### Example +It is useful to group buttons together and align them. -Divider element is useful to separate sections of a panel. +Unlike on [UIGridContainerElement](client.md#uigridcontainerelement), buttons do not expand to fill the container. +Instead, they use the space they need and are wrapped to the next line when they overflow. + +## Label + +A label can be added to the button row using the `label` property. + +
+ Label + +
Label
+
```typescript { - body: [ - { type: "Text", content: "Contact" }, - { type: "TextInput", placeholder: "Enter your name", ... }, - { type: "TextInput", placeholder: "Enter your email", ... }, - { type: "Divider" }, - { type: "Text", content: "Address" }, - { type: "TextInput", placeholder: "Enter your address", ... }, + type: "ButtonRow", + label: "Zoom control", + items: [ + { type: "Button", label: "Increase", onClick: () => {} }, + { type: "Button", label: "Decrease", onClick: () => {} }, + ], +} +``` + +## Alignment + +It is possible to align the button row to the start or end of the container using the `align` property. + +### Start alignment + +
+ Start alignment + +
Start alignment
+
+ +```typescript +{ + type: "ButtonRow", + align: "start", // default value + items: [ + { type: "Button", label: "Button 1", onClick: () => {} }, + { type: "Button", label: "Button 2", onClick: () => {} }, + ], +} +``` + +### End alignment + +
+ End alignment + +
End alignment
+
+ +```typescript +{ + type: "ButtonRow", + align: "end", + items: [ + { type: "Button", label: "Button 1", onClick: () => {} }, + { type: "Button", label: "Button 2", onClick: () => {} }, + ], +} +``` + +## Overflow + +When buttons overflow the container, they are wrapped to the next line. + +
+ Overflow + +
Overflow
+
+ +```typescript +{ + type: "ButtonRow", + items: [ + { type: "Button", label: "Button with a very long text", onClick: () => {} }, + { type: "Button", label: "Button 2", onClick: () => {} }, + { type: "Button", label: "Button 3", onClick: () => {} }, + ], +} +``` + +## With Grid container + +[UIGridContainerElement](client.md#uigridcontainerelement), as a generic container, can render [UIButtonRowElement](client.md#uibuttonrowelement) as well. + +In this example, the combination of [UIGridContainerElement](client.md#uigridcontainerelement) and [UIButtonRowElement](client.md#uibuttonrowelement) is used to layout a footer +where the buttons are aligned to the end of the container and the text is at the start. + +
+ With Grid container + +
With Grid container
+
+ +```typescript +{ + type: "Grid", + grid: "auto-flow / 1fr auto", + rowItemsJustify: "space-between", + rowItemsAlign: "center", + items: [ + { type: "Text", content: "Continue?" }, + { + type: "ButtonRow", + align: "end", + items: [ + { type: "Button", variant: "transparent", label: "Cancel", onClick: () => {} }, + { type: "Button", variant: "filled", tint: "primary", label: "Continue", onClick: () => {} }, + ] + }, ], } ``` @@ -11027,7 +11024,13 @@ Divider element is useful to separate sections of a panel. #### type -> **type**: `"Divider"` +> **type**: `"ButtonRow"` + +#### items + +> **items**: [`UIButtonElement`](client.md#uibuttonelement)\[] + +The items to add to the button row. #### id @@ -11035,6 +11038,16 @@ Divider element is useful to separate sections of a panel. The ID of the element. +#### align? + +> `optional` **align**: `"start"` | `"end"` + +The alignment of the button row. + +##### Default Value + +`"start"` + #### onCreate()? > `optional` **onCreate**: (`args`) => `void` @@ -11079,21 +11092,39 @@ The id of the element. `void` -## UIDividerElementCreate +#### label? -The parameters for creating a divider element. +> `optional` **label**: `string` -See [UIDividerElement](client.md#uidividerelement) for more details. +Label text to display above the element and used for screen readers. -### Remarks +## UIButtonRowElementCreate -`id` is optional but recommended if you want to be able to delete the element. +The parameters for creating a button row element. + +See [UIButtonRowElement](client.md#uibuttonrowelement) for more details. ### Properties #### type -> **type**: `"Divider"` +> **type**: `"ButtonRow"` + +#### items + +> **items**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate)\[] + +The items to add to the button row. + +#### align? + +> `optional` **align**: `"start"` | `"end"` + +The alignment of the button row. + +##### Default Value + +`"start"` #### onCreate()? @@ -11156,7 +11187,253 @@ If provided, it must be unique within the UI. `undefined` -## UIDividerElementUpdate +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## UIButtonRowElementUpdate + +The parameters for updating a button row element. + +See [UIButtonRowElement](client.md#uibuttonrowelement) for more details. + +### Properties + +#### type + +> **type**: `"ButtonRow"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### align? + +> `optional` **align**: `"start"` | `"end"` + +The alignment of the button row. + +##### Default Value + +`"start"` + +#### items? + +> `optional` **items**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate)\[] + +The items to add to the button row. + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## UIDividerElement + +Represents a divider element in a panel. +This element is used to separate other elements in a panel. +It is rendered as a gray horizontal line of 1px height. + +### Example + +Divider element is useful to separate sections of a panel. + +```typescript +{ + body: [ + { type: "Text", content: "Contact" }, + { type: "TextInput", placeholder: "Enter your name", ... }, + { type: "TextInput", placeholder: "Enter your email", ... }, + { type: "Divider" }, + { type: "Text", content: "Address" }, + { type: "TextInput", placeholder: "Enter your address", ... }, + ], +} +``` + +### Properties + +#### type + +> **type**: `"Divider"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +## UIDividerElementCreate + +The parameters for creating a divider element. + +See [UIDividerElement](client.md#uidividerelement) for more details. + +### Remarks + +`id` is optional but recommended if you want to be able to delete the element. + +### Properties + +#### type + +> **type**: `"Divider"` + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +The ID of the element. + +##### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +##### Default Value + +`undefined` + +## UIDividerElementUpdate The parameters for updating a divider element. @@ -11475,6 +11752,16 @@ as grid containers using default vertical stack layout. As part of CSS Grid Layout capabilities it is possible to create a horizontal stack. +### Alignment & Distribution + +On horizontal stacks, it is possible to align and distribute the items. + +`verticalAlignment` is used to align the items vertically. By default, items are aligned to the top of the container. +It follows the same values as CSS's `align-items` property. See [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items) for more details. + +`horizontalDistribution` is used to justify the items horizontally. By default, items are justified to the start of the container. +It follows the same values as CSS's `justify-content` property. See [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content) for more details. + ### Equal width columns
@@ -11550,7 +11837,7 @@ By using `grid` property it is possible to control FlexibleSpace's size. #### items -> **items**: ([`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement))\[] +> **items**: ([`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonRowElement`](client.md#uibuttonrowelement))\[] The items to add to the grid container. @@ -11585,6 +11872,28 @@ two columns, the first column is 50px wide, the second column takes the remainin [https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. +#### verticalAlignment? + +> `optional` **verticalAlignment**: `"center"` | `"top"` | `"bottom"` + +The alignment of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"top"` + +#### horizontalDistribution? + +> `optional` **horizontalDistribution**: `"center"` | `"start"` | `"end"` | `"space-between"` | `"space-around"` | `"space-evenly"` + +The distribution of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"start"` + #### onCreate()? > `optional` **onCreate**: (`args`) => `void` @@ -11643,7 +11952,7 @@ See [UIGridContainerElement](client.md#uigridcontainerelement) for more details. #### items -> **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate))\[] +> **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate))\[] The items to add to the grid container. @@ -11672,6 +11981,28 @@ two columns, the first column is 50px wide, the second column takes the remainin [https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. +#### verticalAlignment? + +> `optional` **verticalAlignment**: `"center"` | `"top"` | `"bottom"` + +The alignment of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"top"` + +#### horizontalDistribution? + +> `optional` **horizontalDistribution**: `"center"` | `"start"` | `"end"` | `"space-between"` | `"space-around"` | `"space-evenly"` + +The distribution of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"start"` + #### onCreate()? > `optional` **onCreate**: (`args`) => `void` @@ -11780,9 +12111,31 @@ two columns, the first column is 50px wide, the second column takes the remainin [https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. +#### verticalAlignment? + +> `optional` **verticalAlignment**: `"center"` | `"top"` | `"bottom"` + +The alignment of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"top"` + +#### horizontalDistribution? + +> `optional` **horizontalDistribution**: `"center"` | `"start"` | `"end"` | `"space-between"` | `"space-around"` | `"space-evenly"` + +The distribution of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"start"` + #### items? -> `optional` **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate))\[] +> `optional` **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate))\[] The items to add to the grid container. @@ -11833,7 +12186,7 @@ The id of the element. ## UIPanel Represents a panel in the UI. -It can be added to the map by using the [UiController.createPanel](client.md#createpanel) method. +It can be added to the map by using the [UiController.createOrUpdatePanel](client.md#createorupdatepanel) method. A panel is a container for other UI elements. It can have a title, a body, a footer as well as a close button. @@ -11906,17 +12259,15 @@ Footer is sticky to the bottom of the panel, and can be used to add actions to t > **type**: `"Panel"` -#### body - -> **body**: [`UIPanelElement`](client.md#uipanelelement)\[] - -The elements to add to the panel body. - #### id > **id**: `string` -The ID of the element. +The ID of the panel obtained from [UiController.createPanelId](client.md#createpanelid). + +##### Remarks + +Custom IDs are not supported. #### title? @@ -11924,6 +12275,12 @@ The ID of the element. The title to display in the panel header. +#### body? + +> `optional` **body**: [`UIPanelElement`](client.md#uipanelelement)\[] + +The elements to add to the panel body. + #### footer? > `optional` **footer**: [`UIPanelElement`](client.md#uipanelelement)\[] @@ -11996,25 +12353,25 @@ The id of the element. `void` -## UIPanelCreate +## UIPanelCreateOrUpdate -The parameters for creating a panel by using [UiController.createPanel](client.md#createpanel). +The parameters for creating a panel by using [UiController.createOrUpdatePanel](client.md#createorupdatepanel). ### See [UIPanel](client.md#uipanel) for more information about panels. -### Remarks +### Properties -`id` is optional but recommended if you want to be able to perform updates. +#### id -### Properties +> **id**: `string` -#### body +The ID of the panel obtained from [UiController.createPanelId](client.md#createpanelid). -> **body**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] +##### Remarks -The elements to add to the panel body. +Custom IDs are not supported. #### title? @@ -12048,6 +12405,12 @@ The id of the panel. > `optional` **type**: `"Panel"` +#### body? + +> `optional` **body**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] + +The elements to add to the panel body. + #### footer? > `optional` **footer**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] @@ -12098,23 +12461,6 @@ The id of the element. `void` -#### id? - -> `optional` **id**: `string` - -The ID of the element. - -##### Remarks - -If not provided, the element will be assigned a random ID, but it is recommended to provide it -to perform further updates on the element. - -If provided, it must be unique within the UI. - -##### Default Value - -`undefined` - ## UISelectElement Represents a select element in a panel. @@ -12142,6 +12488,22 @@ Represents a select element in a panel. } ``` +### with label + +`label` is displayed above the select and used for screen readers. +`placeholder` is displayed in the select when no value is selected. + +```typescript +{ + type: "Select", + label: "Fruit", + options: [{ label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }], + value: undefined, + placeholder: "Select a fruit", + onChange: (args) => console.log(args.value), +} +``` + ### with search ```typescript @@ -13906,18 +14268,18 @@ The result of listening for changes to the settings of each tool. > **PlacementForUIElement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } -Used in [UiController.createPanel](client.md#createpanel) to specify the position of a panel in the stack +Used in [UiController.createOrUpdatePanel](client.md#createorupdatepanel) to specify the position of a panel in the stack and in [UiController.createPanelElements](client.md#createpanelelements) to specify the position of an element in a panel. In both cases, the default value is `{ at: "end" }`. ## UIPanelElement -> **UIPanelElement**: [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIGridContainerElement`](client.md#uigridcontainerelement) +> **UIPanelElement**: [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonRowElement`](client.md#uibuttonrowelement) | [`UIGridContainerElement`](client.md#uigridcontainerelement) ## UIPanelElementCreate -> **UIPanelElementCreate**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIGridContainerElementCreate`](client.md#uigridcontainerelementcreate) +> **UIPanelElementCreate**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate) | [`UIGridContainerElementCreate`](client.md#uigridcontainerelementcreate) This is a union of all the possible elements that can be created inside panel's body or footer. @@ -13927,7 +14289,7 @@ For the sake of convenience, `id` is optional but recommended if you want to be ## UIPanelElementUpdate -> **UIPanelElementUpdate**: [`UIButtonElementUpdate`](client.md#uibuttonelementupdate) | [`UITextElementUpdate`](client.md#uitextelementupdate) | [`UITextInputElementUpdate`](client.md#uitextinputelementupdate) | [`UISelectElementUpdate`](client.md#uiselectelementupdate) | [`UIDividerElementUpdate`](client.md#uidividerelementupdate) | [`UIGridContainerElementUpdate`](client.md#uigridcontainerelementupdate) | [`UIFlexibleSpaceElementUpdate`](client.md#uiflexiblespaceelementupdate) +> **UIPanelElementUpdate**: [`UIButtonElementUpdate`](client.md#uibuttonelementupdate) | [`UITextElementUpdate`](client.md#uitextelementupdate) | [`UITextInputElementUpdate`](client.md#uitextinputelementupdate) | [`UISelectElementUpdate`](client.md#uiselectelementupdate) | [`UIDividerElementUpdate`](client.md#uidividerelementupdate) | [`UIButtonRowElementUpdate`](client.md#uibuttonrowelementupdate) | [`UIGridContainerElementUpdate`](client.md#uigridcontainerelementupdate) | [`UIFlexibleSpaceElementUpdate`](client.md#uiflexiblespaceelementupdate) This is a union of all the possible elements that can be updated inside panel's body or footer (excluding Divider and FlexibleSpace elements because they cannot be updated). From 41adc1d569b8e405c6ce4d48321f85037b14e4f1 Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Fri, 4 Jul 2025 18:45:20 -0400 Subject: [PATCH 25/30] 1.7.0-next.20 --- docs-minimal/CHANGELOG.md | 7 + docs-minimal/_media/checkbox-group-basic.png | Bin 0 -> 92675 bytes docs-minimal/_media/radio-group-basic.png | Bin 0 -> 69255 bytes docs-minimal/_media/toggle-group-basic.png | Bin 0 -> 39774 bytes .../_media/toggle-group-end-alignment.png | Bin 0 -> 37609 bytes .../_media/toggle-group-with-label.png | Bin 0 -> 68718 bytes docs-minimal/client.md | 2818 ++++++++++++----- 7 files changed, 2019 insertions(+), 806 deletions(-) create mode 100644 docs-minimal/_media/checkbox-group-basic.png create mode 100644 docs-minimal/_media/radio-group-basic.png create mode 100644 docs-minimal/_media/toggle-group-basic.png create mode 100644 docs-minimal/_media/toggle-group-end-alignment.png create mode 100644 docs-minimal/_media/toggle-group-with-label.png diff --git a/docs-minimal/CHANGELOG.md b/docs-minimal/CHANGELOG.md index 0b72ac84..af349131 100644 --- a/docs-minimal/CHANGELOG.md +++ b/docs-minimal/CHANGELOG.md @@ -1,5 +1,12 @@ # @feltmaps/js-sdk +## 1.7.0-next.20 + +### Minor Changes + +* f2fcd2a: Add checkbox, radio and toggle controls to custom ui panel +* c16c55a: Support disabled on custom ui control option + ## 1.7.0-next.19 ### Minor Changes diff --git a/docs-minimal/_media/checkbox-group-basic.png b/docs-minimal/_media/checkbox-group-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..06c266b63d6d282f10a16232685abf7250c6eea3 GIT binary patch literal 92675 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 literal 0 HcmV?d00001 diff --git a/docs-minimal/_media/toggle-group-basic.png b/docs-minimal/_media/toggle-group-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..f0c95533a35600af75c1eb303a63f5a168c6f8b9 GIT binary patch literal 39774 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 N002ovPDHLkV1jsyO#lD@ literal 0 HcmV?d00001 diff --git a/docs-minimal/_media/toggle-group-end-alignment.png b/docs-minimal/_media/toggle-group-end-alignment.png new file mode 100644 index 0000000000000000000000000000000000000000..441d36eff7095f06ec922ba31f90841d4de5b65b GIT binary patch literal 37609 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 literal 0 HcmV?d00001 diff --git a/docs-minimal/_media/toggle-group-with-label.png b/docs-minimal/_media/toggle-group-with-label.png new file mode 100644 index 0000000000000000000000000000000000000000..ce8bae6662826c2eb3f5e439b84114ebe24fc0db GIT binary patch literal 68718 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 literal 0 HcmV?d00001 diff --git a/docs-minimal/client.md b/docs-minimal/client.md index 05bd5700..6d3a2ba9 100644 --- a/docs-minimal/client.md +++ b/docs-minimal/client.md @@ -11277,26 +11277,36 @@ The id of the element. Label text to display above the element and used for screen readers. -## UIDividerElement +## UICheckboxGroupElement -Represents a divider element in a panel. -This element is used to separate other elements in a panel. -It is rendered as a gray horizontal line of 1px height. +The parameters for creating a checkbox group element. -### Example +The checkbox group is a control that allows the user to select one or more values from a list of options. -Divider element is useful to separate sections of a panel. +As a control, the checkbox group can have a label displayed above the checkboxes. + +If no value is provided, `value` is `[]`, the checkbox group will be empty. + +
+ Checkbox group basic + +
+ A checkbox group with a label +
+
```typescript { - body: [ - { type: "Text", content: "Contact" }, - { type: "TextInput", placeholder: "Enter your name", ... }, - { type: "TextInput", placeholder: "Enter your email", ... }, - { type: "Divider" }, - { type: "Text", content: "Address" }, - { type: "TextInput", placeholder: "Enter your address", ... }, + type: "CheckboxGroup", + label: "Select your hobbies", + options: [ + { label: "👾 Video games", value: "gaming" }, + { label: "🎨 Art", value: "art" }, + { label: "🎤 Singing", value: "singing" }, + { label: "🎬 Movies", value: "movies" }, ], + value: ["gaming", "art"], + onChange: ({ value, id }) => { } } ``` @@ -11304,7 +11314,51 @@ Divider element is useful to separate sections of a panel. #### type -> **type**: `"Divider"` +> **type**: `"CheckboxGroup"` + +#### value + +> **value**: `string`\[] = `valueSchema` + +The value of the checkbox group. + +##### Default Value + +`[]` + +#### options + +> **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] + +The options to display in the checkbox group. + +#### onChange() + +> **onChange**: (`args`) => `void` + +The function to call when the value of the checkbox group changes. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### value + +`string`\[] + +Array of the selected values. + +##### id + +`string` + +The id of the checkbox group element. + +##### Returns + +`void` #### id @@ -11356,21 +11410,67 @@ The id of the element. `void` -## UIDividerElementCreate +#### label? -The parameters for creating a divider element. +> `optional` **label**: `string` -See [UIDividerElement](client.md#uidividerelement) for more details. +Label text to display above the element and used for screen readers. -### Remarks +## UICheckboxGroupElementCreate -`id` is optional but recommended if you want to be able to delete the element. +The parameters for creating a checkbox group element. + +See [UICheckboxGroupElement](client.md#uicheckboxgroupelement) for more details. ### Properties #### type -> **type**: `"Divider"` +> **type**: `"CheckboxGroup"` + +#### value + +> **value**: `string`\[] = `valueSchema` + +The value of the checkbox group. + +##### Default Value + +`[]` + +#### options + +> **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] + +The options to display in the checkbox group. + +#### onChange() + +> **onChange**: (`args`) => `void` + +The function to call when the value of the checkbox group changes. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### value + +`string`\[] + +Array of the selected values. + +##### id + +`string` + +The id of the checkbox group element. + +##### Returns + +`void` #### onCreate()? @@ -11433,21 +11533,23 @@ If provided, it must be unique within the UI. `undefined` -## UIDividerElementUpdate +#### label? -The parameters for updating a divider element. +> `optional` **label**: `string` -See [UIDividerElement](client.md#uidividerelement) for more details. +Label text to display above the element and used for screen readers. -### Remarks +## UICheckboxGroupElementUpdate -`id` and `type` are required to identify the element to update. +The parameters for updating a checkbox group element. + +See [UICheckboxGroupElement](client.md#uicheckboxgroupelement) for more details. ### Properties #### type -> **type**: `"Divider"` +> **type**: `"CheckboxGroup"` #### id @@ -11455,6 +11557,50 @@ See [UIDividerElement](client.md#uidividerelement) for more details. The ID of the element. +#### value? + +> `optional` **value**: `string`\[] = `valueSchema` + +The value of the checkbox group. + +##### Default Value + +`[]` + +#### options? + +> `optional` **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] + +The options to display in the checkbox group. + +#### onChange()? + +> `optional` **onChange**: (`args`) => `void` + +The function to call when the value of the checkbox group changes. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### value + +`string`\[] + +Array of the selected values. + +##### id + +`string` + +The id of the checkbox group element. + +##### Returns + +`void` + #### onCreate()? > `optional` **onCreate**: (`args`) => `void` @@ -11499,40 +11645,31 @@ The id of the element. `void` -## UIFlexibleSpaceElement - -Represents a flexible space element in a container. +#### label? -When rendered... +> `optional` **label**: `string` -* inside [UIGridContainerElement](client.md#uigridcontainerelement), it will add extra gap between items. It can be controlled by `grid` property. -* inside [UIPanelElement](client.md#uipanelelement) `body` or `footer`, since they work as vertically stacks, it will add extra gap between items. +Label text to display above the element and used for screen readers. -### Examples +## UIDividerElement -Paragraphs with a flexible space between makes them more visually separated. +Represents a divider element in a panel. +This element is used to separate other elements in a panel. +It is rendered as a gray horizontal line of 1px height. -```typescript -{ - type: "Panel", - body: [ - { type: "Paragraph", text: "Paragraph 1" }, - { type: "FlexibleSpace" }, - { type: "Paragraph", text: "Paragraph 2" }, - ], -} -``` +### Example -Horizontal stack of buttons with a flexible space between makes them more visually separated. +Divider element is useful to separate sections of a panel. ```typescript { - type: "Grid", - grid: "auto-flow / auto 1fr auto", - items: [ - { type: "Button", label: "Button 1", onClick: () => {} }, - { type: "FlexibleSpace" }, - { type: "Button", label: "Button 2", onClick: () => {} }, + body: [ + { type: "Text", content: "Contact" }, + { type: "TextInput", placeholder: "Enter your name", ... }, + { type: "TextInput", placeholder: "Enter your email", ... }, + { type: "Divider" }, + { type: "Text", content: "Address" }, + { type: "TextInput", placeholder: "Enter your address", ... }, ], } ``` @@ -11541,7 +11678,7 @@ Horizontal stack of buttons with a flexible space between makes them more visual #### type -> **type**: `"FlexibleSpace"` +> **type**: `"Divider"` #### id @@ -11593,19 +11730,21 @@ The id of the element. `void` -## UIFlexibleSpaceElementCreate +## UIDividerElementCreate -The parameters for creating a flexible space element. +The parameters for creating a divider element. + +See [UIDividerElement](client.md#uidividerelement) for more details. ### Remarks -`id` is optional but recommended if you want to be able to perform updates. +`id` is optional but recommended if you want to be able to delete the element. ### Properties #### type -> **type**: `"FlexibleSpace"` +> **type**: `"Divider"` #### onCreate()? @@ -11668,11 +11807,11 @@ If provided, it must be unique within the UI. `undefined` -## UIFlexibleSpaceElementUpdate +## UIDividerElementUpdate -The parameters for updating a flexible space element. +The parameters for updating a divider element. -See [UIFlexibleSpaceElement](client.md#uiflexiblespaceelement) for more details. +See [UIDividerElement](client.md#uidividerelement) for more details. ### Remarks @@ -11682,7 +11821,7 @@ See [UIFlexibleSpaceElement](client.md#uiflexiblespaceelement) for more details. #### type -> **type**: `"FlexibleSpace"` +> **type**: `"Divider"` #### id @@ -11734,97 +11873,40 @@ The id of the element. `void` -## UIGridContainerElement - -Represents a container with a grid layout in a panel. - -By default, the grid items are vertically stacked, -but you can change the grid to use a different layout by -setting the `grid` property to a different value. - -`grid` property is the exact same as CSS's shorthand property `grid`. -[See the MDN documentation for more details](https://developer.mozilla.org/en-US/docs/Web/CSS/grid). - -You can understand [UIPanel](client.md#uipanel) `body` and `footer` properties -as grid containers using default vertical stack layout. - -## Horizontal stack - -As part of CSS Grid Layout capabilities it is possible to create a horizontal stack. - -### Alignment & Distribution - -On horizontal stacks, it is possible to align and distribute the items. +## UIFlexibleSpaceElement -`verticalAlignment` is used to align the items vertically. By default, items are aligned to the top of the container. -It follows the same values as CSS's `align-items` property. See [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items) for more details. +Represents a flexible space element in a container. -`horizontalDistribution` is used to justify the items horizontally. By default, items are justified to the start of the container. -It follows the same values as CSS's `justify-content` property. See [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content) for more details. +When rendered... -### Equal width columns +* inside [UIGridContainerElement](client.md#uigridcontainerelement), it will add extra gap between items. It can be controlled by `grid` property. +* inside [UIPanelElement](client.md#uipanelelement) `body` or `footer`, since they work as vertically stacks, it will add extra gap between items. -
- Horizontal stack +### Examples -
Two columns, each sharing 50% of the container width
-
+Paragraphs with a flexible space between makes them more visually separated. ```typescript { - type: "Grid", - grid: "auto-flow / 1fr 1fr", - items: [ - { type: "TextInput", label: "Name", value: "" }, - { type: "TextInput", label: "Last name", value: "" }, + type: "Panel", + body: [ + { type: "Paragraph", text: "Paragraph 1" }, + { type: "FlexibleSpace" }, + { type: "Paragraph", text: "Paragraph 2" }, ], } ``` -## FlexibleSpace element - -`FlexibleSpace` element is a handy solution to allow more control over grid layout. - -If `grid` is not set, `FlexibleSpace` will add some space between the items. -By using `grid` property it is possible to control FlexibleSpace's size. - -### to right align the input - -
- Flexible space to right align the input - -
Flexible space takes 50% of the container width
-
- -```typescript -{ - type: "Grid", - grid: "auto-flow / 1fr 1fr", - items: [ - { type: "FlexibleSpace" }, - { type: "TextInput", label: "An input" , value: "" }, - ], -} -``` - -### two columns of buttons with space between them - -
- Two groups of buttons - -
Two groups of buttons
-
+Horizontal stack of buttons with a flexible space between makes them more visually separated. ```typescript { type: "Grid", - grid: "auto-flow / auto auto 1fr auto auto", + grid: "auto-flow / auto 1fr auto", items: [ - { type: "Button", label: "A" , onClick: () => {} }, - { type: "Button", label: "B" , onClick: () => {} }, + { type: "Button", label: "Button 1", onClick: () => {} }, { type: "FlexibleSpace" }, - { type: "Button", label: "C" , onClick: () => {} }, - { type: "Button", label: "D" , onClick: () => {} }, + { type: "Button", label: "Button 2", onClick: () => {} }, ], } ``` @@ -11833,13 +11915,7 @@ By using `grid` property it is possible to control FlexibleSpace's size. #### type -> **type**: `"Grid"` - -#### items - -> **items**: ([`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonRowElement`](client.md#uibuttonrowelement))\[] - -The items to add to the grid container. +> **type**: `"FlexibleSpace"` #### id @@ -11847,53 +11923,6 @@ The items to add to the grid container. The ID of the element. -#### grid? - -> `optional` **grid**: `string` - -The grid to use for the container. -It is the exact same as CSS's shorthand property `grid`. - -##### Example - -### horizontal stack - -two columns, the first column is 50px wide, the second column takes the remaining space - -```typescript -{ - type: "Grid", - grid: "auto-flow / 50px 1fr", - items: [...] -} -``` - -##### See - -[https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. - -#### verticalAlignment? - -> `optional` **verticalAlignment**: `"center"` | `"top"` | `"bottom"` - -The alignment of the items in the grid. -Only takes effect on horizontal stacks. - -##### Default Value - -`"top"` - -#### horizontalDistribution? - -> `optional` **horizontalDistribution**: `"center"` | `"start"` | `"end"` | `"space-between"` | `"space-around"` | `"space-evenly"` - -The distribution of the items in the grid. -Only takes effect on horizontal stacks. - -##### Default Value - -`"start"` - #### onCreate()? > `optional` **onCreate**: (`args`) => `void` @@ -11938,70 +11967,19 @@ The id of the element. `void` -## UIGridContainerElementCreate +## UIFlexibleSpaceElementCreate -The parameters for creating a grid container element. +The parameters for creating a flexible space element. -See [UIGridContainerElement](client.md#uigridcontainerelement) for more details. +### Remarks + +`id` is optional but recommended if you want to be able to perform updates. ### Properties #### type -> **type**: `"Grid"` - -#### items - -> **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate))\[] - -The items to add to the grid container. - -#### grid? - -> `optional` **grid**: `string` - -The grid to use for the container. -It is the exact same as CSS's shorthand property `grid`. - -##### Example - -### horizontal stack - -two columns, the first column is 50px wide, the second column takes the remaining space - -```typescript -{ - type: "Grid", - grid: "auto-flow / 50px 1fr", - items: [...] -} -``` - -##### See - -[https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. - -#### verticalAlignment? - -> `optional` **verticalAlignment**: `"center"` | `"top"` | `"bottom"` - -The alignment of the items in the grid. -Only takes effect on horizontal stacks. - -##### Default Value - -`"top"` - -#### horizontalDistribution? - -> `optional` **horizontalDistribution**: `"center"` | `"start"` | `"end"` | `"space-between"` | `"space-around"` | `"space-evenly"` - -The distribution of the items in the grid. -Only takes effect on horizontal stacks. - -##### Default Value - -`"start"` +> **type**: `"FlexibleSpace"` #### onCreate()? @@ -12064,11 +12042,11 @@ If provided, it must be unique within the UI. `undefined` -## UIGridContainerElementUpdate +## UIFlexibleSpaceElementUpdate -The parameters for updating a grid container element. +The parameters for updating a flexible space element. -See [UIGridContainerElement](client.md#uigridcontainerelement) for more details. +See [UIFlexibleSpaceElement](client.md#uiflexiblespaceelement) for more details. ### Remarks @@ -12078,7 +12056,7 @@ See [UIGridContainerElement](client.md#uigridcontainerelement) for more details. #### type -> **type**: `"Grid"` +> **type**: `"FlexibleSpace"` #### id @@ -12086,59 +12064,6 @@ See [UIGridContainerElement](client.md#uigridcontainerelement) for more details. The ID of the element. -#### grid? - -> `optional` **grid**: `string` - -The grid to use for the container. -It is the exact same as CSS's shorthand property `grid`. - -##### Example - -### horizontal stack - -two columns, the first column is 50px wide, the second column takes the remaining space - -```typescript -{ - type: "Grid", - grid: "auto-flow / 50px 1fr", - items: [...] -} -``` - -##### See - -[https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. - -#### verticalAlignment? - -> `optional` **verticalAlignment**: `"center"` | `"top"` | `"bottom"` - -The alignment of the items in the grid. -Only takes effect on horizontal stacks. - -##### Default Value - -`"top"` - -#### horizontalDistribution? - -> `optional` **horizontalDistribution**: `"center"` | `"start"` | `"end"` | `"space-between"` | `"space-around"` | `"space-evenly"` - -The distribution of the items in the grid. -Only takes effect on horizontal stacks. - -##### Default Value - -`"start"` - -#### items? - -> `optional` **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate))\[] - -The items to add to the grid container. - #### onCreate()? > `optional` **onCreate**: (`args`) => `void` @@ -12183,131 +12108,1229 @@ The id of the element. `void` -## UIPanel +## UIGridContainerElement -Represents a panel in the UI. -It can be added to the map by using the [UiController.createOrUpdatePanel](client.md#createorupdatepanel) method. +Represents a container with a grid layout in a panel. -A panel is a container for other UI elements. -It can have a title, a body, a footer as well as a close button. +By default, the grid items are vertically stacked, +but you can change the grid to use a different layout by +setting the `grid` property to a different value. -The body and footer are arrays of UI elements and turn into vertical stacks of elements. +`grid` property is the exact same as CSS's shorthand property `grid`. +[See the MDN documentation for more details](https://developer.mozilla.org/en-US/docs/Web/CSS/grid). -The close button is a button rendered in the top right corner of the panel that can be -used to close the panel and is only visible if `onClickClose` is provided. -Usually, you want to call [UiController.deletePanel](client.md#deletepanel) when the close button is clicked, -e.g. `onClickClose: () => felt.deletePanel("my-panel")`. +You can understand [UIPanel](client.md#uipanel) `body` and `footer` properties +as grid containers using default vertical stack layout. -### Body +## Horizontal stack -Body is the main content of the panel. It is scrollable which means -that it can contain a lot of elements. +As part of CSS Grid Layout capabilities it is possible to create a horizontal stack. -### Footer +### Alignment & Distribution -Footer is sticky to the bottom of the panel, and can be used to add actions to the panel (e.g. save, cancel, etc.). +On horizontal stacks, it is possible to align and distribute the items. -### Examples +`verticalAlignment` is used to align the items vertically. By default, items are aligned to the top of the container. +It follows the same values as CSS's `align-items` property. See [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items) for more details. -### basic +`horizontalDistribution` is used to justify the items horizontally. By default, items are justified to the start of the container. +It follows the same values as CSS's `justify-content` property. See [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content) for more details. -```typescript -{ - title: "My Panel", - body: [ - { type: "Text", text: "Hello" }, +### Equal width columns + +
+ Horizontal stack + +
Two columns, each sharing 50% of the container width
+
+ +```typescript +{ + type: "Grid", + grid: "auto-flow / 1fr 1fr", + items: [ + { type: "TextInput", label: "Name", value: "" }, + { type: "TextInput", label: "Last name", value: "" }, ], } ``` -### closable +## FlexibleSpace element -````typescript +`FlexibleSpace` element is a handy solution to allow more control over grid layout. + +If `grid` is not set, `FlexibleSpace` will add some space between the items. +By using `grid` property it is possible to control FlexibleSpace's size. + +### to right align the input + +
+ Flexible space to right align the input + +
Flexible space takes 50% of the container width
+
+ +```typescript { - id: "my-panel", - title: "My Panel", - onClickClose: () => felt.deletePanel("my-panel"), + type: "Grid", + grid: "auto-flow / 1fr 1fr", + items: [ + { type: "FlexibleSpace" }, + { type: "TextInput", label: "An input" , value: "" }, + ], } +``` + +### two columns of buttons with space between them + +
+ Two groups of buttons + +
Two groups of buttons
+
-@example -### form ```typescript { - title: "My Panel", - body: [ - { type: "Text", text: "Introduce your name and last name" }, - { type: "TextInput", label: "Name", value: "", placeholder: "John", onChange: (value) => setName(value) }, - { type: "TextInput", label: "Last name", value: "", placeholder: "Doe", onChange: (value) => setLastName(value) }, - ], - footer: [ - { - type: "Grid", - grid: "auto-flow / 1fr auto auto", - items: [ - { type: "FlexibleSpace" }, // this will make the buttons to be aligned to the end of the panel - { type: "Button", label: "Reset", onClick: () => alert("Reset") }, - { type: "Button", label: "Save", onClick: () => alert("Save") }, - ], - }, + type: "Grid", + grid: "auto-flow / auto auto 1fr auto auto", + items: [ + { type: "Button", label: "A" , onClick: () => {} }, + { type: "Button", label: "B" , onClick: () => {} }, + { type: "FlexibleSpace" }, + { type: "Button", label: "C" , onClick: () => {} }, + { type: "Button", label: "D" , onClick: () => {} }, ], } -```` +``` + +### Properties + +#### type + +> **type**: `"Grid"` + +#### items + +> **items**: ([`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonRowElement`](client.md#uibuttonrowelement) | [`UICheckboxGroupElement`](client.md#uicheckboxgroupelement) | [`UIRadioGroupElement`](client.md#uiradiogroupelement) | [`UIToggleGroupElement`](client.md#uitogglegroupelement))\[] + +The items to add to the grid container. + +#### id + +> **id**: `string` + +The ID of the element. + +#### grid? + +> `optional` **grid**: `string` + +The grid to use for the container. +It is the exact same as CSS's shorthand property `grid`. + +##### Example + +### horizontal stack + +two columns, the first column is 50px wide, the second column takes the remaining space + +```typescript +{ + type: "Grid", + grid: "auto-flow / 50px 1fr", + items: [...] +} +``` + +##### See + +[https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. + +#### verticalAlignment? + +> `optional` **verticalAlignment**: `"center"` | `"top"` | `"bottom"` + +The alignment of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"top"` + +#### horizontalDistribution? + +> `optional` **horizontalDistribution**: `"center"` | `"start"` | `"end"` | `"space-between"` | `"space-around"` | `"space-evenly"` + +The distribution of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"start"` + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +## UIGridContainerElementCreate + +The parameters for creating a grid container element. + +See [UIGridContainerElement](client.md#uigridcontainerelement) for more details. + +### Properties + +#### type + +> **type**: `"Grid"` + +#### items + +> **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate) | [`UICheckboxGroupElementCreate`](client.md#uicheckboxgroupelementcreate) | [`UIRadioGroupElementCreate`](client.md#uiradiogroupelementcreate) | [`UIToggleGroupElementCreate`](client.md#uitogglegroupelementcreate))\[] + +The items to add to the grid container. + +#### grid? + +> `optional` **grid**: `string` + +The grid to use for the container. +It is the exact same as CSS's shorthand property `grid`. + +##### Example + +### horizontal stack + +two columns, the first column is 50px wide, the second column takes the remaining space + +```typescript +{ + type: "Grid", + grid: "auto-flow / 50px 1fr", + items: [...] +} +``` + +##### See + +[https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. + +#### verticalAlignment? + +> `optional` **verticalAlignment**: `"center"` | `"top"` | `"bottom"` + +The alignment of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"top"` + +#### horizontalDistribution? + +> `optional` **horizontalDistribution**: `"center"` | `"start"` | `"end"` | `"space-between"` | `"space-around"` | `"space-evenly"` + +The distribution of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"start"` + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +The ID of the element. + +##### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +##### Default Value + +`undefined` + +## UIGridContainerElementUpdate + +The parameters for updating a grid container element. + +See [UIGridContainerElement](client.md#uigridcontainerelement) for more details. + +### Remarks + +`id` and `type` are required to identify the element to update. + +### Properties + +#### type + +> **type**: `"Grid"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### grid? + +> `optional` **grid**: `string` + +The grid to use for the container. +It is the exact same as CSS's shorthand property `grid`. + +##### Example + +### horizontal stack + +two columns, the first column is 50px wide, the second column takes the remaining space + +```typescript +{ + type: "Grid", + grid: "auto-flow / 50px 1fr", + items: [...] +} +``` + +##### See + +[https://developer.mozilla.org/en-US/docs/Web/CSS/grid](https://developer.mozilla.org/en-US/docs/Web/CSS/grid) for more details. + +#### verticalAlignment? + +> `optional` **verticalAlignment**: `"center"` | `"top"` | `"bottom"` + +The alignment of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"top"` + +#### horizontalDistribution? + +> `optional` **horizontalDistribution**: `"center"` | `"start"` | `"end"` | `"space-between"` | `"space-around"` | `"space-evenly"` + +The distribution of the items in the grid. +Only takes effect on horizontal stacks. + +##### Default Value + +`"start"` + +#### items? + +> `optional` **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate) | [`UICheckboxGroupElementCreate`](client.md#uicheckboxgroupelementcreate) | [`UIRadioGroupElementCreate`](client.md#uiradiogroupelementcreate) | [`UIToggleGroupElementCreate`](client.md#uitogglegroupelementcreate))\[] + +The items to add to the grid container. + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +## UIPanel + +Represents a panel in the UI. +It can be added to the map by using the [UiController.createOrUpdatePanel](client.md#createorupdatepanel) method. + +A panel is a container for other UI elements. +It can have a title, a body, a footer as well as a close button. + +The body and footer are arrays of UI elements and turn into vertical stacks of elements. + +The close button is a button rendered in the top right corner of the panel that can be +used to close the panel and is only visible if `onClickClose` is provided. +Usually, you want to call [UiController.deletePanel](client.md#deletepanel) when the close button is clicked, +e.g. `onClickClose: () => felt.deletePanel("my-panel")`. + +### Body + +Body is the main content of the panel. It is scrollable which means +that it can contain a lot of elements. + +### Footer + +Footer is sticky to the bottom of the panel, and can be used to add actions to the panel (e.g. save, cancel, etc.). + +### Examples + +### basic + +```typescript +{ + title: "My Panel", + body: [ + { type: "Text", text: "Hello" }, + ], +} +``` + +### closable + +````typescript +{ + id: "my-panel", + title: "My Panel", + onClickClose: () => felt.deletePanel("my-panel"), +} + +@example +### form +```typescript +{ + title: "My Panel", + body: [ + { type: "Text", text: "Introduce your name and last name" }, + { type: "TextInput", label: "Name", value: "", placeholder: "John", onChange: (value) => setName(value) }, + { type: "TextInput", label: "Last name", value: "", placeholder: "Doe", onChange: (value) => setLastName(value) }, + ], + footer: [ + { + type: "Grid", + grid: "auto-flow / 1fr auto auto", + items: [ + { type: "FlexibleSpace" }, // this will make the buttons to be aligned to the end of the panel + { type: "Button", label: "Reset", onClick: () => alert("Reset") }, + { type: "Button", label: "Save", onClick: () => alert("Save") }, + ], + }, + ], +} +```` + +### Properties + +#### type + +> **type**: `"Panel"` + +#### id + +> **id**: `string` + +The ID of the panel obtained from [UiController.createPanelId](client.md#createpanelid). + +##### Remarks + +Custom IDs are not supported. + +#### title? + +> `optional` **title**: `string` + +The title to display in the panel header. + +#### body? + +> `optional` **body**: [`UIPanelElement`](client.md#uipanelelement)\[] + +The elements to add to the panel body. + +#### footer? + +> `optional` **footer**: [`UIPanelElement`](client.md#uipanelelement)\[] + +The elements to add to the panel footer. + +#### onClickClose()? + +> `optional` **onClickClose**: (`args`) => `void` + +A function to call when panel's close button is clicked. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the panel. + +##### Returns + +`void` + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +## UIPanelCreateOrUpdate + +The parameters for creating a panel by using [UiController.createOrUpdatePanel](client.md#createorupdatepanel). + +### See + +[UIPanel](client.md#uipanel) for more information about panels. + +### Properties + +#### id + +> **id**: `string` + +The ID of the panel obtained from [UiController.createPanelId](client.md#createpanelid). + +##### Remarks + +Custom IDs are not supported. + +#### title? + +> `optional` **title**: `string` + +The title to display in the panel header. + +#### onClickClose()? + +> `optional` **onClickClose**: (`args`) => `void` + +A function to call when panel's close button is clicked. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the panel. + +##### Returns + +`void` + +#### type? + +> `optional` **type**: `"Panel"` + +#### body? + +> `optional` **body**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] + +The elements to add to the panel body. + +#### footer? + +> `optional` **footer**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] + +The elements to add to the panel footer. + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +## UIRadioGroupElement + +The parameters for creating a radio group element. + +The radio group is a control that allows the user to select a single value from a list of options. + +As a control, the radio group can have a label displayed above the radioes. + +If no value is provided, `value` is `undefined`, the radio group will be empty. + +
+ Radio group basic + +
+ A radio buttons group with a label +
+
+ +```typescript +{ + type: "RadioGroup", + label: "Select a side", + options: [ + { label: "🍟", value: "fries" }, + { label: "🍚", value: "rice" }, + { label: "🥗", value: "salad" }, + ], + value: "rice", + onChange: ({ value, id }) => { } +} +``` + +### Properties + +#### type + +> **type**: `"RadioGroup"` + +#### options + +> **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] + +The options to display in the radio group. + +#### onChange() + +> **onChange**: (`args`) => `void` + +The function to call when the value of the radio group changes. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### value + +`undefined` | `string` + +The selected value. + +##### id + +`string` + +The id of the radio group element. + +##### Returns + +`void` + +#### id + +> **id**: `string` + +The ID of the element. + +#### value? + +> `optional` **value**: `string` = `valueSchema` + +The value of the radio group. + +##### Default Value + +`undefined` + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## UIRadioGroupElementCreate + +The parameters for creating a radio group element. + +See [UIRadioGroupElement](client.md#uiradiogroupelement) for more details. + +### Properties + +#### type + +> **type**: `"RadioGroup"` + +#### options + +> **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] + +The options to display in the radio group. + +#### onChange() + +> **onChange**: (`args`) => `void` + +The function to call when the value of the radio group changes. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### value + +`undefined` | `string` + +The selected value. + +##### id + +`string` + +The id of the radio group element. + +##### Returns + +`void` + +#### value? + +> `optional` **value**: `string` = `valueSchema` + +The value of the radio group. + +##### Default Value + +`undefined` + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +The ID of the element. + +##### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +##### Default Value + +`undefined` + +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## UIRadioGroupElementUpdate + +The parameters for updating a radio group element. + +See [UIRadioGroupElement](client.md#uiradiogroupelement) for more details. + +### Properties + +#### type + +> **type**: `"RadioGroup"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### value? + +> `optional` **value**: `string` = `valueSchema` + +The value of the radio group. + +##### Default Value + +`undefined` + +#### options? + +> `optional` **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] + +The options to display in the radio group. + +#### onChange()? + +> `optional` **onChange**: (`args`) => `void` + +The function to call when the value of the radio group changes. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### value + +`undefined` | `string` + +The selected value. + +##### id + +`string` + +The id of the radio group element. + +##### Returns + +`void` + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## UISelectElement + +Represents a select element in a panel. + +### Remarks + +`options` property is required. +`label` property is displayed above the select and used for screen readers. +`value` property is optional, for empty value use `undefined`. +`placeholder` property is displayed in the select when no value is selected. +`search` property is used to enable searching through the options. +`onChange` property is used to handle the value change event. + +### Examples + +### empty select + +```typescript +{ + type: "Select", + options: [{ label: "Option 1", value: "option1" }, { label: "Option 2", value: "option2" }], + value: undefined, + placeholder: "Select an option", + onChange: (args) => console.log(args.value), +} +``` + +### with label + +`label` is displayed above the select and used for screen readers. +`placeholder` is displayed in the select when no value is selected. + +```typescript +{ + type: "Select", + label: "Fruit", + options: [{ label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }], + value: undefined, + placeholder: "Select a fruit", + onChange: (args) => console.log(args.value), +} +``` + +### with search + +```typescript +{ + type: "Select", + options: [{ label: "Option 1", value: "option1" }, { label: "Option 2", value: "option2" }], + value: "option1", + placeholder: "Select an option", + search: true, + onChange: (args) => console.log(args.value), +} +``` ### Properties #### type -> **type**: `"Panel"` +> **type**: `"Select"` -#### id +#### options -> **id**: `string` +> **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] -The ID of the panel obtained from [UiController.createPanelId](client.md#createpanelid). +The options to display in the select. -##### Remarks +#### onChange() -Custom IDs are not supported. +> **onChange**: (`args`) => `void` -#### title? +The function to call when the value of the select changes. -> `optional` **title**: `string` +##### Parameters -The title to display in the panel header. +##### args -#### body? +The arguments passed to the function. -> `optional` **body**: [`UIPanelElement`](client.md#uipanelelement)\[] +##### value -The elements to add to the panel body. +`string` -#### footer? +The value of the select. -> `optional` **footer**: [`UIPanelElement`](client.md#uipanelelement)\[] +##### id -The elements to add to the panel footer. +`string` -#### onClickClose()? +The id of the select element. -> `optional` **onClickClose**: (`args`) => `void` +##### Returns -A function to call when panel's close button is clicked. +`void` -##### Parameters +#### id -##### args +> **id**: `string` -The arguments passed to the function. +The ID of the element. -##### id +#### value? -`string` +> `optional` **value**: `string` -The id of the panel. +The value of the select. -##### Returns +#### placeholder? -`void` +> `optional` **placeholder**: `string` + +The placeholder text to display in the select. + +#### search? + +> `optional` **search**: `boolean` + +Whether the select should allow searching through the options. + +##### Default Value + +`false` #### onCreate()? @@ -12353,37 +13376,39 @@ The id of the element. `void` -## UIPanelCreateOrUpdate +#### label? -The parameters for creating a panel by using [UiController.createOrUpdatePanel](client.md#createorupdatepanel). +> `optional` **label**: `string` -### See +Label text to display above the element and used for screen readers. -[UIPanel](client.md#uipanel) for more information about panels. +## UISelectElementCreate -### Properties +The parameters for creating a select element. -#### id +See [UISelectElement](client.md#uiselectelement) for more details. -> **id**: `string` +### Remarks -The ID of the panel obtained from [UiController.createPanelId](client.md#createpanelid). +`id` is optional but recommended if you want to be able to perform updates. -##### Remarks +### Properties -Custom IDs are not supported. +#### type -#### title? +> **type**: `"Select"` -> `optional` **title**: `string` +#### options -The title to display in the panel header. +> **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] -#### onClickClose()? +The options to display in the select. -> `optional` **onClickClose**: (`args`) => `void` +#### onChange() -A function to call when panel's close button is clicked. +> **onChange**: (`args`) => `void` + +The function to call when the value of the select changes. ##### Parameters @@ -12391,31 +13416,43 @@ A function to call when panel's close button is clicked. The arguments passed to the function. +##### value + +`string` + +The value of the select. + ##### id `string` -The id of the panel. +The id of the select element. ##### Returns `void` -#### type? +#### value? -> `optional` **type**: `"Panel"` +> `optional` **value**: `string` -#### body? +The value of the select. -> `optional` **body**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] +#### placeholder? -The elements to add to the panel body. +> `optional` **placeholder**: `string` -#### footer? +The placeholder text to display in the select. -> `optional` **footer**: [`UIPanelElementCreate`](client.md#uipanelelementcreate)\[] +#### search? -The elements to add to the panel footer. +> `optional` **search**: `boolean` + +Whether the select should allow searching through the options. + +##### Default Value + +`false` #### onCreate()? @@ -12461,137 +13498,106 @@ The id of the element. `void` -## UISelectElement +#### id? -Represents a select element in a panel. +> `optional` **id**: `string` -### Remarks +The ID of the element. -`options` property is required. -`label` property is displayed above the select and used for screen readers. -`value` property is optional, for empty value use `undefined`. -`placeholder` property is displayed in the select when no value is selected. -`search` property is used to enable searching through the options. -`onChange` property is used to handle the value change event. +##### Remarks -### Examples +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. -### empty select +If provided, it must be unique within the UI. -```typescript -{ - type: "Select", - options: [{ label: "Option 1", value: "option1" }, { label: "Option 2", value: "option2" }], - value: undefined, - placeholder: "Select an option", - onChange: (args) => console.log(args.value), -} -``` +##### Default Value -### with label +`undefined` -`label` is displayed above the select and used for screen readers. -`placeholder` is displayed in the select when no value is selected. +#### label? -```typescript -{ - type: "Select", - label: "Fruit", - options: [{ label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }], - value: undefined, - placeholder: "Select a fruit", - onChange: (args) => console.log(args.value), -} -``` +> `optional` **label**: `string` -### with search +Label text to display above the element and used for screen readers. -```typescript -{ - type: "Select", - options: [{ label: "Option 1", value: "option1" }, { label: "Option 2", value: "option2" }], - value: "option1", - placeholder: "Select an option", - search: true, - onChange: (args) => console.log(args.value), -} -``` +## UISelectElementUpdate -### Properties +The parameters for updating a select element. -#### type +See [UISelectElement](client.md#uiselectelement) for more details. -> **type**: `"Select"` +### Remarks -#### options +`id` and `type` are required to identify the element to update. -> **options**: `object`\[] +### Properties -The options to display in the select. +#### type -##### label +> **type**: `"Select"` -> **label**: `string` +#### id -##### value +> **id**: `string` -> **value**: `string` +The ID of the element. -#### onChange() +#### value? -> **onChange**: (`args`) => `void` +> `optional` **value**: `string` -The function to call when the value of the select changes. +The value of the select. -##### Parameters +#### placeholder? -##### args +> `optional` **placeholder**: `string` -The arguments passed to the function. +The placeholder text to display in the select. -##### value +#### search? -`string` +> `optional` **search**: `boolean` -The value of the select. +Whether the select should allow searching through the options. -##### id +##### Default Value -`string` +`false` -The id of the select element. +#### options? -##### Returns +> `optional` **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] -`void` +The options to display in the select. -#### id +#### onChange()? -> **id**: `string` +> `optional` **onChange**: (`args`) => `void` -The ID of the element. +The function to call when the value of the select changes. -#### value? +##### Parameters -> `optional` **value**: `string` +##### args -The value of the select. +The arguments passed to the function. -#### placeholder? +##### value -> `optional` **placeholder**: `string` +`string` -The placeholder text to display in the select. +The value of the select. -#### search? +##### id -> `optional` **search**: `boolean` +`string` -Whether the select should allow searching through the options. +The id of the select element. -##### Default Value +##### Returns -`false` +`void` #### onCreate()? @@ -12643,41 +13649,94 @@ The id of the element. Label text to display above the element and used for screen readers. -## UISelectElementCreate +## UITextElement -The parameters for creating a select element. +Represents a text element in a panel. +Markdown is supported. -See [UISelectElement](client.md#uiselectelement) for more details. +### Examples -### Remarks +### simple -`id` is optional but recommended if you want to be able to perform updates. +```typescript +{ + type: "Text", + content: "Hello, world!", +} +``` + +### with links + +```typescript +{ + type: "Text", + content: "Fill the form https://www.google.com.", +} +``` + +### markdown + +```typescript +{ + type: "Text", + content: "**Hello**, _world_!", +} +``` + +### complex markdown + +Complex markdown syntax is supported like tables, images, quotes, etc. + +```typescript +{ + type: "Text", + content: ` + +# Heading + +This is a paragraph. + +## Subheading + +This is a paragraph. + +| Name | Age | +| ---- | --- | +| John | 25 | +| Jane | 30 | + +![Image](https://via.placeholder.com/150) + +> This is a quote. + +[Link](https://www.google.com) +`, +} +``` ### Properties #### type -> **type**: `"Select"` - -#### options +> **type**: `"Text"` -> **options**: `object`\[] +#### content -The options to display in the select. +> **content**: `string` -##### label +The text to display in the element. -> **label**: `string` +#### id -##### value +> **id**: `string` -> **value**: `string` +The ID of the element. -#### onChange() +#### onCreate()? -> **onChange**: (`args`) => `void` +> `optional` **onCreate**: (`args`) => `void` -The function to call when the value of the select changes. +A function to call when the element is created. ##### Parameters @@ -12685,43 +13744,59 @@ The function to call when the value of the select changes. The arguments passed to the function. -##### value +##### id `string` -The value of the select. +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. ##### id `string` -The id of the select element. +The id of the element. ##### Returns `void` -#### value? +## UITextElementCreate -> `optional` **value**: `string` +The parameters for creating a text element. -The value of the select. +See [UITextElement](client.md#uitextelement) for more details. -#### placeholder? +### Remarks -> `optional` **placeholder**: `string` +`id` is optional but recommended if you want to be able to perform updates. -The placeholder text to display in the select. +### Properties -#### search? +#### type -> `optional` **search**: `boolean` +> **type**: `"Text"` -Whether the select should allow searching through the options. +#### content -##### Default Value +> **content**: `string` -`false` +The text to display in the element. #### onCreate()? @@ -12784,17 +13859,11 @@ If provided, it must be unique within the UI. `undefined` -#### label? - -> `optional` **label**: `string` - -Label text to display above the element and used for screen readers. - -## UISelectElementUpdate +## UITextElementUpdate -The parameters for updating a select element. +The parameters for updating a text element. -See [UISelectElement](client.md#uiselectelement) for more details. +See [UITextElement](client.md#uitextelement) for more details. ### Remarks @@ -12804,7 +13873,7 @@ See [UISelectElement](client.md#uiselectelement) for more details. #### type -> **type**: `"Select"` +> **type**: `"Text"` #### id @@ -12812,47 +13881,39 @@ See [UISelectElement](client.md#uiselectelement) for more details. The ID of the element. -#### options? - -> `optional` **options**: `object`\[] - -The options to display in the select. - -##### label - -> **label**: `string` +#### content? -##### value +> `optional` **content**: `string` -> **value**: `string` +The text to display in the element. -#### value? +#### onCreate()? -> `optional` **value**: `string` +> `optional` **onCreate**: (`args`) => `void` -The value of the select. +A function to call when the element is created. -#### placeholder? +##### Parameters -> `optional` **placeholder**: `string` +##### args -The placeholder text to display in the select. +The arguments passed to the function. -#### search? +##### id -> `optional` **search**: `boolean` +`string` -Whether the select should allow searching through the options. +The id of the element. -##### Default Value +##### Returns -`false` +`void` -#### onChange()? +#### onDestroy()? -> `optional` **onChange**: (`args`) => `void` +> `optional` **onDestroy**: (`args`) => `void` -The function to call when the value of the select changes. +A function to call when the element is destroyed. ##### Parameters @@ -12860,49 +13921,79 @@ The function to call when the value of the select changes. The arguments passed to the function. -##### value - -`string` - -The value of the select. - ##### id `string` -The id of the select element. +The id of the element. ##### Returns `void` -#### onCreate()? +## UITextInputElement -> `optional` **onCreate**: (`args`) => `void` +Represents a text input element in a panel. -A function to call when the element is created. +### Remarks -##### Parameters +`value` property is required, for empty value use `""`. +`label` property is displayed above the input and used for screen readers. -##### args +### Examples -The arguments passed to the function. +### empty input -##### id +```typescript +{ + type: "TextInput", + value: "", + onChange: (args) => console.log(args.value), + placeholder: "Enter your name", +} +``` + +### with label + +```typescript +{ + type: "TextInput", + label: "Name", + value: "Hello", + onChange: (args) => console.log(args.value), + placeholder: "Enter your name", +} +``` + +### Properties + +#### type + +> **type**: `"TextInput"` + +#### value + +> **value**: `string` + +The value of the input. Use `""` for empty values. + +#### id + +> **id**: `string` -`string` +The ID of the element. -The id of the element. +#### placeholder? -##### Returns +> `optional` **placeholder**: `string` -`void` +The placeholder text to display in the input. -#### onDestroy()? +#### onChange()? -> `optional` **onDestroy**: (`args`) => `void` +> `optional` **onChange**: (`args`) => `void` -A function to call when the element is destroyed. +The function to call when the value of the input changes. ##### Parameters @@ -12910,104 +14001,77 @@ A function to call when the element is destroyed. The arguments passed to the function. -##### id +##### value `string` -The id of the element. - -##### Returns +The value of the input. -`void` +##### id -#### label? +`string` -> `optional` **label**: `string` +The id of the input element. -Label text to display above the element and used for screen readers. +##### Returns -## UITextElement +`void` -Represents a text element in a panel. -Markdown is supported. +#### onBlur()? -### Examples +> `optional` **onBlur**: (`args`) => `void` -### simple +The function to call when the input is blurred. -```typescript -{ - type: "Text", - content: "Hello, world!", -} -``` +##### Parameters -### with links +##### args -```typescript -{ - type: "Text", - content: "Fill the form https://www.google.com.", -} -``` +The arguments passed to the function. -### markdown +##### value -```typescript -{ - type: "Text", - content: "**Hello**, _world_!", -} -``` +`string` -### complex markdown +The value of the input. -Complex markdown syntax is supported like tables, images, quotes, etc. +##### id -```typescript -{ - type: "Text", - content: ` +`string` -# Heading +The id of the input element. -This is a paragraph. +##### Returns -## Subheading +`void` -This is a paragraph. +#### onFocus()? -| Name | Age | -| ---- | --- | -| John | 25 | -| Jane | 30 | +> `optional` **onFocus**: (`args`) => `void` -![Image](https://via.placeholder.com/150) +The function to call when the input is focused. -> This is a quote. +##### Parameters -[Link](https://www.google.com) -`, -} -``` +##### args -### Properties +The arguments passed to the function. -#### type +##### value -> **type**: `"Text"` +`string` -#### content +The value of the input. -> **content**: `string` +##### id -The text to display in the element. +`string` -#### id +The id of the input element. -> **id**: `string` +##### Returns -The ID of the element. +`void` #### onCreate()? @@ -13053,11 +14117,17 @@ The id of the element. `void` -## UITextElementCreate +#### label? -The parameters for creating a text element. +> `optional` **label**: `string` -See [UITextElement](client.md#uitextelement) for more details. +Label text to display above the element and used for screen readers. + +## UITextInputElementCreate + +The parameters for creating a text input element. + +See [UITextInputElement](client.md#uitextinputelement) for more details. ### Remarks @@ -13067,19 +14137,25 @@ See [UITextElement](client.md#uitextelement) for more details. #### type -> **type**: `"Text"` +> **type**: `"TextInput"` -#### content +#### value -> **content**: `string` +> **value**: `string` -The text to display in the element. +The value of the input. Use `""` for empty values. -#### onCreate()? +#### placeholder? -> `optional` **onCreate**: (`args`) => `void` +> `optional` **placeholder**: `string` -A function to call when the element is created. +The placeholder text to display in the input. + +#### onChange()? + +> `optional` **onChange**: (`args`) => `void` + +The function to call when the value of the input changes. ##### Parameters @@ -13087,21 +14163,27 @@ A function to call when the element is created. The arguments passed to the function. +##### value + +`string` + +The value of the input. + ##### id `string` -The id of the element. +The id of the input element. ##### Returns `void` -#### onDestroy()? +#### onBlur()? -> `optional` **onDestroy**: (`args`) => `void` +> `optional` **onBlur**: (`args`) => `void` -A function to call when the element is destroyed. +The function to call when the input is blurred. ##### Parameters @@ -13109,60 +14191,49 @@ A function to call when the element is destroyed. The arguments passed to the function. -##### id +##### value `string` -The id of the element. - -##### Returns - -`void` - -#### id? - -> `optional` **id**: `string` - -The ID of the element. +The value of the input. -##### Remarks +##### id -If not provided, the element will be assigned a random ID, but it is recommended to provide it -to perform further updates on the element. +`string` -If provided, it must be unique within the UI. +The id of the input element. -##### Default Value +##### Returns -`undefined` +`void` -## UITextElementUpdate +#### onFocus()? -The parameters for updating a text element. +> `optional` **onFocus**: (`args`) => `void` -See [UITextElement](client.md#uitextelement) for more details. +The function to call when the input is focused. -### Remarks +##### Parameters -`id` and `type` are required to identify the element to update. +##### args -### Properties +The arguments passed to the function. -#### type +##### value -> **type**: `"Text"` +`string` -#### id +The value of the input. -> **id**: `string` +##### id -The ID of the element. +`string` -#### content? +The id of the input element. -> `optional` **content**: `string` +##### Returns -The text to display in the element. +`void` #### onCreate()? @@ -13208,39 +14279,38 @@ The id of the element. `void` -## UITextInputElement +#### id? -Represents a text input element in a panel. +> `optional` **id**: `string` -### Remarks +The ID of the element. -`value` property is required, for empty value use `""`. -`label` property is displayed above the input and used for screen readers. +##### Remarks -### Examples +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. -### empty input +If provided, it must be unique within the UI. -```typescript -{ - type: "TextInput", - value: "", - onChange: (args) => console.log(args.value), - placeholder: "Enter your name", -} -``` +##### Default Value -### with label +`undefined` -```typescript -{ - type: "TextInput", - label: "Name", - value: "Hello", - onChange: (args) => console.log(args.value), - placeholder: "Enter your name", -} -``` +#### label? + +> `optional` **label**: `string` + +Label text to display above the element and used for screen readers. + +## UITextInputElementUpdate + +The parameters for updating a text input element. + +See [UITextInputElement](client.md#uitextinputelement) for more details. + +### Remarks + +`id` and `type` are required to identify the element to update. ### Properties @@ -13248,18 +14318,18 @@ Represents a text input element in a panel. > **type**: `"TextInput"` -#### value - -> **value**: `string` - -The value of the input. Use `""` for empty values. - #### id > **id**: `string` The ID of the element. +#### value? + +> `optional` **value**: `string` + +The value of the input. Use `""` for empty values. + #### placeholder? > `optional` **placeholder**: `string` @@ -13400,39 +14470,105 @@ The id of the element. Label text to display above the element and used for screen readers. -## UITextInputElementCreate +## UIToggleGroupElement -The parameters for creating a text input element. +The parameters for creating a toggle group element. -See [UITextInputElement](client.md#uitextinputelement) for more details. +## Options -### Remarks +The options to display in the toggle group are defined using the `options` property. +It can contain one or more options and each option renders a toggle. -`id` is optional but recommended if you want to be able to perform updates. +
+ Toggle group basic + +
+ A group with a single option +
+
+ +```typescript +{ + type: "ToggleGroup", + options: [{ label: "Option A", value: "optionA" }], + value: [], + onChange: ({ value, id }) => { } +} +``` + +## Alignment + +By default, the toggles are aligned to the start of the group, +but it can be changed to `end` by setting the `alignment` property to `end`. + +
+ Toggle group end alignment + +
+ The toggles are aligned to the end +
+
+ +```typescript +{ + type: "ToggleGroup", + alignment: "end", + label: "All options", + options: [ + { label: "Option A", value: "optionA" }, + { label: "Option B", value: "optionB" }, + ], + value: ["optionA"], + onChange: ({ value, id }) => { } +} +``` + +## Label + +As a control, the toggle group can have a label displayed above the toggles. + +Toggle group with label + +```typescript +{ + type: "ToggleGroup", + label: "All options", + options: [ + { label: "Option A", value: "optionA" }, + { label: "Option B", value: "optionB" }, + ], + value: ["optionA"], + onChange: ({ value, id }) => { } +} +``` ### Properties #### type -> **type**: `"TextInput"` +> **type**: `"ToggleGroup"` #### value -> **value**: `string` +> **value**: `string`\[] = `valueSchema` -The value of the input. Use `""` for empty values. +The value of the toggle group. -#### placeholder? +##### Default Value -> `optional` **placeholder**: `string` +`[]` -The placeholder text to display in the input. +#### options -#### onChange()? +> **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] -> `optional` **onChange**: (`args`) => `void` +The options to display in the toggle group. -The function to call when the value of the input changes. +#### onChange() + +> **onChange**: (`args`) => `void` + +The function to call when the value of the toggle group changes. ##### Parameters @@ -13442,25 +14578,41 @@ The arguments passed to the function. ##### value -`string` +`string`\[] -The value of the input. +Array of the selected values. ##### id `string` -The id of the input element. +The id of the toggle group element. ##### Returns `void` -#### onBlur()? +#### id -> `optional` **onBlur**: (`args`) => `void` +> **id**: `string` -The function to call when the input is blurred. +The ID of the element. + +#### alignment? + +> `optional` **alignment**: `"start"` | `"end"` + +The alignment of the toggle group. + +##### Default Value + +`"start"` + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. ##### Parameters @@ -13468,27 +14620,77 @@ The function to call when the input is blurred. The arguments passed to the function. -##### value +##### id `string` -The value of the input. +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. ##### id `string` -The id of the input element. +The id of the element. ##### Returns `void` -#### onFocus()? +#### label? -> `optional` **onFocus**: (`args`) => `void` +> `optional` **label**: `string` -The function to call when the input is focused. +Label text to display above the element and used for screen readers. + +## UIToggleGroupElementCreate + +The parameters for creating a toggle group element. + +See [UIToggleGroupElement](client.md#uitogglegroupelement) for more details. + +### Properties + +#### type + +> **type**: `"ToggleGroup"` + +#### value + +> **value**: `string`\[] = `valueSchema` + +The value of the toggle group. + +##### Default Value + +`[]` + +#### options + +> **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] + +The options to display in the toggle group. + +#### onChange() + +> **onChange**: (`args`) => `void` + +The function to call when the value of the toggle group changes. ##### Parameters @@ -13498,20 +14700,30 @@ The arguments passed to the function. ##### value -`string` +`string`\[] -The value of the input. +Array of the selected values. ##### id `string` -The id of the input element. +The id of the toggle group element. ##### Returns `void` +#### alignment? + +> `optional` **alignment**: `"start"` | `"end"` + +The alignment of the toggle group. + +##### Default Value + +`"start"` + #### onCreate()? > `optional` **onCreate**: (`args`) => `void` @@ -13579,21 +14791,17 @@ If provided, it must be unique within the UI. Label text to display above the element and used for screen readers. -## UITextInputElementUpdate - -The parameters for updating a text input element. - -See [UITextInputElement](client.md#uitextinputelement) for more details. +## UIToggleGroupElementUpdate -### Remarks +The parameters for updating a toggle group element. -`id` and `type` are required to identify the element to update. +See [UIToggleGroupElement](client.md#uitogglegroupelement) for more details. ### Properties #### type -> **type**: `"TextInput"` +> **type**: `"ToggleGroup"` #### id @@ -13601,51 +14809,37 @@ See [UITextInputElement](client.md#uitextinputelement) for more details. The ID of the element. -#### value? - -> `optional` **value**: `string` - -The value of the input. Use `""` for empty values. - -#### placeholder? - -> `optional` **placeholder**: `string` - -The placeholder text to display in the input. - -#### onChange()? - -> `optional` **onChange**: (`args`) => `void` +#### alignment? -The function to call when the value of the input changes. +> `optional` **alignment**: `"start"` | `"end"` -##### Parameters +The alignment of the toggle group. -##### args +##### Default Value -The arguments passed to the function. +`"start"` -##### value +#### value? -`string` +> `optional` **value**: `string`\[] = `valueSchema` -The value of the input. +The value of the toggle group. -##### id +##### Default Value -`string` +`[]` -The id of the input element. +#### options? -##### Returns +> `optional` **options**: [`UIControlElementOption`](client.md#uicontrolelementoption)\[] -`void` +The options to display in the toggle group. -#### onBlur()? +#### onChange()? -> `optional` **onBlur**: (`args`) => `void` +> `optional` **onChange**: (`args`) => `void` -The function to call when the input is blurred. +The function to call when the value of the toggle group changes. ##### Parameters @@ -13655,25 +14849,25 @@ The arguments passed to the function. ##### value -`string` +`string`\[] -The value of the input. +Array of the selected values. ##### id `string` -The id of the input element. +The id of the toggle group element. ##### Returns `void` -#### onFocus()? +#### onCreate()? -> `optional` **onFocus**: (`args`) => `void` +> `optional` **onCreate**: (`args`) => `void` -The function to call when the input is focused. +A function to call when the element is created. ##### Parameters @@ -13681,27 +14875,21 @@ The function to call when the input is focused. The arguments passed to the function. -##### value - -`string` - -The value of the input. - ##### id `string` -The id of the input element. +The id of the element. ##### Returns `void` -#### onCreate()? +#### onDestroy()? -> `optional` **onCreate**: (`args`) => `void` +> `optional` **onDestroy**: (`args`) => `void` -A function to call when the element is created. +A function to call when the element is destroyed. ##### Parameters @@ -13719,33 +14907,51 @@ The id of the element. `void` -#### onDestroy()? +#### label? -> `optional` **onDestroy**: (`args`) => `void` +> `optional` **label**: `string` -A function to call when the element is destroyed. +Label text to display above the element and used for screen readers. -##### Parameters +## UIControlElementOption -##### args +An option to display in a control element. -The arguments passed to the function. +Control elements are elements that allow the user to select one or more values from a list of options. +This includes: -##### id +* [UIRadioGroupElement](client.md#uiradiogroupelement) +* [UICheckboxGroupElement](client.md#uicheckboxgroupelement) +* [UIToggleGroupElement](client.md#uitogglegroupelement) +* [UISelectElement](client.md#uiselectelement) -`string` +The option can be disabled by setting the `disabled` property to `true`. -The id of the element. +### Examples -##### Returns +```typescript +{ label: "Option A", value: "optionA" } +``` -`void` +A disabled option -#### label? +```typescript +{ label: "Option A", value: "optionA", disabled: true } +``` -> `optional` **label**: `string` +### Properties -Label text to display above the element and used for screen readers. +#### label + +> **label**: `string` + +#### value + +> **value**: `string` + +#### disabled? + +> `optional` **disabled**: `boolean` ## ViewportCenterZoom @@ -14275,11 +15481,11 @@ In both cases, the default value is `{ at: "end" }`. ## UIPanelElement -> **UIPanelElement**: [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonRowElement`](client.md#uibuttonrowelement) | [`UIGridContainerElement`](client.md#uigridcontainerelement) +> **UIPanelElement**: [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonRowElement`](client.md#uibuttonrowelement) | [`UICheckboxGroupElement`](client.md#uicheckboxgroupelement) | [`UIRadioGroupElement`](client.md#uiradiogroupelement) | [`UIToggleGroupElement`](client.md#uitogglegroupelement) | [`UIGridContainerElement`](client.md#uigridcontainerelement) ## UIPanelElementCreate -> **UIPanelElementCreate**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate) | [`UIGridContainerElementCreate`](client.md#uigridcontainerelementcreate) +> **UIPanelElementCreate**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate) | [`UICheckboxGroupElementCreate`](client.md#uicheckboxgroupelementcreate) | [`UIRadioGroupElementCreate`](client.md#uiradiogroupelementcreate) | [`UIToggleGroupElementCreate`](client.md#uitogglegroupelementcreate) | [`UIGridContainerElementCreate`](client.md#uigridcontainerelementcreate) This is a union of all the possible elements that can be created inside panel's body or footer. @@ -14289,7 +15495,7 @@ For the sake of convenience, `id` is optional but recommended if you want to be ## UIPanelElementUpdate -> **UIPanelElementUpdate**: [`UIButtonElementUpdate`](client.md#uibuttonelementupdate) | [`UITextElementUpdate`](client.md#uitextelementupdate) | [`UITextInputElementUpdate`](client.md#uitextinputelementupdate) | [`UISelectElementUpdate`](client.md#uiselectelementupdate) | [`UIDividerElementUpdate`](client.md#uidividerelementupdate) | [`UIButtonRowElementUpdate`](client.md#uibuttonrowelementupdate) | [`UIGridContainerElementUpdate`](client.md#uigridcontainerelementupdate) | [`UIFlexibleSpaceElementUpdate`](client.md#uiflexiblespaceelementupdate) +> **UIPanelElementUpdate**: [`UIButtonElementUpdate`](client.md#uibuttonelementupdate) | [`UITextElementUpdate`](client.md#uitextelementupdate) | [`UITextInputElementUpdate`](client.md#uitextinputelementupdate) | [`UISelectElementUpdate`](client.md#uiselectelementupdate) | [`UIDividerElementUpdate`](client.md#uidividerelementupdate) | [`UIButtonRowElementUpdate`](client.md#uibuttonrowelementupdate) | [`UICheckboxGroupElementUpdate`](client.md#uicheckboxgroupelementupdate) | [`UIRadioGroupElementUpdate`](client.md#uiradiogroupelementupdate) | [`UIToggleGroupElementUpdate`](client.md#uitogglegroupelementupdate) | [`UIGridContainerElementUpdate`](client.md#uigridcontainerelementupdate) | [`UIFlexibleSpaceElementUpdate`](client.md#uiflexiblespaceelementupdate) This is a union of all the possible elements that can be updated inside panel's body or footer (excluding Divider and FlexibleSpace elements because they cannot be updated). From 6a118337b074aa07a136c8e2fc09c67c24b5cab8 Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Thu, 10 Jul 2025 12:08:02 -0400 Subject: [PATCH 26/30] v1.7 --- docs-minimal/CHANGELOG.md | 141 +---- docs-minimal/_media/iframe-basic.png | Bin 0 -> 63288 bytes docs-minimal/_media/iframe-custom-height.png | Bin 0 -> 105826 bytes docs-minimal/client.md | 541 ++++++++++++++----- 4 files changed, 431 insertions(+), 251 deletions(-) create mode 100644 docs-minimal/_media/iframe-basic.png create mode 100644 docs-minimal/_media/iframe-custom-height.png diff --git a/docs-minimal/CHANGELOG.md b/docs-minimal/CHANGELOG.md index af349131..168b4541 100644 --- a/docs-minimal/CHANGELOG.md +++ b/docs-minimal/CHANGELOG.md @@ -1,145 +1,42 @@ # @feltmaps/js-sdk -## 1.7.0-next.20 - -### Minor Changes - -* f2fcd2a: Add checkbox, radio and toggle controls to custom ui panel -* c16c55a: Support disabled on custom ui control option - -## 1.7.0-next.19 - -### Minor Changes - -* 2688f9c: Add UIButtonRowElement to custom ui panel - -## 1.7.0-next.18 +## 1.7.0 ### Minor Changes +* f40a75c: Update getPrecomputedAggregates types +* 4c4ebfd: Add UIIframeElement to custom ui panel +* b87393f: Better docs, types and method consistency for Custom Panels API +* aff926a: Return UIPanel on custom panel API methods +* f5ca219: Speed up initial Felt/SDK connection * 0b06e28: Add support for align and distribute items on grid container - -## 1.7.0-next.17 - -### Minor Changes - * bd1952f: Merge create and update panel methods and require using createPanelId - -## 1.7.0-next.16 - -### Minor Changes - -* f73dccf: Remove UIButtonGroupElement from custom ui panel - -## 1.7.0-next.15 - -### Minor Changes - * 27cc597: Add UIGridContainerElement to custom ui panel - -## 1.7.0-next.14 - -### Minor Changes - +* f2fcd2a: Add checkbox, radio and toggle controls to custom ui panel +* 15a35a5: Add method getPrecomputedAggregates +* 6ce4a76: Rename UIPanel onClose to onClickClose +* c16c55a: Support disabled on custom ui control option +* 2688f9c: Add UIButtonRowElement to custom ui panel +* 49d8895: Add Custom UI API for action triggers * 0754363: Add new variants, drop thin variants and add tint prop to UIButtonElement - -## 1.7.0-next.13 - -### Minor Changes - * 535e539: Include element id on every custom ui callback args - -### Patch Changes - -* 2fd720d: Use singular for custom ui types - -## 1.7.0-next.12 - -### Minor Changes - * b848937: Add tool setting to hide/show inspector - -## 1.7.0-next.11 - -### Minor Changes - -* 6ce4a76: Rename UIPanel onClose to onClickClose - -## 1.7.0-next.10 - -### Minor Changes - -* aff926a: Return UIPanel on custom panel API methods * 1e8e6f1: Return UIActionTrigger on custom action trigger API methods +* 2b0f08f: Add Custom UI API for panels +* f73dccf: Remove UIButtonGroupElement from custom ui panel ### Patch Changes +* 58bd6dd: Add isDeterministicId to LayerFeature +* 07b27c6: Export bundled controller types file for consumption as single file +* 41e1612: Update getAggregates examples to be correct * 475c98e: Update getAggregates + MultiAggregationConfig docs - -## 1.7.0-next.9 - -### Minor Changes - -* b87393f: Better docs, types and method consistency for Custom Panels API - -## 1.7.0-next.8 - -### Patch Changes - * ea5c7ff: Run patch on prepare, not install - -## 1.7.0-next.7 - -### Patch Changes - * 4c83cfe: Don't try to patch packages not in dev mode - -## 1.7.0-next.6 - -### Minor Changes - -* f5ca219: Speed up initial Felt/SDK connection - -### Patch Changes - -* 07b27c6: Export bundled controller types file for consumption as single file - -## 1.7.0-next.5 - -### Minor Changes - -* 49d8895: Add Custom UI API for action triggers - -## 1.7.0-next.4 - -### Patch Changes - +* 2008356: Documentation improvements +* 2fd720d: Use singular for custom ui types * a1c6322: Make custom panel API consistent with other methods -## 1.7.0-next.3 - -### Minor Changes - -* 2b0f08f: Add Custom UI API for panels - -## 1.7.0-next.2 - -### Patch Changes - -* 58bd6dd: Add isDeterministicId to LayerFeature - -## 1.7.0-next.1 - -### Minor Changes - -* f40a75c: Update getPrecomputedAggregates types - -## 1.7.0-next.0 - -### Minor Changes - -* 15a35a5: Add method getPrecomputedAggregates - ## 1.6.0 ### Minor Changes diff --git a/docs-minimal/_media/iframe-basic.png b/docs-minimal/_media/iframe-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..0e3fe0817901e6cbbe4b0bd9d8fb5e6946d713e6 GIT binary patch literal 63288 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
7cjBaY5h$7Q##N&0KvZEV`V6Ei+t*E46q@9rR`( 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 JC2bn~zW@s`-FyH5 literal 0 HcmV?d00001 diff --git a/docs-minimal/client.md b/docs-minimal/client.md index 6d3a2ba9..96251909 100644 --- a/docs-minimal/client.md +++ b/docs-minimal/client.md @@ -4212,7 +4212,7 @@ at which the user finishes, by pressing Escape for example. If the user is editing an existing element, this will be false. -For elements that are created programatically, this will be false. +For elements that are created programmatically, this will be false. ## ElementGroupChangeCallbackParams @@ -5205,7 +5205,7 @@ If the value is `null`, the GeoJSON will not be refreshed automatically. ## GeoJsonDataVectorSource A GeoJSON data source is a layer that is populated from GeoJSON data, such as -from a local file, or programatically-created data. +from a local file, or programmatically-created data. ### Properties @@ -6274,7 +6274,7 @@ const element = await felt.createElement({ type: "Place", coordinates: [10, 10] > **updateElement**(`element`): `Promise`\<[`Element`](client.md#element-1)> -Update an element on the map. +Update an element on the map. The element type must be specified. ##### Parameters @@ -6292,12 +6292,14 @@ Update an element on the map. // Update a place element's coordinates await felt.updateElement({ id: "element-1", + type: "Place", coordinates: [10, 20] }); // Update a polygon's style await felt.updateElement({ id: "element-2", + type: "Polygon", color: "#ABC123", fillOpacity: 0.5 }); @@ -6448,7 +6450,7 @@ The style to set for the layer. // first get the current style const oldStyle = (await felt.getLayer("layer-1")).style; -felt.setLayerStyle({ id: "layer-1", style: { +await felt.setLayerStyle({ id: "layer-1", style: { ...oldStyle, paint: { ...oldStyle.paint, @@ -6516,7 +6518,7 @@ const layerFromFile = await felt.createLayersFromGeoJson({ const layerFromUrl = await felt.createLayersFromGeoJson({ source: { - sourceType: "geoJsonUrl", + type: "geoJsonUrl", url: "https://example.com/parcels.geojson", }, name: "Parcels", @@ -7244,8 +7246,8 @@ Performs statistical calculations on your data, like counting features or comput averages, sums, etc. You can focus your calculation on specific areas or subsets of your data using boundaries and filters. -When no aggregation is specified, it counts features. When an aggregation is provided, -it performs that calculation (average, sum, etc.) on the specified attribute. +When you request an aggregation other than count, you must specify an attribute to +aggregate on. ##### Example @@ -7253,7 +7255,10 @@ it performs that calculation (average, sum, etc.) on the specified attribute. // Count all residential buildings const residentialCount = await felt.getAggregates({ layerId: "buildings", - filters: ["type", "eq", "residential"] + filters: ["type", "eq", "residential"], + aggregation: { + methods: ["count"], + } }); // Calculate average home value in a specific neighborhood @@ -7412,7 +7417,7 @@ felt.selectFeature({ > **clearSelection**(`params`?): `Promise`\<`void`> -Clears the current selection. This clears the selection of +Clears the current selection (elements, features or both) ##### Parameters @@ -7651,10 +7656,10 @@ The arguments for the method. ```typescript await felt.createActionTrigger({ actionTrigger: { - id: "layerTurnPurple", // not required but useful for further updates - label: "Turn layer purple", + id: "enablePolygonTool", // optional. Required if you want to update the action trigger later + label: "Draw polygon", onTrigger: async () => { - await felt.setLayerStyle("layer-1", { ..., paint: { color: "purple" } }); + felt.setTool("polygon"); }, disabled: false, // optional, defaults to false }, @@ -7690,8 +7695,8 @@ Properties provided will override the existing properties. ```typescript await felt.updateActionTrigger({ - id: "layerTurnPurple", - label: "Turn layer points purple", // only label changes + id: "enablePolygonTool", + label: "Enable polygon tool", // only label changes }); ``` @@ -7716,7 +7721,7 @@ The id of the action trigger to delete. ##### Example ```typescript -await felt.deleteActionTrigger("layerTurnPurple"); +await felt.deleteActionTrigger("enablePolygonTool"); ``` #### createPanelId() @@ -7743,28 +7748,32 @@ const panelId = await felt.createPanelId(); Creates or updates a panel. -Panels are rendered on map's right sidebar and are useful to extend Felt UI for your own use cases -(e.g. a form, a settings panel, etc.) using Felt UI elements (e.g. Text, Button, etc.). -This way it is possible to cover new use cases while keeping the user experience consistent with the rest of Felt. +Panels are rendered on the map's right sidebar and allow you to extend Felt UI +for your own use cases using Felt UI elements (e.g., Text, Button, etc.). + +A panel is identified by its ID, which must be created using [createPanelId](client.md#createpanelid). +Custom IDs are not supported to prevent conflicts with other panels. -A panel is identified by its ID and must come from [createPanelId](client.md#createpanelid). -Custom IDs are not supported in order to prevent conflicts with other panels. +Panels have two main sections: -Panels have two sections: +* `body` - The main content area of the panel, which is scrollable. +* `footer` - A section that sticks to the bottom of the panel, useful for + action buttons like "Submit" or "Cancel". -* `body` - Body of the panel, scrollable. -* `footer` - It sticks to the bottom of the panel, useful to add submit buttons. +Panel placement is controlled by the `initialPlacement` parameter. By default, +panels are added to the end of the panel stack, but you can specify a different +placement. Note that this placement cannot be changed after the panel is created. -Regarding panel placement, by default it is added to the end of the panels stack but you can -specify a different placement by using the `initialPlacement` parameter. -This placement cannot be updated later. +Element IDs are required for targeted updates and deletions using the other +panel management methods. For complete panel refreshes with this method, +element IDs are optional but recommended for consistency. -When adding a panel, its elements' ids are optional though it is recommended to make -it easier to update or delete them later. +For dynamic content management, consider these approaches: -Once created, you can add elements to the panel by using the [createPanelElements](client.md#createpanelelements) method, -perform partial updates of elements by using the [updatePanelElements](client.md#updatepanelelements) method or -delete elements by using the [deletePanelElements](client.md#deletepanelelements) method. +* Use this method for complete panel refreshes (replaces all content) +* Use [createPanelElements](client.md#createpanelelements) to add new elements to existing panels +* Use [updatePanelElements](client.md#updatepanelelements) to modify specific existing elements +* Use [deletePanelElements](client.md#deletepanelelements) to remove specific elements ##### Parameters @@ -7772,7 +7781,7 @@ delete elements by using the [deletePanelElements](client.md#deletepanelelements [`CreateOrUpdatePanelParams`](client.md#createorupdatepanelparams) -The arguments for the method. +The arguments for creating or updating the panel. ##### Returns @@ -7781,34 +7790,36 @@ The arguments for the method. ##### Example ```typescript -const id = await felt.createPanelId(); +// 1. Create panel ID first (required) +const panelId = await felt.createPanelId(); + +// 2. Define reusable elements +const SELECT = { id: "layer-select", type: "Select", label: "Layer", options: [...] }; +const ANALYZE_BTN = { id: "analyze-btn", type: "Button", label: "Analyze", onClick: handleAnalyze }; +const STATUS_TEXT = { id: "status-text", type: "Text", content: "" }; +const CLEAR_BTN = { id: "clear-btn", type: "Button", label: "Clear", onClick: handleClear }; + +// 3. Initial state +await felt.createOrUpdatePanel({ + panel: { id: panelId, title: "Data Analyzer", body: [SELECT, ANALYZE_BTN] } +}); +// 4. Loading state (replaces entire panel) await felt.createOrUpdatePanel({ - panel: { - id, - title: "My Panel", - body: [ - { - type: "Text", - content: "Hello, world!", - }, - { - type: "TextInput", - label: "Name", - placeholder: "Enter your name", - value: "", - onChange: ({ value }) => setName(value), - }, - ], - footer: [ - { - type: "Button", - label: "Submit", - onClick: () => submitForm(), - }, - ], - }, - initialPlacement: { at: "start" }, // when added, the panel will be added to the start of the stack + panel: { + id: panelId, + title: "Data Analyzer", + body: [SELECT, ANALYZE_BTN, { ...STATUS_TEXT, content: "Loading..." }] + } +}); + +// 5. Results state (replaces entire panel) +await felt.createOrUpdatePanel({ + panel: { + id: panelId, + title: "Data Analyzer", + body: [SELECT, ANALYZE_BTN, { ...STATUS_TEXT, content: "**Results:**\n- Found 150 features" }, CLEAR_BTN] + } }); ``` @@ -7873,7 +7884,8 @@ await felt.createPanelElements({ > **updatePanelElements**(`args`): `Promise`\<[`UIPanel`](client.md#uipanel)> -Updates an element in a panel. +Updates an existing element in a panel. This method can only update elements that +already exist in the panel and have an ID. ##### Parameters @@ -7890,14 +7902,26 @@ The arguments for the method. ##### Example ```typescript +// 1. Create panel with initial elements +const panelId = await felt.createPanelId(); +const STATUS_TEXT = { id: "status-text", type: "Text", content: "Ready" }; + +await felt.createOrUpdatePanel({ + panel: { + id: panelId, + title: "My Panel", + body: [STATUS_TEXT] + } +}); + +// 2. Update the existing element await felt.updatePanelElements({ panelId, elements: [ { element: { - id: "element-1", - type: "Text", - content: "Hello, world!", + ...STATUS_TEXT, // Reuse the same element structure + content: "Updated content" // Only change what needs updating }, }, ], @@ -8220,7 +8244,7 @@ Adds a listener for when an element is created. The handler that is called when an element is created. -This will fire when elements are created programatically, or when the +This will fire when elements are created programmatically, or when the user starts creating an element with a drawing tool. When the user creates an element with a drawing tool, it can begin in @@ -8242,7 +8266,7 @@ A function to unsubscribe from the listener ```typescript const unsubscribe = felt.onElementCreate({ - handler: (element) => console.log(element.id), + handler: ({isBeingCreated, element}) => console.log(element.id), }); // later on... @@ -8282,7 +8306,7 @@ A function to unsubscribe from the listener ##### Example ```typescript -const unsubscribe = felt.onToolCreatedElement({ +const unsubscribe = felt.onElementCreateEnd({ handler: (params) => console.log(params), }); @@ -8297,7 +8321,7 @@ unsubscribe(); Adds a listener for when an element changes. This will fire when an element is being edited, either on the map by the user -or programatically. +or programmatically. Like the [\`onElementCreate\`](client.md#onelementcreate) listener, this will fire when an element is still being created by a drawing tool. @@ -10527,7 +10551,7 @@ The ID of the element. #### variant? -> `optional` **variant**: `"outlined"` | `"transparent"` | `"filled"` +> `optional` **variant**: `"filled"` | `"transparent"` | `"outlined"` The style variant of the button. @@ -10657,7 +10681,7 @@ The id of the button. #### variant? -> `optional` **variant**: `"outlined"` | `"transparent"` | `"filled"` +> `optional` **variant**: `"filled"` | `"transparent"` | `"outlined"` The style variant of the button. @@ -10788,7 +10812,7 @@ The label to display in the button. #### variant? -> `optional` **variant**: `"outlined"` | `"transparent"` | `"filled"` +> `optional` **variant**: `"filled"` | `"transparent"` | `"outlined"` The style variant of the button. @@ -12211,7 +12235,7 @@ By using `grid` property it is possible to control FlexibleSpace's size. #### items -> **items**: ([`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonRowElement`](client.md#uibuttonrowelement) | [`UICheckboxGroupElement`](client.md#uicheckboxgroupelement) | [`UIRadioGroupElement`](client.md#uiradiogroupelement) | [`UIToggleGroupElement`](client.md#uitogglegroupelement))\[] +> **items**: ([`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonRowElement`](client.md#uibuttonrowelement) | [`UICheckboxGroupElement`](client.md#uicheckboxgroupelement) | [`UIRadioGroupElement`](client.md#uiradiogroupelement) | [`UIToggleGroupElement`](client.md#uitogglegroupelement) | [`UIIframeElement`](client.md#uiiframeelement))\[] The items to add to the grid container. @@ -12326,7 +12350,7 @@ See [UIGridContainerElement](client.md#uigridcontainerelement) for more details. #### items -> **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate) | [`UICheckboxGroupElementCreate`](client.md#uicheckboxgroupelementcreate) | [`UIRadioGroupElementCreate`](client.md#uiradiogroupelementcreate) | [`UIToggleGroupElementCreate`](client.md#uitogglegroupelementcreate))\[] +> **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate) | [`UICheckboxGroupElementCreate`](client.md#uicheckboxgroupelementcreate) | [`UIRadioGroupElementCreate`](client.md#uiradiogroupelementcreate) | [`UIToggleGroupElementCreate`](client.md#uitogglegroupelementcreate) | [`UIIframeElementCreate`](client.md#uiiframeelementcreate))\[] The items to add to the grid container. @@ -12509,7 +12533,7 @@ Only takes effect on horizontal stacks. #### items? -> `optional` **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate) | [`UICheckboxGroupElementCreate`](client.md#uicheckboxgroupelementcreate) | [`UIRadioGroupElementCreate`](client.md#uiradiogroupelementcreate) | [`UIToggleGroupElementCreate`](client.md#uitogglegroupelementcreate))\[] +> `optional` **items**: ([`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate) | [`UICheckboxGroupElementCreate`](client.md#uicheckboxgroupelementcreate) | [`UIRadioGroupElementCreate`](client.md#uiradiogroupelementcreate) | [`UIToggleGroupElementCreate`](client.md#uitogglegroupelementcreate) | [`UIIframeElementCreate`](client.md#uiiframeelementcreate))\[] The items to add to the grid container. @@ -12557,75 +12581,334 @@ The id of the element. `void` -## UIPanel +## UIIframeElement -Represents a panel in the UI. -It can be added to the map by using the [UiController.createOrUpdatePanel](client.md#createorupdatepanel) method. +Represents an iframe element in a panel. -A panel is a container for other UI elements. -It can have a title, a body, a footer as well as a close button. +The height of the iframe can be set by using the `height` property +either as a number (measured in pixels) or a string (e.g. “100px” or “50%“). -The body and footer are arrays of UI elements and turn into vertical stacks of elements. +By default, the height is calculated following a 16:9 ratio. -The close button is a button rendered in the top right corner of the panel that can be -used to close the panel and is only visible if `onClickClose` is provided. -Usually, you want to call [UiController.deletePanel](client.md#deletepanel) when the close button is clicked, -e.g. `onClickClose: () => felt.deletePanel("my-panel")`. - -### Body - -Body is the main content of the panel. It is scrollable which means -that it can contain a lot of elements. +
+ Iframe showing an example website -### Footer +
+ Iframe with default height (16:9) +
+
-Footer is sticky to the bottom of the panel, and can be used to add actions to the panel (e.g. save, cancel, etc.). +```typescript +{ type: "Iframe", url: "https://www.example.com" } +``` -### Examples +
+ Iframe showing an example website with a custom height -### basic +
+ Iframe with custom height +
+
```typescript -{ - title: "My Panel", - body: [ - { type: "Text", text: "Hello" }, - ], -} +{ type: "Iframe", url: "https://www.example.com", height: 300 } ``` -### closable +### Properties -````typescript -{ - id: "my-panel", - title: "My Panel", - onClickClose: () => felt.deletePanel("my-panel"), -} +#### type + +> **type**: `"Iframe"` + +#### url + +> **url**: `string` + +The URL of the iframe. + +#### id + +> **id**: `string` + +The ID of the element. + +#### height? + +> `optional` **height**: `string` | `number` + +The height of the iframe. + +If not provided, the height will be automatically calculated following a 16:9 ratio. + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +## UIIframeElementCreate + +The parameters for creating an iframe element. + +See [UIIframeElement](client.md#uiiframeelement) for more details. + +### Remarks + +`id` is optional but recommended if you want to be able to perform updates. + +### Properties + +#### type + +> **type**: `"Iframe"` + +#### url + +> **url**: `string` + +The URL of the iframe. + +#### height? + +> `optional` **height**: `string` | `number` + +The height of the iframe. + +If not provided, the height will be automatically calculated following a 16:9 ratio. + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +The ID of the element. + +##### Remarks + +If not provided, the element will be assigned a random ID, but it is recommended to provide it +to perform further updates on the element. + +If provided, it must be unique within the UI. + +##### Default Value + +`undefined` + +## UIIframeElementUpdate + +The parameters for updating an iframe element. + +See [UIIframeElement](client.md#uiiframeelement) for more details. + +### Remarks + +`id` and `type` are required to identify the element to update. + +### Properties + +#### type + +> **type**: `"Iframe"` + +#### id + +> **id**: `string` + +The ID of the element. + +#### height? + +> `optional` **height**: `string` | `number` + +The height of the iframe. + +If not provided, the height will be automatically calculated following a 16:9 ratio. + +#### url? + +> `optional` **url**: `string` + +The URL of the iframe. + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +## UIPanel + +A UI panel that can be added to the map using [UiController.createOrUpdatePanel](client.md#createorupdatepanel). + +Panels are containers for UI elements with title, body, footer, and close button. +Body and footer elements are arranged in vertical stacks. + +### Body + +Main content area that scrolls when content exceeds available space. + +### Footer + +Sticky bottom section for action buttons (e.g., Save, Cancel). + +### Close Button + +Optional close icon in header. When `onClickClose` is provided, you must handle +panel cleanup and removal. + +### Example -@example -### form ```typescript -{ - title: "My Panel", - body: [ - { type: "Text", text: "Introduce your name and last name" }, - { type: "TextInput", label: "Name", value: "", placeholder: "John", onChange: (value) => setName(value) }, - { type: "TextInput", label: "Last name", value: "", placeholder: "Doe", onChange: (value) => setLastName(value) }, - ], - footer: [ - { - type: "Grid", - grid: "auto-flow / 1fr auto auto", - items: [ - { type: "FlexibleSpace" }, // this will make the buttons to be aligned to the end of the panel - { type: "Button", label: "Reset", onClick: () => alert("Reset") }, - { type: "Button", label: "Save", onClick: () => alert("Save") }, - ], - }, - ], -} -```` +// 1. Create panel ID +const panelId = await felt.createPanelId(); + +// 2. Create panel with close button and footer +await felt.createOrUpdatePanel({ + panel: { + id: panelId, + title: "My Panel", + body: [ + { type: "Text", content: "Hello, world!" }, + { type: "TextInput", label: "Name", placeholder: "Enter your name" } + ], + footer: [ + { + type: "ButtonRow", + align: "end", + items: [ + { type: "Button", label: "Cancel", onClick: () => handleCancel() }, + { type: "Button", label: "Save", onClick: () => handleSave() } + ] + } + ], + onClickClose: (args) => { + // Clean up any state or resources + cleanupResources(); + // Close the panel + felt.deletePanel(panelId); + } + } +}); +``` ### Properties @@ -15481,11 +15764,11 @@ In both cases, the default value is `{ at: "end" }`. ## UIPanelElement -> **UIPanelElement**: [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonRowElement`](client.md#uibuttonrowelement) | [`UICheckboxGroupElement`](client.md#uicheckboxgroupelement) | [`UIRadioGroupElement`](client.md#uiradiogroupelement) | [`UIToggleGroupElement`](client.md#uitogglegroupelement) | [`UIGridContainerElement`](client.md#uigridcontainerelement) +> **UIPanelElement**: [`UIButtonElement`](client.md#uibuttonelement) | [`UITextElement`](client.md#uitextelement) | [`UIDividerElement`](client.md#uidividerelement) | [`UITextInputElement`](client.md#uitextinputelement) | [`UISelectElement`](client.md#uiselectelement) | [`UIFlexibleSpaceElement`](client.md#uiflexiblespaceelement) | [`UIButtonRowElement`](client.md#uibuttonrowelement) | [`UICheckboxGroupElement`](client.md#uicheckboxgroupelement) | [`UIRadioGroupElement`](client.md#uiradiogroupelement) | [`UIToggleGroupElement`](client.md#uitogglegroupelement) | [`UIIframeElement`](client.md#uiiframeelement) | [`UIGridContainerElement`](client.md#uigridcontainerelement) ## UIPanelElementCreate -> **UIPanelElementCreate**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate) | [`UICheckboxGroupElementCreate`](client.md#uicheckboxgroupelementcreate) | [`UIRadioGroupElementCreate`](client.md#uiradiogroupelementcreate) | [`UIToggleGroupElementCreate`](client.md#uitogglegroupelementcreate) | [`UIGridContainerElementCreate`](client.md#uigridcontainerelementcreate) +> **UIPanelElementCreate**: [`UIButtonElementCreate`](client.md#uibuttonelementcreate) | [`UITextElementCreate`](client.md#uitextelementcreate) | [`UIDividerElementCreate`](client.md#uidividerelementcreate) | [`UITextInputElementCreate`](client.md#uitextinputelementcreate) | [`UISelectElementCreate`](client.md#uiselectelementcreate) | [`UIFlexibleSpaceElementCreate`](client.md#uiflexiblespaceelementcreate) | [`UIButtonRowElementCreate`](client.md#uibuttonrowelementcreate) | [`UICheckboxGroupElementCreate`](client.md#uicheckboxgroupelementcreate) | [`UIRadioGroupElementCreate`](client.md#uiradiogroupelementcreate) | [`UIToggleGroupElementCreate`](client.md#uitogglegroupelementcreate) | [`UIIframeElementCreate`](client.md#uiiframeelementcreate) | [`UIGridContainerElementCreate`](client.md#uigridcontainerelementcreate) This is a union of all the possible elements that can be created inside panel's body or footer. @@ -15495,7 +15778,7 @@ For the sake of convenience, `id` is optional but recommended if you want to be ## UIPanelElementUpdate -> **UIPanelElementUpdate**: [`UIButtonElementUpdate`](client.md#uibuttonelementupdate) | [`UITextElementUpdate`](client.md#uitextelementupdate) | [`UITextInputElementUpdate`](client.md#uitextinputelementupdate) | [`UISelectElementUpdate`](client.md#uiselectelementupdate) | [`UIDividerElementUpdate`](client.md#uidividerelementupdate) | [`UIButtonRowElementUpdate`](client.md#uibuttonrowelementupdate) | [`UICheckboxGroupElementUpdate`](client.md#uicheckboxgroupelementupdate) | [`UIRadioGroupElementUpdate`](client.md#uiradiogroupelementupdate) | [`UIToggleGroupElementUpdate`](client.md#uitogglegroupelementupdate) | [`UIGridContainerElementUpdate`](client.md#uigridcontainerelementupdate) | [`UIFlexibleSpaceElementUpdate`](client.md#uiflexiblespaceelementupdate) +> **UIPanelElementUpdate**: [`UIButtonElementUpdate`](client.md#uibuttonelementupdate) | [`UITextElementUpdate`](client.md#uitextelementupdate) | [`UITextInputElementUpdate`](client.md#uitextinputelementupdate) | [`UISelectElementUpdate`](client.md#uiselectelementupdate) | [`UIDividerElementUpdate`](client.md#uidividerelementupdate) | [`UIButtonRowElementUpdate`](client.md#uibuttonrowelementupdate) | [`UICheckboxGroupElementUpdate`](client.md#uicheckboxgroupelementupdate) | [`UIRadioGroupElementUpdate`](client.md#uiradiogroupelementupdate) | [`UIToggleGroupElementUpdate`](client.md#uitogglegroupelementupdate) | [`UIGridContainerElementUpdate`](client.md#uigridcontainerelementupdate) | [`UIFlexibleSpaceElementUpdate`](client.md#uiflexiblespaceelementupdate) | [`UIIframeElementUpdate`](client.md#uiiframeelementupdate) This is a union of all the possible elements that can be updated inside panel's body or footer (excluding Divider and FlexibleSpace elements because they cannot be updated). From 2fe6bb2bee09f91bb299553aa4ea164248125ce0 Mon Sep 17 00:00:00 2001 From: Sergio Clebal Date: Thu, 21 Aug 2025 13:36:45 +0200 Subject: [PATCH 27/30] v1.8 --- docs-minimal/CHANGELOG.md | 10 ++ docs-minimal/client.md | 263 ++++++++++++++++++++++++++++++++------ 2 files changed, 233 insertions(+), 40 deletions(-) diff --git a/docs-minimal/CHANGELOG.md b/docs-minimal/CHANGELOG.md index 168b4541..b53d1f51 100644 --- a/docs-minimal/CHANGELOG.md +++ b/docs-minimal/CHANGELOG.md @@ -1,5 +1,15 @@ # @feltmaps/js-sdk +## 1.8.0 + +### Minor Changes + +* 336538b: Improve controller method documentation + +### Patch Changes + +* 7b04db4: Update filter docs + ## 1.7.0 ### Minor Changes diff --git a/docs-minimal/client.md b/docs-minimal/client.md index 96251909..96de3506 100644 --- a/docs-minimal/client.md +++ b/docs-minimal/client.md @@ -6082,6 +6082,9 @@ own to make it easier to find related methods and events. Get a single element from the map by its id. +Use this method when you know the specific ID of an element and want to retrieve +its current state. This is more efficient than getting all elements and filtering. + ##### Parameters ##### id @@ -6094,7 +6097,7 @@ The id of the element you want to get. `Promise`\<`null` | [`Element`](client.md#element-1)> -The requested element. +A promise that resolves to the requested element, or `null` if not found. ##### Example @@ -6123,6 +6126,9 @@ property of the element, with some differences: * Text, Note and Image elements do not return geometry, so will return `null`. +Use this method when you need the geometric representation of an element for +spatial analysis or visualization purposes. + ##### Parameters ##### id @@ -6135,6 +6141,8 @@ The id of the element you want to get the geometry of. `Promise`\<`null` | [`GeoJsonGeometry`](client.md#geojsongeometry)> +A promise that resolves to the element's geometry in GeoJSON format, or `null` if the element has no geometry. + ##### Example ```typescript @@ -6149,19 +6157,22 @@ console.log(geometry?.type, geometry?.coordinates); Gets elements from the map, according to the constraints supplied. If no constraints are supplied, all elements will be returned. +Use this method to retrieve multiple elements, optionally filtered by constraints. +This is useful for bulk operations or when you need to analyze all elements on the map. + ##### Parameters ##### constraint? [`GetElementsConstraint`](client.md#getelementsconstraint) -The constraints to apply to the elements returned from the map. +Optional constraints to apply to the elements returned from the map. ##### Returns `Promise`\<(`null` | [`Element`](client.md#element-1))\[]> -All elements on the map. +A promise that resolves to an array of elements, ordered by the order specified in Felt. ##### Remarks @@ -6181,17 +6192,22 @@ const elements = await felt.getElements(); Get an element group from the map by its id. +Element groups allow you to organize related elements together and control +their visibility as a unit. + ##### Parameters ##### id `string` +The id of the element group you want to get. + ##### Returns `Promise`\<`null` | [`ElementGroup`](client.md#elementgroup)> -The requested element group. +A promise that resolves to the requested element group, or `null` if not found. ##### Example @@ -6206,19 +6222,22 @@ const elementGroup = await felt.getElementGroup("element-group-1"); Gets element groups from the map, according to the filters supplied. If no constraints are supplied, all element groups will be returned in rendering order. +Use this method to retrieve multiple element groups, optionally filtered by constraints. +This is useful for bulk operations on element groups. + ##### Parameters ##### constraint? [`GetElementGroupsConstraint`](client.md#getelementgroupsconstraint) -The constraints to apply to the element groups returned from the map. +Optional constraints to apply to the element groups returned from the map. ##### Returns `Promise`\<(`null` | [`ElementGroup`](client.md#elementgroup))\[]> -The requested element groups. +A promise that resolves to an array of element groups in rendering order. ##### Example @@ -6232,16 +6251,23 @@ const elementGroups = await felt.getElementGroups({ ids: ["element-group-1", "el Hide or show element groups with the given ids. +Use this method to control the visibility of multiple element groups at once. +This is more efficient than hiding/showing individual elements. + ##### Parameters ##### visibility [`SetVisibilityRequest`](client.md#setvisibilityrequest) +The visibility configuration for element groups. + ##### Returns `Promise`\<`void`> +A promise that resolves when the visibility changes are applied. + ##### Example ```typescript @@ -6254,16 +6280,23 @@ felt.setElementGroupVisibility({ show: ["element-group-1", "element-group-2"], h Create a new element on the map. +Use this method to programmatically create elements on the map. Elements created +via the SDK are only available to the current session and are not persisted. + ##### Parameters ##### element [`ElementCreate`](client.md#elementcreate) +The element configuration to create. + ##### Returns `Promise`\<[`Element`](client.md#element-1)> +A promise that resolves to the created element. + ##### Example ```typescript @@ -6276,16 +6309,23 @@ const element = await felt.createElement({ type: "Place", coordinates: [10, 10] Update an element on the map. The element type must be specified. +Use this method to modify existing elements. You can update properties like +coordinates, styling, and metadata. + ##### Parameters ##### element [`ElementUpdate`](client.md#elementupdate) +The element update configuration. + ##### Returns `Promise`\<[`Element`](client.md#element-1)> +A promise that resolves to the updated element. + ##### Example ```typescript @@ -6311,16 +6351,22 @@ await felt.updateElement({ Delete an element from the map. +Use this method to remove elements from the map. This operation cannot be undone. + ##### Parameters ##### id `string` +The id of the element to delete. + ##### Returns `Promise`\<`void`> +A promise that resolves when the element is deleted. + ##### Example ```typescript @@ -7354,10 +7400,15 @@ const attributeIds = schema.attributes.map((attr) => attr.id); Gets the details of the map. +Use this method to retrieve metadata about the current map, such as +its title, description, and other map-level information. + ##### Returns `Promise`\<[`MapDetails`](client.md#mapdetails)> +A promise that resolves to the map details. + ##### Example ```typescript @@ -7375,10 +7426,15 @@ console.log({ Gets the current selection as a list of entity identifiers. +Use this method to retrieve the current selection state, which can include +features, elements, or both types of entities. + ##### Returns `Promise`\<[`EntityNode`](client.md#entitynode)\[]> +A promise that resolves to an array of selected entity nodes. + ##### Example ```typescript @@ -7392,6 +7448,9 @@ const selection = await felt.getSelection(); Selects a feature on a layer. This will show the feature's popup, modal or sidebar (if configured) and highlight the feature. +Use this method to programmatically select features, which can be useful for +highlighting specific data points or triggering feature-specific UI. + ##### Parameters ##### params @@ -7402,6 +7461,8 @@ sidebar (if configured) and highlight the feature. `Promise`\<`void`> +A promise that resolves when the feature is selected. + ##### Example ```typescript @@ -7417,7 +7478,10 @@ felt.selectFeature({ > **clearSelection**(`params`?): `Promise`\<`void`> -Clears the current selection (elements, features or both) +Clears the current selection (elements, features or both). + +Use this method to programmatically clear the current selection, which can +be useful for resetting the map state or preparing for new selections. ##### Parameters @@ -7442,6 +7506,8 @@ Whether to clear the elements from the selection. `Promise`\<`void`> +A promise that resolves when the selection is cleared. + ##### Example ```typescript @@ -7468,11 +7534,15 @@ felt.clearSelection({ elements: true }); Sets the tool to use for drawing elements on the map. +Use this method to programmatically activate drawing tools for users. When a tool +is set, users can draw elements on the map using that tool. Set to `null` to +deactivate all drawing tools. + ##### Parameters ##### tool -The tool to set. +The tool to set, or `null` to deactivate all tools. `null` | [`ToolType`](client.md#tooltype) @@ -7496,11 +7566,13 @@ await felt.setTool(null); Gets the current tool, if any is in use. +Use this method to check which drawing tool is currently active, if any. + ##### Returns `Promise`\<`null` | [`ToolType`](client.md#tooltype)> -The current tool, or `null` if no tool is in use. +A promise that resolves to the current tool, or `null` if no tool is in use. ##### Example @@ -7514,6 +7586,9 @@ const tool = await felt.getTool(); // "marker", "polygon", etc. Listens for changes to the current tool. +Use this to react to tool changes, such as updating your UI to reflect +the currently active drawing tool. + ##### Parameters ##### args @@ -7528,8 +7603,6 @@ This callback is called with the current tool whenever the tool changes. `VoidFunction` -A function to unsubscribe from the listener - ##### Example ```typescript @@ -7547,13 +7620,16 @@ unsubscribe(); Sets the settings for the current tool. +Use this method to configure how drawing tools behave, such as setting colors, +stroke widths, or other tool-specific properties. + ##### Parameters ##### settings [`InputToolSettings`](client.md#inputtoolsettings) -The settings to set. +The settings to set for the specified tool. ##### Returns @@ -7573,7 +7649,9 @@ await felt.setToolSettings({ > **getToolSettings**\<`T`>(`tool`): `Promise`\<[`ToolSettingsMap`](client.md#toolsettingsmap)\[`T`]> -Gets the settings for the chosen tool +Gets the settings for the chosen tool. + +Use this method to retrieve the current configuration of a drawing tool. ##### Type Parameters @@ -7585,11 +7663,13 @@ Gets the settings for the chosen tool `T` +The tool to get settings for. + ##### Returns `Promise`\<[`ToolSettingsMap`](client.md#toolsettingsmap)\[`T`]> -The settings for the chosen tool. +A promise that resolves to the settings for the chosen tool. ##### Example @@ -7603,6 +7683,9 @@ const settings = await felt.getToolSettings("marker"); Listens for changes to the settings on all tools. +Use this to react to tool setting changes, such as updating your UI to +reflect the current tool configuration. + ##### Parameters ##### args @@ -7615,7 +7698,7 @@ Listens for changes to the settings on all tools. `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -7731,6 +7814,7 @@ await felt.deleteActionTrigger("enablePolygonTool"); Creates a panel ID. In order to create a panel using [createOrUpdatePanel](client.md#createorupdatepanel), you need to create a panel ID first. +Panel IDs are automatically generated to prevent conflicts with other panels. ##### Returns @@ -7853,6 +7937,9 @@ await felt.deletePanel("panel-1"); Creates elements in a panel. +Use this method to add new elements to an existing panel without replacing +the entire panel content. This is useful for dynamic UI updates. + ##### Parameters ##### args @@ -7887,6 +7974,9 @@ await felt.createPanelElements({ Updates an existing element in a panel. This method can only update elements that already exist in the panel and have an ID. +Use this method to modify specific elements without replacing the entire panel. +This is more efficient than using [createOrUpdatePanel](client.md#createorupdatepanel) for small changes. + ##### Parameters ##### args @@ -7934,6 +8024,9 @@ await felt.updatePanelElements({ Deletes elements from a panel. +Use this method to remove specific elements from a panel without replacing +the entire panel content. + ##### Parameters ##### args @@ -7961,6 +8054,9 @@ await felt.deletePanelElements({ Updates the UI controls on the embedded map. +Use this method to show or hide various UI controls like the legend, +full screen button, and other map interface elements. + ##### Parameters ##### controls @@ -8029,18 +8125,27 @@ await felt.setOnMapInteractionsUi({ Shows a data table view for the specified layer, optionally sorted by a given attribute. +The data table displays feature data in a tabular format, making it easy to +browse and analyze layer data. You can control the initial sorting of the table. + ##### Parameters ##### params? +Optional parameters for showing the data table. + ##### layerId `string` +The ID of the layer to show data for. + ##### sorting [`SortConfig`](client.md#sortconfig) +Optional sorting configuration for the table. + ##### Returns `Promise`\<`void`> @@ -8088,10 +8193,15 @@ await felt.hideLayerDataTable(); Gets the current state of the viewport. +Use this method to retrieve the current center coordinates and zoom level +of the map viewport. + ##### Returns `Promise`\<[`ViewportState`](client.md#viewportstate)> +A promise that resolves to the current viewport state. + ##### Example ```typescript @@ -8109,6 +8219,9 @@ console.log({ Moves the map to the specified location. +Use this method to programmatically change the map's viewport to a specific +location and zoom level. The map will animate to the new position. + ##### Parameters ##### viewport @@ -8134,10 +8247,15 @@ felt.setViewport({ Gets the current state of the viewport constraints. +Use this method to retrieve the current viewport constraints, which limit +where users can pan and zoom on the map. + ##### Returns `Promise`\<`null` | [`ViewportConstraints`](client.md#viewportconstraints)> +A promise that resolves to the current viewport constraints, or `null` if no constraints are set. + ##### Example ```typescript @@ -8160,6 +8278,10 @@ if (constraints) { Constrains the map viewport so it stays inside certain bounds and/or certain zoom levels. +Use this method to limit where users can navigate on the map. This is useful +for keeping users focused on a specific area or preventing them from zooming +too far in or out. + ##### Parameters ##### constraints @@ -8206,6 +8328,10 @@ felt.setViewportConstraints(null); Fits the map to the specified bounds. +Use this method to automatically adjust the viewport to show a specific +geographic area. The map will calculate the appropriate center and zoom +level to fit the bounds within the current map size. + ##### Parameters ##### bounds @@ -8234,6 +8360,18 @@ felt.fitViewportToBounds({ bounds: [west, south, east, north] }); Adds a listener for when an element is created. +This will fire when elements are created programmatically, or when the +user starts creating an element with a drawing tool. + +When the user creates an element with a drawing tool, it can begin in +an invalid state, such as if you've just placed a single point in a polygon. + +You can use the `isBeingCreated` property to determine if the element is +still being created by a drawing tool. + +If you want to know when the element is finished being created, you can +use the [\`onElementCreateEnd\`](client.md#onelementcreateend) listener. + ##### Parameters ##### args @@ -8260,7 +8398,7 @@ use the [\`onElementCreateEnd\`](client.md#onelementcreateend) listener. `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -8301,7 +8439,7 @@ The handler to call whenever this event fires. `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -8353,7 +8491,7 @@ The handler that is called when the element changes. `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -8373,6 +8511,9 @@ unsubscribe(); Adds a listener for when an element is deleted. +Use this to react to element deletions, such as cleaning up related data +or updating your application state. + ##### Parameters ##### args @@ -8397,7 +8538,7 @@ The handler that is called when the element is deleted. `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -8417,6 +8558,9 @@ unsubscribe(); Adds a listener for when an element group changes. +Use this to react to changes in element groups, such as when elements are +added to or removed from groups. + ##### Parameters ##### args @@ -8437,7 +8581,7 @@ Adds a listener for when an element group changes. `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -8455,7 +8599,10 @@ unsubscribe(); > **onPointerClick**(`params`): `VoidFunction` -Allows you to be notified the user clicks on the map. +Allows you to be notified when the user clicks on the map. + +Use this to react to user clicks on the map, such as triggering custom +actions or collecting interaction data. ##### Parameters @@ -8469,7 +8616,7 @@ Allows you to be notified the user clicks on the map. `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -8486,7 +8633,10 @@ unsubscribe(); > **onPointerMove**(`params`): `VoidFunction` -Allows you to be notified the user moves the mouse over the map. +Allows you to be notified when the user moves the mouse over the map. + +Use this to track mouse movement and detect features under the cursor, +such as for hover effects or real-time data display. ##### Parameters @@ -8504,7 +8654,7 @@ The handler function `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -8756,6 +8906,9 @@ unsubscribe(); Adds a listener for when the selection changes. +Use this to react to selection changes, such as updating your UI to reflect +what is currently selected on the map. + ##### Parameters ##### params @@ -8768,7 +8921,7 @@ Adds a listener for when the selection changes. `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -8787,6 +8940,9 @@ unsubscribe(); Adds a listener for when the viewport changes. +Use this to react to viewport changes, such as updating your UI or +triggering other actions when users navigate the map. + ##### Parameters ##### args @@ -8802,7 +8958,7 @@ the viewport changes. `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -8823,6 +8979,9 @@ Adds a listener for when the viewport move ends, which is when the user stops dragging or zooming the map, animations have finished, or inertial dragging ends. +Use this to react to the end of viewport changes, such as triggering +data loading or analysis when users finish navigating. + ##### Parameters ##### args @@ -8835,7 +8994,7 @@ dragging ends. `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -8859,6 +9018,10 @@ Adds a listener for when the map is idle, which is defined as: * All tiles for the current viewport have been loaded * Any fade transitions (e.g. for labels) have completed +Use this to perform actions when the map is completely stable and ready +for user interaction, such as enabling certain features or triggering +data analysis. + ##### Parameters ##### args @@ -8871,7 +9034,7 @@ Adds a listener for when the map is idle, which is defined as: `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -9205,11 +9368,15 @@ The Tools controller allows you to let users draw elements on the map. Sets the tool to use for drawing elements on the map. +Use this method to programmatically activate drawing tools for users. When a tool +is set, users can draw elements on the map using that tool. Set to `null` to +deactivate all drawing tools. + ##### Parameters ##### tool -The tool to set. +The tool to set, or `null` to deactivate all tools. `null` | [`ToolType`](client.md#tooltype) @@ -9233,11 +9400,13 @@ await felt.setTool(null); Gets the current tool, if any is in use. +Use this method to check which drawing tool is currently active, if any. + ##### Returns `Promise`\<`null` | [`ToolType`](client.md#tooltype)> -The current tool, or `null` if no tool is in use. +A promise that resolves to the current tool, or `null` if no tool is in use. ##### Example @@ -9251,6 +9420,9 @@ const tool = await felt.getTool(); // "marker", "polygon", etc. Listens for changes to the current tool. +Use this to react to tool changes, such as updating your UI to reflect +the currently active drawing tool. + ##### Parameters ##### args @@ -9265,8 +9437,6 @@ This callback is called with the current tool whenever the tool changes. `VoidFunction` -A function to unsubscribe from the listener - ##### Example ```typescript @@ -9284,13 +9454,16 @@ unsubscribe(); Sets the settings for the current tool. +Use this method to configure how drawing tools behave, such as setting colors, +stroke widths, or other tool-specific properties. + ##### Parameters ##### settings [`InputToolSettings`](client.md#inputtoolsettings) -The settings to set. +The settings to set for the specified tool. ##### Returns @@ -9310,7 +9483,9 @@ await felt.setToolSettings({ > **getToolSettings**\<`T`>(`tool`): `Promise`\<[`ToolSettingsMap`](client.md#toolsettingsmap)\[`T`]> -Gets the settings for the chosen tool +Gets the settings for the chosen tool. + +Use this method to retrieve the current configuration of a drawing tool. ##### Type Parameters @@ -9322,11 +9497,13 @@ Gets the settings for the chosen tool `T` +The tool to get settings for. + ##### Returns `Promise`\<[`ToolSettingsMap`](client.md#toolsettingsmap)\[`T`]> -The settings for the chosen tool. +A promise that resolves to the settings for the chosen tool. ##### Example @@ -9340,6 +9517,9 @@ const settings = await felt.getToolSettings("marker"); Listens for changes to the settings on all tools. +Use this to react to tool setting changes, such as updating your UI to +reflect the current tool configuration. + ##### Parameters ##### args @@ -9352,7 +9532,7 @@ Listens for changes to the settings on all tools. `VoidFunction` -A function to unsubscribe from the listener +A function to unsubscribe from the listener. ##### Example @@ -15409,11 +15589,10 @@ const filter = [ > **Filters**: [`FilterTernary`](client.md#filterternary) | [`FilterExpression`](client.md#filterexpression) | `null` | `boolean` Filters can be used to change which features in a layer are rendered. Filters can be -applied to a layer by the LayersController.setLayerFilters | \`setLayerFilters\` method on the Felt controller. +applied to a layer by the LayersController.setLayerFilters | setLayerFilters method on the Felt controller. -Filters use a tree structure for combining expressions with logical operators, called a -[FilterTernary](client.md#filterternary). When combining three or more conditions, you must use proper nesting -rather than a flat list. +Filters use a tree structure for combining expressions with logical operators, called a [FilterTernary](client.md#filterternary). +When combining three or more conditions, you must use proper nesting rather than a flat list. See the examples below for the correct structure to use when building complex filters. @@ -15429,6 +15608,10 @@ The possible operators are: * `ne`: Not equal to * `cn`: Contains * `nc`: Does not contain +* `is`: Is +* `isnt`: Is not +* `in`: In +* `ni`: Not in The allowed boolean operators are: From 6ec445cf3f503a9917781b353837f11054fdbcf8 Mon Sep 17 00:00:00 2001 From: Sergio Clebal Date: Thu, 21 Aug 2025 13:49:58 +0200 Subject: [PATCH 28/30] v1.9-next.0 --- docs-minimal/CHANGELOG.md | 6 ++ docs-minimal/_media/legend-default.png | Bin 0 -> 93385 bytes docs-minimal/_media/legend-name-only.png | Bin 0 -> 50567 bytes docs-minimal/client.md | 68 +++++++++++++++++++++++ 4 files changed, 74 insertions(+) create mode 100644 docs-minimal/_media/legend-default.png create mode 100644 docs-minimal/_media/legend-name-only.png diff --git a/docs-minimal/CHANGELOG.md b/docs-minimal/CHANGELOG.md index b53d1f51..fcc9712b 100644 --- a/docs-minimal/CHANGELOG.md +++ b/docs-minimal/CHANGELOG.md @@ -1,5 +1,11 @@ # @feltmaps/js-sdk +## 1.9.0-next.0 + +### Minor Changes + +* 7e4034f: Add support for legendDisplay on the layer + ## 1.8.0 ### Minor Changes diff --git a/docs-minimal/_media/legend-default.png b/docs-minimal/_media/legend-default.png new file mode 100644 index 0000000000000000000000000000000000000000..9090992ddeb03c6a58f6592ca21d952a13338a9f GIT binary patch literal 93385 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

!Iz=hQxlcTH&GPQrRBDlg?3+Jv1~Fy2E_^ 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%0DIz;wH%6nfpb+T3|H1E6KBQCzEZyYD-h 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 literal 0 HcmV?d00001 diff --git a/docs-minimal/_media/legend-name-only.png b/docs-minimal/_media/legend-name-only.png new file mode 100644 index 0000000000000000000000000000000000000000..7275b3ae714c7361aed531c4894cbe18b1c0be8d GIT binary patch literal 50567 zcmZU)1ymf((lCq$3vP=Og1bX-C%C(_f#B}$x=4Zthv4q+VIdG)gTn?0?rz^E_dd^k z&;QRk&GgQ6byt^H^$@M9EQ^jxj0yt-gD&@8N*x9U9t`boAiskC?E?jR!oa*%vX+!o zm6MdDRCRH*w6?Q=fq5UDqJyNX@tq*YKwSuCMX$8A7)P)D|kpQI}U=&q{DOl8Ggj=D+QG;qSWJ^OE&2@osmV z1qntbQjB&~x(Q}DX=fBD3Ac#*S!3}ltJteAL9c{h8L=2Yto;6s470p(dvm=bAf^ey zmra=$-F>m0A&AD8fJwB9nvq5|BmX7}7sQ8Vaqb5b#W`%CIFVL%svqUPJt-blp~bHe zm#M{X6vuY8{B7u*G5`T4gBEL;3wH7_Sg1oR9mO5MuD`*IFZUJeLGmy&jZX{V%rDA5 zAKfr1e|q<8U}4f7-`M3FrC>@|dU`war_69L;?M(fz{JQdV zvo-Q1o*8P+^zT0%7(W=N;YN$Y%Y^B)gY}w zbCfzmW^@$Q1E2-b`Nksb!>V^o-(nrE9!|h7nC`4xe2VgM{OkAhzi%kOAy-jFD`Dbf zb>iO%nw?vY1n8zm<6#nxs--Rdf@yq;1P!E<#|pR>6hLi}3a z&E0#|F^dWqAJG|qVnL48eh585!VW@$gC(IiQ$f-Y=S^&M=W`q2x>97vf_XQLV7|fM z``Y-^tmxbDA%0cl=dky$@gx@zFDGKeVSkBY0=2R}L}^fviGzEyVM~3Esn%Tw$ zHxhNV?fd1&Qhz0i5k5yN%iH@-$9lF9;H{H_9f}9CU~Klcap0IPyeV*~PNouHu)JSV z@L267p2U!)c|Di3l*@0zudAV4kul3QyCX}qZ1;SS>s$--tz)@evEk>8l!={wwutnx zG}LUFI-@M36&O|jz}cD>9ge4U{II$E6oXqq7?Gie`}=_Vk#I7kjUXgH8q&LwpDr6E z((pm9vSISx!CwZnkl_4W**9iB!YBqI)`p+8!gy|=KZ;`^!>dt}Q-^+^d|+;!*fteN zM<)m}S4GthanFOZgIyNqSwzDKc{TZ3IV86a(Fw&6zGd@x4`D(K(+ggN3RyzpH!?1V zm?AdQH&|zJ{wOw_Fe%Eq_ne<2K2WJkMgNc?peh=+`3mv)Z#J2CjnjSa4KI{^zYZwdga!blIikYlhbV}X2l8ilaa>IZAkbL zix8Sb=xoe+2?r4Ogsczwp0Xhb^hIrmol>2m;38*)?S+|35Sh_!vTwfjOBFzIjFO^? zwUWFHnlR_&$mEZ01+_-ECU}J`D*L@Zr1|vz6*balOokY0%I%~WIgc{w zh<(Yp5=#w2)zLEdS*}^ZSsh|x;vM1~Vh&=QxI5x);s>5_>y-sBm6`mXGhU6FUp_Zy zHOG2{c*I`ED3=(_Jnb=D`rW(upg-X~kw0bAYRt$b)i6wFmFSh})p+Y&ybJBGHFqLP zA_@m_g5Q9pWm*WNNA+V%XePf@XqCB39Yko?@M`#iJd!VJ-9y}@ z1Y+Hq53;7chrgv0D3WUo8xF7Z2@M?1((Et&K6h_$S8%`CZ{EB9z4yCqpJsn-vSL=S ze4(#jcb-{*`55^us_5;$j3N1%cHr0Uo^IV9sleQ4o+r##cA=D^ zq@h}`&|i6?J4^Zw00#CVGSMdh9tpE#d&27c^&fuqed-~~m${aylW71olQa=u5oZD- z0iz&3KrZJouUW=z=7-Emo_Chh79-qOJSpkbJi-q5NCpXG7Q6MMKTCcJTgq7GTgo@s zTiRPvjM@Ld{So`)CS$!RPv41|lX+ghQTI~!i++4dmc5?sT_*lu3^2u_X>Gr9&cK%B zfcju?9(`WL{?h)IH=MVL*VAsVIiPvQuEMTn3HylOy&FkGF2o` zr04G?|8Q> zaN^W0Eb~!uF};98325BD*nw=sXjC0vlz>hy=x7I7B&^1$HeVR4=37m7fUFX9G`0GB z+&HCmEVOxg>-v24w!3WYo7$FgO?4jk#u0)S+V$r3?Y?oj8MzVoeU;Wy=ox?Ga8d%X z14j=X0d6LTR%ACC#!3d#jxu*T=2`|OeyD8dY~S>*_nZ9cnR!83h|e5b9q=dLAf?3Q zCp}Hw9n2gM#EwFYKuASsM%+W7LC`{2MdQUBe_f4!jN*)zf$u_ z!l`e+Q2$O?HbzPKP`FN*XjE-NqAYiu>`-K!3D>joSFNwy^>0w6&I;$HR^ytZa|oU^ zUUSe26m#x4AEqzr&Q-}$C)Gq- zPrD_It}L;07-MYh^Aj%}<3}B369@IkK$81?3QL)rxa5Z)4K5_D$f@IOtyJ|dbXs^U8O$eMlkmA&;e zQty^|voiIkWdq@lZqZ1=kIRN19PU?Ay$LP|#tyP5ID33x-Nna4Ok%TQwF$e7(;I88 zKb;la#gYdQo*UWMS=M#lg3V6`4N^B0s1=q{KG1b(Z8)$Xu`?_!LN7{mG%1lO$4eGD2+8GYU)7nz)^;C>% z4A<4j)z(`3Tn0waa~bOytF>Nf9xq!pI`4s7GNm$E9k167TL!%p_EIqoXbc=3(0*#0 zSQu$FXSa5lK0wH#1;?Lz@A556Hpi#4b3Nre-8F}_bF0rv%YNE7`bx9tS5zJ?CAIHP zul07txyQRNU)Noy93wrXJiPEHdTiYHorbbR@<;9mG~PQy%yu?E`+Nndc5S4&_KnD^{F^*TZM8GW3TK}XT7Xx-*-(_dCm z0#t6vMiF&A-rdMm$==Qp4jA7xyzs8MkPX;;oObGalJKuEIM_5<4G>=0SS6WW!4eZ}1uJ37sS4Dc+1GaCjkDB>(nhVCiAt|2~I1pS2rZC-hB|BQwQ=fVHehuMI>gAvz|l#_$rHGnP_77ngfj&2EpeShXb zaeA-k3Ijtx^QXbesZ*aq=byLM)OFKUQWO9>+OwK{a5T4I^|E*RGY^cAmjJYDZ{cP} z>1A){;40uHO!aq!0JQ(-F&h=--yv?c!c@9Ss+5wBE*6x$tn94pR3fO9l$1g)A1npb zrDXmK4*exeW##7PB*4bz>FLSp$;ImE@{x_>-Me>e?3`?zoGj20EUw-TZf0IA4z6$i zGs!>mNLjc7U96qltQ{RF|IBMrZ*=my#TykX;D zWoP?$ZYZeGpQi$<)?OBNdQ#T*P?|y45aHzH7WzB>|M%v9EB+ry-Ty(p_o5=sz^p&hS0 zS(Ni93FN~^dWw$kOOB6^9U8-%XJ51o<%745$(h9^!n|1T109boxjI_X4C6a~xp>3p zF8};53Jyv*GhoG1LdRfre3C6C7{IaN%$7ozz z6Q-zWu$@yyo7r^GHTv?yfS*>u}2S6I)r#n>H!#eg25``e`wW!2JN{15M-_yn!vs8V=6H7BibK+!{hfgj_S94r!Ci?=p?===~Vw6=^H=P43wFVNk>$G6A&R>$$ zdk-nUmtbgg^B(AJ~PVpg2GzLJTk8eGf!9YCT*0Cv~Mx>&TnIbp8;j*$L` zch4#?6sP+(=D~(KHA1QRp6HdJ6Y=P>qTu)%Yn?6hgOc7sR>s!&DAtNX(rxBD8lReo zR}&5TTeXq5Y_PlBZ^qh}J@Irt{MFQ8eW{JvD(sXTI~J@7=0v8h7{g!`O(t0GUWpeE z+W9TYMgpX8)8rlX_p-LmM66@#^fAlysO90yI*v=sRLZiD+s$i$eY;XD0o4}wkt|$B z_X|M<;;_Asuzr;5)b@r+c z%9dUj{XYIxb!i4JL4zMay9Rs-)K{k?z3%k{o=Wer3WG40uQeNeQ<}XM@R0PZ^~+8f z$vUcac=5qJv@uNh{mcOe_voX$6aS%Duv8w-l%b?V#-KChD$tL$DK4n3X_0YHdZvH*!VTdki4}7U-SLOx`Y%|IZy~tVImk$S@oOcEhI9WE z%hP6G(^r;-K}{D+Y4FC%!eOqF;qrJ1F+^2$H}ykd(_({n@^;;9QA-%dgh8dcJ6jDd zc#buS39p|yWVIvAF!mpVM~Pi3#;ntzY8g!W{suo+!JZO}+&ny|>gagdCU79M{|$n) z6-PVU$BoWG2fD{GWN|Y^>~hKefo~39JwJ2QYH#HaP_gTnseQug0|pzLaoWuoxejVzC#Zg_2)wRC9cNjpYwQQ9Kw#~$q({N(WVeFv)q(5ayJ zV2H9ce(n2~+2@_{ILBXe41-&mjX=L|J4Q!H)kch1e;;IcA=HYbNLh=Lt`{5X)Smx7 zQo(7y4q`fBom~E<(rUY?EQ4O&onar#C2pG}mc>CD6E zTM+liPx^Atv{1np*Pr5`mvTO=($xJh5M(A@vO;PQD=bMLR@XV1!=v`y7z0}|a7liO zrtjU|EoO}Z_VEfXtJ#0OYcGNj^@eNR{^M&iX+GH_hW^N*G|YbT&zq}IHE{|R)AYh} zv)vS0ueM|XmnCsdqAw*$vCeU`;1;bSVe|$x63jTtQY)`Z&2Vg+nX=-HazCd_xd2eD zV~my5Dk1FsO{|-aN@jX*vgj2faPWq@-!~V)%_{9&aOrq-nu1oya7gv_c-9;wdO2+e zm3Mo%Y4Ixz!$OjYi`n;Syh5jziBO}JqZ`W?Fh}5YYqv4~(USn_-qDa0a!ZROJl#mD zxoLh;w00iUPt1HiL~yY{Hu&wG^q}CNj3$0S)gbn?zTYqUMb%Dio+(F3Zp1|iTMnh~ zjn)qs$TFi&6Rg?!DC0WJJ>PXOPe))cUz?uBp$C^bi+f#ggJQ$(ou_VP zXi0a`(FTVdwO8X+&w1<3U|9##hUo=sWp6vjrP;i8_$r zofzdPl2r+-Gc43#l}Pm};%S6p_hDm!^b6?OD3r;s?U>o(IO4&*`XA~aJdXs1`^wVW zsT*bcmgO(ozP3t%$cn`blFuhOyO4(PPQ*t!$3hj$$n~=Xn{Cmk6Ti2nsi%iQVvjD! zW;{$vp#Gej`OC!5O7hIALB_c9-7ZGZUWgh3AMsamq6k*xF=DX`8Rtc&hdAx4<1_OA zvyW1c7!m2aPbf$UTPwxQR2+N^!oT#Hx3MjmZ2MM^nB!Mz2CveC9uR(nIkPMC;bGfh zQl><^q7fG4T~UV@RJdslyb>eWq^VdyZrPiXd?m@;{+@8>R|xtLkp`-GEc+ad3Z6^J zS|_k1%2;XLdzyDuz#}MZzA7K@g^WcgiU2ram@WJcsZAxAMF-ih&B3s~Y4QD6n}aoM z@U*<4`s?uU!O1!$pjB)^I_`g>w!eW=c~UPd-jFXwv6vOTeuDG3hKX*19;wbQ{x%R% z;7^pYOG<Vbf_B} zld4g@rL(_0{NYAh^7!Kip9%}9!khSCw|pf0C?O*kQ?hzC5^zVK7zeMRhnFj`q(KPA zP%{j3RHu>%&6ABx#lro**{AX}?S%F(af9d(>M!hS-5qg$5vIb7y&KtD#Et31#4RO< zv+U|6<$?S3h~aQsc|_d$Ksr>hm{e*f<98 zo4m{ESU7iSs7ph;*wU)Vx35T@EVDOIYXMY!`@jMYF3j;5s(2`y5v*euac?YP1}U)T z5ya8N$0LV78yUoM43@01I0XOK?*8$jIkum`StsL8wQ!4$2h>)4q9q4Y~?Abd2{7pg|#5cnR-O-N*zopRc69`Iy+9~WvNsP z)OMcp#$f&qWzt_MrU;K)8V$z2Zk(MOP1vRF>|l~ubrhLgRz}9Ku+%vIN$n;hRuQa! zwL(=34lmKxWEzFkku+w_K0brhjGn|akng2>nu`@%Dr;>-=^_B2+ZJG2#xt#1cP|V~xbR*4ilJhqcz;9+^ z8{_SlB__tRzu_rG+WXGZ@>2vMl+%L93etCAnZ#SZnqCS3<~t-|%r`a6|MgOE(Y^Ib zzRsuwL6oG=G|aMYE=@|LbjJt>>w$>V7MreRg$U+vvy9SE5T)~rt&J68Vx2l2=cGBB z#2seD>75vCTnUs1r8L;WBg4hLtkNC$r5SvBrty>!5qZ^y9JB}`2_c!^eMqsfSp(Rt zY-nAIb~L#V`r8``k>WG?!6jr)CICSxj;mJ?dlXyeg=QtEoGq_hk3^D>|6-WlTZY5$ zvPFH!@3dmZqpg1-MrsgG0XsZ&Cq=>|*`v}iH(H_%#QP?$VXPxCruWB_iLFv&2|6?1 z%2RgGf$-H7<7c^>TMjnm7dm%iH2K)ra(Vt`&xS9YMXl8lc_Uys)M+orcm;1L z^%uP9-GN{&sq$>Qfe-jjm3POl?ikJ4PVbgZm+(2CEP?BfF$r#0&YOD6C)qj>bErg+ zf(DevOG2jQ+c$r0y~fTe@k8%$Y~0DW^* ze!e9a28}hY%xxBdUhqOf?aZ@N-C4cCk~-{atHs9RAV#KX$2` zGBH~RrlOfNXi^oVO!jr$+OUnk`S}r1m$%yKXVrAYNmxB=*Pus@UYxgGox)lt)Tjlw zEAli zCzh%!<7wdV=rnh>d-6s_g`}{m)cz{}4rBCSwcJG&uLrOddN=SVj#fpP4Ps|~2^B9$ z$3X$2+6K%gvbJh>8`=H(H@1P&=awayGrh%}E-Z36oWp%alQa{=XK8lWLYN{5hKdat zwW@HxZUaGDtT97Obej=?FpvFM8;K1zm-Am?QO!j8VNgdF?%Y}n7`pK3)16lSwYsIIwf6@9^jxFqvk)Agg=A~Pzefi2Izz4IKajI z>Elv$q`p+3Bc)_f6)hqRGzjBc2pM!!r6dS`OrTY)!LW>Q=hfDqx6J<#3V{li%S>@s zFN5FGj5Nvkg+5FsRa=qhzj4 zj{!!`rH4Bk^|;|=?^y_NBF*8(Eh53lNcdTO9%JzR`xHP$U z1%LSv2vP%RsCO2jYXg_|qcr1Egz&-Fz~8wwr9Y~^RnIz@ZOKD{W`*IpvB9IBr5CtX znqyKN_8-hD-)z19A2~;n0Z>+~H}SIuO4UD0TmU*mjgn#pA(T)ft_8~aYX__l{Fp&k zj$B44kk6lSvW8l*Siq!y3LTtT{|mQm5QE$B{Fs>WLLCvUpWInMWidvi4eawy&JllH zmnsCoMhc)nXybj&45C3X=KOCK0i{}8PzHOkYvPu!=y-ZFf7scCMsK|}K7M-f=L%YQ zwkJVCTLRk!V z2IyAN2Nw~0WJMeD;0~FCIM5*a-eYYuP_iJ9!&0C?vbW)_NPi5+Ez!qVCt-nGgLgPA zb@qEZ`ffr0Xf)I}ya73r1DVQA3!zxjIUh2EU_%}K=LUp&7R@J_Lkv;~c0tHdYE0Md{5<}V z3Aj%|Sl|yF#Ty2CluRK>DV*_9yvl|9*BKY9y%E3$C#>&RW8bmbUy732x?0>m>N(TGU3{>-6 zby*7xP-KW7WdUodlpWR*H?Z^W4i){~s|i+VfSFw_L6U;IHOe^f2N2}%?BAyJPa>$; zJB09+z4?{i*=mpE+}4GXg*LE@y;ym_3ao_s#R9HQLp*6iv- zhUetd;*=@i#Wyz#jMcOWzE{- z^$_8Bcx#S7Wq~)E-k_UavNz7OHY@J()&oY+DOf3MAAfgS{P@{FG1qO_INb`N@+5Z+FM)AUXPY5wT#IE~>sVd-=`DM!>3vK1xhfn9N&Q+wC@_Ysu^CqowvQ zYCqMy`_6z)E)apHnBho1TiCO%``;roIyGVaAZ~VJQ6m})8vijydPNm2dHzuZxX7T1 zu)2yo0}os0HWD5*NN-!lt>V8-mWI>92fOSSi{XILUtxv@uyq$0J@?RMA<`h;E%``i z4D%kDE~c3rlry)V8q$xC;8`41cMu5}`o}f<4?UbnOrP{XQ75{3P(+T7#un5Eg^9W<%<`I#WRwF?(4}knt%^h}*TmjSot&%0ycM>XAf%gRhgj;;7O)t&N8IuB*|0-PUNbtN378_j*Z zYc~$LvWyj9d!68xF04MEi)pXj?;JR}&F7kS2Do%Mw;dhvZ4QIh;|4p&5#U0^u26yX z1T(Wr=J&J@gy~_yBru%nK3FM|0tjl6+2R)dSrx|=DumyVEVV1+O4g^ zgfF^)3T~Ko(Q9sQ3NCG(^jipK?MVY>Q@vW?kC4RQfI8#PxtM{ue9E{1Rje5ZMh-7E z+BfUAHF)!@BVnvZd8o>s`!gcGB}(B>CV}F5B_Hs>nr2t4NpD;aXsfCP`@Oy;^hkIO z$SjE@>p73cB{n#=RD-lZ{plmTA~&zIbUPF4uRqlFFSZ4S($K$8jiNyVl3^H^K@c8g z0L!N=E4Q25)pYKU?WcQxO~hXgH-+^c2DXR++F^6s*^6;KO060xW@&Y73J2>L2_RE} zW8oXa?^oxVExrzXR$!eRA%0B+`(*4TXRyxqWbpp+T*L3oG@Q$F49V82bkXB*y{LA3 zZ%E1*zr9UPuJ+|&Z|Rv+!;4eWwMhHmqutNfB)LAXm(fFC!6S*^bete6ypLK`!k?)p zYvaZR^9q4K$4;baF*X4rdF@`8yxfXbb^jnWXh&!kx@a|=ONAz^zyobv-chm3w!Rc-*RP&7C*-qg}Dd_|}HHR_c? zlMTE^ch-Ivn2aUGT}T zBJ@WRT~q4T7UT`iklLN?mjqS^$4=v8Vz2cl%)Xxx@Pn;qn+epU&0@jgfT3=zik1Ml zuYT7G^hGLKu$`PR39^7NO4bMyg12<*oh2)l$`il@U!6Q|gpGOK5K{sD&Av~~!Fi|%?oM8NiiA6EX<5uHZscd>&m zCJA|~L2}1^X=y;kiy?-QLx<$D`xy=H;G$tw?M&<5W4luSO(ERUF@$mzfC8UQ z!S?M~i5w}uaP>AY}>G0do$3=*WM2T|t7_VzaXfNz* z(y0zvowy-N9|LIDz^&)<` zv3Sk<1itk-BD2vwaP%=~KHR{uTkT+8HrMZ!j#{MZYh~+Um+3 zM(F%T!ph^GeoR;wKX+D4T0)1k_f$>o30yc4wx%LfbX0fwg(;8nuC|$#t2&GWWiHTa zh5OZ3`Hz(Q%XLdJE4wT!mnTR z(bZBpLxb<WJAvmTfomGqo6{4QiUPih8VpyhAr5{W%Ua|4s(vK%=*(Qm##IrlBhg0=;^n)lMd7lof1Q1zqga-APw$MwvOHs3NWZx z5PnEZILDFFgVt)wm+Q(|-;oJsFwl~1b|o)u-HWWT^OVZUzk2m3U22W05w)UhC}~2x zL9K9(>J!^HF{4;DuW~v3_B#fKM3BUC`ZW89%e=?KsAW^PjT!BmcU~h4SmA4W$zeR# zm1%7G2Ac^%E{Lc8Z@S}PBq z(Y-}BH-vzH7W5fpRVA~{+x}idSPM|&yIAO4JlJr!nS*J5h3_# z{TXKeW}k(%npoH7(!_O=j9)%E3DIo^f*IZUXyt!5H>r0vIl9tCqP=b`awt8o5nj#A z#cG5C1Pa&1bBJ6AJfI)u?)U)G)c}tE&kTU4UD7c|<3t}g7Ys5N2GE??2hMsoWYi0_ zp64QW>(L6f;B>krwE|Sg9Z)97CVc(zJa+OTUpB0kZGdADZJfLccbXZ*QwdEY=u^Id}j z2)MOsmlSiAm!fK#DT30N^FW;%p`u zG!&tf1IcJ@-ffeeb^eB_m7TupuvXJw%M7!rb#5U}FA?+whYw3oAsv;mRq ze5?FA>sQ*a3QY(vBoRg;9Vo27J`C1sSAPSoxbRX7SZKXYVBzAz8+CX{^6eTI??PB~ zY`9`Mt|AL~7GhZvoD|_W_pDGwk``ANOEI2;e>U4!M6m~44r6n?YLS~MW_Q}K_7W!6 zz%P-)&SS6TZ_3XGMWLzBkR|?SQ8f=}Y3M+a12nmmD3AZl2=b`^)T6gsUGVBQQdF?U!O!ad1bg ze(c{(%fv9}BwWajNZmw_q>V5zdU|*?mr4M$mYePAD&YNlqB;~Wrx|EzwX0*SmXB+T z58mG-`I%Y;VX`{Mzb|(4XE0qheZ6B20;sG}c6grP>}IE=AR3(p97RBSi211kY{;BH ztl)z$L+p0Pv#I30Fmik=w5x);mq`;R-X||)h?(NBqXKaTE-_#Bt)S*$#n|$rSm2la z`oY#cJxG2D36};|6}pNDM%ifEV&6NFiOK?YUXsiTTPz(-Gv))?mJ?)25w;ufQX~Q7 zTa5_Uad}lH3UH}39(SG*D1#5~GWNp%@|vjJfp-G3-W$G~745LZTenINI=}=VJel|p zSesY}Yaevf16(z2===;-k^a>CAecRVUid=cfM)1F&pZO(oKstg3EAaBkS+j@>)q%P zS@R~IdziFj_#v7)rIm@kza4v0C-@dRJRMt2x1{CKu`nN7%-jrI?sybTl%I%MyML*# z(iSFut?SEfcMI;IThGVUX~d0AU@%dV4(5B`cs6v>)6b)0ly5uH%IP(Xl`a_gi9W|~ zsOofVVWyFhuHj-cyJaotV@`m2a(2Ky{jKW`>8Fz4D>Yr`^~V-L&2KH=A9lWM(uq0L z+i>P2l&FN9x|<=BFbc#$xt)TqYsK+{t29b;VHNjJPAZzfan&+Oy>x9n2D_$w=>Rk zXJFv6b?WNu9FN>z*=~-Evdy$*&vYBLyM>#)+@iI+ALsE%-%zh+aw@f7ny1I9Nm|Iu zjk*!@vb)@3#c@R6{sLapuQsY!NN8;9VB12vF2M#TQG|Rg>pl&w-TrD|FkfP8>a2g(zBbA$%U&C_HT*e>d6oXBxR`g1ogO~JGZm{G zDXtP_reUUN1E2_`mou~b*{V*Leq^xM@EXn=bY@Kv2moZ^!tJmReOC;j6ya+E3-+vTrhvPBfsw#l5oiedFXwk?$9~eb+iUgdG*E zlOd6icY1c;FjKx)Pl$#~ikkYSYvwCd&nAP%?+o}b49GGo=RcY;JDnlnVj<`PNF2iS z8Z3La)0TDz3YE&exHa8PeMdlu5%v=NT1`hhTCp6)Rx!Kj%>Dj{wc z*G3Y^&nIcQ8xaT992LbWWxJMm;90^sRMv0~Jz@s>480AGDl=Kjxg~T7yYDWLJ1+x3 z(tGQv#!o_7wckefK7$ZzlmcwF?hx!xXTH@jd52;- zejDq7{oSj}qRm;3U^U{(95m=Opu{(z_c1Osr^^Rrv}elYpb?(nNBS9^;XAn(IGHM0 z^Bm^yoZeKRNObbj=obxaFn%5Hnu6!!jqoN#71*DDm^etvN;ZH10DofJj6!~+ecbj0K)ts z?fX=gcHksxo2;Yn8IhWUB}Xy(6j?`aqKXKi`)|m`Nl)ML&8RS96MDKc4X8}{W+*3O z2M8{o<1sUQX?!#Jvb}J){M&CRt}hL7u)Y0l;ImQY2qR`!O{$T9#$q+95d+lGomC6p zHx?oi<$uwhyRQyAi`HVwpFOP)xfbShWc|w8M51Mtjf;y+4aY+Z+EXfRq@FpUZTom1 zI(YkZvldK8?km*+mNCn-cjA(iaG4D17N`@Suli&atfVX-;(OAq(Hb_gW5w*M;wD}E z!S6QBoi@vtyj}SwSh(YcU-&Tac~Hk`&mwJrI4fYopb_R{K}YHRhBD?$qbQ9_XxDBx zlGGYKNIL)gP59Y58ewlZVOE9xn>Rdn$G&+)@jW>rPb9avFS^5SYj=dbE$dJ8I@#kx z%l)^5ggN-BcHUx5Pjw%&s`YTJACy{FP;qIqkUks*zO1&m6L?(_s~TwmX4*O0-hy%i z_EF4&(;k#Nf1BT)SJY&KQAUrz+axtTa1){rpgLUxI#>bZ-2iGd8a>hFmX@BM^Ngku zE9t%-M_&bXaO}BH8pbR`Cq$p5JlUqZ!4K@4M<<0E; zkV5tOXK1+>=B+6n_?j@qij4MxJtKllE*XejB-R30o|wLK{f?g|QE2uykEwg|>o1$v z&Wa1&M}yIx=~=b@v;3PSK>1%;0`qQ*IkiS5^Y3t6BboV~ z2z$mv>i@Lxtn#Vvc7Er+pVoh+mrC-MhRx)e4J2Cec$9x{>TrGPNP6;k$feR};K;wm zz9mlXyCvs!`)O!7@r0Q-*Mi3FxF!J- z=RxgUe@=(}$iEgq%#umne{(F#jJe5UrkHv`5!l>OJ>xYi30OVraO{cL<3E;FS`T=6 zo8`HNm>3?&tqg`I*;L%@RAC`6>Q6O%Tq_c!?@lk*f{|28`8T;cyO^|?q*@~VR8<>8T z<4(CJ3u5RNFA7cL`7Pk6K?Ba@5X!6}=;5U4U1cFEuue$`7BPo?UQY-S@gjjHi8Z*J zt*ba%@m))e-VvAOj~O@NxPBm2zA$35I`7Wbuhm|~IlNil z;WXB?5PjBF-wSob5T%zp&odvY}YFdhjB+7&4_ahcskaU8q(qG=lux%Z*7 z*JT}Dle^ZT`kUw)&$S2Dc52Z2%WvRnEan#p>$B-?W%2x3Uc>FZ4k5++MNW4q`jNzw(6uT&+uTLbLxuXrdIV@a&o) zgkNXa;lTqU;!$TRbRJ#zd+2IbCW4@a@~sCDI<((utCdihJ?=BH^((Lm)iho8E7ZVr zd7YP(Ej5n+J-E!p!RqH1`mu?qsa?ljy#68bO-6_#;s^kk3%3LQd#*bt78G6wdv43m zw-P%cT9QH>9^BkFrnoSUB4C^1W~A+z`#i>-?RyYBARFeyCGuDS4B38`ney7!(ixE5 z=LcZ2fKw1X3!F3YzQu&36m6s%#587o`GTsD#yX!}!}u$17s6zw$i|i9v-56dc=5w` zg9e|bD0wCCeXh2~i9x<*&MB|CG!uWLYJoQOla-|3oavt#L1nN$Q{uo}i~9|T%I1DW zO-cnhTlDr4PsJ3zADUh7yK+Ld=b^@`nqq%=LZe5Dx~jn39D%gwA6alE{`3VGlj87= zE|4da)#};56t&J?5I7!wyoB61UBqn@ymBcNv7f{;;;}jKr14tI_FRRhc45$>2F0;1 zY35dY)~t0&aofbmD``YHf3Tq%h(j9q>E!QR1su6HxAlI8VXqozQ@28UOfI+|RwYaVB z_s6RRiqlE>n>~cudc8DgiG!BUUS3UY%G@Ta`DjUe!C^HRP&RM+lgOo{d$(FJ_?x0d z8I@V3{^i&b2PzOqhU3JvP#K9u`tjFTa$0WW?lqTU_o~BQvb~At6FLC@?(OFEGNp(< z0estc$E9{jgEXQqAr(dk1TIZ7Ljav`OSh|e9LqD^In`GNmd4(9h+cPtguluS6q>4_ zZiRz_v$kjaYUL0H@91$AQ>4Fat{++%{`1uotXQuiz_w)jbm`MUf9#McN3s2QKLB3R z=*c9gnm^DUKj{*WbCt!J4nc__@Xl60678>`xhIM>p#fv)=>s31phy1*dktXF{3_~n zNClIoHa#VNo9U?A6ir$$L`8@Nj+n;*i!OFh9aX?6-)uX9s3BiaKNA|E&M|;mOx#S{&9Y8|3dL06N@8Np(Gq%D|6o{Ei{K;fa-!TeWYM@v-sA zsu}>=)S&P9K10?1^(ZA47X9fSUfWH48`pxgf=35&A->1=Y<^eUg!&rigYnLfEl|0= z&}*^&skpq38(U|S!5gz26Gls>`8Rp+li%oXyV5XmJ1FrqCr@@j^IDLS7~-{sY5?D zs3s*}`1`dE&S@FD2Wn?{)K$MOo)}8|_WdXT=u)F(wJh(+m1scIrqeF3via@er2DD3 zIRo504bYJ~o`s4Yl=hnUcl_?_?B*HxZt zk<~^=sU9(k!hXZnOIoMR?8OYNIX+t)RsJ}!B)pF9zFBoXm}+lhQyl}ZAGIF&Knn6 z(acF5S=-T#_))-{wcg*qUvTlP-@DCC^@atqK*a;Az?;5+@`Yau8`Gt_OghE~oiN~a zS37bpbt^nugdSA?XC{iTq#zE2H3qB^k{vT61Hyr2!TdzT1yPHCvx6K4Mm2nor}LL8 zaUI}u6aaRbra6wMR$_o;w3P;c6}$~*mNJVZ$W8GX)G6U)ds*sv?a1E*ijpjH zj(L|^EqgtP#f4G+&P_UV-iut6JNTrRw{LOBshqf*P0#?ZbQ;L~Ia4RhpOZgaA%Bn_ z5*m8v^X|Tnyg0@#CFg!;Dcj$wsY(EOjmN4{9l!i`_?NxUJEH#c$pod5!G;CDJz4$x zrC^fI>S>**gFS}&68hu{`Q0&2)x!vmWjO0*Z7=Tv$7QcGN0-eVs_J)%@wKS~k2-mlXXMxMC*4p8!@O_K!}m}>zflKSmdPsS9J78%B)_&3l-1^Ky(rb;eD0*# zRM8t&(~(a_s^sAuKtE}giz`D%DcoQVD7_ZHdh0J>d@ix*F>P$vP))=MFr5U8DL)zM z%lvsW46rbYTlN=Rfusj690t`e7Bw+G{+kk^<7B8dHk1|L%o<8)Uo{^|G`~t&^)VmI z&+KmbiGC7J;7xIys;)glQ}Eeo3`~xwA-B8JUItNE0K6;}&g<9fxcU}^AEcnHI9rFv zYkclbojxs>T=DrtZrEPWuUw4+*W0uPG(vVLDFN_(0UE>-pl4*Q@{B>r+Jmigb} zskt3ffj)tw>Mxp9@0VB0?zL7Q)YB!~3Jv4727V(XJZ!zw=HtfTCXs^V*O<1f9eG{9 z5f%~YzFc1?=k&bBTnu}a**$YTw!L&m5@7PXTHJVOXvnXyv`LGq#ash4-k-?d+^|zr zyIUpY@P~ErjjTK6xaLt)u57V#40Fy+uk&G5)cE0OCKdgobKqrjuEbsL#Zl%fy0ile zaD0GkFFafn48Qa&{c|i7p|ASwuzOx0 z{zkmR!Kn^5sE>#T%+dey0H^9*BJ>Bn=_za?`==}oY>L3^5&nxpra+i@o;)Rl`uF5? zs4Zd#HKubCRQGw|qLwDfsXqg-D4YYpDPeEhLN7D%VLOAPd|nYuwVxXG=k?GqXxCuB zzqquO-sU+7N64iOUv|H;bUC$sxE^}a;zrq>E@h(c{W@Xl>M_T^(VuUig4+l%H@aLF zAq*9g%$NQP$y*F+Saixe!J7 zgRPt=r{Mqy{9_fs81@bF;T_k7r7b@0hxett0cwf_U%=Y+2K92v;}F1WOaw1`-;rpA z*$eiIdcKo(1B!QgL_CVYe85>oo@kjA3%Tp_%n=& zrl(k&a_wBdA~^w&G&~}#Y6pnK?l=be_)d#Y=`F;d3N-HIZsscMl+9?;&IKs{PoL7~ zD!0$EOmfphJb|?hHmY%Bw8YKzIF0b}+gfY2R`f^v6H%&By&`epprWz!6}eu`zqxAQ zw2ten3ny7*wvD|wNa;nY_azFiP3qps6zk?Sm%~Q(PSTe|K5JMsBJPFavzWWQegHzS zUY)Lt-|iI!eZ6DdbRlo}+vL_bU&aOkeAzON&G^+)h)RJ7sH^a!|jBmJ}~?J4a8pS!mIs z>H_4AirI5-Fu~7|8=zKZipw~LgTXyn>T&EOstyA;cTuW zZ%?x;3nDcE$0MN{v-fYC2MT?8$(M$9nunnoQk0cvG4m7ICxnH&QnHq#<*DwQX4f~l zBvm=RlQ-ezhO0Ngc`9Wi%ykb_N!14h%%A-~=MPi`{g62#)@ECs&z4qIt9J6Qz}16< z3#|4@CVVw=IB-7TBh}if7RLXz(4=*}8%ASrOQzCPFxi{&0Cc6=jbcki>eUM!H;0qL zw%lT4>$1%P4?DQh=n|nn=g5wN-H(13onfXOwIkqAb$l3Z_Axvsnc{pKSZ>SBx)uiO ztWI#0t!dRvq~m>NdBK`;T4_A!BTnM>sgeI{;K`PZ&mD;eG9o%*7G4;s#x8FU(}Ml-1LIcn6jAtduQ#t6p7u55d_W|o=0_KvAp)YwU(DqtoMs$o zOLL>R#_Q?zI<6sOPuPC-5Flru6Y(NPB(Y*Kj(-f(61y8`uh1D4d066ew@FN+HeG5$ zs4^W@BuG-5eax+B25F~DT5RdHrGtB_|2r~PAljx58m}|J?grS;@ZahFvVFcr11vAwe48Zp!C6r)NXgCgDxdTHuiVtpa{jP(o@+Ql5 z{EVr=L-y%QY|U^wpUxy;WA)&km%kEpi9?w%0{+@No!qhqz)zdfGv78Awt+Jo(b#G< z&H;$$6h1B=fCVywWGe(ffePuZ|Bh@vzxs%Q%u|;OK@Dhc_4qB$@e8;&Z+4i!b}>`a z)4p!zI%+~)speQZ_5W>)|M&MErPBc4`gw%~N5QzEPOt5<)PxF8#L z9>0FL)x>LdKkfX&likzwzrX&MT$qZJrwmfUKs%h+mpVA>??C!Hbgmo<1X0@6KYf3{ z^LN{DMsW1>i?-U$pFi@QlSqRElzVPcy8D!1ClA;8mTwz@O`VYe_g$k&}eIcqL z2C_qWC(s{u{l+y%fslOmVlze<2K)5Cw1e}cjQB#JxA)usQ;3hKd?p!`HNd@K05 zuVaRd{h#UIV>-CvoRXR_+373-!-0;Oy@`6Ee{Sp<$A3h2kp?MkP0}Pum0Y$v z$hw55L9L3g#(d&;@UGMs{fiosdp3ee+tCj`fh~q&Y-8gJp0mpEc(1M1LE+Tqq36TG=r(GWyGk+V_6eDxTrs11+MG ziPJBVgqoK}aMFL|)VrSRE&_W|v~48tTSuIQ?}wf3Ma0ekGr|=ANIZ zsPJhtB}xvod<`RbCwF-elsDCoqE)2EI|CI{(i(u5K|zxVVQ0Xo4iZ+g2|=z&s$s(F z8$sTb{8pq((qWL1-e&AC%j47$TE*JKK#eIY78ER!dwGxsj3Z+bzoqSyl9o!RX2SS( zdX`>ShAI5+Jz0Z-2zBQhn{WN!$SSFE?W8M{8@^lj+tQ-0`-L!{?cw!oX(??%I_h$I z&TRkph5^9>HyorrPii{H)A0DUgOm2H6tQQROwZ-IZ;z3Fkw`zC4y9f-+`07@ec3i~ z5zVMsuG0?sf(O+w0?XvyU(jgEVAp7O$&*+! zY(qV$yDP0O!Z$5iPeD|vg;>1b_T9^MoSmJHL>U5B--RlgfJ{<6lvWNr!ap|H4Bfv1 zH{nu>yPcHpcL)Gac(3 z1+6B>tc0A9*9`-M)5``9{fhna%%=>1dHar$#Nqr~0ECqAPkE64YfV8Y$w1(4WMY7P z{RK?y;6dEJHEr_20X$|h&KgcaD4tSAd3QFt^A;`9o8qP~WRW3ZIE)i<2XqK5^=i4C z^gW-?&kp_8q8iD`1tn~llc~AkZnD=|isgYL63$lGjsQ=x@0qjkFOzyD7igc|?F6n` z-2@1#mEpQohq7Ao(2`>pQCpmSkQ0`Z`ev5W_tL11p&%hH3AGm*DP;V)2Ba(qTe}N| z3W*Rp6Ot`v6TK>cY(t>wj$Z18;4K50qpmdLNV;^KEwL|!4qyxOq=|5)F1T#!kt!8#TN#j>eF zCKZRLn|^5Lt9(o@Rfj7n?j|#3s1XmAlU~5c786rBq(+$k_H{(CPL@PSzZnNgojTA5 zciZwhu!%y3Y!GXfh z=UFUQsHla{*I1y8#$X8sRsEP?l^E>7#42!i-a$*5pWjNQ0L#GD7rjmZwQJ;LR0vn$ zk^Cr}t4PBv?ly9SY7C5jFiU8e`vAmJA}*4Dr;74u;Bw!EqlTU7>-O384Dk60*&3v& z_%Dr6&pnpudhuI;0ia)>NWLO%4hFUjqh% z{~d+<8t;?a!O6yhg=gi7VbQI=LFMzg)XS17NQZ&yM?$E+Y2CN^g74vsIV!UWdn~Z; zVO2AJ?urG9uFM$Ft*81`bMo>Nzp(0ti@?ySaZ34VXLj8N`_3hPzaKbHK@ZyEIg+VF zwY@Y-T<_Ugb6`VCgMxT@m|g!lArQVjeV@pVV{z>B&nP^Tt($PiI5^Y5;%+u~usUd( z-kbmL4A@^6|0x0<7_;#%c7MxqioWN*i`i;&X3@azbE}eu2GA2%Vf9~G$ z?wvafK}r2|@x`z_Rg4ZpL(*5pt%d9s0f=?{dGgj+2_ZVCUo!M`BK_)LFXqTQtA*_d zYC0eJ@*$xM;t(eBR(T89?k86eN-*($or`Mt!ceo)|IH?uKTK&5OHW_Re*dQDKXC^@ z12}*xr}iwN+Os$BFDL~wACB4)qM5qq8v?G)1emf+3@1G>``+;r zg2|*&FNM6Q|Kc{xM{{B`Ub|6`2XSrJSE#nZc|VURh<*Syfgu=_eCBe#BJ_?kp>XHd zj7E|EnhYBjGcE+rqfsO@Q&DwXWu^14kNXQiCWX^j^kq`0Khz14$Y~-y?O*rQdq=vV zLGhR5Cjuc2i7B3gSX`YRL0QrW6TVXs7-#zb+vI(KMj>o8oS62q}2+dw~hB z*lQ@Y^Uq$s)Ehm;jgE@nN`JT&K7&M%y?_$L;?`$XDOcj*&%YE)E77tr*|>cLa_E1V zIr3e`9+dlPWf^lCYM{TL_{#dWA%quz3 zVsydbbwApxsDti?t5<&iD?5Hlz#Bk)>Tljsq`h3jxe3+KH4xqv$?U;1;9F}GqOO^( zvV_Pu#8P5n6H`Jkg5i-w=ry9m6cJcn8YOmezRop%ceNd7N=7MdYbp_9lbd4;@xQ(F zg-mv?Z#;|1Y(| z1T^hc^bIDPupn-C{>>ec$h!k=Gpt1v;LMIRQaXZ)s6?cO?Ena)tL-ZwU8^>TTbVkr{B|j4D^_@H!Aofn8gi$Pw&>=&R-D z%~RYiB)o3Cwb@b9^Q;N4!7+@SR~7t z_p^2xUL`eNZQQcwgogh8gY$BS?~6M=#Kh=~?N`tfX!ID@Rx+Iz`9nl+gQL0L(gIh8CdaZJ0jotw?6`eFEIhmA0t}E?kEFN{ z>ol(}*bn0yxnJ%FEjBub-UFOdGIn-3)#+)v@f=SC@$a!+d{S2hjb=}eqBAX?NqPJ( z$C$6DUM((87G7ZET(#f3+LQ6|4OVI2z9Q!RLS1FG2yt-NW?EmSU0#F*@Dem$vxE!I z&D=I4Sys~_PfS@H85KPkj_@wYb6p}Z1uZJfKg8v3x$%5JhSP=<#Z=3trSoDgP7p7G zJLgcY^C6Ou2mMXmfY^IHgw<~%Yf7;nU#0U!YEzoqfrn&0UISq;Ej6>QtS9IqjCSA9 za=9mC#=Ddh)v$@3KD^o9zkrF3*!3I*53GZM<4y)zd01}_=VpeX4%gw2`{)s@CXs4>SCqvcO$+-(5 zkFr4eBkAbH0u?%k;_)yjDPbYyul|V4kEyUCL1?jsO%8yK?Kf(s*PyN$QaQimgt8n+ zFUS0eH-82DI%{xEr223Z&&2fR6CGmj%koA+{IpLD-OJnGu*JgA(W86-a9aE}^iS;T zGE^use%#Czl`R1Q(Tfw?@{Zd=74|Pu05Kt(w1^33&@EOq(f`kkIt)Jk-eSQ9zi$N^ zI%BJxubteaC-K2sD#3Zkfv4S!23>gXON9`tx5hhAk`{an-IJ4x6=8=2HtCp{m_&q- z!16cg1qtQMCEOpDGL4Z5xxS-~=XlYe^IKd?fVfT_awE%_orM2<_Pym1G;mqq!Wp4m zc$;wo`%O{Di?~Rm9PV?8R!KF7*FF69cx`Hp&iJp^$J-Y*R8hJT6$u)gDssVJH5$vYRnr!@4nutI?$3>dlJ12*#rF@d&Xtc%O> zad9YLLNk?>4wK?8;z`))-Yav|knnpTw>%gpa?YL&r6TjWojY)!XjM_-k2FR6H08Bm z*5E1p;QAFzxk|If6n*E6{1Lghqza&>USD_%gmq4qF2e*D%J{im^u7OH@IdN(B;fU= zLg%*9E?!VwI_E3PBJgzX5At407ZJZ6&W@G&dfgJ@UFZR=t9faN*WJ=cRc8dC@UJAk zHKtrGR_Db!2b`#eUA-MMg;zgxIUpEGUY@Q6#r6fvEdUX5q*(LnD^E=$(y212alWN? zF9!93io_dvc2+%O2dH;7kKuo5eYzBwDK~7)^PbJ3W94wNzA7#_kQKA`%iLCJ>!>SO z|0@14M;o5Y*j(ZSv-!`gZ9!<8W2W_4fhHTE@HWN(-CxWsKVQ)By#bh)PhG%NuBH!L zU54hCmXDkrVsnngDYvGKO_W-+{EL$@0AkVwg*M_2R=<8hl$G<_M=Kn2=5^;r>Q@1| z4MMF0X$9Y%g}hQ+^`D_eA3t)7u5_J@5h+BR3)TMBmYawwgG_9Pv89IbnuYg-0k33PULh&dNZgZkH0tCv6K z5O5R)&sLgz`@^W+@P|2GI$R}ribil6=#NnK-CYpCm_!jADU0KcG{?rr2eo?JT0If> zdluS72BQ-N>@0gRI29K#mu%M-6kN6Pw5pumyQs6lRV#ohtLwf_|1<}5@)HNL%ly}Y z4$u*S3h3!-s8Rp%zP`-pjB=4^vd$KV)1;$*q)6RfyIzazgvEXnO+s!gIE6}x&+49Q zBu7?LeX^J$wDP&7AmIHJL3VTzTgG9&1UJNcMsGUWLF}e$8BIJueLS=~NjGVLyac%vJu|nb=** zPb7&)-Yfc}!3bwtD6n(Q?iid;zzCG*EMm$U+q4!E-Di3nUk}qYmrhR6L`37ICN2Z| zG`F&z9%>M`1qh9hQ-T5SrjMANW{gX0Otw4W<<|`MVbBLWx6A!(yvBj?bKPaxr;irS z8wJuBx36Kojim{Rh~60>2)wjF$RJ@IQjldeu5?aq5rhpJ2)ONM;$tefIugJf;&xAN zDC{XLDM`?^#jUcOAIg^#Lpb*{*bHy=3CK>&(-n#4NX!n2!^jeODZ7vkW()mI=n|jdUz<4lmM?v}PMWZp=+sz2C ze)|uMW^OdMgBi+kX}Vp$*v-e_rSWqfiB?#;1SaQOqW$q)k`e2~QI&;p`-N5kEU#;? zhV8JzD4wGRad)n*L+iNQD{rG#m6F?@jW{4V*5Z0!0<;8xQqn8cWFC&Bg~ zz&WY^96x!`jFe2+T`r)5?{sx(_j!o)6AU?7o1SO|>WWn;hV2)wy$($lAOHV&dF_TXt?94Y&=UTC>e6O zSu<)*?vZ)Zex@VrN|}GFr>^SEfiU;N;k=1&kWz%!dpgBCCn(5`mZ>x?RrfUPr=dI0 zIWW69HCjKr&1IY`H`A44(Zd+G?wtE!U0S0KeqYkhhst#Tdz*obE5 zrUmkrlZ$+tK)~+(G_Q+n?>i*zZChU~Vxpm;xh-G2lp%+a?94ovWhAg~9Ma^$;t7H%`pCaVm-8S5}|1w~^vIK+9U98(0`FJ|>{`N;2 zPJY~0@i+?AZ<+BN+38%YsFaixhdWDe<(Z>~J!S3jH2hUaDE+(j*RSDs?lR7L zOKbQ#=k{;G23aK;%1}!>yWW*b|6$BAChKdeQ@3VD#S{G159ch)Jl9rJD9fmhY;2c& zA!p-q0`K?jqxT6D7$4$wTpraIF^91@|Oo@UItieG#~J5ryv@T2dA>C!})e|EbG zZ7}*G`Pk@NfA@nw)x+a|9ETfKrSeHhk&)qez;I8Fb4TOscW7h~(OX#Y%$H*v?n8uq z!~ImzKk#)ud;x%)RuIK^2%pGhkHH}2;?f9ARN}gJytt(i;E97Un+XZeQ>D5rP@+%k zc#F)uNG|S*+1cJs6Ik$wrS0zIbN~Q{lBz1c=fz|Kd;5Jm26~zZ#$C+ftv|+6E{4E$ zFgMcb%}zNKi?}S^y4^2oXDy1q%m^tKv?ml!$n^~pl`6PKB|{o5PQFzwILp|$FBNxh z(|UKlX%W} z(b!GRZjII1u1$81A$lpCf~Lt-K1Zg7F}8?q7(Tde#3gL+mEzHXYt5f}-ect7y}TNn zoYunkV1Dnm+Y2?@=))}_>N(h-buYwcr~{t$K_zL1=(y9>;kZ3`rgK}~z+!1@``9G+ zcS#BADe3Vr-(C2F;-7^x#xj8yl#;(#jPSW117at_D712oWJEWIz2DIOVBBVnJ=2j` zw>R4bpKaF`Hing+A$ITuIJ|DP`PFxY_nm59gg8okV~qlW3E4tn(zlU+zbe)Sbha~2 zuhDc|C)sFApMIvQEG(O%b_AYupQ%r}Ekthe5l4VBEi=}f_T&>5?aq#H^}G9{_N=d~ z8Rc%T>reh5r}~nRc)=T)m=xky*RkJjB%V>ExDKbExom|TO-Bx)vn|~n)@yp^uDPEB zoydwUAAE(xCe9;yWUki2fpT)Ur=)3xkaACyvF}(0$#@{K(7(zg0tZV50W*qJ;2GvE zKKZ=Z!K^V&>?Qx0BZk7V*-1cLRxPGf%TXLnT25M7KK7AvHHyVdm_?FgNXSc&a!x~Y z^2IV)FmaFpOL0BvIH|Qu2rCYKjmwPiTML8zW0h< z3zSDCsh(u8R4SJkF!p$gjwOchY0KarZ!YJRQ*QhW7aOY2r(1ao`mPqQkj^tnNJ>s` zF-inBOBmLswXUT5F18AGAITx99;e{uyP^34616M+4UX{|OU<3fyF&#rB(VAuS*%l5 zDW11k>~fg57mbRta)I50xI4|tMjP9-PHEWWXcIp6gH{lY9T!+2fpo7fDwzh$z=JJ{ zk7-*!?P9xr^*%`Vp;ESPaF~`qn6y-V&JNdtaIdo9&W0!P%7xw_xu+w;@ zA%)4}95itEVa!>D_NvvDC=g^mF>b$)VZfViVa@F@huaSOt(%iiRjLXZ&d-Mwli+!4 znWX|jy0#mW``vwCb@&adFRN)!W_JVn|V&QiP~WWUI}@m2;b_r1`Z7bF;~ zbLdYgv79v!QYvmey1yM+qJp&4SI2f`1_xywcyK;uwUa~K_v`T=&U2w$!MQ_&!GjWq zTSrX~c%HXAa1`EiJ0@f6y-K&+EZWAhwTBWINt9sXPR7BlWc%NiZ+0_zhv2s1)qUt1 z&*qZWU_wXYKiXR*Xu175eQo1(wUH5cK4*TWa?+cdETxotm~;9d8Ghl3{vB>FH?~I~ zrYzDBcn^S49}bKW2#4NQBC#$nb|n=U)`{i6+sARdEYy9Hp6Mq9EcD#o>~b|;o(deq zc19&mw3wT8wfuzS31q(o_W(B}BO}8gjzgeOyuL}s|5MR$f#U1cC|7H-_mI#?9%1K# zI=&G(@B7ZDe2;fJxG@fipkGXpGOi2OrDdv!-*>)QW3PSL`biCrJlBrvd$86KCxdLp z$@4LFaXO-j`Tt{E2+tc(B1+peL#|-V!SQ(MJ&`XNF8dCyV?|3de;)8@&f^m1&eh5M zH8s^^mfrXN{1lkgK%~#R%+Aifd{M*D_C}5M0_eyA9PLSRPv+2a$<6b+^HFk<7#-H1 zRug4i+ze|Y2&$iXwch{2%QVGEO1w{hHFbViKdsZ(fihrwkc>yy(=A1L@?kOm!cFGf zes)83?yC&PuEbS_893N|2M}8BT+)>x_cSQUt^7CMUQw*1OFMkOowPJ+^{Ka-oN9@d zS!1d0Rllx6Bop+rNq= z=QbclsOeScZ1DP;h+v4V2WRMyzk=+9{VPbtiZ0NhP0SRep3f)ga|%dAadPyWXWsk% zBsgn&glkVQXGOUA?htsbNzRU&88)+tX5CJQwlg5LGyO$EL*6eEy1JFxRlEy*`rX3c zF3Zds_<1f?=ZI`peBnEGjBgzJ_Uy+QbQ+bCt|II`vwmw9+|1lBK(j4>%{gJME#tA-=yx5i{^E9q0ZuJe#T>yAGx zkVAH^i@3K8eVe{%%oZJ25pik`aiia!mJu zmi1N`u03eazG=!ZS|wUdFLyB?-@CpCec;P?r|s!0D{m}AQF*V&dXo{{Zi2YErs4PX z)wF?(-U~YHq-j_>hwGagqf#}y{yn5zNAoU+fvXbX<0tBlzH^K$M<>4I5F7KU_RVCW zqy2U+7MpgRs*!hXYI11_Vn0D-yY@xH^S($!mGkJV;K?tRy?gt`b&0v=VZd)5t2(u(T_&+^;biDfKLkNl-n}pt}btu*O;pRl_K9 zR!chEasgeh){K1IkaA4JT`B4piBuP7+}(0hq;U8kU9y`_i0v-u8zS)dnD9X_;e^8t zwL*R0K|n!=sCdknip_E2;bb3+g96dB&|o9erhmzVWuh;9(STdbKokjn!!>n~?Ms=g z#&i&l8Gb1p?;*m}YNeBWU?qC{u|pamH}K^; zI!3(&<(udK{KVJ|VTo{rN>E~r(8_SkO9Zqf`%8|=8W7U7{W6;jO8^;K-10-GM34hE zoKiaRwH2DOp>c86DCTC6LxtJJWp-uofqpbk2pT3SHkUxiBmJVG1uW6_%uY zH&;Hh<#08t!{{a0wJAE{iy(A}VjH@$D>Gfl4y z7nzE>-ICIPFgde^k1-*!`Bsxpj?i~Cak7wxiHXT#?qoHKO0mxW*37tH-xE6YcHoH4%S#9Q)q=xC3i(maZU=@}~}ePJh8(ubw$*={G`( zWnh7QIX=u8Mk$+UaTSV2zc({XAZaZf_(?wsx!<|D2O7oF>Ii24RQ9DzPYrsuUzK`Pl z)}+Ja=k-T@{8_DX3m_PgPZ6cENFX{1ZqL_oh}G5|ai z_e@Vny;yX`EsLT4>^ii1mh6hW@yrya_uxen1wzYGReP&4xiyUrcbMsuYE|8I>sIXy z)<*S`r^{*Rk0f?@!B6GrM0FOkin2^C$4z#bsu4Hx@49Bt+Om)Aqq(;cN8JH$cu?Ju zc$~yIvyH>_+UXZ}T*HmgXogtWen^KK@5~cuS{jK%dc!{7@gp}nB^dJaIlt`KBBc2R zSO5sHfG7-BFoX??%Iab4AWRrgz7O`{D^iG}KuPs}eB*g`p{mh!@xiF2r&BR5wd?|a z*+ZbP9@R>QB>;L{hEM)aacKIhpF@ub>4)L*h@0NaA`#}vi@jium3WOg6feJX=d z!%m051>Fa}fugovpWc|68UD1RMsldQKqjm*$?EJarEqw9f7P+sV%>DPe5Ksbfvw)? z-Lb#-_HNnxx!(}HZgCRV9!3uBPD3mV)^Fz>eV;*OA7;8hc$Y|rjT~q^XO%Cf&j=sU z)vLc|@BOcF0CI;p7Ct6gGS@&mUzr9yy?-T{BHD^S1&)xsmCnn7}(Wg!J-ANxL{9 zaU)iRf8%-0(h3=aA~V$k48O^c*7UXB!o6F`i&W)C7H9eJKu=SEm`TS>QV(A1_NyM zbYdjfzJQ@uORiMm4(UV^<{KecPB3g73AU9?wYS8i?7-i5dt>PVD~@%sg=2cP4~@X*KUNIk_;pnm3(7TI zIEj35br?+IrRVO%IloFVE)-0Nefg)4#{X{X!MjOZmr(=cBp`x*cyr9s#`h)1VF2r) zoP4|+V%=iAxqc2IBy#U4fZB{-n~k7g$O&eP6mlZM7>u-` zzCIZ)F78$NE(MFnwr_S>eZ6}9Pdr@Qe58G~coX>8g5rFI!)XBR^TxlMJa})B6815i z3?5%ljgx?YKqb{^W1}ydJH{3xtH^1%%f)_nvb-*<%gI^Bn9$`X!ltaOY(afXWG}V> zbvwxVX}tKGO%(Bm_#vJnzq+8H@-~$>pIOehAwanclZit^L*q523)Y`1M(7w;G4ZXC z;L74BEv=%dOz}o4u(u2O%EpUBu{u2-934d03O+NU+{&nQmlA=(Hu!jX4vU~ab!$Yi zkNo+?#VX5GxBQV#t#vy=aYWo@ImFBULm*@;OGSpxhlo48RFOK{t&I(;3j>+MC*@L6 zw|P{s9MkU%Spbp1`?iY$0@BM67`TfJ24S4hp!cqNKRq~~4~)wflsm z1?DA{FJ!U{nMU6~?+1_ulK^YhIwiA!^#CM9N6rcZnOxmcuWdvnlsg+*&oq7T+iDK5 zqZ?zo6Qupc=tP5Bg|xlx>K;@b6T9l`gSqD0DCef#Fl(6MUXf@?!Sv5%qq%|0DnUQ7 z{{0bVWlRZt@TDU@3YeG{-!Tp1+x)F?s%W)XiB>r+(|6a|WFJZn3E}jhM#{y;-%UA@ zi{?TFwB?g9AdF89Z&~pE;x$DPQlc)-Myg=mdtG`+zBZ~E1G1SV}y&C2>bXtN`Y;pKGD`DCp?^f&T)V>k;{vOmI)+OSdcLK-BEWW z{x(8R!O==5ArZ36@ABo#m$7zt!t5`NjXXR4*2^}N?*sh=8?Yn-K_=(MN^;IEZxzjM zKtNb*;mnZ#S3*IIfC7k2Z+^>s^52ww3Z*sOGfhW*ba2UI`FNOfMx2g<+c>AFTl(u$pF@+M-7Uo@81S!oM-)9u2OYP{xP(#g|IA7Rn9_v}aeQ?!ouIXU0yQ1ST{0e?lm zg}yjspALZE(hLv7N~)ufMB3o^mRx&hzUY#N9cyZy{`uSriV>NsR!1BLwM(Z|?$=!% zA{>d8{jleII95}+o{@Fv@*WNt%{9knD){DJIewFx@uRK$PFRb!JNC+uFZgD?w@lj{ z@>-VPMn~=CGb_;>zE`kRcJ$efP1K}Vd2DLjb^GHnLw)yL7yWY;92XI_Wp$#Wh?_UH z9V2f)SUsj|Q@s&N6L=PsyZb41Ayfq5uY6W!5e~8S)}bC{_{UD3E7l^YK*E~77efz5 zL~&bBbnZa5aF)kUaqJhWIsKLqbDoPGAOLfwkl0CQ$rX=-6uL`SEMS@F=z$Tzv9#l(W1plb=twny0y&Uav<8mR4$wG+C8 z!eazO>)y`sEEO$XMa_z{qw@$tEs0QyHj&g)mpWbD+T>G(b`DU0R9@#CK_-_D_gqBy zF`Fb-?<)2~_ftU-Lwhaa?XINvf62`BS!P1k*wdm~`A;sRYpexdniMBS6h*pSH)t{5 z-B^3q&m6YJ9%KiXxOFW|-`A*UGTE z=BnJ@&wH)s_{ne~o5Ga_T63OICh|~JF<#Fh$-lCHABm5#ZI5jjZ4qsm)p^Ms$;fq| zszU5t;=S!Kr`$NiFTR;xxcshlT0`mKaqPxn>wY<4a*g~u-9_hglO@hkP2}f>=uoDj z9d2Jj-SbS{9VIvC-hPK+^H!BD${`JywU*<{P84#Tkn)dWkuM?yS-Ln2r^T17_9&FQ zLr?X$BOe;BzxcHKXGNM@pKq@|SSwS0 zr+b(rbM2A~%Kvncxi!*IT)1x^>ys@NUMjHqan3oxKh8=`aQJbJ%t^p_lWDryB=)L! zp5xSQJN4HjYsMF}hpQduStE=xwwtq~r}QD5?)PuOLq^h9{;ENKpSc*0x0%%qv_5nC zO*;sf4C_B;P;HMoTU8D_ZYns%Tp{|WTADA&s4lu!6tI+{Y86)--7Hctfn8gGHUi?O z$QO~o1B2#27+o4G3hBSOu`ed|1=V4$!M1vgrT?u{{oQ;tyk|GrLnRU}&v(4#fZcfZ zuDDQL^69+i=Dc=qxt4(uqt!hOIA!n3;mU}qT%}$nbq>l@h&LiD|1`!g4k6c*p7NAi zw!Eb*BBrut^csp>vgk_^eJgrg6ZX3dW^n3<>wHgC6uhJJu^8zkgV?e!towSO8$78(MkaQ#Fd0XGqfy|(|G@buU_ zt1kxUrW6+jb4xhf*N^-^5myj%hUOU=HVpJ)uJL%E@WySb(o%2>{&?d%7vW=Ym-fVa zG4u(V?0+MUzcv>2dF*f4lLOE`dhT zegIbEnCup>L4rW_3ar~^Cer?y8t|Al*oN@+!gJnNB(}^Ivrbvt=uS%f)8+AR>;Qje zkKUX(t(A(7ORIg>Hmp@^e0$N$F`g`mWD4e9!$6{SHpkhLKIBb2tlu}fGeVx?2Ab7O zcm@`kl)rpMfigp~&@V!p!e|yZNwM^gtY1H%fZ0c*oBrM8{gG$m)?N|~wUrd&T6EkA zlY;G`oZ2@?*@>~2%Rxm)Rrg}LKf{`sTO!;Iv466kYOdPL`{guSnaT?k30+b>OFmG- zjvEabk{j&*=;V5*^AzguM@Ai|3B+%-+td%jYc7eQC*!t2(ft^B(pqr(er=P{*t9wS zo>B@g7(J@tp+9)oVXkPEgmG(rpCQg|d6D5h z?^0_g^+rVYbqTda6i*vkm6(vAFv{%hoFC$f#WbXPXUF(&gyx}tw$cQ41p|*G+_U@< zT|z}nGS%g#2*$>{>$17}#-U7t$l8S<1uP6O`!rfG%?CM|j+_noRA-u$vSrtrA0PUv zw6O;6J){sZsK6~38{SHX%aa!b zrskcSWz?fi!5=Br4Z>jzYPHXQ6!$V@u)RCucRFa?|8}Tgm$WxM>WHCsI88Z}2pUf2 zOn5x_Au!AB_!02C!jUh01)I8N=3~Xx`G`+%@0GP!#vDzB!?pEeg#XJDv7YmVhJsMc zwNazBop@B@S^~pT-48}A`D2>D)9(B3s2jtY@{fZ=`JWr~dUN6s(+R ziIshajecm<(3I-XhTyOZD^Tn1eY$qHJsU-$xMkG^!hLdtXjk3+Y~E+@0gT6AMDF&D zuSv zi%tXDL0>=J>zq*s;IINe)n3u7|#HCEY)iIxCI=K4SuB~DfO zQ;C2FS(BzF4bFdZgzrK?lLnbB7Szdhdp9U89M?{m@#^U$@F|K>;C6W@ZAUy`(Vl>0 zu??zuua~OT95Fnv+bVd~j8%aNgaeKV6$Qsm#Kk~Qt;!7^9>I9YnW}D(p9!&t`b^EI zr<-dgEq`kvyr~IICbuzSo{&ZNreLN^ZGMZWHB*OP_>lanVp|+*eFv#A7c@#RzusKb zL2)(nn|-7E``oAzyrqnB0@blTbP*=Ojxk3Vl#U*|5L;O$r~`a+PP!&rr6I8 z0Z<=%FB%No38ta0Gr#rlkK!8R4m{bIu`()1SgV$3Y0Irt)=mEDs3C-fY%w)-$I3RQ zF|Y4?UeihKlt$dnxXH)~Rq~I3pz9=y#fCuQI)SPZlmB7CNGcbn?ECD5Uh8s+-7gy%X^Y|Y!lGNe4lAOxVqzE^6_npdN{&aaf`n0L3V~HOc zR+szDX00UmK0trMF^2GOYvVbSu6nK;!DmW_i)62IH5)~lSvqKngn#y~JGN%camY{{ z8Cw#?f4Gr|gQk87DPNq4$u}#?p*yPnoh#E}jJ-yWUUG(f)LXddw|Gg#KKa|RC(dDi z;lp4CzpLn2%k865UX88v&kHszUc^|Cp|G({F+UC(UR&b*vb>HY9ea?@kDr`LT_9Px zBxjVAy5*bpDd6l^-{=7#!u-TMXHdMOPmT|pYMfIG;EvUp!DI>Vg!j)H;qz;YiS573Rwltw zUuPh1N3vGqKL!3e)3437&oVpyu0~N$V&=IRUA|w4-@Ttq@;h{oygvR-RDs-2R`$Z& zK=EsX=KVJ=qKP6RU0(waR8qd97`94#xB2O>!!<~WJWX#XlZaqiFaD_^0o};=&u*w@ zck6-7M%Tlr6+xSy+wwnuX$+d5O9Lnb8-VIgZ(KIv=w*KW@z@0wf)8~Z1+sEwG_<^p z(Hi7#dGbjdd6;xJUwkLHHNRJ3zQvBf|7XYT)YMcV&pUp?4Hw$UmjuujJfX|QUkoNg z4EWHOXM^nA<1-eV2Cg00cVk^L&H~I~u6FIe+k74CFWAdl(w<_<3R*aT*_ZtLzB-*^ zX5*MKC`MNg2=tzeEVzshCb2tCZ(F$HN0al9$-{kIY=?o4Y74?_@IQyvymPdZ;3|w3MTH zIW_3~dPLN@-r|+1?>%<;x(7Vr&A(6nPZ|!TV?6&mDW^fD$6t4Z6Z+0V(mT>~v#Tps zr<}q>u|dnVb`0XDKSQ3P81Y(8^AXU$a9LUYhMz=Hl#>$@85s$v9AVWpHR@HLyi0SO z?Cqbv`Ax+E!Adz%KTvttOhNdN*Ly={nBDkiNcRWmUm`4ipB9?DfxT!b?b<6LKoCLw zK@*MJW>U~u_XRb8CZY7dEhGAd6!Z-bkHf&{GNXPsK~us2!jkUwLjALVxB)>C$v@!+ zLJzn*W;yylh(hqUO6hOWe*hY74bPx7S>-v_7;d7rFA@_Q9^?>Hv)0r<>!{}oxN6Z7eDxCPo!%r?( zekG%5N*2A6?&faU*?x|O&YPnXvT@W2mP>W;U0Upi;zPIns?erJxvxWg?0znJ4(-m_ ze9>9=Tq{Ou*dLKxaEJ}`?vj*$n}s+P3Wj-ldX~_?JnmjeO!_xz#^VMqWL;im<8N5< z2BQHVs;S9kb?KF=dtI2z@n9rh-u=lq!Xyn=_*yO%@uk5uY^vuK(-?JT&URykp}q{t zRUb@+$}SodR`Y5=kP?3`QqSvbTr#iK+L)p)uo9j)tq|}qODN8uI_tt`oD2{7%0VCVweS?n>?(~H z+5Oz+w_=>;HsW2~6AXX9*8?>Sp$O0gdv9Bhk`)ou`#PV+S?G@y@t5FAxYA5dPqV!o z!Br3myFDwbUo53(f*$T0+kDNr7?HmQdVqFAx4+grIj#7;Yte=1Nki4k!KP|HsAf+x zOq^V7yxoJmt|9Gmx&_9@*X8i_&Fc&p5HmnyR0*Kp(VaIc(-?$jjQUhzK@1n7h-CK$ zL2fWyZx^<4Pn;I9a+B#Ep6Ik3`6@7b6=9xVvYj(jh& zm=yuSphFP1cR5c0I)1}%FP#nmol`NK>&25*&4AZ@!(VDVNxd+M{p5~YZ)4bQd#nsu zCrZ)OkRz+-YAy}-lf}QZxiF=7lWJE3S4a1`u#3odB6q;VT}APYDG)DLd!s3K#uce` znlcb(1n4!<3sRLyz$|46YJ*MUI91G2KzS*CKSi*|H}9co0(5Eq0oeg_k_rTjt3h&{ zXz6eNz=6yR8reJlSTAabo!RnQjJpR$c`)OYC`t$l>p^V)D)R0Ot1yi)tac{Zl4+GUXiW*_I6 zA?4S@;t|7Ara%=2LwAU*f*Y~Or9OV_Jis_111zZf_~P#e6cqG_F_6mU^#6;L9Baq; z)IB?6rj**63Sdn#jouO5noC*XZj7^4TbJ)paP=G@OB_wM==(1)=;>AJYin6a_Bf}f zJ@~8+@}k7u-CsN@RDR*!>OIv>THZb9sQs|DU!lhz>|}NmHKabC_-m^ny}KcF26^Sp zHWmC9j?h zN;*%+!`(_b!}&lsx};*lfcDh(=8Vi)UpWborD-*|u5O?8?pHitTJO{R;Xb|HyI4LT z9EX4#G#$nUYV}l^KmA4@`0Mw*#y||Eu*#v^!4%8(KR5hM>d))Uj7tvq%i-(6GkO2HCAPE!8iLT{Ja$g0r1lQ55nJy1cP}L{P_pwP_PU*A-y@xE4fYzgw|C0#Npp6;y0j1D%(^de2g(b#&H6@I`ndv&mz?UC zuG11rTJG@w@&7u~w9g@?_2J84AH@}CCN_5qwOqMBaW@D_?oqc9`l3vI5(5j<(yfL% zY$ae{{SP@x==Db=KvUh!Upge>-)KwMdNJ?kp2h_c^Z9Nh^6PueZph_t>8}AzQo9=4 z^9x1*%3S_`68T~mykCI4eQ8;sSTYgrng@9;~kjn$>YTrEKRxu>*z=AGw^hCAWU0I zH$M7ER?0@zP1@1H)pE6+xIdbAAtefcQW+N>S|q>kbUaWh_$t(OuD!xRgzdn7hzk=N zqgU=cWe>EyBjLb4FgGHXh9yCt`Y)9P6x#;ICK~^lbvA&@Xb^(p{|cfncj#T$pL@Rk zR_2J4dyqGA3VM$Hwt%^}e#s|_J|APmeVTtJG@k$98Z!l&k$!uYhRSDdXkW?{wqLFB zw-V^8MPz#4-<>K(H6=jR^->|Y=PefaGnDC#>9~^fn>PeY4+Y@c!YG6SCd-~mv4uGF_V0J@LSYApyG&Ouq|rVzsBw&)wm^{7><&Fvq)@{<82t z9_fUBti4;Pfsb!@#(B%jWYxb;JSc-I=(9$fp>*8$3pI@c z5BooE#-PGHk0;3YIKA~UpR)a{f!`%n>-iRi$C)+8LE9~#$Xz&taHe6Op9xb6t7X7==6v5iL0_ONhW?b!gNo1(wuk)JM>-g%&Z z{P!iB0=VD-awOs3A`3PAN1%(%4Q*|=y)X5m{Gjq;ldg{Xhi4}OLc1GZPef)kZP&xj zReDV^9iNQ>*g|4jvR&zA>sj@XzAKxNhRe;;@8SUM0Df?7POG{>@LeCJA;-ssr6u*h zLgSR<>x&w&-Cqr8{12{GaqR}$;K_jQJL;TECp;Z-J z?gdfs#y-;A?fPy)$?ZupUudk1lX~o?hc6cbv->0M_D?u|8vnof50CWEqdm^5=S1X z9~ZyAyo_C*NK~AkoXijc9a%#rmk}C@qYJ#7NLWm0!<@r}wl0R+MN7!CXvj!bRnyL` z_u?K2m0x_9(cH?okB&ikV95)i^0G2Z)z_`_Z<-S82L_@04gX@lneBLwKqDvHS_ann z(`XgwaIxxHlW)JL*ev_VSI^yCW*8k{xBE>I=6`+RBA(aJ)0t~gu`B;0W;{i*(jKF= zw8|bYMW$Z2mjape7Mu?{Xjv-V(LPe>tQr5BNEcoZ-~n{ma5KGixvlyB@Z?~bFb?2H zc98~sDEH#s9Pcv03dz7*Ps}=?L8I~eDdB(BA=$ZDe_OyZ&i3ap{zkeT{-f%p@v`LI!03`_VvZ|5 zYRLC}rypdw4|oymbtvk>ME`ht)F8`{ccP%)pWgn)^bRoeI8x}_3V(kBeHV+c(ti$F z;SmC26rG?xZvsqRS6RNdw)5-$RG(2`j?)y%*eztdlb7*Nu?gr11b}2LJ*%ZU5sj7} zw5-+sY55*8|GbmBT^XkMlYHIm)+HKrLs(K3-SXwZ1RQ9X*% zHCSj|Eme{s1RPHMy~))_9rZ>cA!Y?9xClrU>F1xy|HcqNw#kkRil~zII;Z62<+WYi zv#}irGkl9LNxpg=-k*}8$uis;A3N(@`8%R&FY))cU=BMx{2xQ@3%2dz?+$~8J(j-{ zdZ|8N(UlWlTAFGYFzZb`uJG&V$4}fm(Q+{4b;5PruWgo%U_-xHCU8B34XMgHgBW^csduRS-rcGV)Y~+)=A?-OOSP;X*M(Un14$1=Il zj*szjpN&NFBv2D%C~Tg| zsEq!eA=miDZ_m~)?~psBVB%Rxy(sgs3GM6;Agwat&2|y5s|9!)n+wzF#fO=Khdk`pl%~8u zX(@(|4zRDJ>zBc0{W3781IGW8QT<8Ey0C(HAXpBSTRrwAc^!1U5Kd}p!FW5)awm(v zjnX0aADfhkWnxcu&_0wkZDCf<= zE^v4@R$g9F`AbQrlgVXMfZDX4tY6L9?)j#EVo6ynLV!!Pvr{B4N4>1V2*0$-$w0$o z$yJx)xYA{~ccRznd}C;6^*0@E`6-BKL*)(2?5uI@O}~Fy&gY8l84<3C!*2VcO^BYI5{}qLYs_X=QY|_u2oww-G0FZk=XT$>zBkI8o~kc zoB6rIOnhliA%z7`bTw~HQC;~L6S$M?_&XL0ZG55_%B&l+l{0bo3oH$}1EjBBm9h!6 zHrB7=xk-)eDtl{W&oQZI7xNLsw^0-AG<>DEvtOPd)!#sU^V7;4h>AwJS+gkHH;b1L z2!(w_SwU}a?+!7Pu2*!bj3eP+SLxvcfcVE}^-`UWK6N+bJ4L_N^w8D$@jNeb5ma34 zaZbLst0oa#{rSObNQD_zaF9-Ezi0dMS-ZrtwP>QLjp4g`uf2`K)CtXH57x|Q>1vAL zcQeHGS^?hL?Q+=&t|?J}tnl`A$v(VoTBmzQ6=|~fd1@Y_86$W|faRG*J;XKj zrS=?2quD8n2&1C1LB?qmaE?IvdL!)qtNKF(L7%Rhn_D<3LvQjM?sZoP)>^tH+R8J- zy;?I?ZN`5RJ`7}(5AW1rA-5zBg4TkD_WFIXl7LX<=mx9qiyFjq5LL2JS9@a$t-b*kndqb=xB;MKV~b7~>s!r%8HJlKew|F7f*69PtX*O7N3Ezj(DZ)(~tqjX^GG zsQWJD3QJ*-M);$$Djk}a|6yEP`E?C>2}?Z9^k9pj*9yAv z6|g2C-YxC%j}u+$I#~;#v!}fI~ltFR7 z8M6W&kaK0Qi>1i-py>)3i;}A19-5w(>t6~^hh@@`gA0US#NfXG_g}46q{ywg;cgmS zlBA*GRX&eii%oPND?~qkjE$*5Ox1UAjsm94rhg%Y@d>e(ALB$h*Z3SVD!=@c?N_Yc zXn!5MVbQ%A!_!Mcv=vVvYObb;r|PY=CGDYrZ%SCk*)ejlgG$Y5yqi}MYAyV_dt6gj z)JH*RDFme*7^P_SdmyL+dz7oPazt@WTLtfw&BcOC%EVw&$-w$a;V+&jka@}lQ}620 z6m9Pz(0zRMz{@HcWl^v4?B9wDPzaOKj`eT_xo}-2zxIkwW$wi<>!EEl-Q8%aq`y>` zf!#u0h^bc3nu^)zur_Gb*7bZ^ZMa+NPuR>8fD7=uEQzotT>L@_46q8_Yc6&pJ3sTl z9u&&em8LaEoj8_>{vzAm(Ab!YC@sn!ZrN&2LRs@}H3!=LDb>^arB8!{;A6;OeonI{ zSlJK-#)2S|B209C_gibemh_jN(=4Np|2=3xPf8Y)pDb|mvqV2}eOOr%u@07O|r{)4Khx)MySlp`20^<$-&yCw@LqFe!$m~2VpOe+wSfSZ){4* zlR1*1K99Bq;h2P}w|#bY0DXG~5qs-Q=HkJ8$WJ#zt;OMRQn)y-nb4lG!#rC*&a97o$UKLUiVK?{a0mo zgBeuOW}(TC%}MDe&&h-HQKv!S!>t;7_1+p4XLmz;`S-Cg2a_lY5kDNQ*Tz&a^m}pbnIXfX*7fuil z$zHI|={8ZGJ5D9B%R+T>`vUKC?)Fcw?-0ojw5=HMP}V8VJ7Xt1JN=d43<`Q<8v_Z2 z)zvx~ed@3zCSfI5bK|75^@5R2>8H0Q1&o9LC4o|SN`lC(_Wo|kGqT2aW8Iq4d+qWb zK*tTm;cEWq@o;wPx{N9+)HsU$ZoTjuSk3J4P_Ny?6{CnnFeS1tT3^e>*;v-eY*?1~ z0uC(rrsWh~jvnQ_;!TcV^oj2=h7u4k9K8f`GRS_Vc;H*!-i#&_fVtkucHI}4#nPc;-l0-UF zs6YOz>iDawHoJTt zI;pyj>7iT6r|*(=aTtFobfkIkR3SD$J=o9w*gj94v*f0xB+>nIw-Ni$#(AEEW{gDA zIsn)NHfz<_3FzqN)CGDU6 z&CQg20Z?zi2E}m0lRV0hN>zD=Xo_C0O5&Ko!`jGfjMHp?M8@~Hn&#|zrW$4k02Cu?MkneY8%4UdA;vHjSIXk`Y%#L$P9b@U6zXrnN6kwFnHP(lA@4}9c z#x6ae(46_(*$mQ}Li&!T#urTB=tI2OLHornUvhNY<%6OY_k;!++lCF+|FS(<6u?`0 z-250izP5~@NqiCF5an%av~8Q`8dV{mTt=R7oVM8!<_BP;oe-}rH60jPcQrAI&rso_ zq=`D*W7>XiHN)hwh?Ohh(y3X#5!7};Z9(+$hx9()W8l8pL|!mT8CqzCxhn@YX@#V8 z4mB1Od?w#3c`i8fbZc{!^SZLli~X4MVYk4-^=wz0&-bDN38>}M1eL}W;8)}z26R2qV13=U_|^Yr-TlffbK5<$3+u2_^T`CkGCKzdxrOD&R{ zeNl#PrispQKqnlN8Tt)Q4E4J+C3y8M!Z<3#$&H7MZ)9Bws5Mb?k?=qfZceu*aAHrz zLwB|1@{OU9Rrj8jFI7z<#g2jcTgge<)DT~fX z1G@h46Ef<$WK4G?t21jY>9iaz2OUTH@u8LLAgPkqIV0AWcOEz~m#ZHz8%i@SmVE`H zDeat`tm}63F5uRun;Yz%l#(EYeOh6GrJ|GDiQ%9I0GMH2InKJj_{6a>+amJuU$Fyf zkhJup+^b0!1Kl@Z7D+~{n)634cOkM>5pLmxIm{pkrCu`XbNKC397UXvkaxxFLPhOiEXN<8`}ISrqTbtvukssT{BT& z{+A#Brw$2u_h_+zB(VO=yhsy=PH9X2dOb0;pLvBya8J4+9Azv|8Rjrwd=-&QW1Ev3 z-$?L$Mpuf8a?IxT23wo)wt}so;nPzEy@@1{>JkzTihL0OuR9135uqV^8B%|hT%l67qDd-7>h9Dh>ydw zo1sj=e8#jwMMb6N)2_Y1Plquhw7lln`QA;>$fzGW_)2F{-2tJ84}YsuK1G`A(KRM! zge^u5!6L)y4t;5=wb+w!EMdi=PHvW5-WWywA6SZqx+e2-IN!vi%^tNyxTRt zejB@07iip^G+o+RlN9bP2}@^HVWhtJ6{d}8!nP#C>B0%Ot0b%~*aZDRB5A8?*`UX5 zT%8DP2G?dJM{O)E)sruJTm&F#;iBUoNZ09mWn+B3%tHLz>ATuFY5Q8mDm4V?wyVy) z)*4inw;MjOJ1G~Y{Lf_vOOfO6@C@=SfXfLudjC3Ws-Mh@E; z9xccQ8T_dD0~?Qt^DRZ8P&t8S>=iq?c^RTkTbU9w@P!L2V|~3eH$4!rNv3CPF15*orq|7dkXRO*b9nr%lCR(5|9d4;nJFSdKW#E| z65usMZ`J(?oXYI7zrf6wF{hy?dT_iFj44{tm(tQB1d(#l&cW{KQF5>)Ww%OB9OXDj ziSgPi@)`37_`BGdb6gznJ zi&7keT%rvkOx@r>?xIO{aC)>aUCFtIF&>&|@yQ%_?dV9Oc*)vZW#j6XK27S~GraOkbN)V**RzwzPvl66*Lr)InWw1K(tj0ws+W*$bpnNDGWW94 z+~G@8Keni^>vcAOhIhR#4RHNL==p}!(eYi3{IGo%AAt>J$9xim?-2p+gTnjXIQ%`` z2-~1Ij`8F?6jRkvtd2c*(l|otmrSH|fU=35q3+CGLc=Po%}kyn>%Ht0F|| z&&jL3;NQ}C`mIo7jUA~JXtOy=Ep(f_LbF>9LF_oieU_|7Q6POoH7&ZL75r~8X1Y`6}DlrtS@H!2IWtI5qPt#!$j0LlzL(T=@TYPI`U;^A?t%w4km|` z_(BMiLnV<)Cyk(j_m|;t3^h67!TjXqtY&%rT({$^O|n;L3xj&vS*k<5x$c9^&qp9L zj*L*0SkHr7bmA>uvmP(6M0$kY~{P}rCAWh#Q>+3PCNGtJfC{A+S zK$XZUZy5#fs;_JtRl(a@xcI6X8P8k$LzO_0nTva-12VLqf_oHJniOb4I!&}lSX`%m zDP=~4=RZN3G+CT59!2GapL?1<936Z)&O+QgwqNzvMrR;`k;@B*qD?JND||LF!0E+X z+j~P>+C$58I7K?+C1?8s@8`vawgE1^G=VIGMpNgxgK0J-cnmO^$WfK>kLZUMv zl)NB=cGQm74TdhWmGOu&u;zldFF)QEJ_DQW>4vhNv9VqK@!nph^Tq34kOTyF{Xnk#XW{ALjtd69<^mI z>}X*SAD^*^;04tu;Lteo%I?K;=!u>451sO z|DM?EQAbG7w9p+Ar%|7NljIUwjBS2Q)|WEm+lsO&E@ejO2wl7f{bv#6xfZLLg9wC= ztZfvLE9Q%9$BxqPR8bt$C-ZC0ID5Qf&l6@el25wCCJ+ehsqgOtSn~zUZ|wqio>9Iu z$XB$?NWvFaN+8N;5|BQmUtYm@b-CeM$?0I`W!z)LTudyjq1ZmI1j2BGe=y5DC#hHc zfH8*l8tdcY)KqEm9L##?WMhEf@R3;t)gfhnNf9?FOhR2GBz<}hxt+U7iY7#oT*W+P z6;CBeo%bgOF8 zmYh4KG3#P}U)=cc;%n(%nnZmTbto)jhflk`T_zkH7|HVp$aJ2seeMKRmeZyN*8>EI zaDx*|nTz=srAeeDDhvlVPZySBJ1k@_yF%Ky>HYPWU<1^>?2q^@1~X4vl44GJ=zFNS z7ms*n=NIJp`3<`5O4+&C_nYC35ex%RaQ^V;dM$RB#xVCD-vdwxic8Y3k1HDXcFs!g zNTD8A_hat`lmgCkyG)Cv)k4nW6cKC1@dKc8LH!#%F}wEFc6j}+GKFa0T&871boTD9dqp6;b0Q7uV!5QP z-TN}p0cWlZqvAr&oVGYzBQ4?|gf`_l#4)a_dF@7@WT9VpmG(Rw_>m_GDr09_-ap>k z_^=zKafOw5_(I-aV{g8=C=0qEg-cidpi@O`W8?jtyE$=&_(L#jqdOY{BB=Mco})(a z^9&K#!5^PVL=d+bKaWM8p=YNfC1L1mlp2u|CKxo0K(LJnTMaU%2{>JbhrCBrb`!(HV zza*%@Nu-WS%hv=?Q?-nhM(imr1R049I9UG6@A1%(W(ppwN~E7PJ~6S1i@M^4iJ+hG zjdJeS-B+0V$@Re~ws6M|>tAD*TDfz&vsmZ=u@jCN^8!RSQVEX@#sO7^Xnxr-Az zgC(qnAb$iur=|}@?gRC$lu=Z(&q7gxA&DwEIfmNUDu*I>tUtNUy_?-KW)F0)bxD{U{W zlpKsG`XWlqKd8;x`Pp}+_5VGV5jY5*13ZjpgI;}33FDuzWg>6yaz!wB^z2%13a6X# zA-d+`rl`%GbZpNRy2dIA8x`<%UJX(^{&-MOd2vFAU(1P=x{%n#uE zH#ZUBs%>3v>X!OP32*VZj4}d@)!`ab)+}QW&?Y{WtgKwPJDHmkVi7o{Ujit$1#&bU zEFI^zvCE+k2Q}QYXiXUxOP=M`4>FI5*LtGb^UGScg*-T=-f{JBY+Ts_Jw8)u5Tl4@ zfcsPuLU!3DWb751mK1Fo6k%44(HBi9WjlAI^C)N7S|Q&TRR67l)@KRd%<7hp36b@@ zuq0|8<(`$p`Okpj2$63tMW<#P1%&h_1!q3+%x_FiU{*(_n^Edno_FwDUvdy?I5$q% zetPy?p*^hp2hWtS(ju=;uhYsB z8(l?|SYKDuMuH5_%$f`{-R3p>$2#e(b>SF$f5U1%9&UC#G9g?63(8h#9Ocuvg&YFTb zCzs(6h& zxY%1#H$jB5{;rPBAy3Y!`BShIw24%#76H960JlYymDBBOF*3<7zXmXSooRk{Lv0sN zPsZ^8_RFnJ?eSTV%J2NGX}7Y7qxufUEI{m{A0OMV&f9-Hl+%J`E~y?L@s`;N7_-h? zOk1)ASapd~^V z%%h$m63WKLW;>KzR_k|t>G*skxApQ%-ryLuL$u`GPiTyR*&t%mUka-zFE41o{i@Xl z56buE8f{HS9Y(i$M5cou{mw;G%cwTyMG;1HmS&Qw z^wpIqYOc~hg4Wq5_)6(hjq#?Bxt>K@V1t(CilXP+$x zvu}1ODZ8GreI>vnzt+zZV@atZ&&d1-)^im@K>DMHzp5;A(A4oe7Hn~XwfKG%xqc@- z-Q3m&+weL$oALg*FDU6!8ZTb2BfdQI(0!LS!B07!z=ursDjvfA+RJXvwl2_hVlNnb z!3550hyAz>@?w8Ig^9M!`N>L7Tl$#9M%)~L%KKk$&V1+fEzHb($DmhVcn3TmyTQZ( zc-qa4Px5Uf8#}x0)^{?M{GzG~7Ny=hG|HrT=9Kt>S8E%j(5kc44T1D`!Bp#gz(lY^ z@AqNEYjiK4ilgCS?=lWcM$1)bbNbSx2=LWW0F8aQgN5cSilD*Z zFT(Ng#S@j%fJ2eJwYmtDjOsc6ruR#Q@x@?-jsxW_C+-<3!Qm*@Sg38UaEro};eOX*3E3B)KWzS@}PLK2vhxNCK} ztLBm8?ChK`MVooS_V^rJV;wyo0FdubpPtT{`Lx_rptwo@p2!=r?TOT{T?x1yQ!=lQ z4FIPmiYCazwCxiH``=D5XXZB`b{Ok%{F#N}O_&d}r~_{b1IzitUVc;s=N<9JY&FIApWK+A6D_ zmsnXAH&aMWFF6GW5M+SFtab2wf`Ro-1`lG^k&{;-GZayCNyn@cbtv@8v}NpT@d~# z)(;AHE!$wim%mG$xB1#QINapcd>inCtDE!&+j{R)o-*Gpo<57P0vOysk%}knaaQ)h z>Z27W#4`tT4VdT`A!{o4Z}OKx9)$NKn&xpr_@04)@!L29vx*oGS=D~$t|Znc(LEX8 z*t|akfUS&tr$4X9j*mHR#6@mTQF@A<(kD=(0z~~nTg>HeYzx&LL=-oBO7DiIw*G?m z=M)^c8ur`44W$+*tu7#is~!?eZ;Je3N=qM2a>?b>QVbel zH_7Nh_a>kxtRAwr<{y0z=x;gLI5={t%?%g72h}g?gp=k7z|5Kwpe(6a4#-r_8$xP= z2xQ~^80`Z!xP<6>;*Rf;LgK9owwf|>7xgD3W$yorU7}3L&rcg`A<1~cSU6%6S0^y* z__ZICX;CjZbYKIa;dO6{cNuz$X;MyveG`A3(ZBo%v5lEAF$Fd~g)TqagY4`2PtTv> zuxU7XQ%bScC-!}d&zRxojH;QAVMS={aAR#D0!Y`%g>7=rQ)*eUQMiD~Jdd(3>OwWXICM#C1_7p~-g}=kQ>oxn5 zW5Q2IxHbS4_&-$1M2wUiJ!KGM*if@1Ru13Ut9J>NyuLU^@sPqN7c|oCOWKsFKfQa# zrQ~!J9;G-PZN!y0JNXiUqkJKIp?R-mR*zK5BN!Iof_&YM2_8t)esf&9i6u7vw+6+y zSQ9f;Yua3PaL(MTugZUZi}{o%n}#n&E1FvZP0%sz95bf43g_A zhSl{@%q5`U7YI7e_Dk31FK8E>UwYu8dmxB+Ml{&--}U8~wRqcWg7sxUfB zf{}h&Mkiqb#c%hv;s%=WH#LL0^eq?Z-;tF5N7||*LyLw?MjvzZiWFD0Nx|3)dd8G1 zl*isE%cp@bF **legendDisplay**: `"default"` | `"nameOnly"` + +The display mode for the layer's legend. + +See [LegendDisplay](client.md#legenddisplay-5) for more details. + #### style > **style**: `object` @@ -4971,6 +4979,14 @@ Whether the layer is visible or not. Whether the layer is shown in the legend or not. +#### legendDisplay + +> **legendDisplay**: `"default"` | `"nameOnly"` + +The display mode for the layer's legend. + +See [LegendDisplay](client.md#legenddisplay-5) for more details. + #### style > **style**: `object` @@ -5127,6 +5143,14 @@ Whether the layer is visible or not. Whether the layer is shown in the legend or not. +#### legendDisplay + +> **legendDisplay**: `"default"` | `"nameOnly"` + +The display mode for the layer's legend. + +See [LegendDisplay](client.md#legenddisplay-5) for more details. + #### style > **style**: `object` @@ -5263,6 +5287,14 @@ The id of the layer to update. Changes whether the layer is shown in the legend. +#### legendDisplay? + +> `optional` **legendDisplay**: `"default"` | `"nameOnly"` + +Changes the layer's legend display mode. + +See [LegendDisplay](client.md#legenddisplay-5) for more details. + #### name? > `optional` **name**: `string` @@ -5356,6 +5388,14 @@ Whether the layer is visible or not. Whether the layer is shown in the legend or not. +#### legendDisplay + +> **legendDisplay**: `"default"` | `"nameOnly"` + +The display mode for the layer's legend. + +See [LegendDisplay](client.md#legenddisplay-5) for more details. + #### style > **style**: `object` @@ -15775,6 +15815,34 @@ uploaded to and processed by Felt. The template URL used for fetching tiles. +## LegendDisplay + +> **LegendDisplay**: `"default"` | `"nameOnly"` + +Describes how the layer is displayed in the legend. + +There are two display modes: + +1. Default: + * Shows layer name and caption + * Shows representation of the layer's viz (e.g. color swatches, proportional symbols) + +
+ Default layer legend + +
Default layer legend
+
+ +2. Name-only (compact display): + * Shows only layer name and caption + * Hides representation of the layer's viz + +
+ Name-only layer legend + +
Name-only layer legend
+
+ ## LayerSchemaAttribute > **LayerSchemaAttribute**: [`LayerSchemaNumericAttribute`](client.md#layerschemanumericattribute) | [`LayerSchemaTextAttribute`](client.md#layerschematextattribute) | [`LayerSchemaBooleanAttribute`](client.md#layerschemabooleanattribute) | [`LayerSchemaDateAttribute`](client.md#layerschemadateattribute) | [`LayerSchemaDateTimeAttribute`](client.md#layerschemadatetimeattribute) From 8e6a3da30a3a2c50cc21cf7598a005de7223a92e Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Fri, 26 Sep 2025 10:47:01 -0400 Subject: [PATCH 29/30] docs for 1.10.0-next-0 --- docs-minimal/CHANGELOG.md | 8 +++++++- docs-minimal/client.md | 28 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/docs-minimal/CHANGELOG.md b/docs-minimal/CHANGELOG.md index fcc9712b..46c972dd 100644 --- a/docs-minimal/CHANGELOG.md +++ b/docs-minimal/CHANGELOG.md @@ -1,6 +1,12 @@ # @feltmaps/js-sdk -## 1.9.0-next.0 +## 1.10.0-next.0 + +### Minor Changes + +* 3d9527b: Add duplicateLayer method + +## 1.9.0 ### Minor Changes diff --git a/docs-minimal/client.md b/docs-minimal/client.md index 0832dd1f..dfd8209a 100644 --- a/docs-minimal/client.md +++ b/docs-minimal/client.md @@ -6665,6 +6665,34 @@ This only works for layers created via the SDK `createLayersFromGeoJson` method, await felt.deleteLayer("layer-1"); ``` +#### duplicateLayer() + +> **duplicateLayer**(`id`): `Promise`\<[`Layer`](client.md#layer-1)> + +Duplicate a layer from the map by its id. + +##### Parameters + +##### id + +`string` + +##### Returns + +`Promise`\<[`Layer`](client.md#layer-1)> + +The duplicated layer. + +##### Remarks + +This will create an ephemeral copy of the layer, just for the duration of the session. The duplicated layer will not be persisted to the map. + +##### Example + +```typescript +const duplicatedLayer = await felt.duplicateLayer("layer-1"); +``` + #### getLayerGroup() > **getLayerGroup**(`id`): `Promise`\<`null` | [`LayerGroup`](client.md#layergroup)> From 1f688dade0f6380adc0f39cec20cd2c7e4e92d30 Mon Sep 17 00:00:00 2001 From: Sukanya Aneja Date: Tue, 30 Sep 2025 08:24:46 -0400 Subject: [PATCH 30/30] feature action docs --- docs-minimal/CHANGELOG.md | 6 + docs-minimal/client.md | 277 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 283 insertions(+) diff --git a/docs-minimal/CHANGELOG.md b/docs-minimal/CHANGELOG.md index 46c972dd..43c682d5 100644 --- a/docs-minimal/CHANGELOG.md +++ b/docs-minimal/CHANGELOG.md @@ -1,5 +1,11 @@ # @feltmaps/js-sdk +## 1.10.0-next.1 + +### Minor Changes + +* 34b9ed3: Add feature actions + ## 1.10.0-next.0 ### Minor Changes diff --git a/docs-minimal/client.md b/docs-minimal/client.md index dfd8209a..ecf96e64 100644 --- a/docs-minimal/client.md +++ b/docs-minimal/client.md @@ -7875,6 +7875,96 @@ The id of the action trigger to delete. await felt.deleteActionTrigger("enablePolygonTool"); ``` +#### createFeatureAction() + +> **createFeatureAction**(`args`): `Promise`\<[`uiFeatureAction`](client.md#uifeatureaction)> + +Creates a feature contextual action. + +##### Parameters + +##### args + +[`CreateFeatureActionParams`](client.md#createfeatureactionparams) + +The arguments for the method. + +##### Returns + +`Promise`\<[`uiFeatureAction`](client.md#uifeatureaction)> + +##### Example + +```typescript +const myAction = await felt.createFeatureAction({ + action: { + label: "Edit feature", + onTrigger: async ({ featureId, layerId }) => { + console.log(`Editing feature ${featureId} in layer ${layerId}`); + }, + layerIds: ["layer-1", "layer-2"], + }, + placement: { at: "start" }, // optional, defaults to { at: "end" } +}); +``` + +#### updateFeatureAction() + +> **updateFeatureAction**(`args`): `Promise`\<[`uiFeatureAction`](client.md#uifeatureaction)> + +Updates a feature contextual action. + +Feature contextual action to update is identified by the `id` property. + +##### Parameters + +##### args + +[`UpdateFeatureActionParams`](client.md#updatefeatureactionparams) + +The feature contextual action to update. + +##### Returns + +`Promise`\<[`uiFeatureAction`](client.md#uifeatureaction)> + +##### Remarks + +Properties provided will override the existing properties. + +##### Example + +```typescript +await felt.updateFeatureAction({ + id: "my-action", + label: "Updated action label", // only label changes +}); +``` + +#### deleteFeatureAction() + +> **deleteFeatureAction**(`id`): `void` + +Deletes a feature contextual action. + +##### Parameters + +##### id + +`string` + +The id of the feature contextual action to delete. + +##### Returns + +`void` + +##### Example + +```typescript +await felt.deleteFeatureAction("my-action"); +``` + #### createPanelId() > **createPanelId**(): `Promise`\<`string`> @@ -10401,6 +10491,54 @@ The id of the element. `void` +## CreateFeatureActionParams + +### Properties + +#### action + +> **action**: [`uiFeatureActionCreate`](client.md#uifeatureactioncreate) + +#### placement? + +> `optional` **placement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; } + +## UpdateFeatureActionParams + +### Properties + +#### id + +> **id**: `string` + +#### label? + +> `optional` **label**: `string` + +#### layerIds? + +> `optional` **layerIds**: `string`\[] + +#### geometryTypes? + +> `optional` **geometryTypes**: (`"Polygon"` | `"Point"` | `"Line"` | `"Raster"`)\[] + +#### onTrigger()? + +> `optional` **onTrigger**: (`args`) => `void` + +##### Parameters + +##### args + +##### feature + +[`LayerFeature`](client.md#layerfeature) + +##### Returns + +`void` + ## CreateOrUpdatePanelParams The parameters for creating or updating a panel by using [UiController.createOrUpdatePanel](client.md#createorupdatepanel). @@ -12145,6 +12283,105 @@ The id of the element. `void` +## uiFeatureActionCreate + +Represents a feature action for creation. +It can be added to the map by using the [UiController.createFeatureAction](client.md#createfeatureaction) method. + +### Properties + +#### label + +> **label**: `string` + +The label of the feature action. + +#### onTrigger() + +> **onTrigger**: (`args`) => `void` + +The function to call when the feature action is triggered. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### feature + +[`LayerFeature`](client.md#layerfeature) + +The feature that triggered the action. + +##### Returns + +`void` + +#### id? + +> `optional` **id**: `string` + +#### layerIds? + +> `optional` **layerIds**: `string`\[] + +The layers to add the action to. Optional. Defaults to all layers. + +#### geometryTypes? + +> `optional` **geometryTypes**: (`"Polygon"` | `"Point"` | `"Line"` | `"Raster"`)\[] + +The geometry type of the features to add the action to. Optional. Defaults to all geometry types. + +#### type? + +> `optional` **type**: `undefined` + +#### onCreate()? + +> `optional` **onCreate**: (`args`) => `void` + +A function to call when the element is created. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + +#### onDestroy()? + +> `optional` **onDestroy**: (`args`) => `void` + +A function to call when the element is destroyed. + +##### Parameters + +##### args + +The arguments passed to the function. + +##### id + +`string` + +The id of the element. + +##### Returns + +`void` + ## UIFlexibleSpaceElement Represents a flexible space element in a container. @@ -16032,6 +16269,46 @@ The result of listening for changes to the settings of each tool. > **PlaceSymbol**: `"dot"` | `"square"` | `"diamond"` | `"triangle"` | `"x"` | `"plus"` | `"circle-line"` | `"circle-slash"` | `"star"` | `"heart"` | `"hexagon"` | `"octagon"` | `"pedestrian"` | `"bicycle"` | `"wheelchair"` | `"airport"` | `"car"` | `"bus"` | `"train"` | `"truck"` | `"ferry"` | `"sailboat"` | `"electric-service"` | `"gas-service"` | `"blood-clinic"` | `"badge"` | `"traffic-light"` | `"traffic-cone"` | `"road-sign-caution"` | `"person"` | `"restroom"` | `"house"` | `"work"` | `"letter"` | `"hotel"` | `"factory"` | `"hospital"` | `"religious-facility"` | `"school"` | `"government"` | `"university"` | `"bank"` | `"landmark"` | `"museum"` | `"clothing"` | `"shopping"` | `"store"` | `"bar"` | `"pub"` | `"cafe"` | `"food"` | `"park"` | `"amusement-park"` | `"camping-tent"` | `"cabin"` | `"picnic"` | `"water-refill"` | `"trailhead"` | `"guidepost"` | `"viewpoint"` | `"camera"` | `"us-football"` | `"football"` | `"tennis"` | `"binoculars"` | `"swimming"` | `"zap"` | `"battery-full"` | `"battery-half"` | `"battery-low"` | `"boom"` | `"radar"` | `"wind-turbine"` | `"solar-panel"` | `"antenna"` | `"telephone-pole"` | `"oil-well"` | `"oil-barrel"` | `"railroad-track"` | `"bridge"` | `"lighthouse"` | `"lock-closed"` | `"lock-open"` | `"wifi"` | `"trash"` | `"recycle"` | `"tree"` | `"flower"` | `"leaf"` | `"fire"` | `"mountain"` | `"snowy-mountain"` | `"volcano"` | `"island"` | `"wave"` | `"hot-springs"` | `"water"` | `"lake"` | `"ocean"` | `"animal"` | `"bird"` | `"duck"` | `"dog"` | `"fish"` | `"beach"` | `"wetland"` | `"sun"` | `"moon"` | `"cloud"` | `"partial-sun"` | `"rain"` | `"lightning"` | `"snowflake"` | `"wind"` | `"snow"` | `"fog"` | `"sleet"` | `"hurricane"` | `"warning"` | `"parking"` | `"info"` | `"circle-exclamation"` | `"circle-triangle"` | `"circle-x"` | `"circle-plus"` | `` `:${string}:` `` & `object` +## uiFeatureAction + +> **uiFeatureAction**: `object` + +Represents a feature action after creation (with generated id). + +### Type declaration + +#### id + +> **id**: `string` + +#### label + +> **label**: `string` + +#### onTrigger() + +> **onTrigger**: (`args`) => `void` + +##### Parameters + +##### args + +##### feature + +[`LayerFeature`](client.md#layerfeature) + +##### Returns + +`void` + +#### layerIds? + +> `optional` **layerIds**: `string`\[] + +#### geometryTypes? + +> `optional` **geometryTypes**: (`"Polygon"` | `"Point"` | `"Line"` | `"Raster"`)\[] + ## PlacementForUIElement > **PlacementForUIElement**: \{ `after`: `string`; } | \{ `before`: `string`; } | \{ `at`: `"start"` | `"end"`; }