From be33825c2dcb38124e1427594e9f43d822fe524a Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Thu, 23 May 2024 13:57:56 -0700 Subject: [PATCH 01/80] Initial Skeleton --- .gitignore | 2 + .../src/components/Map/Component.form.ts | 62 ++++++++++ components/src/components/Map/Component.ts | 33 ++++++ .../Map/editForm/Component.edit.data.ts | 25 ++++ .../Map/editForm/Component.edit.display.ts | 108 ++++++++++++++++++ .../Map/editForm/Component.edit.validation.ts | 22 ++++ components/src/components/index.ts | 4 +- 7 files changed, 255 insertions(+), 1 deletion(-) create mode 100644 components/src/components/Map/Component.form.ts create mode 100644 components/src/components/Map/Component.ts create mode 100644 components/src/components/Map/editForm/Component.edit.data.ts create mode 100644 components/src/components/Map/editForm/Component.edit.display.ts create mode 100644 components/src/components/Map/editForm/Component.edit.validation.ts diff --git a/.gitignore b/.gitignore index f3ab92d0e..6b1ea70ae 100644 --- a/.gitignore +++ b/.gitignore @@ -69,3 +69,5 @@ build !app/frontend/.env !local-infrastructure/.env .history +realm-export.json +chefs_build \ No newline at end of file diff --git a/components/src/components/Map/Component.form.ts b/components/src/components/Map/Component.form.ts new file mode 100644 index 000000000..d82d83b81 --- /dev/null +++ b/components/src/components/Map/Component.form.ts @@ -0,0 +1,62 @@ +import baseEditForm from 'formiojs/components/_classes/component/Component.form'; + +import EditData from './editForm/Component.edit.data'; +import EditDisplay from './editForm/Component.edit.display'; +import EditValidation from './editForm/Component.edit.validation'; + +import SimpleApi from '../Common/Simple.edit.api'; +import SimpleConditional from '../Common/Simple.edit.conditional'; + +export default function(...extend) { + return baseEditForm([ + EditDisplay, + { + key: 'data', + ignore: true, + }, + { + key: 'api', + ignore: true + }, + { + key: 'layout', + ignore: true + }, + { + key: 'conditional', + ignore: true + }, + { + key: 'validation', + ignore: true + }, + { + key: 'logic', + ignore: true + }, + { + label: 'Data', + key: 'customData', + weight: 10, + components: EditData + }, + { + label: 'Validation', + key: 'customValidation', + weight: 20, + components: EditValidation + }, + { + label: 'API', + key: 'customAPI', + weight: 30, + components: SimpleApi + }, + { + label: 'Conditional', + key: 'customConditional', + weight: 40, + components: SimpleConditional + } + ], ...extend); +} diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts new file mode 100644 index 000000000..086bde836 --- /dev/null +++ b/components/src/components/Map/Component.ts @@ -0,0 +1,33 @@ +/* tslint:disable */ +import { Components } from 'formiojs'; +const ParentComponent = (Components as any).components.Field; +import editForm from './Component.form'; + +import { Constants } from '../Common/Constants'; + + +const ID = 'map'; +const DISPLAY = 'Map'; + +export default class MapComponent extends (ParentComponent as any) { + static schema(...extend) { + return MapComponent.schema({ + type: ID, + label: DISPLAY, + key: ID, + }, ...extend); + } + + public static editForm = editForm; + static get builderInfo() { + return { + title: DISPLAY, + group: 'simple', + icon: 'map', + weight: 1, + documentation: Constants.DEFAULT_HELP_LINK, + schema: MapComponent.schema() + }; + } + +} diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts new file mode 100644 index 000000000..9c28c5944 --- /dev/null +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -0,0 +1,25 @@ +import common from '../../Common/Simple.edit.data'; +export default [ + ...common, + { + weight: 200, + type: 'radio', + label: 'Text Case', + key: 'case', + tooltip: 'When data is entered, you can change the case of the value.', + input: true, + values: [ + { + value: 'mixed', + label: 'Mixed (Allow upper and lower case)' + }, + { + value: 'uppercase', + label: 'Uppercase' + },{ + value: 'lowercase', + label: 'Lowercase' + } + ] + } +]; diff --git a/components/src/components/Map/editForm/Component.edit.display.ts b/components/src/components/Map/editForm/Component.edit.display.ts new file mode 100644 index 000000000..6a3c34c35 --- /dev/null +++ b/components/src/components/Map/editForm/Component.edit.display.ts @@ -0,0 +1,108 @@ +import common from '../../Common/Simple.edit.display'; +export default + { + key: 'display', + components: [ + ...common, + { + key: 'refreshOnChange', + ignore: true + }, + { + key: 'className', + ignore: true, + }, + { + key: 'widget', + ignore: true + }, + { + key: 'widget.type', + ignore: true + }, + { + key: 'prefix', + ignore: true + }, + { + key: 'suffix', + ignore: true + }, + { + weight: 410, + type: 'textfield', + input: true, + key: 'inputMask', + label: 'Input Mask', + tooltip: 'An input mask helps the user with input by ensuring a predefined format.

9: numeric
a: alphabetical
*: alphanumeric

Example telephone mask: (999) 999-9999

See the jquery.inputmask documentation for more information.', + customConditional(context) { + return !context.data.allowMultipleMasks; + } + }, + { + weight: 413, + type: 'checkbox', + input: true, + key: 'allowMultipleMasks', + label: 'Allow Multiple Masks' + }, + { + weight: 1350, + type: 'checkbox', + input: true, + key: 'spellcheck', + defaultValue: true, + label: 'Allow Spellcheck' + }, + { + weight: 417, + type: 'datagrid', + input: true, + key: 'inputMasks', + label: 'Input Masks', + customConditional(context) { + return context.data.allowMultipleMasks === true; + }, + reorder: true, + components: [ + { + type: 'textfield', + key: 'label', + label: 'Label', + input: true + }, + { + type: 'textfield', + key: 'mask', + label: 'Mask', + input: true + } + ] + }, + { + key: 'autocomplete', + ignore: true, + }, + { + weight: 1300, + key: 'mask', + ignore: true + }, + { + weight: 1200, + type: 'checkbox', + label: 'Show Word Counter', + tooltip: 'Show a live count of the number of words.', + key: 'showWordCount', + input: true + }, + { + weight: 1201, + type: 'checkbox', + label: 'Show Character Counter', + tooltip: 'Show a live count of the number of characters.', + key: 'showCharCount', + input: true + } + ] + } diff --git a/components/src/components/Map/editForm/Component.edit.validation.ts b/components/src/components/Map/editForm/Component.edit.validation.ts new file mode 100644 index 000000000..e0ac0d5e4 --- /dev/null +++ b/components/src/components/Map/editForm/Component.edit.validation.ts @@ -0,0 +1,22 @@ +import common from '../../Common/Simple.edit.validation'; +export default [ + ...common, + { + weight: 110, + key: 'validate.minLength', + label: 'Minimum Length', + placeholder: 'Minimum Length', + type: 'number', + tooltip: 'The minimum length requirement this field must meet.', + input: true + }, + { + weight: 120, + key: 'validate.maxLength', + label: 'Maximum Length', + placeholder: 'Maximum Length', + type: 'number', + tooltip: 'The maximum length requirement this field must meet.', + input: true + } +]; diff --git a/components/src/components/index.ts b/components/src/components/index.ts index 8361f59d1..46eb2c816 100755 --- a/components/src/components/index.ts +++ b/components/src/components/index.ts @@ -45,6 +45,7 @@ import simplesignatureadvanced from './SimpleSignatureAdvanced/Component'; import simplebuttonadvanced from './SimpleButtonAdvanced/Component'; import bcaddress from './BCAddress/Component'; import simplebcaddress from './SimpleBCAddress/Component'; +import map from './Map/Component' export default { orgbook, @@ -93,5 +94,6 @@ export default { simplesignatureadvanced, simplebuttonadvanced, bcaddress, - simplebcaddress + simplebcaddress, + map }; From 814fa7c36fd0633a125cef5821ffadb4ab54655d Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Thu, 23 May 2024 14:02:22 -0700 Subject: [PATCH 02/80] component creation reference --- .../src/components/designer/FormDesigner.vue | 1 + components/package-lock.json | 6 +++ components/package.json | 1 + .../src/components/Map/Common/Constants.ts | 4 ++ components/src/components/Map/Component.ts | 52 +++++++++++++++++++ components/src/components/index.ts | 4 +- 6 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 components/src/components/Map/Common/Constants.ts create mode 100644 components/src/components/Map/Component.ts diff --git a/app/frontend/src/components/designer/FormDesigner.vue b/app/frontend/src/components/designer/FormDesigner.vue index 02f30bf17..8be4e901a 100644 --- a/app/frontend/src/components/designer/FormDesigner.vue +++ b/app/frontend/src/components/designer/FormDesigner.vue @@ -184,6 +184,7 @@ export default { simplefile: this.form.userType !== this.ID_MODE.PUBLIC, bcaddress: true, simplebcaddress: true, + MapComponent: true, }, }, }, diff --git a/components/package-lock.json b/components/package-lock.json index 2d6935783..98a073220 100644 --- a/components/package-lock.json +++ b/components/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { + "@bcgov/smk": "^1.2.1", "autocompleter": "^7.0.1", "formiojs": "^4.14.6", "lodash": "^4.17.21", @@ -301,6 +302,11 @@ "to-fast-properties": "^2.0.0" } }, + "node_modules/@bcgov/smk": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@bcgov/smk/-/smk-1.2.1.tgz", + "integrity": "sha512-FBpBefqAm2uLfGmbwRZwORzt6+RQAuiQ93DVweQBwgJ5eggq25SmpX15atg+R86RlQnnvWSLu+AC4QMey3X92g==" + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", diff --git a/components/package.json b/components/package.json index a0cb08779..70e717b89 100755 --- a/components/package.json +++ b/components/package.json @@ -47,6 +47,7 @@ "components" ], "dependencies": { + "@bcgov/smk": "^1.2.1", "autocompleter": "^7.0.1", "formiojs": "^4.14.6", "lodash": "^4.17.21", diff --git a/components/src/components/Map/Common/Constants.ts b/components/src/components/Map/Common/Constants.ts new file mode 100644 index 000000000..969ac7b2a --- /dev/null +++ b/components/src/components/Map/Common/Constants.ts @@ -0,0 +1,4 @@ +export abstract class Constants { + static readonly DEFAULT_HELP_LINK: string = 'https://github.com/bcgov/common-hosted-form-service/wiki'; + static readonly ADV: string = ''; +} diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts new file mode 100644 index 000000000..a8b7c1563 --- /dev/null +++ b/components/src/components/Map/Component.ts @@ -0,0 +1,52 @@ +import { Components } from 'formiojs'; +//import SMK from '@bcgov/smk'; + +const FieldComponent = Components.components.field; + +class MapComponent extends FieldComponent { + static schema(...extend: any[]) { + return FieldComponent.schema({ + type: 'map', + label: 'Map', + key: 'map', + input: true, + ...extend, + }); + } + + static get builderInfo() { + return { + title: 'Map', + group: 'basic', + icon: 'map', + weight: 70, + schema: MapComponent.schema(), + }; + } + + render() { + return super.render( + this.renderTemplate('input', { + input: `
map goes here
`, + }) + ); + } + + attach(element: HTMLElement) { + super.attach(element); + this.loadMap(); + } + + loadMap() { + const mapContainer = document.getElementById('map'); + if (mapContainer) { + console.log('inside Map'); + // SMK.init({ container: 'map' }).then((smk) => { + // // Additional SMK configuration goes here + // }); + } + } +} + +Components.addComponent('map', MapComponent); +export default MapComponent; diff --git a/components/src/components/index.ts b/components/src/components/index.ts index 8361f59d1..13289e107 100755 --- a/components/src/components/index.ts +++ b/components/src/components/index.ts @@ -45,6 +45,7 @@ import simplesignatureadvanced from './SimpleSignatureAdvanced/Component'; import simplebuttonadvanced from './SimpleButtonAdvanced/Component'; import bcaddress from './BCAddress/Component'; import simplebcaddress from './SimpleBCAddress/Component'; +import MapComponent from './Map/Component'; export default { orgbook, @@ -93,5 +94,6 @@ export default { simplesignatureadvanced, simplebuttonadvanced, bcaddress, - simplebcaddress + simplebcaddress, + MapComponent, }; From 74eb54e0e2104dde96d91c5250f3d1a8648d4920 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 27 May 2024 09:20:56 -0700 Subject: [PATCH 03/80] SMK Skeleton Integration --- app/frontend/package-lock.json | 1508 +++++++++++++++++++- app/frontend/package.json | 1 + app/frontend/public/index.html | 1 + components/src/components/Map/Component.ts | 7 +- components/src/components/index.ts | 3 - 5 files changed, 1479 insertions(+), 41 deletions(-) diff --git a/app/frontend/package-lock.json b/app/frontend/package-lock.json index ed5230553..1407b2b07 100644 --- a/app/frontend/package-lock.json +++ b/app/frontend/package-lock.json @@ -10,6 +10,7 @@ "license": "Apache-2.0", "dependencies": { "@bcgov/bc-sans": "^1.0.1", + "@bcgov/smk-cli": "^1.2.0", "@formio/vue": "^5.0.0", "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", @@ -98,6 +99,91 @@ "resolved": "https://registry.npmjs.org/@bcgov/bc-sans/-/bc-sans-1.0.1.tgz", "integrity": "sha512-4suRUBFeHcuFkwXXJu9pKJNB5Z2G3bpuLEHIq203KVCKC8KrsnqvsyUOf645TypgLwqOTOYCETiXYzfxF4gLAw==" }, + "node_modules/@bcgov/smk": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@bcgov/smk/-/smk-1.2.1.tgz", + "integrity": "sha512-FBpBefqAm2uLfGmbwRZwORzt6+RQAuiQ93DVweQBwgJ5eggq25SmpX15atg+R86RlQnnvWSLu+AC4QMey3X92g==" + }, + "node_modules/@bcgov/smk-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@bcgov/smk-cli/-/smk-cli-1.2.0.tgz", + "integrity": "sha512-szTNQiZYMpM8+/Qzsafj/lPlw0jIKGhy97bRiN3skfdCKu5qZdB56nVxSmFL1sK3zfalG5Qw4Az746x84sdE2g==", + "dependencies": { + "@bcgov/smk": ">=1.2.0", + "@tmcw/togeojson": "~4.5.0", + "@xmldom/xmldom": "~0.8.5", + "chalk": "~4.1.0", + "cors": "~2.8.5", + "csv-parse": "~4.16.0", + "express": "~4.17.3", + "fgdb": "~1.0.0", + "figlet": "~1.5.0", + "glob": "7.1.2", + "inquirer": "~7.3.3", + "lodash": "~4.17.21", + "material-design-icons-iconfont": "6.1.1", + "minimist": "~1.2.5", + "multer": "~1.4.5-lts.1", + "node-fetch": "~2.6.7", + "open": "~7.4.0", + "proj4": "~2.7.5", + "semver": "~7.3.5", + "shapefile": "~0.6.6", + "shelljs": "~0.8.5", + "touch": "~3.1.0", + "unzipper": "~0.10.11", + "xml2js": "~0.4.23" + }, + "bin": { + "smk": "index.js" + } + }, + "node_modules/@bcgov/smk-cli/node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@bcgov/smk-cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@bcgov/smk-cli/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@bcgov/smk-cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -1016,6 +1102,11 @@ "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" }, + "node_modules/@tmcw/togeojson": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@tmcw/togeojson/-/togeojson-4.5.0.tgz", + "integrity": "sha512-lNuuhW7nvN1T7xII9eRTi9zuPwYfFl43/1u/Xgi88tedX4ePfwJB5dqc31N7z6sWeR+7EES274ESNrK1gsW53A==" + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -1346,6 +1437,14 @@ "vuetify": "^3.0.0" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -1363,6 +1462,18 @@ "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", @@ -1426,11 +1537,35 @@ "resolved": "https://registry.npmjs.org/animation-frame-polyfill/-/animation-frame-polyfill-1.0.2.tgz", "integrity": "sha512-PvO5poSMoHhaoNNgHPo+oqs/0L9UqjsUbqv0iOXVqLh6HX85fsOVQTUrzSBvjdZz7hydARlgLELyzJJKIrPJAQ==" }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -1439,7 +1574,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1463,6 +1597,11 @@ "node": ">= 8" } }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1481,11 +1620,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, "node_modules/array-from": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==" }, + "node_modules/array-source": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/array-source/-/array-source-0.0.4.tgz", + "integrity": "sha512-frNdc+zBn80vipY+GdcJkLEbMWj3xmzArYApmUGxoiV8uAu/ygcs9icPdsGdA26h0MkHUMW6EN2piIvVx+M5Mw==" + }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -1547,8 +1696,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-js": { "version": "1.5.1", @@ -1569,6 +1717,26 @@ } ] }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1578,12 +1746,61 @@ "node": ">=8" } }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, "node_modules/blueimp-md5": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", "dev": true }, + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -1599,7 +1816,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1633,8 +1849,42 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "devOptional": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } }, "node_modules/cac": { "version": "6.7.14", @@ -1684,11 +1934,21 @@ "node": ">=4" } }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1700,6 +1960,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, "node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -1748,6 +2013,25 @@ "node": ">= 6" } }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, "node_modules/clipboard": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", @@ -1770,7 +2054,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1781,8 +2064,7 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/combined-stream": { "version": "1.0.8", @@ -1798,8 +2080,7 @@ "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "devOptional": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/compare-versions": { "version": "5.0.3", @@ -1809,8 +2090,21 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } }, "node_modules/concordance": { "version": "5.0.4", @@ -1841,6 +2135,25 @@ "proto-list": "~1.2.1" } }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/contra": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/contra/-/contra-1.9.4.tgz", @@ -1856,6 +2169,19 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, "node_modules/core-js": { "version": "3.31.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.0.tgz", @@ -1866,6 +2192,23 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/create-point-cb": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-point-cb/-/create-point-cb-1.2.0.tgz", @@ -1936,6 +2279,11 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "node_modules/csv-parse": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==" + }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -2111,6 +2459,19 @@ "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + }, "node_modules/dialog-polyfill": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.5.6.tgz", @@ -2213,6 +2574,14 @@ "crossvent": "1.5.5" } }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, "node_modules/editorconfig": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", @@ -2237,6 +2606,24 @@ "semver": "bin/semver" } }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -2306,6 +2693,11 @@ "@esbuild/win32-x64": "0.20.2" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -2534,16 +2926,101 @@ "node": ">=0.10.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, + "node_modules/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2589,6 +3066,47 @@ "node-fetch": "~2.6.1" } }, + "node_modules/fgdb": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fgdb/-/fgdb-1.0.0.tgz", + "integrity": "sha512-2ZaznM1bhXk9e5xBdLzAR8H9yGFB2N51QTfMsHnynyJkqqmPMXSvSH5U6qzsyt73aTLQCFeViSQz5an4PKg4XA==", + "dependencies": { + "jszip": "~0.2.1", + "lie": "^3.0.0", + "long": "~1.1.2", + "proj4": "^2.3.6" + } + }, + "node_modules/figlet": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", + "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2601,6 +3119,14 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-source": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/file-source/-/file-source-0.6.1.tgz", + "integrity": "sha512-1R1KneL7eTXmXfKxC10V/9NeGOdbsAXJ+lQ//fvvcHUgtaZcZDWNJNblxAoVOyV1cj45pOtUrR3vZTBwqcW8XA==", + "dependencies": { + "stream-source": "0.3" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2613,6 +3139,36 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2740,11 +3296,26 @@ "vanilla-picker": "^2.12.1" } }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", @@ -2759,10 +3330,58 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functions-have-names": { "version": "1.2.3", @@ -2889,6 +3508,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -2941,7 +3565,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -2993,6 +3616,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", @@ -3011,6 +3645,21 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -3086,6 +3735,11 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "node_modules/immutable": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", @@ -3121,7 +3775,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -3130,8 +3783,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", @@ -3139,6 +3791,29 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -3152,6 +3827,22 @@ "node": ">= 0.4" } }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -3257,6 +3948,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -3271,6 +3973,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3280,6 +3996,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3438,6 +4162,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -3659,6 +4394,11 @@ "resolved": "https://registry.npmjs.org/jstimezonedetect/-/jstimezonedetect-1.0.7.tgz", "integrity": "sha512-ARADHortktl9IZ1tr4GHwGPIAzgz3mLNCbR/YjWtRtc/O0o634O3NeFlpLjv95EvuDA5dc8z6yfgbS8nUc4zcQ==" }, + "node_modules/jszip": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-0.2.1.tgz", + "integrity": "sha512-Djh0bVj/EiqNTlwKC10xsOf+HtdD6mVq4m7DWdRoUvChB0aj2BThnGl+Kl4uDlRuxlp+EvjZ2ZOo0niTJlh+LQ==" + }, "node_modules/jwt-decode": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", @@ -3686,6 +4426,19 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, "node_modules/local-pkg": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", @@ -3724,6 +4477,14 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/long": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/long/-/long-1.1.5.tgz", + "integrity": "sha512-TU6nAF5SdasnTr28c7e74P4Crbn9o3/zwo1pM22Wvg2i2vlZ4Eelxwu4QT7j21z0sDBlJDEnEZjXTZg2J8WJrg==", + "engines": { + "node": ">=0.6" + } + }, "node_modules/loupe": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", @@ -3778,6 +4539,11 @@ "semver": "bin/semver.js" } }, + "node_modules/material-design-icons-iconfont": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/material-design-icons-iconfont/-/material-design-icons-iconfont-6.1.1.tgz", + "integrity": "sha512-nkoXybeXoofanNagj4tbM6+/LALWpWxYX5ee861to5VQrKgb0/TskTw28Svwn0OGDKajuqK7ShFOsIBxIygGKA==" + }, "node_modules/md5-hex": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", @@ -3790,6 +4556,43 @@ "node": ">=8" } }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mgrs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mgrs/-/mgrs-1.0.0.tgz", + "integrity": "sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -3809,11 +4612,18 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3821,11 +4631,30 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/mitt": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mlly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.3.0.tgz", @@ -3863,6 +4692,28 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "devOptional": true }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -3891,6 +4742,14 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/node-fetch": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", @@ -3957,6 +4816,14 @@ "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==", "dev": true }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -4005,15 +4872,54 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -4031,6 +4937,14 @@ "node": ">= 0.8.0" } }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -4090,6 +5004,14 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4103,7 +5025,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4117,6 +5038,25 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-source": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/path-source/-/path-source-0.1.3.tgz", + "integrity": "sha512-dWRHm5mIw5kw0cs3QZLNmpUWty48f5+5v9nWD2dw3Y0Hf+s01Ag8iJEWV0Sm0kocE8kK27DrIowha03e1YR+Qw==", + "dependencies": { + "array-source": "0.0", + "file-source": "0.6" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, "node_modules/pathe": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", @@ -4312,12 +5252,38 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/proj4": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.7.5.tgz", + "integrity": "sha512-5ecXUXbHAfvdhfBQpU7EhUfPCQGUCPmVup/4gnZA3bJY3JcK/xxzm4QQDz1xiXokN6ux65VDczlCtBtKrTSpAQ==", + "dependencies": { + "mgrs": "1.0.0", + "wkt-parser": "^1.3.1" + } + }, "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -4352,6 +5318,17 @@ "vue": "^3.0.0" } }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -4422,12 +5399,69 @@ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -4440,6 +5474,17 @@ "node": ">=8.10.0" } }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/redux": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", @@ -4489,6 +5534,22 @@ "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -4498,6 +5559,18 @@ "node": ">=4" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -4581,6 +5654,14 @@ "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", "dev": true }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4604,11 +5685,40 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { "version": "1.63.4", @@ -4627,6 +5737,11 @@ "node": ">=14.0.0" } }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", @@ -4677,6 +5792,88 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shapefile": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/shapefile/-/shapefile-0.6.6.tgz", + "integrity": "sha512-rLGSWeK2ufzCVx05wYd+xrWnOOdSV7xNUW5/XFgx3Bc02hBkpMlrd2F1dDII7/jhWzv0MSyBFh5uJIy9hLdfuw==", + "dependencies": { + "array-source": "0.0", + "commander": "2", + "path-source": "0.1", + "slice-source": "0.4", + "stream-source": "0.3", + "text-encoding": "^0.6.4" + }, + "bin": { + "dbf2json": "bin/dbf2json", + "shp2json": "bin/shp2json" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4698,6 +5895,41 @@ "node": ">=8" } }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -4723,11 +5955,21 @@ "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", "dev": true }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/signature_pad": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/signature_pad/-/signature_pad-4.1.5.tgz", "integrity": "sha512-VOE846UbQMeLBbcR08KwjwE1wNLgp3gqC7yr/AELkgSMs/BdRpxIZna6K5XyZJpA7IWq9GiInw1C8PLm57VO6Q==" }, + "node_modules/slice-source": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/slice-source/-/slice-source-0.4.1.tgz", + "integrity": "sha512-YiuPbxpCj4hD9Qs06hGAz/OZhQ0eDuALN0lRWJez0eD/RevzKqGdUx1IOMUnXgpr+sXZLq3g8ERwbAH0bCb8vg==" + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4765,6 +6007,14 @@ "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/std-env": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz", @@ -4782,16 +6032,54 @@ "node": ">= 0.4" } }, + "node_modules/stream-source": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/stream-source/-/stream-source-0.3.5.tgz", + "integrity": "sha512-ZuEDP9sgjiAwUVoDModftG0JtYiLUV8K4ljYD1VyUMRWtbVf92474o4kuuul43iZ8t/hRuiDAx1dIJSvirrK/g==" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==" }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4827,7 +6115,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -4835,6 +6122,17 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -4893,12 +6191,23 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha512-hJnc6Qg3dWoOMkqP53F0dzRIgtmsAge09kxUIqGrEUS4qr5rWLckGYaQAVr+opBrIMRErGgy6f5aPnyPpyGRfg==", + "deprecated": "no longer maintained" + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, "node_modules/ticky": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ticky/-/ticky-1.0.1.tgz", @@ -4950,6 +6259,17 @@ "@popperjs/core": "^2.9.0" } }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -4962,6 +6282,22 @@ "node": ">=8.0" } }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, "node_modules/tough-cookie": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", @@ -4982,6 +6318,19 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "engines": { + "node": "*" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5020,6 +6369,23 @@ "resolved": "https://registry.npmjs.org/type-func/-/type-func-1.0.3.tgz", "integrity": "sha512-YA90CUk+i00tWESPNRMahywXhAz+12NLJLKlOWrgHIbqaFXjdZrWstRghaibOW/IxhPjui4SmXxO/03XSGRIjA==" }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "node_modules/ufo": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz", @@ -5035,6 +6401,31 @@ "node": ">= 4.0.0" } }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, "node_modules/upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -5067,8 +6458,15 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } }, "node_modules/uuid": { "version": "9.0.0", @@ -5100,6 +6498,14 @@ "@sphinxxxx/color-conversion": "^2.2.2" } }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/vite": { "version": "5.2.6", "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.6.tgz", @@ -6483,6 +7889,11 @@ "node": ">=8" } }, + "node_modules/wkt-parser": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.3.3.tgz", + "integrity": "sha512-ZnV3yH8/k58ZPACOXeiHaMuXIiaTk1t0hSUVisbO0t4RjA5wPpUytcxeyiN2h+LZRrmuHIh/1UlrR9e7DHDvTw==" + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -6495,8 +7906,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { "version": "8.13.0", @@ -6528,12 +7938,40 @@ "node": ">=12" } }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", diff --git a/app/frontend/package.json b/app/frontend/package.json index 42fdb9f7c..d668012a2 100644 --- a/app/frontend/package.json +++ b/app/frontend/package.json @@ -31,6 +31,7 @@ }, "dependencies": { "@bcgov/bc-sans": "^1.0.1", + "@bcgov/smk-cli": "^1.2.0", "@formio/vue": "^5.0.0", "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", diff --git a/app/frontend/public/index.html b/app/frontend/public/index.html index 5e1d6e99a..1dfc07d33 100755 --- a/app/frontend/public/index.html +++ b/app/frontend/public/index.html @@ -1,5 +1,6 @@ + diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index a8b7c1563..0a44c69e2 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -26,9 +26,10 @@ class MapComponent extends FieldComponent { render() { return super.render( - this.renderTemplate('input', { - input: `
map goes here
`, - }) + this + // this.renderTemplate('input', { + // input: `
map goes here
`, + // }) ); } diff --git a/components/src/components/index.ts b/components/src/components/index.ts index c1c66f751..13289e107 100755 --- a/components/src/components/index.ts +++ b/components/src/components/index.ts @@ -46,7 +46,6 @@ import simplebuttonadvanced from './SimpleButtonAdvanced/Component'; import bcaddress from './BCAddress/Component'; import simplebcaddress from './SimpleBCAddress/Component'; import MapComponent from './Map/Component'; -import map from './Map/Component' export default { orgbook, @@ -97,6 +96,4 @@ export default { bcaddress, simplebcaddress, MapComponent, - simplebcaddress, - map }; From 1a3145385c0bbd4ff2177d8acb31a09c3b309082 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 27 May 2024 10:00:48 -0700 Subject: [PATCH 04/80] Added map component changes --- .../src/components/Map/Common/Constants.d.ts | 4 + .../src/components/Map/Common/Constants.js | 4 + .../src/components/Map/Common/Constants.ts | 4 - components/src/components/Map/Component.d.ts | 16 +++ .../src/components/Map/Component.form.d.ts | 1 + .../{Component.form.ts => Component.form.js} | 5 +- components/src/components/Map/Component.js | 60 ++++++++++ components/src/components/Map/Component.ts | 53 --------- .../Map/editForm/Component.edit.data.d.ts | 29 +++++ ...nt.edit.data.ts => Component.edit.data.js} | 4 +- .../Map/editForm/Component.edit.display.d.ts | 81 +++++++++++++ .../Map/editForm/Component.edit.display.js | 107 +++++++++++++++++ .../Map/editForm/Component.edit.display.ts | 108 ------------------ .../editForm/Component.edit.validation.d.ts | 26 +++++ ...dation.ts => Component.edit.validation.js} | 0 15 files changed, 331 insertions(+), 171 deletions(-) create mode 100644 components/src/components/Map/Common/Constants.d.ts create mode 100644 components/src/components/Map/Common/Constants.js delete mode 100644 components/src/components/Map/Common/Constants.ts create mode 100644 components/src/components/Map/Component.d.ts create mode 100644 components/src/components/Map/Component.form.d.ts rename components/src/components/Map/{Component.form.ts => Component.form.js} (97%) create mode 100644 components/src/components/Map/Component.js delete mode 100644 components/src/components/Map/Component.ts create mode 100644 components/src/components/Map/editForm/Component.edit.data.d.ts rename components/src/components/Map/editForm/{Component.edit.data.ts => Component.edit.data.js} (94%) create mode 100644 components/src/components/Map/editForm/Component.edit.display.d.ts create mode 100644 components/src/components/Map/editForm/Component.edit.display.js delete mode 100644 components/src/components/Map/editForm/Component.edit.display.ts create mode 100644 components/src/components/Map/editForm/Component.edit.validation.d.ts rename components/src/components/Map/editForm/{Component.edit.validation.ts => Component.edit.validation.js} (100%) diff --git a/components/src/components/Map/Common/Constants.d.ts b/components/src/components/Map/Common/Constants.d.ts new file mode 100644 index 000000000..0b0a10000 --- /dev/null +++ b/components/src/components/Map/Common/Constants.d.ts @@ -0,0 +1,4 @@ +export declare abstract class Constants { + static readonly DEFAULT_HELP_LINK: string; + static readonly ADV: string; +} diff --git a/components/src/components/Map/Common/Constants.js b/components/src/components/Map/Common/Constants.js new file mode 100644 index 000000000..0ca555292 --- /dev/null +++ b/components/src/components/Map/Common/Constants.js @@ -0,0 +1,4 @@ +export class Constants { + static DEFAULT_HELP_LINK = 'https://github.com/bcgov/common-hosted-form-service/wiki'; + static ADV = ''; +} diff --git a/components/src/components/Map/Common/Constants.ts b/components/src/components/Map/Common/Constants.ts deleted file mode 100644 index 969ac7b2a..000000000 --- a/components/src/components/Map/Common/Constants.ts +++ /dev/null @@ -1,4 +0,0 @@ -export abstract class Constants { - static readonly DEFAULT_HELP_LINK: string = 'https://github.com/bcgov/common-hosted-form-service/wiki'; - static readonly ADV: string = ''; -} diff --git a/components/src/components/Map/Component.d.ts b/components/src/components/Map/Component.d.ts new file mode 100644 index 000000000..37f1f712e --- /dev/null +++ b/components/src/components/Map/Component.d.ts @@ -0,0 +1,16 @@ +import { Components } from 'formiojs'; +declare const FieldComponent: typeof Components.components.field; +declare class MapComponent extends FieldComponent { + static schema(...extend: any[]): import("formiojs").ExtendedComponentSchema; + static get builderInfo(): { + title: string; + group: string; + icon: string; + weight: number; + schema: import("formiojs").ExtendedComponentSchema; + }; + render(): any; + attach(element: HTMLElement): void; + loadMap(): void; +} +export default MapComponent; diff --git a/components/src/components/Map/Component.form.d.ts b/components/src/components/Map/Component.form.d.ts new file mode 100644 index 000000000..c1e415834 --- /dev/null +++ b/components/src/components/Map/Component.form.d.ts @@ -0,0 +1 @@ +export default function (...extend: any[]): any; diff --git a/components/src/components/Map/Component.form.ts b/components/src/components/Map/Component.form.js similarity index 97% rename from components/src/components/Map/Component.form.ts rename to components/src/components/Map/Component.form.js index d82d83b81..c8355339f 100644 --- a/components/src/components/Map/Component.form.ts +++ b/components/src/components/Map/Component.form.js @@ -1,13 +1,10 @@ import baseEditForm from 'formiojs/components/_classes/component/Component.form'; - import EditData from './editForm/Component.edit.data'; import EditDisplay from './editForm/Component.edit.display'; import EditValidation from './editForm/Component.edit.validation'; - import SimpleApi from '../Common/Simple.edit.api'; import SimpleConditional from '../Common/Simple.edit.conditional'; - -export default function(...extend) { +export default function (...extend) { return baseEditForm([ EditDisplay, { diff --git a/components/src/components/Map/Component.js b/components/src/components/Map/Component.js new file mode 100644 index 000000000..bb02203a9 --- /dev/null +++ b/components/src/components/Map/Component.js @@ -0,0 +1,60 @@ +import { Components } from 'formiojs'; +const FieldComponent = Components.components.field; + +class MapComponent extends FieldComponent { + static schema(...extend) { + return FieldComponent.schema({ + type: 'map', + label: 'Map', + key: 'map', + input: true, + ...extend, + }); + } + static get builderInfo() { + return { + title: 'Map', + group: 'basic', + icon: 'map', + weight: 70, + schema: MapComponent.schema(), + }; + } + + render() { + return super.render( + ` +
+ +
+ + ` + ) + } + attach(element) { + super.attach(element); + this.loadMap(); + } + loadMap() { + const mapContainer = document.getElementById('map'); + if (mapContainer) { + console.log('inside Map'); + // SMK.init({ container: 'map' }).then((smk) => { + // // Additional SMK configuration goes here + // }); + } + } + +} + +const testComponent = (data) =>{ + const printData = (d) =>{ console.log(d)} + console.log(data) + printData(data) +} +Components.addComponent('map', MapComponent); +export default MapComponent; diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts deleted file mode 100644 index 0a44c69e2..000000000 --- a/components/src/components/Map/Component.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Components } from 'formiojs'; -//import SMK from '@bcgov/smk'; - -const FieldComponent = Components.components.field; - -class MapComponent extends FieldComponent { - static schema(...extend: any[]) { - return FieldComponent.schema({ - type: 'map', - label: 'Map', - key: 'map', - input: true, - ...extend, - }); - } - - static get builderInfo() { - return { - title: 'Map', - group: 'basic', - icon: 'map', - weight: 70, - schema: MapComponent.schema(), - }; - } - - render() { - return super.render( - this - // this.renderTemplate('input', { - // input: `
map goes here
`, - // }) - ); - } - - attach(element: HTMLElement) { - super.attach(element); - this.loadMap(); - } - - loadMap() { - const mapContainer = document.getElementById('map'); - if (mapContainer) { - console.log('inside Map'); - // SMK.init({ container: 'map' }).then((smk) => { - // // Additional SMK configuration goes here - // }); - } - } -} - -Components.addComponent('map', MapComponent); -export default MapComponent; diff --git a/components/src/components/Map/editForm/Component.edit.data.d.ts b/components/src/components/Map/editForm/Component.edit.data.d.ts new file mode 100644 index 000000000..010dcbdd8 --- /dev/null +++ b/components/src/components/Map/editForm/Component.edit.data.d.ts @@ -0,0 +1,29 @@ +declare const _default: ({ + weight: number; + type: string; + label: string; + tooltip: string; + key: string; + input: boolean; + placeholder?: undefined; +} | { + type: string; + label: string; + key: string; + weight: number; + placeholder: string; + tooltip: string; + input: boolean; +} | { + weight: number; + type: string; + label: string; + key: string; + tooltip: string; + input: boolean; + values: { + value: string; + label: string; + }[]; +})[]; +export default _default; diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.js similarity index 94% rename from components/src/components/Map/editForm/Component.edit.data.ts rename to components/src/components/Map/editForm/Component.edit.data.js index 9c28c5944..4c548cb29 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.js @@ -1,6 +1,6 @@ import common from '../../Common/Simple.edit.data'; export default [ - ...common, + ...common, { weight: 200, type: 'radio', @@ -16,7 +16,7 @@ export default [ { value: 'uppercase', label: 'Uppercase' - },{ + }, { value: 'lowercase', label: 'Lowercase' } diff --git a/components/src/components/Map/editForm/Component.edit.display.d.ts b/components/src/components/Map/editForm/Component.edit.display.d.ts new file mode 100644 index 000000000..57d96c128 --- /dev/null +++ b/components/src/components/Map/editForm/Component.edit.display.d.ts @@ -0,0 +1,81 @@ +declare const _default: { + key: string; + components: ({ + key: string; + ignore: boolean; + } | { + weight: number; + type: string; + input: boolean; + key: string; + label: string; + tooltip: string; + customConditional(context: any): boolean; + defaultValue?: undefined; + reorder?: undefined; + components?: undefined; + ignore?: undefined; + } | { + weight: number; + type: string; + input: boolean; + key: string; + label: string; + tooltip?: undefined; + defaultValue?: undefined; + reorder?: undefined; + components?: undefined; + ignore?: undefined; + } | { + weight: number; + type: string; + input: boolean; + key: string; + defaultValue: boolean; + label: string; + tooltip?: undefined; + reorder?: undefined; + components?: undefined; + ignore?: undefined; + } | { + weight: number; + type: string; + input: boolean; + key: string; + label: string; + customConditional(context: any): boolean; + reorder: boolean; + components: { + type: string; + key: string; + label: string; + input: boolean; + }[]; + tooltip?: undefined; + defaultValue?: undefined; + ignore?: undefined; + } | { + weight: number; + key: string; + ignore: boolean; + type?: undefined; + input?: undefined; + label?: undefined; + tooltip?: undefined; + defaultValue?: undefined; + reorder?: undefined; + components?: undefined; + } | { + weight: number; + type: string; + label: string; + tooltip: string; + key: string; + input: boolean; + defaultValue?: undefined; + reorder?: undefined; + components?: undefined; + ignore?: undefined; + })[]; +}; +export default _default; diff --git a/components/src/components/Map/editForm/Component.edit.display.js b/components/src/components/Map/editForm/Component.edit.display.js new file mode 100644 index 000000000..2cf26efa4 --- /dev/null +++ b/components/src/components/Map/editForm/Component.edit.display.js @@ -0,0 +1,107 @@ +import common from '../../Common/Simple.edit.display'; +export default { + key: 'display', + components: [ + ...common, + { + key: 'refreshOnChange', + ignore: true + }, + { + key: 'className', + ignore: true, + }, + { + key: 'widget', + ignore: true + }, + { + key: 'widget.type', + ignore: true + }, + { + key: 'prefix', + ignore: true + }, + { + key: 'suffix', + ignore: true + }, + { + weight: 410, + type: 'textfield', + input: true, + key: 'inputMask', + label: 'Input Mask', + tooltip: 'An input mask helps the user with input by ensuring a predefined format.

9: numeric
a: alphabetical
*: alphanumeric

Example telephone mask: (999) 999-9999

See the jquery.inputmask documentation for more information.', + customConditional(context) { + return !context.data.allowMultipleMasks; + } + }, + { + weight: 413, + type: 'checkbox', + input: true, + key: 'allowMultipleMasks', + label: 'Allow Multiple Masks' + }, + { + weight: 1350, + type: 'checkbox', + input: true, + key: 'spellcheck', + defaultValue: true, + label: 'Allow Spellcheck' + }, + { + weight: 417, + type: 'datagrid', + input: true, + key: 'inputMasks', + label: 'Input Masks', + customConditional(context) { + return context.data.allowMultipleMasks === true; + }, + reorder: true, + components: [ + { + type: 'textfield', + key: 'label', + label: 'Label', + input: true + }, + { + type: 'textfield', + key: 'mask', + label: 'Mask', + input: true + } + ] + }, + { + key: 'autocomplete', + ignore: true, + }, + { + weight: 1300, + key: 'mask', + ignore: true + }, + { + weight: 1200, + type: 'checkbox', + label: 'Show Word Counter', + tooltip: 'Show a live count of the number of words.', + key: 'showWordCount', + input: true + }, + { + weight: 1201, + type: 'checkbox', + label: 'Show Character Counter', + tooltip: 'Show a live count of the number of characters.', + key: 'showCharCount', + input: true + } + ] +}; diff --git a/components/src/components/Map/editForm/Component.edit.display.ts b/components/src/components/Map/editForm/Component.edit.display.ts deleted file mode 100644 index 6a3c34c35..000000000 --- a/components/src/components/Map/editForm/Component.edit.display.ts +++ /dev/null @@ -1,108 +0,0 @@ -import common from '../../Common/Simple.edit.display'; -export default - { - key: 'display', - components: [ - ...common, - { - key: 'refreshOnChange', - ignore: true - }, - { - key: 'className', - ignore: true, - }, - { - key: 'widget', - ignore: true - }, - { - key: 'widget.type', - ignore: true - }, - { - key: 'prefix', - ignore: true - }, - { - key: 'suffix', - ignore: true - }, - { - weight: 410, - type: 'textfield', - input: true, - key: 'inputMask', - label: 'Input Mask', - tooltip: 'An input mask helps the user with input by ensuring a predefined format.

9: numeric
a: alphabetical
*: alphanumeric

Example telephone mask: (999) 999-9999

See the jquery.inputmask documentation for more information.', - customConditional(context) { - return !context.data.allowMultipleMasks; - } - }, - { - weight: 413, - type: 'checkbox', - input: true, - key: 'allowMultipleMasks', - label: 'Allow Multiple Masks' - }, - { - weight: 1350, - type: 'checkbox', - input: true, - key: 'spellcheck', - defaultValue: true, - label: 'Allow Spellcheck' - }, - { - weight: 417, - type: 'datagrid', - input: true, - key: 'inputMasks', - label: 'Input Masks', - customConditional(context) { - return context.data.allowMultipleMasks === true; - }, - reorder: true, - components: [ - { - type: 'textfield', - key: 'label', - label: 'Label', - input: true - }, - { - type: 'textfield', - key: 'mask', - label: 'Mask', - input: true - } - ] - }, - { - key: 'autocomplete', - ignore: true, - }, - { - weight: 1300, - key: 'mask', - ignore: true - }, - { - weight: 1200, - type: 'checkbox', - label: 'Show Word Counter', - tooltip: 'Show a live count of the number of words.', - key: 'showWordCount', - input: true - }, - { - weight: 1201, - type: 'checkbox', - label: 'Show Character Counter', - tooltip: 'Show a live count of the number of characters.', - key: 'showCharCount', - input: true - } - ] - } diff --git a/components/src/components/Map/editForm/Component.edit.validation.d.ts b/components/src/components/Map/editForm/Component.edit.validation.d.ts new file mode 100644 index 000000000..e2ae418b0 --- /dev/null +++ b/components/src/components/Map/editForm/Component.edit.validation.d.ts @@ -0,0 +1,26 @@ +declare const _default: ({ + weight: number; + type: string; + defaultValue: boolean; + label: string; + tooltip: string; + key: string; + input: boolean; +} | { + weight: number; + type: string; + label: string; + tooltip: string; + key: string; + input: boolean; + placeholder?: undefined; +} | { + weight: number; + key: string; + label: string; + placeholder: string; + type: string; + tooltip: string; + input: boolean; +})[]; +export default _default; diff --git a/components/src/components/Map/editForm/Component.edit.validation.ts b/components/src/components/Map/editForm/Component.edit.validation.js similarity index 100% rename from components/src/components/Map/editForm/Component.edit.validation.ts rename to components/src/components/Map/editForm/Component.edit.validation.js From 9c7733e19b48b6c5a320ed7d0771fca7d10a88e5 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 28 May 2024 15:16:24 -0700 Subject: [PATCH 05/80] Init Leaflet Component --- app/frontend/package-lock.json | 13 +++++++ app/frontend/package.json | 3 ++ components/src/components/Map/Component.js | 45 +++++++++++++++------- 3 files changed, 47 insertions(+), 14 deletions(-) diff --git a/app/frontend/package-lock.json b/app/frontend/package-lock.json index 1407b2b07..5c411abce 100644 --- a/app/frontend/package-lock.json +++ b/app/frontend/package-lock.json @@ -10,6 +10,7 @@ "license": "Apache-2.0", "dependencies": { "@bcgov/bc-sans": "^1.0.1", + "@bcgov/smk": "^1.2.1", "@bcgov/smk-cli": "^1.2.0", "@formio/vue": "^5.0.0", "@fortawesome/fontawesome-svg-core": "^6.4.2", @@ -22,6 +23,8 @@ "font-awesome": "^4.7.0", "formiojs": "^4.14.13", "keycloak-js": "^21.1.1", + "leaflet": "^1.9.4", + "leaflet-draw": "^1.0.4", "lodash": "^4.17.21", "mitt": "^3.0.0", "moment": "^2.29.4", @@ -4413,6 +4416,16 @@ "js-sha256": "^0.9.0" } }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, + "node_modules/leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", diff --git a/app/frontend/package.json b/app/frontend/package.json index d668012a2..1d78085e3 100644 --- a/app/frontend/package.json +++ b/app/frontend/package.json @@ -31,6 +31,7 @@ }, "dependencies": { "@bcgov/bc-sans": "^1.0.1", + "@bcgov/smk": "^1.2.1", "@bcgov/smk-cli": "^1.2.0", "@formio/vue": "^5.0.0", "@fortawesome/fontawesome-svg-core": "^6.4.2", @@ -43,6 +44,8 @@ "font-awesome": "^4.7.0", "formiojs": "^4.14.13", "keycloak-js": "^21.1.1", + "leaflet": "^1.9.4", + "leaflet-draw": "^1.0.4", "lodash": "^4.17.21", "mitt": "^3.0.0", "moment": "^2.29.4", diff --git a/components/src/components/Map/Component.js b/components/src/components/Map/Component.js index bb02203a9..fc507fb4a 100644 --- a/components/src/components/Map/Component.js +++ b/components/src/components/Map/Component.js @@ -1,5 +1,11 @@ import { Components } from 'formiojs'; const FieldComponent = Components.components.field; +import L from "leaflet" +import "leaflet-draw" +import 'leaflet/dist/leaflet.css'; +import "leaflet-draw/dist/leaflet.draw-src.css"; + +const CENTER = [48.41938669910753, -123.37030649185182] class MapComponent extends FieldComponent { static schema(...extend) { @@ -24,28 +30,39 @@ class MapComponent extends FieldComponent { render() { return super.render( ` -
- -
+
` ) } attach(element) { - super.attach(element); + const superAttach = super.attach(element); this.loadMap(); + return superAttach } loadMap() { - const mapContainer = document.getElementById('map'); - if (mapContainer) { - console.log('inside Map'); - // SMK.init({ container: 'map' }).then((smk) => { - // // Additional SMK configuration goes here - // }); + const mapContainer = document.getElementById("mapContainer"); + if(mapContainer){ + const map = L.map(mapContainer,{drawControl:true}).setView(CENTER, 13); + L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: '© OpenStreetMap contributors', + }).addTo(map); + var drawnItems = new L.FeatureGroup() + var drawControl = new L.Control.Draw({ + edit:{ + featureGroup: drawnItems + } + }) + map.addControl(drawControl) + + //event listener + map.on('draw:created', function(e){ + console.log(e) + var type = e.layerType + var layer = e.layer + + drawnItems.addLayer(layer) + }) } } From 9c73981e3c2c85f8a142f1c06c0b920e9d57958f Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 28 May 2024 17:15:17 -0700 Subject: [PATCH 06/80] Fixed marker bug, reduced options to point and circle, prelim work on submission data --- components/src/components/Map/Component.js | 48 ++++++++++++++-------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/components/src/components/Map/Component.js b/components/src/components/Map/Component.js index fc507fb4a..f0fd1a16e 100644 --- a/components/src/components/Map/Component.js +++ b/components/src/components/Map/Component.js @@ -1,11 +1,11 @@ -import { Components } from 'formiojs'; +import { Formio, Components } from 'formiojs'; const FieldComponent = Components.components.field; import L from "leaflet" import "leaflet-draw" import 'leaflet/dist/leaflet.css'; import "leaflet-draw/dist/leaflet.draw-src.css"; -const CENTER = [48.41938669910753, -123.37030649185182] +const CENTER = [48.41939025932759,-123.37029576301576] class MapComponent extends FieldComponent { static schema(...extend) { @@ -30,7 +30,7 @@ class MapComponent extends FieldComponent { render() { return super.render( ` -
+
` ) @@ -42,36 +42,52 @@ class MapComponent extends FieldComponent { } loadMap() { const mapContainer = document.getElementById("mapContainer"); + const form = document.getElementsByClassName("formio") if(mapContainer){ - const map = L.map(mapContainer,{drawControl:true}).setView(CENTER, 13); + const map = L.map(mapContainer).setView(CENTER, 13); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors', - }).addTo(map); - var drawnItems = new L.FeatureGroup() - var drawControl = new L.Control.Draw({ + }).addTo(map); + + + + if(form && form[0]?.classList.contains("formbuilder")){ + map.dragging.disable(); + map.scrollWheelZoom.disable(); + } + + //Initialize Draw Layer + let drawnItems = new L.FeatureGroup() + map.addLayer(drawnItems) + //Add Drawing Controllers + let drawControl = new L.Control.Draw({ + draw:{ + circlemarker:false, + polygon: false, + polyline: false, + rectangle:false, + }, edit:{ featureGroup: drawnItems } }) + //Attach Controls to map map.addControl(drawControl) - //event listener + //event listener for drawn objects map.on('draw:created', function(e){ - console.log(e) - var type = e.layerType - var layer = e.layer + //console.log(e) + let type = e.layerType + let layer = e.layer drawnItems.addLayer(layer) + console.log(drawnItems._layers) + }) } } } -const testComponent = (data) =>{ - const printData = (d) =>{ console.log(d)} - console.log(data) - printData(data) -} Components.addComponent('map', MapComponent); export default MapComponent; From 6e91baf5f5282982bf70c718bc36f0d6f6e5fcb8 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Fri, 31 May 2024 15:45:59 -0700 Subject: [PATCH 07/80] refactor map component --- components/src/components/Map/Component.js | 55 ++++----------------- components/src/components/Map/MapService.js | 45 +++++++++++++++++ 2 files changed, 54 insertions(+), 46 deletions(-) create mode 100644 components/src/components/Map/MapService.js diff --git a/components/src/components/Map/Component.js b/components/src/components/Map/Component.js index f0fd1a16e..0962184f9 100644 --- a/components/src/components/Map/Component.js +++ b/components/src/components/Map/Component.js @@ -1,9 +1,6 @@ -import { Formio, Components } from 'formiojs'; +import { Components } from 'formiojs'; const FieldComponent = Components.components.field; -import L from "leaflet" -import "leaflet-draw" -import 'leaflet/dist/leaflet.css'; -import "leaflet-draw/dist/leaflet.draw-src.css"; +import MapService from './MapService'; const CENTER = [48.41939025932759,-123.37029576301576] @@ -43,48 +40,14 @@ class MapComponent extends FieldComponent { loadMap() { const mapContainer = document.getElementById("mapContainer"); const form = document.getElementsByClassName("formio") - if(mapContainer){ - const map = L.map(mapContainer).setView(CENTER, 13); - L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { - attribution: '© OpenStreetMap contributors', - }).addTo(map); - - - - if(form && form[0]?.classList.contains("formbuilder")){ - map.dragging.disable(); - map.scrollWheelZoom.disable(); - } - - //Initialize Draw Layer - let drawnItems = new L.FeatureGroup() - map.addLayer(drawnItems) - //Add Drawing Controllers - let drawControl = new L.Control.Draw({ - draw:{ - circlemarker:false, - polygon: false, - polyline: false, - rectangle:false, - }, - edit:{ - featureGroup: drawnItems - } - }) - //Attach Controls to map - map.addControl(drawControl) - - //event listener for drawn objects - map.on('draw:created', function(e){ - //console.log(e) - let type = e.layerType - let layer = e.layer - - drawnItems.addLayer(layer) - console.log(drawnItems._layers) - - }) + const drawOptions = { + circlemarker:false, + polygon: false, + polyline: false, + rectangle:false } + MapService({mapContainer, drawOptions, center:CENTER, form}) + } } diff --git a/components/src/components/Map/MapService.js b/components/src/components/Map/MapService.js new file mode 100644 index 000000000..7cf71a297 --- /dev/null +++ b/components/src/components/Map/MapService.js @@ -0,0 +1,45 @@ +import L from "leaflet" +import "leaflet-draw" +import 'leaflet/dist/leaflet.css'; +import "leaflet-draw/dist/leaflet.draw-src.css"; + +export default function MapService(options){ + const {mapContainer, center, drawOptions, form } = options; + if(mapContainer){ + const map = L.map(mapContainer).setView(center, 13); + L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: '© OpenStreetMap contributors', + }).addTo(map); + + + + if(form && form[0]?.classList.contains("formbuilder")){ + map.dragging.disable(); + map.scrollWheelZoom.disable(); + } + + //Initialize Draw Layer + let drawnItems = new L.FeatureGroup() + map.addLayer(drawnItems) + //Add Drawing Controllers + let drawControl = new L.Control.Draw({ + draw:drawOptions, + edit:{ + featureGroup: drawnItems + } + }) + //Attach Controls to map + map.addControl(drawControl) + + //event listener for drawn objects + map.on('draw:created', function(e){ + //console.log(e) + let type = e.layerType + let layer = e.layer + + drawnItems.addLayer(layer) + console.log(drawnItems._layers) + + }) + } +} \ No newline at end of file From a878ac498f110cc9c8173052d7130fcdea7e5787 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 3 Jun 2024 09:09:36 -0700 Subject: [PATCH 08/80] refactoring intermediate step --- components/src/components/Map/Component.d.ts | 16 ---------------- .../src/components/Map/Component.form.d.ts | 1 - components/src/components/Map/Component.js | 10 +++++----- .../components/Map/{ => services}/MapService.js | 0 4 files changed, 5 insertions(+), 22 deletions(-) delete mode 100644 components/src/components/Map/Component.d.ts delete mode 100644 components/src/components/Map/Component.form.d.ts rename components/src/components/Map/{ => services}/MapService.js (100%) diff --git a/components/src/components/Map/Component.d.ts b/components/src/components/Map/Component.d.ts deleted file mode 100644 index 37f1f712e..000000000 --- a/components/src/components/Map/Component.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Components } from 'formiojs'; -declare const FieldComponent: typeof Components.components.field; -declare class MapComponent extends FieldComponent { - static schema(...extend: any[]): import("formiojs").ExtendedComponentSchema; - static get builderInfo(): { - title: string; - group: string; - icon: string; - weight: number; - schema: import("formiojs").ExtendedComponentSchema; - }; - render(): any; - attach(element: HTMLElement): void; - loadMap(): void; -} -export default MapComponent; diff --git a/components/src/components/Map/Component.form.d.ts b/components/src/components/Map/Component.form.d.ts deleted file mode 100644 index c1e415834..000000000 --- a/components/src/components/Map/Component.form.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function (...extend: any[]): any; diff --git a/components/src/components/Map/Component.js b/components/src/components/Map/Component.js index 0962184f9..3cf8b77c4 100644 --- a/components/src/components/Map/Component.js +++ b/components/src/components/Map/Component.js @@ -1,10 +1,10 @@ import { Components } from 'formiojs'; const FieldComponent = Components.components.field; -import MapService from './MapService'; +// import MapService from './services/MapService'; const CENTER = [48.41939025932759,-123.37029576301576] -class MapComponent extends FieldComponent { +class Component extends FieldComponent { static schema(...extend) { return FieldComponent.schema({ type: 'map', @@ -46,11 +46,11 @@ class MapComponent extends FieldComponent { polyline: false, rectangle:false } - MapService({mapContainer, drawOptions, center:CENTER, form}) + // MapService({mapContainer, drawOptions, center:CENTER, form}) } } -Components.addComponent('map', MapComponent); -export default MapComponent; +// Components.addComponent('map', MapComponent); +export default Component; diff --git a/components/src/components/Map/MapService.js b/components/src/components/Map/services/MapService.js similarity index 100% rename from components/src/components/Map/MapService.js rename to components/src/components/Map/services/MapService.js From 00b49536b5901d462d6a08f35eec91f2a0d69fa5 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 3 Jun 2024 10:52:48 -0700 Subject: [PATCH 09/80] Typescript conversion --- .../components/Map/{Component.form.js => Component.form.ts} | 0 .../src/components/Map/{Component.js => Component.ts} | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) rename components/src/components/Map/{Component.form.js => Component.form.ts} (100%) rename components/src/components/Map/{Component.js => Component.ts} (89%) diff --git a/components/src/components/Map/Component.form.js b/components/src/components/Map/Component.form.ts similarity index 100% rename from components/src/components/Map/Component.form.js rename to components/src/components/Map/Component.form.ts diff --git a/components/src/components/Map/Component.js b/components/src/components/Map/Component.ts similarity index 89% rename from components/src/components/Map/Component.js rename to components/src/components/Map/Component.ts index 3cf8b77c4..9b5bf00a2 100644 --- a/components/src/components/Map/Component.js +++ b/components/src/components/Map/Component.ts @@ -1,10 +1,10 @@ import { Components } from 'formiojs'; -const FieldComponent = Components.components.field; +const FieldComponent = (Components as any).components.field; // import MapService from './services/MapService'; const CENTER = [48.41939025932759,-123.37029576301576] -class Component extends FieldComponent { +class Component extends (FieldComponent as any) { static schema(...extend) { return FieldComponent.schema({ type: 'map', @@ -20,7 +20,7 @@ class Component extends FieldComponent { group: 'basic', icon: 'map', weight: 70, - schema: MapComponent.schema(), + schema: Component.schema(), }; } From 183e48df0dcb41d853f0e76478dac52994c23648 Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Tue, 4 Jun 2024 10:32:01 -0700 Subject: [PATCH 10/80] fixed Unknown Component Render issue --- .../src/components/designer/FormDesigner.vue | 2 +- components/package-lock.json | 6 ++ components/package.json | 1 + components/src/components/Map/Component.ts | 88 +++++++++---------- components/src/components/index.ts | 4 +- 5 files changed, 53 insertions(+), 48 deletions(-) diff --git a/app/frontend/src/components/designer/FormDesigner.vue b/app/frontend/src/components/designer/FormDesigner.vue index 8be4e901a..a40bcb83b 100644 --- a/app/frontend/src/components/designer/FormDesigner.vue +++ b/app/frontend/src/components/designer/FormDesigner.vue @@ -184,7 +184,7 @@ export default { simplefile: this.form.userType !== this.ID_MODE.PUBLIC, bcaddress: true, simplebcaddress: true, - MapComponent: true, + map: true, }, }, }, diff --git a/components/package-lock.json b/components/package-lock.json index 98a073220..0b324868f 100644 --- a/components/package-lock.json +++ b/components/package-lock.json @@ -12,6 +12,7 @@ "@bcgov/smk": "^1.2.1", "autocompleter": "^7.0.1", "formiojs": "^4.14.6", + "leaflet": "^1.9.4", "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", @@ -4380,6 +4381,11 @@ "node": ">= 0.10" } }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, "node_modules/liftoff": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", diff --git a/components/package.json b/components/package.json index 70e717b89..759daf3ae 100755 --- a/components/package.json +++ b/components/package.json @@ -50,6 +50,7 @@ "@bcgov/smk": "^1.2.1", "autocompleter": "^7.0.1", "formiojs": "^4.14.6", + "leaflet": "^1.9.4", "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 9b5bf00a2..4afa3f19b 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -2,55 +2,53 @@ import { Components } from 'formiojs'; const FieldComponent = (Components as any).components.field; // import MapService from './services/MapService'; -const CENTER = [48.41939025932759,-123.37029576301576] +const CENTER = [48.41939025932759, -123.37029576301576]; -class Component extends (FieldComponent as any) { - static schema(...extend) { - return FieldComponent.schema({ - type: 'map', - label: 'Map', - key: 'map', - input: true, - ...extend, - }); - } - static get builderInfo() { - return { - title: 'Map', - group: 'basic', - icon: 'map', - weight: 70, - schema: Component.schema(), - }; - } - - render() { - return super.render( - ` +export default class Component extends (FieldComponent as any) { + static schema(...extend) { + return FieldComponent.schema({ + type: 'map', + label: 'Map', + key: 'map', + input: true, + ...extend, + }); + } + static get builderInfo() { + return { + title: 'Map', + group: 'basic', + icon: 'map', + weight: 70, + schema: Component.schema(), + }; + } + + render() { + return super.render( + `
` - ) - } - attach(element) { - const superAttach = super.attach(element); - this.loadMap(); - return superAttach - } - loadMap() { - const mapContainer = document.getElementById("mapContainer"); - const form = document.getElementsByClassName("formio") - const drawOptions = { - circlemarker:false, - polygon: false, - polyline: false, - rectangle:false - } - // MapService({mapContainer, drawOptions, center:CENTER, form}) - - } - + ); + } + attach(element) { + const superAttach = super.attach(element); + this.loadMap(); + return superAttach; + } + loadMap() { + const mapContainer = document.getElementById('mapContainer'); + const form = document.getElementsByClassName('formio'); + const drawOptions = { + circlemarker: false, + polygon: false, + polyline: false, + rectangle: false, + }; + // MapService({mapContainer, drawOptions, center:CENTER, form}) + } } // Components.addComponent('map', MapComponent); -export default Component; +export {}; diff --git a/components/src/components/index.ts b/components/src/components/index.ts index 13289e107..ae1f2cf05 100755 --- a/components/src/components/index.ts +++ b/components/src/components/index.ts @@ -45,7 +45,7 @@ import simplesignatureadvanced from './SimpleSignatureAdvanced/Component'; import simplebuttonadvanced from './SimpleButtonAdvanced/Component'; import bcaddress from './BCAddress/Component'; import simplebcaddress from './SimpleBCAddress/Component'; -import MapComponent from './Map/Component'; +import map from './Map/Component'; export default { orgbook, @@ -95,5 +95,5 @@ export default { simplebuttonadvanced, bcaddress, simplebcaddress, - MapComponent, + map, }; From c12741a3fc87e98b8d8ca79bb05ab5765751b6ef Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 4 Jun 2024 15:14:45 -0700 Subject: [PATCH 11/80] Fixes for js->ts conversion, fixes for webpack css import --- components/package-lock.json | 197 ++++++++++++++++-- components/package.json | 4 + components/src/components/Map/Component.ts | 88 ++++---- .../services/{MapService.js => MapService.ts} | 6 +- components/webpack.config.js | 8 + 5 files changed, 241 insertions(+), 62 deletions(-) rename components/src/components/Map/services/{MapService.js => MapService.ts} (91%) diff --git a/components/package-lock.json b/components/package-lock.json index 0b324868f..e9183741b 100644 --- a/components/package-lock.json +++ b/components/package-lock.json @@ -10,9 +10,13 @@ "license": "Apache-2.0", "dependencies": { "@bcgov/smk": "^1.2.1", + "@types/leaflet": "^1.9.12", + "@types/leaflet-draw": "^1.0.11", "autocompleter": "^7.0.1", + "css-loader": "^7.1.2", "formiojs": "^4.14.6", "leaflet": "^1.9.4", + "leaflet-draw": "^1.0.4", "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", @@ -610,11 +614,32 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" }, + "node_modules/@types/geojson": { + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, + "node_modules/@types/leaflet": { + "version": "1.9.12", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.12.tgz", + "integrity": "sha512-BK7XS+NyRI291HIo0HCfE18Lp8oA30H1gpi1tf0mF3TgiCEzanQjOqNZ4x126SXzzi2oNSZhZ5axJp1k0iM6jg==", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/leaflet-draw": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@types/leaflet-draw/-/leaflet-draw-1.0.11.tgz", + "integrity": "sha512-dyedtNm3aSmnpi6FM6VSl28cQuvP+MD7pgpXyO3Q1ZOCvrJKmzaDq0P3YZTnnBs61fQCKSnNYmbvCkDgFT9FHQ==", + "dependencies": { + "@types/leaflet": "*" + } + }, "node_modules/@types/mocha": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", @@ -1911,6 +1936,62 @@ "custom-event": "^1.0.0" } }, + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -3457,6 +3538,17 @@ "@babel/runtime": "^7.17.2" } }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/idb": { "version": "6.1.5", "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", @@ -4386,6 +4478,11 @@ "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" }, + "node_modules/leaflet-draw": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", + "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" + }, "node_modules/liftoff": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", @@ -6261,10 +6358,9 @@ } }, "node_modules/postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", - "dev": true, + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -6280,19 +6376,90 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -7303,10 +7470,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -8342,8 +8508,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "node_modules/uuid": { "version": "3.4.0", diff --git a/components/package.json b/components/package.json index 759daf3ae..e62acf96f 100755 --- a/components/package.json +++ b/components/package.json @@ -48,9 +48,13 @@ ], "dependencies": { "@bcgov/smk": "^1.2.1", + "@types/leaflet": "^1.9.12", + "@types/leaflet-draw": "^1.0.11", "autocompleter": "^7.0.1", + "css-loader": "^7.1.2", "formiojs": "^4.14.6", "leaflet": "^1.9.4", + "leaflet-draw": "^1.0.4", "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 4afa3f19b..475695aac 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -1,54 +1,56 @@ import { Components } from 'formiojs'; const FieldComponent = (Components as any).components.field; -// import MapService from './services/MapService'; +import MapService from './services/MapService'; -const CENTER = [48.41939025932759, -123.37029576301576]; +const CENTER = [48.41939025932759,-123.37029576301576] export default class Component extends (FieldComponent as any) { - static schema(...extend) { - return FieldComponent.schema({ - type: 'map', - label: 'Map', - key: 'map', - input: true, - ...extend, - }); - } - static get builderInfo() { - return { - title: 'Map', - group: 'basic', - icon: 'map', - weight: 70, - schema: Component.schema(), - }; - } - - render() { - return super.render( - ` + static schema(...extend) { + return FieldComponent.schema({ + type: 'map', + label: 'Map', + key: 'map', + input: true, + ...extend, + }); + } + static get builderInfo() { + return { + title: 'Map', + group: 'basic', + icon: 'map', + weight: 70, + schema: Component.schema(), + }; + } + + render() { + return super.render( + `
` - ); - } - attach(element) { - const superAttach = super.attach(element); - this.loadMap(); - return superAttach; - } - loadMap() { - const mapContainer = document.getElementById('mapContainer'); - const form = document.getElementsByClassName('formio'); - const drawOptions = { - circlemarker: false, - polygon: false, - polyline: false, - rectangle: false, - }; - // MapService({mapContainer, drawOptions, center:CENTER, form}) - } + ) + } + attach(element) { + const superAttach = super.attach(element); + this.loadMap(); + return superAttach + } + loadMap() { + const mapContainer = document.getElementById("mapContainer"); + const form = document.getElementsByClassName("formio") + const drawOptions = { + circlemarker:false, + polygon: false, + polyline: false, + rectangle:false + } + MapService({mapContainer, drawOptions, center:CENTER, form}) + + } + } -// Components.addComponent('map', MapComponent); +//Components.addComponent('map', MapComponent); export {}; diff --git a/components/src/components/Map/services/MapService.js b/components/src/components/Map/services/MapService.ts similarity index 91% rename from components/src/components/Map/services/MapService.js rename to components/src/components/Map/services/MapService.ts index 7cf71a297..11a751061 100644 --- a/components/src/components/Map/services/MapService.js +++ b/components/src/components/Map/services/MapService.ts @@ -1,4 +1,4 @@ -import L from "leaflet" +import * as L from "leaflet" import "leaflet-draw" import 'leaflet/dist/leaflet.css'; import "leaflet-draw/dist/leaflet.draw-src.css"; @@ -34,11 +34,11 @@ export default function MapService(options){ //event listener for drawn objects map.on('draw:created', function(e){ //console.log(e) - let type = e.layerType + let type = e.type let layer = e.layer drawnItems.addLayer(layer) - console.log(drawnItems._layers) + drawnItems.eachLayer((l) => {console.log(l)}) }) } diff --git a/components/webpack.config.js b/components/webpack.config.js index c82fc573d..446560860 100755 --- a/components/webpack.config.js +++ b/components/webpack.config.js @@ -1,6 +1,14 @@ const path = require('path'); module.exports = { + module: { + rules: [ + { + test: /\.css$/i, + use: ["css-loader"], + }, + ], + }, entry: path.join(path.resolve(__dirname, 'lib'), 'index.js'), output: { library: 'BcGovFormioComponents', From 36d590dc4c0ba82b03f62785f4fe0c7e7c2bbc1c Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 5 Jun 2024 14:25:54 -0700 Subject: [PATCH 12/80] fix for multi map on one page --- components/src/components/Map/Component.ts | 8 ++-- .../src/components/Map/services/MapService.ts | 40 +++++++++++-------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 475695aac..5ffee0057 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -23,11 +23,12 @@ export default class Component extends (FieldComponent as any) { schema: Component.schema(), }; } - + componentID = super.elementInfo().component.id render() { + console.log(super.data); return super.render( ` -
+
` ) @@ -38,7 +39,7 @@ export default class Component extends (FieldComponent as any) { return superAttach } loadMap() { - const mapContainer = document.getElementById("mapContainer"); + const mapContainer = document.getElementById(`map-${this.componentID}`); const form = document.getElementsByClassName("formio") const drawOptions = { circlemarker:false, @@ -52,5 +53,4 @@ export default class Component extends (FieldComponent as any) { } -//Components.addComponent('map', MapComponent); export {}; diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 11a751061..cc6701290 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -3,12 +3,31 @@ import "leaflet-draw" import 'leaflet/dist/leaflet.css'; import "leaflet-draw/dist/leaflet.draw-src.css"; +const DEFAULT_MAP_LAYER_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' +const DEFAULT_LAYER_ATTRIBUTION = '© OpenStreetMap contributors' + export default function MapService(options){ + if(options.mapContainer){ + const {map,drawnItems} = initializeMap(options) + + //event listener for drawn objects + map.on('draw:created', function(e){ + //console.log(e) + let type = e.type + let layer = e.layer + + drawnItems.addLayer(layer) + drawnItems.eachLayer((l) => {console.log(l)}) + + }) + } +} +const initializeMap = (options) =>{ const {mapContainer, center, drawOptions, form } = options; - if(mapContainer){ - const map = L.map(mapContainer).setView(center, 13); - L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { - attribution: '© OpenStreetMap contributors', + + const map = L.map(mapContainer).setView(center, 13); + L.tileLayer(DEFAULT_MAP_LAYER_URL, { + attribution:DEFAULT_LAYER_ATTRIBUTION , }).addTo(map); @@ -30,16 +49,5 @@ export default function MapService(options){ }) //Attach Controls to map map.addControl(drawControl) - - //event listener for drawn objects - map.on('draw:created', function(e){ - //console.log(e) - let type = e.type - let layer = e.layer - - drawnItems.addLayer(layer) - drawnItems.eachLayer((l) => {console.log(l)}) - - }) - } + return {map,drawnItems} } \ No newline at end of file From ec4904322b0957ef206f603086097e96a467ca78 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 11 Jun 2024 10:57:26 -0700 Subject: [PATCH 13/80] map settings form work --- .../src/components/Map/Component.form.ts | 15 +-- .../Map/editForm/Component.edit.data.d.ts | 29 ----- .../Map/editForm/Component.edit.data.js | 25 ---- .../Map/editForm/Component.edit.data.ts | 18 +++ .../Map/editForm/Component.edit.display.d.ts | 81 ------------- .../Map/editForm/Component.edit.display.js | 107 ------------------ .../Map/editForm/Component.edit.display.ts | 24 ++++ .../editForm/Component.edit.validation.d.ts | 26 ----- .../Map/editForm/Component.edit.validation.js | 22 ---- .../Map/editForm/Component.edit.validation.ts | 4 + 10 files changed, 47 insertions(+), 304 deletions(-) delete mode 100644 components/src/components/Map/editForm/Component.edit.data.d.ts delete mode 100644 components/src/components/Map/editForm/Component.edit.data.js create mode 100644 components/src/components/Map/editForm/Component.edit.data.ts delete mode 100644 components/src/components/Map/editForm/Component.edit.display.d.ts delete mode 100644 components/src/components/Map/editForm/Component.edit.display.js create mode 100644 components/src/components/Map/editForm/Component.edit.display.ts delete mode 100644 components/src/components/Map/editForm/Component.edit.validation.d.ts delete mode 100644 components/src/components/Map/editForm/Component.edit.validation.js create mode 100644 components/src/components/Map/editForm/Component.edit.validation.ts diff --git a/components/src/components/Map/Component.form.ts b/components/src/components/Map/Component.form.ts index c8355339f..cc9dc0133 100644 --- a/components/src/components/Map/Component.form.ts +++ b/components/src/components/Map/Component.form.ts @@ -7,10 +7,7 @@ import SimpleConditional from '../Common/Simple.edit.conditional'; export default function (...extend) { return baseEditForm([ EditDisplay, - { - key: 'data', - ignore: true, - }, + EditData, { key: 'api', ignore: true @@ -23,20 +20,10 @@ export default function (...extend) { key: 'conditional', ignore: true }, - { - key: 'validation', - ignore: true - }, { key: 'logic', ignore: true }, - { - label: 'Data', - key: 'customData', - weight: 10, - components: EditData - }, { label: 'Validation', key: 'customValidation', diff --git a/components/src/components/Map/editForm/Component.edit.data.d.ts b/components/src/components/Map/editForm/Component.edit.data.d.ts deleted file mode 100644 index 010dcbdd8..000000000 --- a/components/src/components/Map/editForm/Component.edit.data.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -declare const _default: ({ - weight: number; - type: string; - label: string; - tooltip: string; - key: string; - input: boolean; - placeholder?: undefined; -} | { - type: string; - label: string; - key: string; - weight: number; - placeholder: string; - tooltip: string; - input: boolean; -} | { - weight: number; - type: string; - label: string; - key: string; - tooltip: string; - input: boolean; - values: { - value: string; - label: string; - }[]; -})[]; -export default _default; diff --git a/components/src/components/Map/editForm/Component.edit.data.js b/components/src/components/Map/editForm/Component.edit.data.js deleted file mode 100644 index 4c548cb29..000000000 --- a/components/src/components/Map/editForm/Component.edit.data.js +++ /dev/null @@ -1,25 +0,0 @@ -import common from '../../Common/Simple.edit.data'; -export default [ - ...common, - { - weight: 200, - type: 'radio', - label: 'Text Case', - key: 'case', - tooltip: 'When data is entered, you can change the case of the value.', - input: true, - values: [ - { - value: 'mixed', - label: 'Mixed (Allow upper and lower case)' - }, - { - value: 'uppercase', - label: 'Uppercase' - }, { - value: 'lowercase', - label: 'Lowercase' - } - ] - } -]; diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts new file mode 100644 index 000000000..ff989beb5 --- /dev/null +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -0,0 +1,18 @@ +import common from '../../Common/Simple.edit.data'; +export default + { + key: 'data', + components: [ + ...common, + { + type: 'textfield', + label: 'Default Center Latitude', + key: 'centerLat', + weight: 5, + placeholder: 'Enter the latitude you would like for the default center', + tooltip: 'The Default Center will be where the map will be centered before user interaction.', + input: true + }, + ] + } + diff --git a/components/src/components/Map/editForm/Component.edit.display.d.ts b/components/src/components/Map/editForm/Component.edit.display.d.ts deleted file mode 100644 index 57d96c128..000000000 --- a/components/src/components/Map/editForm/Component.edit.display.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -declare const _default: { - key: string; - components: ({ - key: string; - ignore: boolean; - } | { - weight: number; - type: string; - input: boolean; - key: string; - label: string; - tooltip: string; - customConditional(context: any): boolean; - defaultValue?: undefined; - reorder?: undefined; - components?: undefined; - ignore?: undefined; - } | { - weight: number; - type: string; - input: boolean; - key: string; - label: string; - tooltip?: undefined; - defaultValue?: undefined; - reorder?: undefined; - components?: undefined; - ignore?: undefined; - } | { - weight: number; - type: string; - input: boolean; - key: string; - defaultValue: boolean; - label: string; - tooltip?: undefined; - reorder?: undefined; - components?: undefined; - ignore?: undefined; - } | { - weight: number; - type: string; - input: boolean; - key: string; - label: string; - customConditional(context: any): boolean; - reorder: boolean; - components: { - type: string; - key: string; - label: string; - input: boolean; - }[]; - tooltip?: undefined; - defaultValue?: undefined; - ignore?: undefined; - } | { - weight: number; - key: string; - ignore: boolean; - type?: undefined; - input?: undefined; - label?: undefined; - tooltip?: undefined; - defaultValue?: undefined; - reorder?: undefined; - components?: undefined; - } | { - weight: number; - type: string; - label: string; - tooltip: string; - key: string; - input: boolean; - defaultValue?: undefined; - reorder?: undefined; - components?: undefined; - ignore?: undefined; - })[]; -}; -export default _default; diff --git a/components/src/components/Map/editForm/Component.edit.display.js b/components/src/components/Map/editForm/Component.edit.display.js deleted file mode 100644 index 2cf26efa4..000000000 --- a/components/src/components/Map/editForm/Component.edit.display.js +++ /dev/null @@ -1,107 +0,0 @@ -import common from '../../Common/Simple.edit.display'; -export default { - key: 'display', - components: [ - ...common, - { - key: 'refreshOnChange', - ignore: true - }, - { - key: 'className', - ignore: true, - }, - { - key: 'widget', - ignore: true - }, - { - key: 'widget.type', - ignore: true - }, - { - key: 'prefix', - ignore: true - }, - { - key: 'suffix', - ignore: true - }, - { - weight: 410, - type: 'textfield', - input: true, - key: 'inputMask', - label: 'Input Mask', - tooltip: 'An input mask helps the user with input by ensuring a predefined format.

9: numeric
a: alphabetical
*: alphanumeric

Example telephone mask: (999) 999-9999

See the jquery.inputmask documentation for more information.', - customConditional(context) { - return !context.data.allowMultipleMasks; - } - }, - { - weight: 413, - type: 'checkbox', - input: true, - key: 'allowMultipleMasks', - label: 'Allow Multiple Masks' - }, - { - weight: 1350, - type: 'checkbox', - input: true, - key: 'spellcheck', - defaultValue: true, - label: 'Allow Spellcheck' - }, - { - weight: 417, - type: 'datagrid', - input: true, - key: 'inputMasks', - label: 'Input Masks', - customConditional(context) { - return context.data.allowMultipleMasks === true; - }, - reorder: true, - components: [ - { - type: 'textfield', - key: 'label', - label: 'Label', - input: true - }, - { - type: 'textfield', - key: 'mask', - label: 'Mask', - input: true - } - ] - }, - { - key: 'autocomplete', - ignore: true, - }, - { - weight: 1300, - key: 'mask', - ignore: true - }, - { - weight: 1200, - type: 'checkbox', - label: 'Show Word Counter', - tooltip: 'Show a live count of the number of words.', - key: 'showWordCount', - input: true - }, - { - weight: 1201, - type: 'checkbox', - label: 'Show Character Counter', - tooltip: 'Show a live count of the number of characters.', - key: 'showCharCount', - input: true - } - ] -}; diff --git a/components/src/components/Map/editForm/Component.edit.display.ts b/components/src/components/Map/editForm/Component.edit.display.ts new file mode 100644 index 000000000..5c0cae03f --- /dev/null +++ b/components/src/components/Map/editForm/Component.edit.display.ts @@ -0,0 +1,24 @@ +import common from '../../Common/Simple.edit.display'; +export default [ + ...common, + { + key: 'refreshOnChange', + ignore: true + }, + { + key: 'className', + ignore: true, + }, + { + key: 'prefix', + ignore: true + }, + { + key: 'suffix', + ignore: true + }, + { + key: 'labelPosition', + ignore: true, + }, +]; diff --git a/components/src/components/Map/editForm/Component.edit.validation.d.ts b/components/src/components/Map/editForm/Component.edit.validation.d.ts deleted file mode 100644 index e2ae418b0..000000000 --- a/components/src/components/Map/editForm/Component.edit.validation.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -declare const _default: ({ - weight: number; - type: string; - defaultValue: boolean; - label: string; - tooltip: string; - key: string; - input: boolean; -} | { - weight: number; - type: string; - label: string; - tooltip: string; - key: string; - input: boolean; - placeholder?: undefined; -} | { - weight: number; - key: string; - label: string; - placeholder: string; - type: string; - tooltip: string; - input: boolean; -})[]; -export default _default; diff --git a/components/src/components/Map/editForm/Component.edit.validation.js b/components/src/components/Map/editForm/Component.edit.validation.js deleted file mode 100644 index e0ac0d5e4..000000000 --- a/components/src/components/Map/editForm/Component.edit.validation.js +++ /dev/null @@ -1,22 +0,0 @@ -import common from '../../Common/Simple.edit.validation'; -export default [ - ...common, - { - weight: 110, - key: 'validate.minLength', - label: 'Minimum Length', - placeholder: 'Minimum Length', - type: 'number', - tooltip: 'The minimum length requirement this field must meet.', - input: true - }, - { - weight: 120, - key: 'validate.maxLength', - label: 'Maximum Length', - placeholder: 'Maximum Length', - type: 'number', - tooltip: 'The maximum length requirement this field must meet.', - input: true - } -]; diff --git a/components/src/components/Map/editForm/Component.edit.validation.ts b/components/src/components/Map/editForm/Component.edit.validation.ts new file mode 100644 index 000000000..1cec573db --- /dev/null +++ b/components/src/components/Map/editForm/Component.edit.validation.ts @@ -0,0 +1,4 @@ +import common from '../../Common/Simple.edit.validation'; +export default [ + ...common, +]; From 96605cbfc77bc0a7fc3e5c9e25a2db032c1a4055 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 11 Jun 2024 13:18:46 -0700 Subject: [PATCH 14/80] added limits on map pointer submission and popups showing lat lng --- components/src/components/Map/Component.ts | 4 ++- .../src/components/Map/services/MapService.ts | 33 ++++++++++++------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 5ffee0057..a16647426 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -1,6 +1,7 @@ import { Components } from 'formiojs'; const FieldComponent = (Components as any).components.field; import MapService from './services/MapService'; +import { circle } from 'leaflet'; const CENTER = [48.41939025932759,-123.37029576301576] @@ -45,7 +46,8 @@ export default class Component extends (FieldComponent as any) { circlemarker:false, polygon: false, polyline: false, - rectangle:false + rectangle:false, + circle: false } MapService({mapContainer, drawOptions, center:CENTER, form}) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index cc6701290..567cacabd 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -5,21 +5,27 @@ import "leaflet-draw/dist/leaflet.draw-src.css"; const DEFAULT_MAP_LAYER_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' const DEFAULT_LAYER_ATTRIBUTION = '© OpenStreetMap contributors' +const DECIMALS_LATLNG = 5//the number of decimals of latitude and longitude to be displayed in the marker popup export default function MapService(options){ if(options.mapContainer){ const {map,drawnItems} = initializeMap(options) //event listener for drawn objects - map.on('draw:created', function(e){ + map.on('draw:created', function (e) { //console.log(e) - let type = e.type - let layer = e.layer - - drawnItems.addLayer(layer) - drawnItems.eachLayer((l) => {console.log(l)}) - - }) + let marker = e.layer; + if(drawnItems.getLayers().length){ + console.log(drawnItems.getLayers()) + console.log("too many markers") + L.popup().setLatLng(marker._latlng).setContent("

Only one marker for submission

").openOn(map) + + }else{ + drawnItems.addLayer(marker); + } + marker.bindPopup(`

(${marker._latlng.lat.toFixed(5)},${marker._latlng.lng.toFixed(5)})

`).openPopup(); + //drawnItems.eachLayer((l) => { console.log(l); }); + }); } } const initializeMap = (options) =>{ @@ -32,10 +38,7 @@ const initializeMap = (options) =>{ - if(form && form[0]?.classList.contains("formbuilder")){ - map.dragging.disable(); - map.scrollWheelZoom.disable(); - } + //Initialize Draw Layer let drawnItems = new L.FeatureGroup() @@ -47,6 +50,12 @@ const initializeMap = (options) =>{ featureGroup: drawnItems } }) + + if(form && form[0]?.classList.contains("formbuilder")){ + map.dragging.disable(); + map.scrollWheelZoom.disable(); + } + //Attach Controls to map map.addControl(drawControl) return {map,drawnItems} From 3a7cab096a045bf0173dc03693b98c62cdcbe082 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 17 Jun 2024 15:45:42 -0700 Subject: [PATCH 15/80] settings fix --- components/src/components/Map/Component.ts | 4 +++- .../src/components/Map/editForm/Component.edit.data.ts | 8 ++++---- components/src/components/Map/services/MapService.ts | 8 ++++++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index a16647426..358d54537 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -1,7 +1,7 @@ import { Components } from 'formiojs'; const FieldComponent = (Components as any).components.field; import MapService from './services/MapService'; -import { circle } from 'leaflet'; +import baseEditForm from './Component.form'; const CENTER = [48.41939025932759,-123.37029576301576] @@ -24,6 +24,8 @@ export default class Component extends (FieldComponent as any) { schema: Component.schema(), }; } + static editForm = baseEditForm; + componentID = super.elementInfo().component.id render() { console.log(super.data); diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index ff989beb5..8bf26e66e 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -5,11 +5,11 @@ export default components: [ ...common, { - type: 'textfield', - label: 'Default Center Latitude', - key: 'centerLat', + type: 'map', + label: 'Map Default Center', + key: 'centerDefault', weight: 5, - placeholder: 'Enter the latitude you would like for the default center', + placeholder: 'choose where you would like for the default center', tooltip: 'The Default Center will be where the map will be centered before user interaction.', input: true }, diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 567cacabd..43a282281 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -6,15 +6,17 @@ import "leaflet-draw/dist/leaflet.draw-src.css"; const DEFAULT_MAP_LAYER_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' const DEFAULT_LAYER_ATTRIBUTION = '© OpenStreetMap contributors' const DECIMALS_LATLNG = 5//the number of decimals of latitude and longitude to be displayed in the marker popup +const SET_MAX_MARKERS = 1; export default function MapService(options){ if(options.mapContainer){ const {map,drawnItems} = initializeMap(options) - + map.invalidateSize(); //event listener for drawn objects map.on('draw:created', function (e) { //console.log(e) let marker = e.layer; + console.log(marker) if(drawnItems.getLayers().length){ console.log(drawnItems.getLayers()) console.log("too many markers") @@ -23,7 +25,9 @@ export default function MapService(options){ }else{ drawnItems.addLayer(marker); } - marker.bindPopup(`

(${marker._latlng.lat.toFixed(5)},${marker._latlng.lng.toFixed(5)})

`).openPopup(); + marker.bindPopup(` +

(${marker._latlng.lat.toFixed(DECIMALS_LATLNG)},${marker._latlng.lng.toFixed(DECIMALS_LATLNG)})

` + ).openPopup(); //drawnItems.eachLayer((l) => { console.log(l); }); }); } From fd4ef1707a863422be41fd67ecc897c9f96e4270 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Thu, 20 Jun 2024 14:39:57 -0700 Subject: [PATCH 16/80] Settings for radio button with draw options --- components/src/components/Map/Component.ts | 19 +++++--- .../Map/editForm/Component.edit.data.ts | 44 ++++++++++++++++--- .../src/components/Map/services/MapService.ts | 10 +++-- 3 files changed, 58 insertions(+), 15 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 358d54537..a76b1020d 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -2,6 +2,7 @@ import { Components } from 'formiojs'; const FieldComponent = (Components as any).components.field; import MapService from './services/MapService'; import baseEditForm from './Component.form'; +import { marker, rectangle } from 'leaflet'; const CENTER = [48.41939025932759,-123.37029576301576] @@ -28,7 +29,6 @@ export default class Component extends (FieldComponent as any) { componentID = super.elementInfo().component.id render() { - console.log(super.data); return super.render( `
@@ -44,14 +44,23 @@ export default class Component extends (FieldComponent as any) { loadMap() { const mapContainer = document.getElementById(`map-${this.componentID}`); const form = document.getElementsByClassName("formio") - const drawOptions = { + let drawOptions = { + marker:false, circlemarker:false, polygon: false, polyline: false, - rectangle:false, - circle: false + circle: false, + rectangle:null } - MapService({mapContainer, drawOptions, center:CENTER, form}) + if(this.component.markerType == "rectangle"){ + drawOptions.rectangle = {showArea:false}//fixes a bug in Leaflet.Draw + }else{ + drawOptions.rectangle = false + } + console.log(drawOptions) + //drawOptions[this.component.markerType] = true;//set marker type from user choice + const numPoints = this.component.numPoints; + MapService({mapContainer, drawOptions, center:CENTER, form, numPoints}) } diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index 8bf26e66e..7473772ad 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -5,14 +5,44 @@ export default components: [ ...common, { - type: 'map', - label: 'Map Default Center', - key: 'centerDefault', - weight: 5, - placeholder: 'choose where you would like for the default center', - tooltip: 'The Default Center will be where the map will be centered before user interaction.', - input: true + label: "Marker Type ", + values: [ + { + label: "Point Marker", + value: "marker" + }, + { + label: "Circle Marker", + value: "circlemarker", + }, + { + label: "Polygon", + value: "polygon", + }, + { + label: "Polyline", + value: "polyline", + }, + { + label: "Rectangle", + value: "rectangle", + }, + { + label: "Circle", + value: "circle", + } + ], + key: "markerType", + type: "simpleradios", + input: true, }, + { + label: "How many Points per Submission? (Only for Point Markers)", + key: "numPoints", + type: "simplenumber", + defaultValue: 1, + input: true, + } ] } diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 43a282281..7a62343f1 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -12,12 +12,14 @@ export default function MapService(options){ if(options.mapContainer){ const {map,drawnItems} = initializeMap(options) map.invalidateSize(); + + //event listener for drawn objects map.on('draw:created', function (e) { //console.log(e) let marker = e.layer; console.log(marker) - if(drawnItems.getLayers().length){ + if(drawnItems.getLayers().length && e?.type == "marker"){ console.log(drawnItems.getLayers()) console.log("too many markers") L.popup().setLatLng(marker._latlng).setContent("

Only one marker for submission

").openOn(map) @@ -33,8 +35,10 @@ export default function MapService(options){ } } const initializeMap = (options) =>{ - const {mapContainer, center, drawOptions, form } = options; - + let {mapContainer, center, drawOptions, form } = options; + if(drawOptions.rectangle){ + drawOptions.rectangle.showArea = false; + } const map = L.map(mapContainer).setView(center, 13); L.tileLayer(DEFAULT_MAP_LAYER_URL, { attribution:DEFAULT_LAYER_ATTRIBUTION , From 397362ba7219a68dfeadd1ac29bccdc4927dd425 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 24 Jun 2024 13:58:59 -0700 Subject: [PATCH 17/80] Points fix --- components/src/components/Map/Component.ts | 5 ++--- .../Map/editForm/Component.edit.data.ts | 18 +++++++++++++++++- .../src/components/Map/services/MapService.ts | 7 +++---- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index a76b1020d..1ae6034f9 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -56,10 +56,9 @@ export default class Component extends (FieldComponent as any) { drawOptions.rectangle = {showArea:false}//fixes a bug in Leaflet.Draw }else{ drawOptions.rectangle = false + drawOptions[this.component.markerType] = true;//set marker type from user choice } - console.log(drawOptions) - //drawOptions[this.component.markerType] = true;//set marker type from user choice - const numPoints = this.component.numPoints; + const {numPoints, defaultZoom} = this.component; MapService({mapContainer, drawOptions, center:CENTER, form, numPoints}) } diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index 7473772ad..8a2544bda 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -42,7 +42,23 @@ export default type: "simplenumber", defaultValue: 1, input: true, - } + }, + + { + label: "Default Zoom Level", + description: "Zoom Levels are from 0 (Most zoomed out) to 18 (most zoomed in).", + defaultValue: 13, + delimiter: false, + requireDecimal: false, + validate: { + isUseForCopy: false, + min: 0, + max: 18 + }, + key: "defaultZoom", + type: "simplenumber", + input: true, + } ] } diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 7a62343f1..f8ddfeae5 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -5,6 +5,7 @@ import "leaflet-draw/dist/leaflet.draw-src.css"; const DEFAULT_MAP_LAYER_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' const DEFAULT_LAYER_ATTRIBUTION = '© OpenStreetMap contributors' +const DEFAULT_MAP_ZOOM = 13; const DECIMALS_LATLNG = 5//the number of decimals of latitude and longitude to be displayed in the marker popup const SET_MAX_MARKERS = 1; @@ -16,10 +17,8 @@ export default function MapService(options){ //event listener for drawn objects map.on('draw:created', function (e) { - //console.log(e) let marker = e.layer; - console.log(marker) - if(drawnItems.getLayers().length && e?.type == "marker"){ + if(drawnItems.getLayers().length === options.numPoints && e?.type === "marker"){ console.log(drawnItems.getLayers()) console.log("too many markers") L.popup().setLatLng(marker._latlng).setContent("

Only one marker for submission

").openOn(map) @@ -39,7 +38,7 @@ const initializeMap = (options) =>{ if(drawOptions.rectangle){ drawOptions.rectangle.showArea = false; } - const map = L.map(mapContainer).setView(center, 13); + const map = L.map(mapContainer).setView(center, DEFAULT_MAP_ZOOM ); L.tileLayer(DEFAULT_MAP_LAYER_URL, { attribution:DEFAULT_LAYER_ATTRIBUTION , }).addTo(map); From 2110455531c55de51c120602f7ce4dba737dce4a Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 24 Jun 2024 13:59:31 -0700 Subject: [PATCH 18/80] fixes for marker --- components/src/components/Map/services/MapService.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index f8ddfeae5..5bf71e216 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -34,11 +34,11 @@ export default function MapService(options){ } } const initializeMap = (options) =>{ - let {mapContainer, center, drawOptions, form } = options; + let {mapContainer, center, drawOptions, form, defaultZoom } = options; if(drawOptions.rectangle){ drawOptions.rectangle.showArea = false; } - const map = L.map(mapContainer).setView(center, DEFAULT_MAP_ZOOM ); + const map = L.map(mapContainer).setView(center, defaultZoom ); L.tileLayer(DEFAULT_MAP_LAYER_URL, { attribution:DEFAULT_LAYER_ATTRIBUTION , }).addTo(map); From 11dfd072ab03ca2ff1f151f282ad26eccc91b66b Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 24 Jun 2024 15:22:51 -0700 Subject: [PATCH 19/80] Map zoom fix --- components/src/components/Map/Component.ts | 1 - components/src/components/Map/services/MapService.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 1ae6034f9..5e28504da 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -2,7 +2,6 @@ import { Components } from 'formiojs'; const FieldComponent = (Components as any).components.field; import MapService from './services/MapService'; import baseEditForm from './Component.form'; -import { marker, rectangle } from 'leaflet'; const CENTER = [48.41939025932759,-123.37029576301576] diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 5bf71e216..429e3d80f 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -38,7 +38,7 @@ const initializeMap = (options) =>{ if(drawOptions.rectangle){ drawOptions.rectangle.showArea = false; } - const map = L.map(mapContainer).setView(center, defaultZoom ); + const map = L.map(mapContainer).setView(center, DEFAULT_MAP_ZOOM ); L.tileLayer(DEFAULT_MAP_LAYER_URL, { attribution:DEFAULT_LAYER_ATTRIBUTION , }).addTo(map); From 4371b95a946d0ff51f1cf15a3428abbfd7c7e8cc Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Mon, 24 Jun 2024 18:40:57 -0700 Subject: [PATCH 20/80] mapsubmission settings --- components/src/components/Map/Component.ts | 154 ++++++++++------ .../src/components/Map/services/MapService.ts | 166 ++++++++++++------ 2 files changed, 212 insertions(+), 108 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 1ae6034f9..654dc2d4b 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -2,67 +2,113 @@ import { Components } from 'formiojs'; const FieldComponent = (Components as any).components.field; import MapService from './services/MapService'; import baseEditForm from './Component.form'; -import { marker, rectangle } from 'leaflet'; +import * as L from 'leaflet'; -const CENTER = [48.41939025932759,-123.37029576301576] +const CENTER: [number, number] = [48.41939025932759, -123.37029576301576]; // Ensure CENTER is a tuple with exactly two elements export default class Component extends (FieldComponent as any) { - static schema(...extend) { - return FieldComponent.schema({ - type: 'map', - label: 'Map', - key: 'map', - input: true, - ...extend, - }); + static schema(...extend) { + return FieldComponent.schema({ + type: 'map', + label: 'Map', + key: 'map', + input: true, + ...extend, + }); + } + static get builderInfo() { + return { + title: 'Map', + group: 'basic', + icon: 'map', + weight: 70, + schema: Component.schema(), + }; + } + static editForm = baseEditForm; + + componentID: string; + mapService: MapService; + + constructor(component, options, data) { + super(component, options, data); + this.componentID = super.elementInfo().component.id; + } + + render() { + return super.render( + `
` + ); + } + + attach(element) { + const superAttach = super.attach(element); + this.loadMap(); + return superAttach; + } + + loadMap() { + const mapContainer = document.getElementById(`map-${this.componentID}`); + const form = document.getElementsByClassName('formio'); + let drawOptions = { + marker: false, + circlemarker: false, + polygon: false, + polyline: false, + circle: false, + rectangle: null, + }; + if (this.component.markerType === 'rectangle') { + drawOptions.rectangle = { showArea: false }; // fixes a bug in Leaflet.Draw + } else { + drawOptions.rectangle = false; + drawOptions[this.component.markerType] = true; // set marker type from user choice + } + const { numPoints, defaultZoom } = this.component; + this.mapService = new MapService({ + mapContainer, + drawOptions, + center: CENTER, + form, + numPoints, + defaultZoom, + onDrawnItemsChange: this.saveDrawnItems.bind(this), + }); + + // Load existing data if available + if (this.dataValue) { + this.mapService.loadDrawnItems(JSON.parse(this.dataValue)); } - static get builderInfo() { + } + + saveDrawnItems(drawnItems: L.Layer[]) { + const value = drawnItems.map((layer: any) => { + if (layer instanceof L.Marker) { return { - title: 'Map', - group: 'basic', - icon: 'map', - weight: 70, - schema: Component.schema(), + type: 'marker', + latlng: layer.getLatLng(), }; - } - static editForm = baseEditForm; - - componentID = super.elementInfo().component.id - render() { - return super.render( - ` -
- - ` - ) - } - attach(element) { - const superAttach = super.attach(element); - this.loadMap(); - return superAttach - } - loadMap() { - const mapContainer = document.getElementById(`map-${this.componentID}`); - const form = document.getElementsByClassName("formio") - let drawOptions = { - marker:false, - circlemarker:false, - polygon: false, - polyline: false, - circle: false, - rectangle:null - } - if(this.component.markerType == "rectangle"){ - drawOptions.rectangle = {showArea:false}//fixes a bug in Leaflet.Draw - }else{ - drawOptions.rectangle = false - drawOptions[this.component.markerType] = true;//set marker type from user choice - } - const {numPoints, defaultZoom} = this.component; - MapService({mapContainer, drawOptions, center:CENTER, form, numPoints}) + } + // Handle other types (e.g., rectangles) here if needed + }); + + // Convert to JSON string + const jsonValue = + this.component.numPoints === 1 + ? JSON.stringify(value[0]) + : JSON.stringify(value); + this.setValue(jsonValue); + } + setValue(value) { + super.setValue(value); + // Additional logic to render the saved data on the map if necessary + if (this.mapService) { + this.mapService.loadDrawnItems(JSON.parse(value)); } + } + getValue() { + return this.dataValue; + } } - -export {}; diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 5bf71e216..1918fd0e4 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -1,69 +1,127 @@ -import * as L from "leaflet" -import "leaflet-draw" +import * as L from 'leaflet'; +import 'leaflet-draw'; import 'leaflet/dist/leaflet.css'; -import "leaflet-draw/dist/leaflet.draw-src.css"; +import 'leaflet-draw/dist/leaflet.draw-src.css'; -const DEFAULT_MAP_LAYER_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' -const DEFAULT_LAYER_ATTRIBUTION = '© OpenStreetMap contributors' +const DEFAULT_MAP_LAYER_URL = + 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; +const DEFAULT_LAYER_ATTRIBUTION = + '© OpenStreetMap contributors'; const DEFAULT_MAP_ZOOM = 13; -const DECIMALS_LATLNG = 5//the number of decimals of latitude and longitude to be displayed in the marker popup -const SET_MAX_MARKERS = 1; +const DECIMALS_LATLNG = 5; // the number of decimals of latitude and longitude to be displayed in the marker popup -export default function MapService(options){ - if(options.mapContainer){ - const {map,drawnItems} = initializeMap(options) - map.invalidateSize(); +interface MapServiceOptions { + mapContainer: HTMLElement; + center: [number, number]; // Ensure center is a tuple with exactly two elements + drawOptions: any; + form: HTMLCollectionOf; + numPoints: number; + defaultZoom?: number; + onDrawnItemsChange: (items: any) => void; // Support both single and multiple items +} +class MapService { + options: MapServiceOptions; + map: L.Map; + drawnItems: L.FeatureGroup; - //event listener for drawn objects - map.on('draw:created', function (e) { - let marker = e.layer; - if(drawnItems.getLayers().length === options.numPoints && e?.type === "marker"){ - console.log(drawnItems.getLayers()) - console.log("too many markers") - L.popup().setLatLng(marker._latlng).setContent("

Only one marker for submission

").openOn(map) + constructor(options: MapServiceOptions) { + this.options = options; + if (options.mapContainer) { + const { map, drawnItems } = this.initializeMap(options); + this.map = map; + this.drawnItems = drawnItems; + map.invalidateSize(); - }else{ - drawnItems.addLayer(marker); - } - marker.bindPopup(` -

(${marker._latlng.lat.toFixed(DECIMALS_LATLNG)},${marker._latlng.lng.toFixed(DECIMALS_LATLNG)})

` - ).openPopup(); - //drawnItems.eachLayer((l) => { console.log(l); }); - }); + // Event listener for drawn objects + map.on('draw:created', (e: any) => { + let layer = e.layer; + if ( + drawnItems.getLayers().length === options.numPoints && + e?.type === 'marker' + ) { + L.popup() + .setLatLng(layer._latlng) + .setContent('

Only one marker for submission

') + .openOn(map); + } else { + drawnItems.addLayer(layer); + } + layer + .bindPopup( + `

(${layer._latlng.lat.toFixed( + DECIMALS_LATLNG + )},${layer._latlng.lng.toFixed(DECIMALS_LATLNG)})

` + ) + .openPopup(); + options.onDrawnItemsChange(drawnItems.getLayers()); + }); } -} -const initializeMap = (options) =>{ - let {mapContainer, center, drawOptions, form, defaultZoom } = options; - if(drawOptions.rectangle){ - drawOptions.rectangle.showArea = false; + } + + initializeMap(options: MapServiceOptions) { + let { mapContainer, center, drawOptions, form, defaultZoom } = options; + if (drawOptions.rectangle) { + drawOptions.rectangle.showArea = false; } - const map = L.map(mapContainer).setView(center, defaultZoom ); - L.tileLayer(DEFAULT_MAP_LAYER_URL, { - attribution:DEFAULT_LAYER_ATTRIBUTION , - }).addTo(map); - + const map = L.map(mapContainer).setView( + center, + defaultZoom || DEFAULT_MAP_ZOOM + ); + L.tileLayer(DEFAULT_MAP_LAYER_URL, { + attribution: DEFAULT_LAYER_ATTRIBUTION, + }).addTo(map); + // Initialize Draw Layer + let drawnItems = new L.FeatureGroup(); + map.addLayer(drawnItems); + // Add Drawing Controllers + let drawControl = new L.Control.Draw({ + draw: drawOptions, + edit: { + featureGroup: drawnItems, + }, + }); + if (form && form[0]?.classList.contains('formbuilder')) { + map.dragging.disable(); + map.scrollWheelZoom.disable(); + } - //Initialize Draw Layer - let drawnItems = new L.FeatureGroup() - map.addLayer(drawnItems) - //Add Drawing Controllers - let drawControl = new L.Control.Draw({ - draw:drawOptions, - edit:{ - featureGroup: drawnItems - } - }) + // Attach Controls to map + map.addControl(drawControl); + return { map, drawnItems }; + } - if(form && form[0]?.classList.contains("formbuilder")){ - map.dragging.disable(); - map.scrollWheelZoom.disable(); - } + loadDrawnItems(items: any) { + const { drawnItems } = this; + drawnItems.clearLayers(); + + // Check if items is an array + if (!Array.isArray(items)) { + items = [items]; + } + + items.forEach((item) => { + let layer; + if (item.type === 'marker') { + layer = L.marker(item.latlng); + } + // Handle other types (e.g., rectangles) here if needed + + if (layer) { + drawnItems.addLayer(layer); + layer + .bindPopup( + `

(${item.latlng.lat.toFixed( + DECIMALS_LATLNG + )},${item.latlng.lng.toFixed(DECIMALS_LATLNG)})

` + ) + .openPopup(); + } + }); + } +} - //Attach Controls to map - map.addControl(drawControl) - return {map,drawnItems} -} \ No newline at end of file +export default MapService; From 7f1ff5e6729658c3f0d107462c1fa3216b05e2de Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 25 Jun 2024 11:17:27 -0700 Subject: [PATCH 21/80] set map zoom fix --- components/src/components/Map/Component.ts | 8 ++++---- components/src/components/Map/services/MapService.ts | 7 ++----- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 5e28504da..aa9d0f991 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -1,13 +1,13 @@ import { Components } from 'formiojs'; -const FieldComponent = (Components as any).components.field; +const BaseComponent = (Components as any).components.base; import MapService from './services/MapService'; import baseEditForm from './Component.form'; const CENTER = [48.41939025932759,-123.37029576301576] -export default class Component extends (FieldComponent as any) { +export default class Component extends (BaseComponent as any) { static schema(...extend) { - return FieldComponent.schema({ + return BaseComponent.schema({ type: 'map', label: 'Map', key: 'map', @@ -58,7 +58,7 @@ export default class Component extends (FieldComponent as any) { drawOptions[this.component.markerType] = true;//set marker type from user choice } const {numPoints, defaultZoom} = this.component; - MapService({mapContainer, drawOptions, center:CENTER, form, numPoints}) + MapService({mapContainer, drawOptions, center:CENTER, form, numPoints, defaultZoom}) } diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 429e3d80f..ade07daab 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -34,19 +34,16 @@ export default function MapService(options){ } } const initializeMap = (options) =>{ + console.log(options) let {mapContainer, center, drawOptions, form, defaultZoom } = options; if(drawOptions.rectangle){ drawOptions.rectangle.showArea = false; } - const map = L.map(mapContainer).setView(center, DEFAULT_MAP_ZOOM ); + const map = L.map(mapContainer).setView(center, defaultZoom || DEFAULT_MAP_ZOOM ); L.tileLayer(DEFAULT_MAP_LAYER_URL, { attribution:DEFAULT_LAYER_ATTRIBUTION , }).addTo(map); - - - - //Initialize Draw Layer let drawnItems = new L.FeatureGroup() map.addLayer(drawnItems) From c9a46acf655badbf161dcf73fc293f1751802d7c Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 25 Jun 2024 11:17:45 -0700 Subject: [PATCH 22/80] set map zoom fix2 --- components/src/components/Map/services/MapService.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index ade07daab..3a4b451e5 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -7,7 +7,6 @@ const DEFAULT_MAP_LAYER_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.pn const DEFAULT_LAYER_ATTRIBUTION = '© OpenStreetMap contributors' const DEFAULT_MAP_ZOOM = 13; const DECIMALS_LATLNG = 5//the number of decimals of latitude and longitude to be displayed in the marker popup -const SET_MAX_MARKERS = 1; export default function MapService(options){ if(options.mapContainer){ From d8fb68a251e7d9a05db25a2cb58fe989bcd833f2 Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Tue, 25 Jun 2024 11:41:15 -0700 Subject: [PATCH 23/80] added debug and other drawoptions --- components/src/components/Map/Component.ts | 50 +++++++++++++- .../src/components/Map/services/MapService.ts | 68 +++++++++++++++---- 2 files changed, 100 insertions(+), 18 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 654dc2d4b..07f3c05cc 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -16,6 +16,7 @@ export default class Component extends (FieldComponent as any) { ...extend, }); } + static get builderInfo() { return { title: 'Map', @@ -25,6 +26,7 @@ export default class Component extends (FieldComponent as any) { schema: Component.schema(), }; } + static editForm = baseEditForm; componentID: string; @@ -36,18 +38,21 @@ export default class Component extends (FieldComponent as any) { } render() { + console.log('Rendering component'); return super.render( `
` ); } attach(element) { + console.log('Attaching component to element'); const superAttach = super.attach(element); this.loadMap(); return superAttach; } loadMap() { + console.log('Loading map'); const mapContainer = document.getElementById(`map-${this.componentID}`); const form = document.getElementsByClassName('formio'); let drawOptions = { @@ -58,12 +63,15 @@ export default class Component extends (FieldComponent as any) { circle: false, rectangle: null, }; + + // Set drawing options based on markerType if (this.component.markerType === 'rectangle') { drawOptions.rectangle = { showArea: false }; // fixes a bug in Leaflet.Draw } else { drawOptions.rectangle = false; drawOptions[this.component.markerType] = true; // set marker type from user choice } + const { numPoints, defaultZoom } = this.component; this.mapService = new MapService({ mapContainer, @@ -75,6 +83,9 @@ export default class Component extends (FieldComponent as any) { onDrawnItemsChange: this.saveDrawnItems.bind(this), }); + console.log('Current data value:', this.dataValue); + console.log('GetValue result:', this.getValue()); + // Load existing data if available if (this.dataValue) { this.mapService.loadDrawnItems(JSON.parse(this.dataValue)); @@ -82,33 +93,66 @@ export default class Component extends (FieldComponent as any) { } saveDrawnItems(drawnItems: L.Layer[]) { + console.log('Saving drawn items:', drawnItems); const value = drawnItems.map((layer: any) => { + console.log('Processing layer:', layer); if (layer instanceof L.Marker) { return { type: 'marker', latlng: layer.getLatLng(), }; + } else if (layer instanceof L.Rectangle) { + return { + type: 'rectangle', + bounds: layer.getBounds(), + }; + } else if (layer instanceof L.Circle) { + return { + type: 'circle', + latlng: layer.getLatLng(), + radius: layer.getRadius(), + }; + } else if (layer instanceof L.Polygon) { + return { + type: 'polygon', + latlngs: layer.getLatLngs(), + }; + } else if (layer instanceof L.Polyline) { + return { + type: 'polyline', + latlngs: layer.getLatLngs(), + }; } - // Handle other types (e.g., rectangles) here if needed }); + console.log('Converted value:', value); + // Convert to JSON string const jsonValue = this.component.numPoints === 1 ? JSON.stringify(value[0]) : JSON.stringify(value); + console.log('JSON value to set:', jsonValue); this.setValue(jsonValue); } setValue(value) { + console.log('Setting value:', value); super.setValue(value); + // Additional logic to render the saved data on the map if necessary - if (this.mapService) { - this.mapService.loadDrawnItems(JSON.parse(value)); + if (this.mapService && value) { + try { + const parsedValue = JSON.parse(value); + this.mapService.loadDrawnItems(parsedValue); + } catch (error) { + console.error('Failed to parse value:', error); + } } } getValue() { + console.log('Getting value:', this.dataValue); return this.dataValue; } } diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 1918fd0e4..571185f55 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -26,6 +26,7 @@ class MapService { drawnItems: L.FeatureGroup; constructor(options: MapServiceOptions) { + console.log('Initializing MapService with options:', options); this.options = options; if (options.mapContainer) { const { map, drawnItems } = this.initializeMap(options); @@ -35,6 +36,7 @@ class MapService { // Event listener for drawn objects map.on('draw:created', (e: any) => { + console.log('Drawing created:', e); let layer = e.layer; if ( drawnItems.getLayers().length === options.numPoints && @@ -47,19 +49,14 @@ class MapService { } else { drawnItems.addLayer(layer); } - layer - .bindPopup( - `

(${layer._latlng.lat.toFixed( - DECIMALS_LATLNG - )},${layer._latlng.lng.toFixed(DECIMALS_LATLNG)})

` - ) - .openPopup(); + this.bindPopupToLayer(layer); options.onDrawnItemsChange(drawnItems.getLayers()); }); } } initializeMap(options: MapServiceOptions) { + console.log('Initializing map with options:', options); let { mapContainer, center, drawOptions, form, defaultZoom } = options; if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; @@ -94,8 +91,47 @@ class MapService { return { map, drawnItems }; } + bindPopupToLayer(layer: L.Layer) { + console.log('Binding popup to layer:', layer); + if (layer instanceof L.Marker) { + layer + .bindPopup( + `

(${layer.getLatLng().lat.toFixed(DECIMALS_LATLNG)},${layer + .getLatLng() + .lng.toFixed(DECIMALS_LATLNG)})

` + ) + .openPopup(); + } else if (layer instanceof L.Circle) { + layer + .bindPopup( + `

(${layer.getLatLng().lat.toFixed(DECIMALS_LATLNG)},${layer + .getLatLng() + .lng.toFixed(DECIMALS_LATLNG)})

` + ) + .openPopup(); + } else if (layer instanceof L.Rectangle || layer instanceof L.Polygon) { + const bounds = layer.getBounds(); + const center = bounds.getCenter(); + layer + .bindPopup( + `

(${center.lat.toFixed(DECIMALS_LATLNG)},${center.lng.toFixed( + DECIMALS_LATLNG + )})

` + ) + .openPopup(); + } + } + loadDrawnItems(items: any) { + console.log('Loading drawn items:', items); const { drawnItems } = this; + + // Ensure drawnItems is defined before attempting to clear layers + if (!drawnItems) { + console.error('drawnItems is undefined'); + return; + } + drawnItems.clearLayers(); // Check if items is an array @@ -104,21 +140,23 @@ class MapService { } items.forEach((item) => { + console.log('Processing item:', item); let layer; if (item.type === 'marker') { layer = L.marker(item.latlng); + } else if (item.type === 'rectangle') { + layer = L.rectangle(item.bounds); + } else if (item.type === 'circle') { + layer = L.circle(item.latlng, { radius: item.radius }); + } else if (item.type === 'polygon') { + layer = L.polygon(item.latlngs); + } else if (item.type === 'polyline') { + layer = L.polyline(item.latlngs); } - // Handle other types (e.g., rectangles) here if needed if (layer) { drawnItems.addLayer(layer); - layer - .bindPopup( - `

(${item.latlng.lat.toFixed( - DECIMALS_LATLNG - )},${item.latlng.lng.toFixed(DECIMALS_LATLNG)})

` - ) - .openPopup(); + this.bindPopupToLayer(layer); } }); } From 93fa6c245ef0885a0bcdcf4c2ee9b16543c8de53 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 26 Jun 2024 09:25:21 -0700 Subject: [PATCH 24/80] Revert back to fieldComponent --- components/src/components/Map/Component.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 46fac1479..07f3c05cc 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -1,14 +1,14 @@ import { Components } from 'formiojs'; -const BaseComponent = (Components as any).components.base; +const FieldComponent = (Components as any).components.field; import MapService from './services/MapService'; import baseEditForm from './Component.form'; import * as L from 'leaflet'; const CENTER: [number, number] = [48.41939025932759, -123.37029576301576]; // Ensure CENTER is a tuple with exactly two elements -export default class Component extends (BaseComponent as any) { +export default class Component extends (FieldComponent as any) { static schema(...extend) { - return BaseComponent.schema({ + return FieldComponent.schema({ type: 'map', label: 'Map', key: 'map', From 97f9c28b58ab90cae2f3732019562ce2b5f37169 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Fri, 28 Jun 2024 09:06:36 -0700 Subject: [PATCH 25/80] Fixes for multi input limits --- .../Map/editForm/Component.edit.data.ts | 19 ++----------------- .../src/components/Map/services/MapService.ts | 5 +---- 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index 8a2544bda..2251a2a51 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -11,33 +11,18 @@ export default label: "Point Marker", value: "marker" }, - { - label: "Circle Marker", - value: "circlemarker", - }, - { - label: "Polygon", - value: "polygon", - }, - { - label: "Polyline", - value: "polyline", - }, - { - label: "Rectangle", - value: "rectangle", - }, { label: "Circle", value: "circle", } ], + defaultValue:"marker", key: "markerType", type: "simpleradios", input: true, }, { - label: "How many Points per Submission? (Only for Point Markers)", + label: "How many Points per Submission?", key: "numPoints", type: "simplenumber", defaultValue: 1, diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 571185f55..530426d70 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -38,10 +38,7 @@ class MapService { map.on('draw:created', (e: any) => { console.log('Drawing created:', e); let layer = e.layer; - if ( - drawnItems.getLayers().length === options.numPoints && - e?.type === 'marker' - ) { + if (drawnItems.getLayers().length === options.numPoints) { L.popup() .setLatLng(layer._latlng) .setContent('

Only one marker for submission

') From 75fd4dc5ccbf8e2b3958fb5670057b674b54680c Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Fri, 28 Jun 2024 09:44:45 -0700 Subject: [PATCH 26/80] fixes for pr --- app/frontend/public/index.html | 1 - components/package-lock.json | 6 ------ components/package.json | 1 - components/src/components/Map/Component.ts | 12 +----------- components/src/components/Map/services/MapService.ts | 6 ------ 5 files changed, 1 insertion(+), 25 deletions(-) diff --git a/app/frontend/public/index.html b/app/frontend/public/index.html index 1dfc07d33..5e1d6e99a 100755 --- a/app/frontend/public/index.html +++ b/app/frontend/public/index.html @@ -1,6 +1,5 @@ - diff --git a/components/package-lock.json b/components/package-lock.json index e9183741b..60df996b8 100644 --- a/components/package-lock.json +++ b/components/package-lock.json @@ -9,7 +9,6 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { - "@bcgov/smk": "^1.2.1", "@types/leaflet": "^1.9.12", "@types/leaflet-draw": "^1.0.11", "autocompleter": "^7.0.1", @@ -307,11 +306,6 @@ "to-fast-properties": "^2.0.0" } }, - "node_modules/@bcgov/smk": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@bcgov/smk/-/smk-1.2.1.tgz", - "integrity": "sha512-FBpBefqAm2uLfGmbwRZwORzt6+RQAuiQ93DVweQBwgJ5eggq25SmpX15atg+R86RlQnnvWSLu+AC4QMey3X92g==" - }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", diff --git a/components/package.json b/components/package.json index e62acf96f..636662295 100755 --- a/components/package.json +++ b/components/package.json @@ -47,7 +47,6 @@ "components" ], "dependencies": { - "@bcgov/smk": "^1.2.1", "@types/leaflet": "^1.9.12", "@types/leaflet-draw": "^1.0.11", "autocompleter": "^7.0.1", diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 07f3c05cc..e2dbed261 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -38,21 +38,18 @@ export default class Component extends (FieldComponent as any) { } render() { - console.log('Rendering component'); return super.render( `
` ); } attach(element) { - console.log('Attaching component to element'); const superAttach = super.attach(element); this.loadMap(); return superAttach; } loadMap() { - console.log('Loading map'); const mapContainer = document.getElementById(`map-${this.componentID}`); const form = document.getElementsByClassName('formio'); let drawOptions = { @@ -83,8 +80,7 @@ export default class Component extends (FieldComponent as any) { onDrawnItemsChange: this.saveDrawnItems.bind(this), }); - console.log('Current data value:', this.dataValue); - console.log('GetValue result:', this.getValue()); + // Load existing data if available if (this.dataValue) { @@ -93,9 +89,7 @@ export default class Component extends (FieldComponent as any) { } saveDrawnItems(drawnItems: L.Layer[]) { - console.log('Saving drawn items:', drawnItems); const value = drawnItems.map((layer: any) => { - console.log('Processing layer:', layer); if (layer instanceof L.Marker) { return { type: 'marker', @@ -125,19 +119,16 @@ export default class Component extends (FieldComponent as any) { } }); - console.log('Converted value:', value); // Convert to JSON string const jsonValue = this.component.numPoints === 1 ? JSON.stringify(value[0]) : JSON.stringify(value); - console.log('JSON value to set:', jsonValue); this.setValue(jsonValue); } setValue(value) { - console.log('Setting value:', value); super.setValue(value); // Additional logic to render the saved data on the map if necessary @@ -152,7 +143,6 @@ export default class Component extends (FieldComponent as any) { } getValue() { - console.log('Getting value:', this.dataValue); return this.dataValue; } } diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 530426d70..cb0c39d1d 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -26,7 +26,6 @@ class MapService { drawnItems: L.FeatureGroup; constructor(options: MapServiceOptions) { - console.log('Initializing MapService with options:', options); this.options = options; if (options.mapContainer) { const { map, drawnItems } = this.initializeMap(options); @@ -36,7 +35,6 @@ class MapService { // Event listener for drawn objects map.on('draw:created', (e: any) => { - console.log('Drawing created:', e); let layer = e.layer; if (drawnItems.getLayers().length === options.numPoints) { L.popup() @@ -53,7 +51,6 @@ class MapService { } initializeMap(options: MapServiceOptions) { - console.log('Initializing map with options:', options); let { mapContainer, center, drawOptions, form, defaultZoom } = options; if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; @@ -89,7 +86,6 @@ class MapService { } bindPopupToLayer(layer: L.Layer) { - console.log('Binding popup to layer:', layer); if (layer instanceof L.Marker) { layer .bindPopup( @@ -120,7 +116,6 @@ class MapService { } loadDrawnItems(items: any) { - console.log('Loading drawn items:', items); const { drawnItems } = this; // Ensure drawnItems is defined before attempting to clear layers @@ -137,7 +132,6 @@ class MapService { } items.forEach((item) => { - console.log('Processing item:', item); let layer; if (item.type === 'marker') { layer = L.marker(item.latlng); From 602bde6f6d1aaa2689714457e2b3290e1862e680 Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Fri, 28 Jun 2024 10:02:35 -0700 Subject: [PATCH 27/80] Removed unused packages --- app/frontend/package-lock.json | 1504 +------------------------------- app/frontend/package.json | 2 - 2 files changed, 34 insertions(+), 1472 deletions(-) diff --git a/app/frontend/package-lock.json b/app/frontend/package-lock.json index 5c411abce..d35567c7a 100644 --- a/app/frontend/package-lock.json +++ b/app/frontend/package-lock.json @@ -10,8 +10,6 @@ "license": "Apache-2.0", "dependencies": { "@bcgov/bc-sans": "^1.0.1", - "@bcgov/smk": "^1.2.1", - "@bcgov/smk-cli": "^1.2.0", "@formio/vue": "^5.0.0", "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", @@ -102,91 +100,6 @@ "resolved": "https://registry.npmjs.org/@bcgov/bc-sans/-/bc-sans-1.0.1.tgz", "integrity": "sha512-4suRUBFeHcuFkwXXJu9pKJNB5Z2G3bpuLEHIq203KVCKC8KrsnqvsyUOf645TypgLwqOTOYCETiXYzfxF4gLAw==" }, - "node_modules/@bcgov/smk": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@bcgov/smk/-/smk-1.2.1.tgz", - "integrity": "sha512-FBpBefqAm2uLfGmbwRZwORzt6+RQAuiQ93DVweQBwgJ5eggq25SmpX15atg+R86RlQnnvWSLu+AC4QMey3X92g==" - }, - "node_modules/@bcgov/smk-cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@bcgov/smk-cli/-/smk-cli-1.2.0.tgz", - "integrity": "sha512-szTNQiZYMpM8+/Qzsafj/lPlw0jIKGhy97bRiN3skfdCKu5qZdB56nVxSmFL1sK3zfalG5Qw4Az746x84sdE2g==", - "dependencies": { - "@bcgov/smk": ">=1.2.0", - "@tmcw/togeojson": "~4.5.0", - "@xmldom/xmldom": "~0.8.5", - "chalk": "~4.1.0", - "cors": "~2.8.5", - "csv-parse": "~4.16.0", - "express": "~4.17.3", - "fgdb": "~1.0.0", - "figlet": "~1.5.0", - "glob": "7.1.2", - "inquirer": "~7.3.3", - "lodash": "~4.17.21", - "material-design-icons-iconfont": "6.1.1", - "minimist": "~1.2.5", - "multer": "~1.4.5-lts.1", - "node-fetch": "~2.6.7", - "open": "~7.4.0", - "proj4": "~2.7.5", - "semver": "~7.3.5", - "shapefile": "~0.6.6", - "shelljs": "~0.8.5", - "touch": "~3.1.0", - "unzipper": "~0.10.11", - "xml2js": "~0.4.23" - }, - "bin": { - "smk": "index.js" - } - }, - "node_modules/@bcgov/smk-cli/node_modules/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@bcgov/smk-cli/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@bcgov/smk-cli/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@bcgov/smk-cli/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -1105,11 +1018,6 @@ "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" }, - "node_modules/@tmcw/togeojson": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@tmcw/togeojson/-/togeojson-4.5.0.tgz", - "integrity": "sha512-lNuuhW7nvN1T7xII9eRTi9zuPwYfFl43/1u/Xgi88tedX4ePfwJB5dqc31N7z6sWeR+7EES274ESNrK1gsW53A==" - }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -1440,14 +1348,6 @@ "vuetify": "^3.0.0" } }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -1465,18 +1365,6 @@ "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", @@ -1540,35 +1428,11 @@ "resolved": "https://registry.npmjs.org/animation-frame-polyfill/-/animation-frame-polyfill-1.0.2.tgz", "integrity": "sha512-PvO5poSMoHhaoNNgHPo+oqs/0L9UqjsUbqv0iOXVqLh6HX85fsOVQTUrzSBvjdZz7hydARlgLELyzJJKIrPJAQ==" }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -1577,6 +1441,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1600,11 +1465,6 @@ "node": ">= 8" } }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1623,21 +1483,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, "node_modules/array-from": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==" }, - "node_modules/array-source": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/array-source/-/array-source-0.0.4.tgz", - "integrity": "sha512-frNdc+zBn80vipY+GdcJkLEbMWj3xmzArYApmUGxoiV8uAu/ygcs9icPdsGdA26h0MkHUMW6EN2piIvVx+M5Mw==" - }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -1699,7 +1549,8 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/base64-js": { "version": "1.5.1", @@ -1720,26 +1571,6 @@ } ] }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1749,61 +1580,12 @@ "node": ">=8" } }, - "node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" - }, "node_modules/blueimp-md5": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", "dev": true }, - "node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -1819,6 +1601,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1852,42 +1635,8 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "devOptional": true }, "node_modules/cac": { "version": "6.7.14", @@ -1937,21 +1686,11 @@ "node": ">=4" } }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1963,11 +1702,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, "node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -2016,25 +1750,6 @@ "node": ">= 6" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "engines": { - "node": ">= 10" - } - }, "node_modules/clipboard": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", @@ -2057,6 +1772,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2067,7 +1783,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/combined-stream": { "version": "1.0.8", @@ -2083,7 +1800,8 @@ "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "devOptional": true }, "node_modules/compare-versions": { "version": "5.0.3", @@ -2093,21 +1811,8 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/concordance": { "version": "5.0.4", @@ -2138,25 +1843,6 @@ "proto-list": "~1.2.1" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/contra": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/contra/-/contra-1.9.4.tgz", @@ -2172,19 +1858,6 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, "node_modules/core-js": { "version": "3.31.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.0.tgz", @@ -2195,23 +1868,6 @@ "url": "https://opencollective.com/core-js" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/create-point-cb": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-point-cb/-/create-point-cb-1.2.0.tgz", @@ -2282,11 +1938,6 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, - "node_modules/csv-parse": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", - "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==" - }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -2462,19 +2113,6 @@ "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" - }, "node_modules/dialog-polyfill": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.5.6.tgz", @@ -2577,14 +2215,6 @@ "crossvent": "1.5.5" } }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, "node_modules/editorconfig": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", @@ -2609,24 +2239,6 @@ "semver": "bin/semver" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -2696,11 +2308,6 @@ "@esbuild/win32-x64": "0.20.2" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -2929,101 +2536,16 @@ "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, - "node_modules/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.7", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3069,47 +2591,6 @@ "node-fetch": "~2.6.1" } }, - "node_modules/fgdb": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fgdb/-/fgdb-1.0.0.tgz", - "integrity": "sha512-2ZaznM1bhXk9e5xBdLzAR8H9yGFB2N51QTfMsHnynyJkqqmPMXSvSH5U6qzsyt73aTLQCFeViSQz5an4PKg4XA==", - "dependencies": { - "jszip": "~0.2.1", - "lie": "^3.0.0", - "long": "~1.1.2", - "proj4": "^2.3.6" - } - }, - "node_modules/figlet": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", - "integrity": "sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -3122,14 +2603,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-source": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/file-source/-/file-source-0.6.1.tgz", - "integrity": "sha512-1R1KneL7eTXmXfKxC10V/9NeGOdbsAXJ+lQ//fvvcHUgtaZcZDWNJNblxAoVOyV1cj45pOtUrR3vZTBwqcW8XA==", - "dependencies": { - "stream-source": "0.3" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -3142,36 +2615,6 @@ "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -3299,26 +2742,11 @@ "vanilla-picker": "^2.12.1" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -3333,51 +2761,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "deprecated": "This package is no longer supported.", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -3511,11 +2894,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -3568,6 +2946,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -3619,17 +2998,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", @@ -3648,21 +3016,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -3738,11 +3091,6 @@ "node": ">= 4" } }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, "node_modules/immutable": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", @@ -3778,6 +3126,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -3786,7 +3135,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/ini": { "version": "1.3.8", @@ -3794,29 +3144,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -3830,22 +3157,6 @@ "node": ">= 0.4" } }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -3951,17 +3262,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -3976,20 +3276,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3999,14 +3285,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4165,17 +3443,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -4397,11 +3664,6 @@ "resolved": "https://registry.npmjs.org/jstimezonedetect/-/jstimezonedetect-1.0.7.tgz", "integrity": "sha512-ARADHortktl9IZ1tr4GHwGPIAzgz3mLNCbR/YjWtRtc/O0o634O3NeFlpLjv95EvuDA5dc8z6yfgbS8nUc4zcQ==" }, - "node_modules/jszip": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-0.2.1.tgz", - "integrity": "sha512-Djh0bVj/EiqNTlwKC10xsOf+HtdD6mVq4m7DWdRoUvChB0aj2BThnGl+Kl4uDlRuxlp+EvjZ2ZOo0niTJlh+LQ==" - }, "node_modules/jwt-decode": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", @@ -4439,19 +3701,6 @@ "node": ">= 0.8.0" } }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" - }, "node_modules/local-pkg": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", @@ -4490,14 +3739,6 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/long": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/long/-/long-1.1.5.tgz", - "integrity": "sha512-TU6nAF5SdasnTr28c7e74P4Crbn9o3/zwo1pM22Wvg2i2vlZ4Eelxwu4QT7j21z0sDBlJDEnEZjXTZg2J8WJrg==", - "engines": { - "node": ">=0.6" - } - }, "node_modules/loupe": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", @@ -4552,11 +3793,6 @@ "semver": "bin/semver.js" } }, - "node_modules/material-design-icons-iconfont": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/material-design-icons-iconfont/-/material-design-icons-iconfont-6.1.1.tgz", - "integrity": "sha512-nkoXybeXoofanNagj4tbM6+/LALWpWxYX5ee861to5VQrKgb0/TskTw28Svwn0OGDKajuqK7ShFOsIBxIygGKA==" - }, "node_modules/md5-hex": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", @@ -4569,43 +3805,6 @@ "node": ">=8" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mgrs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mgrs/-/mgrs-1.0.0.tgz", - "integrity": "sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA==" - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -4625,18 +3824,11 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4644,30 +3836,11 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/mitt": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/mlly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.3.0.tgz", @@ -4705,28 +3878,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "devOptional": true }, - "node_modules/multer": { - "version": "1.4.5-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", - "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -4755,14 +3906,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/node-fetch": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", @@ -4829,14 +3972,6 @@ "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==", "dev": true }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -4885,52 +4020,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dev": true, + "dependencies": { + "wrappy": "1" } }, "node_modules/optionator": { @@ -4950,14 +4046,6 @@ "node": ">= 0.8.0" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5017,14 +4105,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5038,6 +4118,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -5051,25 +4132,6 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-source": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/path-source/-/path-source-0.1.3.tgz", - "integrity": "sha512-dWRHm5mIw5kw0cs3QZLNmpUWty48f5+5v9nWD2dw3Y0Hf+s01Ag8iJEWV0Sm0kocE8kK27DrIowha03e1YR+Qw==", - "dependencies": { - "array-source": "0.0", - "file-source": "0.6" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, "node_modules/pathe": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", @@ -5265,38 +4327,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/proj4": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.7.5.tgz", - "integrity": "sha512-5ecXUXbHAfvdhfBQpU7EhUfPCQGUCPmVup/4gnZA3bJY3JcK/xxzm4QQDz1xiXokN6ux65VDczlCtBtKrTSpAQ==", - "dependencies": { - "mgrs": "1.0.0", - "wkt-parser": "^1.3.1" - } - }, "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -5331,17 +4367,6 @@ "vue": "^3.0.0" } }, - "node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -5412,69 +4437,12 @@ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -5487,17 +4455,6 @@ "node": ">=8.10.0" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/redux": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", @@ -5547,22 +4504,6 @@ "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -5572,18 +4513,6 @@ "node": ">=4" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -5667,14 +4596,6 @@ "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", "dev": true }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5698,40 +4619,11 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/sass": { "version": "1.63.4", @@ -5750,11 +4642,6 @@ "node": ">=14.0.0" } }, - "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" - }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", @@ -5805,88 +4692,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shapefile": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/shapefile/-/shapefile-0.6.6.tgz", - "integrity": "sha512-rLGSWeK2ufzCVx05wYd+xrWnOOdSV7xNUW5/XFgx3Bc02hBkpMlrd2F1dDII7/jhWzv0MSyBFh5uJIy9hLdfuw==", - "dependencies": { - "array-source": "0.0", - "commander": "2", - "path-source": "0.1", - "slice-source": "0.4", - "stream-source": "0.3", - "text-encoding": "^0.6.4" - }, - "bin": { - "dbf2json": "bin/dbf2json", - "shp2json": "bin/shp2json" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5908,41 +4713,6 @@ "node": ">=8" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shelljs/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -5968,21 +4738,11 @@ "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", "dev": true }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, "node_modules/signature_pad": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/signature_pad/-/signature_pad-4.1.5.tgz", "integrity": "sha512-VOE846UbQMeLBbcR08KwjwE1wNLgp3gqC7yr/AELkgSMs/BdRpxIZna6K5XyZJpA7IWq9GiInw1C8PLm57VO6Q==" }, - "node_modules/slice-source": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/slice-source/-/slice-source-0.4.1.tgz", - "integrity": "sha512-YiuPbxpCj4hD9Qs06hGAz/OZhQ0eDuALN0lRWJez0eD/RevzKqGdUx1IOMUnXgpr+sXZLq3g8ERwbAH0bCb8vg==" - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6020,14 +4780,6 @@ "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/std-env": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz", @@ -6045,54 +4797,16 @@ "node": ">= 0.4" } }, - "node_modules/stream-source": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/stream-source/-/stream-source-0.3.5.tgz", - "integrity": "sha512-ZuEDP9sgjiAwUVoDModftG0JtYiLUV8K4ljYD1VyUMRWtbVf92474o4kuuul43iZ8t/hRuiDAx1dIJSvirrK/g==" - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, "node_modules/string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==" }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6128,6 +4842,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6135,17 +4850,6 @@ "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -6204,23 +4908,12 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha512-hJnc6Qg3dWoOMkqP53F0dzRIgtmsAge09kxUIqGrEUS4qr5rWLckGYaQAVr+opBrIMRErGgy6f5aPnyPpyGRfg==", - "deprecated": "no longer maintained" - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, "node_modules/ticky": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ticky/-/ticky-1.0.1.tgz", @@ -6272,17 +4965,6 @@ "@popperjs/core": "^2.9.0" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6295,22 +4977,6 @@ "node": ">=8.0" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", - "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, "node_modules/tough-cookie": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", @@ -6331,19 +4997,6 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "engines": { - "node": "*" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -6382,23 +5035,6 @@ "resolved": "https://registry.npmjs.org/type-func/-/type-func-1.0.3.tgz", "integrity": "sha512-YA90CUk+i00tWESPNRMahywXhAz+12NLJLKlOWrgHIbqaFXjdZrWstRghaibOW/IxhPjui4SmXxO/03XSGRIjA==" }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, "node_modules/ufo": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz", @@ -6414,31 +5050,6 @@ "node": ">= 4.0.0" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unzipper": { - "version": "0.10.14", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", - "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, "node_modules/upath": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", @@ -6471,15 +5082,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, "node_modules/uuid": { "version": "9.0.0", @@ -6511,14 +5115,6 @@ "@sphinxxxx/color-conversion": "^2.2.2" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/vite": { "version": "5.2.6", "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.6.tgz", @@ -7902,11 +6498,6 @@ "node": ">=8" } }, - "node_modules/wkt-parser": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.3.3.tgz", - "integrity": "sha512-ZnV3yH8/k58ZPACOXeiHaMuXIiaTk1t0hSUVisbO0t4RjA5wPpUytcxeyiN2h+LZRrmuHIh/1UlrR9e7DHDvTw==" - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -7919,7 +6510,8 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/ws": { "version": "8.13.0", @@ -7951,40 +6543,12 @@ "node": ">=12" } }, - "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", diff --git a/app/frontend/package.json b/app/frontend/package.json index 1d78085e3..d5cb86d9d 100644 --- a/app/frontend/package.json +++ b/app/frontend/package.json @@ -31,8 +31,6 @@ }, "dependencies": { "@bcgov/bc-sans": "^1.0.1", - "@bcgov/smk": "^1.2.1", - "@bcgov/smk-cli": "^1.2.0", "@formio/vue": "^5.0.0", "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", From 8e8ce897804700879e37153904af24e8bf9bf517 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 3 Jul 2024 15:08:45 -0700 Subject: [PATCH 28/80] Fix to non-interactive default map in settings page --- .../src/components/Map/services/MapService.ts | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index cb0c39d1d..534e1c42d 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -9,6 +9,9 @@ const DEFAULT_LAYER_ATTRIBUTION = '© OpenStreetMap contributors'; const DEFAULT_MAP_ZOOM = 13; const DECIMALS_LATLNG = 5; // the number of decimals of latitude and longitude to be displayed in the marker popup +const COMPONENT_EDIT_CLASS = "component-edit-tabs"; + + interface MapServiceOptions { mapContainer: HTMLElement; @@ -74,11 +77,18 @@ class MapService { featureGroup: drawnItems, }, }); - - if (form && form[0]?.classList.contains('formbuilder')) { - map.dragging.disable(); - map.scrollWheelZoom.disable(); - } + //Checking to see if the map should be interactable + const componentEditNode = document.getElementsByClassName(COMPONENT_EDIT_CLASS) + if (form) { + if (form[0]?.classList.contains('formbuilder')) { + map.dragging.disable(); + map.scrollWheelZoom.disable(); + if (this.hasChildNode(componentEditNode[0], mapContainer)) { + map.dragging.enable(); + map.scrollWheelZoom.enable(); + } + } + } // Attach Controls to map map.addControl(drawControl); @@ -151,6 +161,19 @@ class MapService { } }); } + + hasChildNode(parent: any, targetNode: any) { + if (parent === targetNode) { + return true; + } + for (let i = 0; i < parent.childNodes?.length; i++) { + if (this.hasChildNode(parent.childNodes[i], targetNode)) { + return true + } + } + return false; + } + } export default MapService; From 4b0898202136961f77591cf4578ae529955393b8 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 3 Jul 2024 15:42:07 -0700 Subject: [PATCH 29/80] Added Read Only functionality --- components/src/components/Map/Component.ts | 3 ++- .../Map/editForm/Component.edit.data.ts | 10 ++++++++- .../src/components/Map/services/MapService.ts | 22 +++++++++++-------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index e2dbed261..3cdac2976 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -69,7 +69,7 @@ export default class Component extends (FieldComponent as any) { drawOptions[this.component.markerType] = true; // set marker type from user choice } - const { numPoints, defaultZoom } = this.component; + const { numPoints, defaultZoom, readOnlyMap } = this.component; this.mapService = new MapService({ mapContainer, drawOptions, @@ -77,6 +77,7 @@ export default class Component extends (FieldComponent as any) { form, numPoints, defaultZoom, + readOnlyMap, onDrawnItemsChange: this.saveDrawnItems.bind(this), }); diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index 2251a2a51..fe7a284e7 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -16,7 +16,7 @@ export default value: "circle", } ], - defaultValue:"marker", + defaultValue: "marker", key: "markerType", type: "simpleradios", input: true, @@ -43,6 +43,14 @@ export default key: "defaultZoom", type: "simplenumber", input: true, + }, + { + label: "Read Only Map", + description: "This allows for the user to view and scroll the map, but not add any input", + key: "readOnlyMap", + type: "simplecheckbox", + input: true, + } ] } diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 534e1c42d..bab5b464d 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -20,6 +20,7 @@ interface MapServiceOptions { form: HTMLCollectionOf; numPoints: number; defaultZoom?: number; + readOnlyMap?: boolean onDrawnItemsChange: (items: any) => void; // Support both single and multiple items } @@ -54,7 +55,7 @@ class MapService { } initializeMap(options: MapServiceOptions) { - let { mapContainer, center, drawOptions, form, defaultZoom } = options; + let { mapContainer, center, drawOptions, form, defaultZoom, readOnlyMap } = options; if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; } @@ -71,12 +72,16 @@ class MapService { map.addLayer(drawnItems); // Add Drawing Controllers - let drawControl = new L.Control.Draw({ - draw: drawOptions, - edit: { - featureGroup: drawnItems, - }, - }); + if(!readOnlyMap){ + let drawControl = new L.Control.Draw({ + draw: drawOptions, + edit: { + featureGroup: drawnItems, + }, + }); + map.addControl(drawControl); + } + //Checking to see if the map should be interactable const componentEditNode = document.getElementsByClassName(COMPONENT_EDIT_CLASS) if (form) { @@ -91,7 +96,6 @@ class MapService { } // Attach Controls to map - map.addControl(drawControl); return { map, drawnItems }; } @@ -166,7 +170,7 @@ class MapService { if (parent === targetNode) { return true; } - for (let i = 0; i < parent.childNodes?.length; i++) { + for (let i = 0; i < parent?.childNodes?.length; i++) { if (this.hasChildNode(parent.childNodes[i], targetNode)) { return true } From 58fdf65204af0cb4b9a10dc069e47769ad055754 Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Thu, 4 Jul 2024 16:57:41 -0700 Subject: [PATCH 30/80] map service update --- components/src/components/Map/Component.ts | 10 +++-- .../src/components/Map/services/MapService.ts | 38 +++++++++---------- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 3cdac2976..579c23177 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -81,11 +81,14 @@ export default class Component extends (FieldComponent as any) { onDrawnItemsChange: this.saveDrawnItems.bind(this), }); - - // Load existing data if available if (this.dataValue) { - this.mapService.loadDrawnItems(JSON.parse(this.dataValue)); + try { + const parsedValue = JSON.parse(this.dataValue); + this.mapService.loadDrawnItems(parsedValue); + } catch (error) { + console.error('Failed to parse dataValue:', error); + } } } @@ -120,7 +123,6 @@ export default class Component extends (FieldComponent as any) { } }); - // Convert to JSON string const jsonValue = this.component.numPoints === 1 diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index bab5b464d..46585a644 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -9,9 +9,7 @@ const DEFAULT_LAYER_ATTRIBUTION = '© OpenStreetMap contributors'; const DEFAULT_MAP_ZOOM = 13; const DECIMALS_LATLNG = 5; // the number of decimals of latitude and longitude to be displayed in the marker popup -const COMPONENT_EDIT_CLASS = "component-edit-tabs"; - - +const COMPONENT_EDIT_CLASS = 'component-edit-tabs'; interface MapServiceOptions { mapContainer: HTMLElement; @@ -20,7 +18,7 @@ interface MapServiceOptions { form: HTMLCollectionOf; numPoints: number; defaultZoom?: number; - readOnlyMap?: boolean + readOnlyMap?: boolean; onDrawnItemsChange: (items: any) => void; // Support both single and multiple items } @@ -42,7 +40,7 @@ class MapService { let layer = e.layer; if (drawnItems.getLayers().length === options.numPoints) { L.popup() - .setLatLng(layer._latlng) + .setLatLng(layer.getLatLng()) .setContent('

Only one marker for submission

') .openOn(map); } else { @@ -55,7 +53,8 @@ class MapService { } initializeMap(options: MapServiceOptions) { - let { mapContainer, center, drawOptions, form, defaultZoom, readOnlyMap } = options; + let { mapContainer, center, drawOptions, form, defaultZoom, readOnlyMap } = + options; if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; } @@ -72,7 +71,7 @@ class MapService { map.addLayer(drawnItems); // Add Drawing Controllers - if(!readOnlyMap){ + if (!readOnlyMap) { let drawControl = new L.Control.Draw({ draw: drawOptions, edit: { @@ -82,20 +81,20 @@ class MapService { map.addControl(drawControl); } - //Checking to see if the map should be interactable - const componentEditNode = document.getElementsByClassName(COMPONENT_EDIT_CLASS) + // Checking to see if the map should be interactable + const componentEditNode = + document.getElementsByClassName(COMPONENT_EDIT_CLASS); if (form) { if (form[0]?.classList.contains('formbuilder')) { - map.dragging.disable(); - map.scrollWheelZoom.disable(); - if (this.hasChildNode(componentEditNode[0], mapContainer)) { - map.dragging.enable(); - map.scrollWheelZoom.enable(); - } + map.dragging.disable(); + map.scrollWheelZoom.disable(); + if (this.hasChildNode(componentEditNode[0], mapContainer)) { + map.dragging.enable(); + map.scrollWheelZoom.enable(); + } } - } + } - // Attach Controls to map return { map, drawnItems }; } @@ -132,7 +131,6 @@ class MapService { loadDrawnItems(items: any) { const { drawnItems } = this; - // Ensure drawnItems is defined before attempting to clear layers if (!drawnItems) { console.error('drawnItems is undefined'); return; @@ -140,7 +138,6 @@ class MapService { drawnItems.clearLayers(); - // Check if items is an array if (!Array.isArray(items)) { items = [items]; } @@ -172,12 +169,11 @@ class MapService { } for (let i = 0; i < parent?.childNodes?.length; i++) { if (this.hasChildNode(parent.childNodes[i], targetNode)) { - return true + return true; } } return false; } - } export default MapService; From 8258064ede96522261e6c9c91c93979bf2200c14 Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Fri, 5 Jul 2024 08:29:51 -0700 Subject: [PATCH 31/80] Settings Updated --- .../src/components/Map/Component.form.ts | 81 ++++++------ .../Map/editForm/Component.edit.data.ts | 118 ++++++++++-------- 2 files changed, 107 insertions(+), 92 deletions(-) diff --git a/components/src/components/Map/Component.form.ts b/components/src/components/Map/Component.form.ts index cc9dc0133..9b8ac2603 100644 --- a/components/src/components/Map/Component.form.ts +++ b/components/src/components/Map/Component.form.ts @@ -5,42 +5,47 @@ import EditValidation from './editForm/Component.edit.validation'; import SimpleApi from '../Common/Simple.edit.api'; import SimpleConditional from '../Common/Simple.edit.conditional'; export default function (...extend) { - return baseEditForm([ - EditDisplay, - EditData, - { - key: 'api', - ignore: true - }, - { - key: 'layout', - ignore: true - }, - { - key: 'conditional', - ignore: true - }, - { - key: 'logic', - ignore: true - }, - { - label: 'Validation', - key: 'customValidation', - weight: 20, - components: EditValidation - }, - { - label: 'API', - key: 'customAPI', - weight: 30, - components: SimpleApi - }, - { - label: 'Conditional', - key: 'customConditional', - weight: 40, - components: SimpleConditional - } - ], ...extend); + return baseEditForm( + [ + EditDisplay, + { + key: 'data', + ignore: true, + }, + EditData, + { + key: 'api', + ignore: true, + }, + { + key: 'layout', + ignore: true, + }, + { + key: 'conditional', + ignore: true, + }, + { + key: 'logic', + ignore: true, + }, + { + key: 'validation', + ignore: true, + }, + { + label: 'API', + key: 'customAPI', + weight: 30, + components: SimpleApi, + }, + { + label: 'Conditional', + key: 'customConditional', + weight: 40, + components: SimpleConditional, + }, + ], + ...extend + ); } diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index fe7a284e7..e163e9c24 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -1,57 +1,67 @@ import common from '../../Common/Simple.edit.data'; -export default +export default { + key: 'customData', + label: 'Data', + weight: 20, + components: [ { - key: 'data', - components: [ - ...common, - { - label: "Marker Type ", - values: [ - { - label: "Point Marker", - value: "marker" - }, - { - label: "Circle", - value: "circle", - } - ], - defaultValue: "marker", - key: "markerType", - type: "simpleradios", - input: true, - }, - { - label: "How many Points per Submission?", - key: "numPoints", - type: "simplenumber", - defaultValue: 1, - input: true, - }, - - { - label: "Default Zoom Level", - description: "Zoom Levels are from 0 (Most zoomed out) to 18 (most zoomed in).", - defaultValue: 13, - delimiter: false, - requireDecimal: false, - validate: { - isUseForCopy: false, - min: 0, - max: 18 - }, - key: "defaultZoom", - type: "simplenumber", - input: true, - }, - { - label: "Read Only Map", - description: "This allows for the user to view and scroll the map, but not add any input", - key: "readOnlyMap", - type: "simplecheckbox", - input: true, - - } - ] - } + type: 'map', + label: 'Default Value', + key: 'defaultValue', + weight: 5, + placeholder: 'Default Value', + tooltip: + 'This will be the value for this field, before user interaction.', + input: true, + }, + { + label: 'Marker Type ', + values: [ + { + label: 'Point Marker', + value: 'marker', + }, + { + label: 'Circle', + value: 'circle', + }, + ], + defaultValue: 'marker', + key: 'markerType', + type: 'simpleradios', + input: true, + }, + { + label: 'How many Markers per Submission?', + key: 'numPoints', + type: 'simplenumber', + defaultValue: 1, + input: true, + }, + { + label: 'Default Zoom Level', + description: + 'Zoom Levels are from 0 (Most zoomed out) to 18 (most zoomed in).', + defaultValue: 13, + delimiter: false, + requireDecimal: false, + validate: { + isUseForCopy: false, + min: 0, + max: 18, + }, + key: 'defaultZoom', + type: 'simplenumber', + input: true, + }, + { + label: 'Read Only Map', + description: + 'This allows for the user to view and scroll the map, but not add any input', + key: 'readOnlyMap', + type: 'simplecheckbox', + input: true, + }, + ], +}; From 300441f4dbf90a2c0a76464f393d6feee65f4943 Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Fri, 5 Jul 2024 10:08:51 -0700 Subject: [PATCH 32/80] Settings text updated --- .../src/components/Map/editForm/Component.edit.data.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index e163e9c24..d00ad3fbb 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -18,11 +18,12 @@ export default { label: 'Marker Type ', values: [ { - label: 'Point Marker', + label: 'Add a point marker (drop a pin)', value: 'marker', }, { - label: 'Circle', + label: + 'Add circular area of interest through a point and custom radius', value: 'circle', }, ], From 8001826e989973bf28d287bfb81e298ef2ed226c Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 8 Jul 2024 20:12:04 +0000 Subject: [PATCH 33/80] initial custom center --- .../Map/editForm/Component.edit.data.ts | 118 ++++++++++-------- 1 file changed, 64 insertions(+), 54 deletions(-) diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index fe7a284e7..f3678464d 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -1,57 +1,67 @@ import common from '../../Common/Simple.edit.data'; -export default +export default { + key: 'data', + components: [ + ...common, { - key: 'data', - components: [ - ...common, - { - label: "Marker Type ", - values: [ - { - label: "Point Marker", - value: "marker" - }, - { - label: "Circle", - value: "circle", - } - ], - defaultValue: "marker", - key: "markerType", - type: "simpleradios", - input: true, - }, - { - label: "How many Points per Submission?", - key: "numPoints", - type: "simplenumber", - defaultValue: 1, - input: true, - }, - - { - label: "Default Zoom Level", - description: "Zoom Levels are from 0 (Most zoomed out) to 18 (most zoomed in).", - defaultValue: 13, - delimiter: false, - requireDecimal: false, - validate: { - isUseForCopy: false, - min: 0, - max: 18 - }, - key: "defaultZoom", - type: "simplenumber", - input: true, - }, - { - label: "Read Only Map", - description: "This allows for the user to view and scroll the map, but not add any input", - key: "readOnlyMap", - type: "simplecheckbox", - input: true, - - } - ] - } + label: 'Marker Type ', + values: [ + { + label: 'Point Marker', + value: 'marker', + }, + { + label: 'Circle', + value: 'circle', + }, + ], + defaultValue: 'marker', + key: 'markerType', + type: 'simpleradios', + input: true, + }, + { + label: 'Set Default Center', + tableView: false, + markerType: 'marker', + numPoints: 1, + defaultZoom: 5, + readOnlyMap: false, + key: 'map', + type: 'map', + input: true, + }, + { + label: 'How many Points per Submission?', + key: 'numPoints', + type: 'simplenumber', + defaultValue: 1, + input: true, + }, + { + label: 'Default Zoom Level', + description: + 'Zoom Levels are from 0 (Most zoomed out) to 18 (most zoomed in).', + defaultValue: 13, + delimiter: false, + requireDecimal: false, + validate: { + isUseForCopy: false, + min: 0, + max: 18, + }, + key: 'defaultZoom', + type: 'simplenumber', + input: true, + }, + { + label: 'Read Only Map', + description: + 'This allows for the user to view and scroll the map, but not add any input', + key: 'readOnlyMap', + type: 'simplecheckbox', + input: true, + }, + ], +}; From f82e707b35f6c834e5241f9f6a436f1bec13985a Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 8 Jul 2024 23:28:21 +0000 Subject: [PATCH 34/80] Added customizing default map center --- components/src/components/Map/Component.ts | 14 +++++++++++--- .../components/Map/editForm/Component.edit.data.ts | 13 +++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 579c23177..c69c858ab 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -4,7 +4,9 @@ import MapService from './services/MapService'; import baseEditForm from './Component.form'; import * as L from 'leaflet'; -const CENTER: [number, number] = [48.41939025932759, -123.37029576301576]; // Ensure CENTER is a tuple with exactly two elements +const DEFAULT_CENTER: [number, number] = [ + 48.41939025932759, -123.37029576301576, +]; // Ensure CENTER is a tuple with exactly two elements export default class Component extends (FieldComponent as any) { static schema(...extend) { @@ -69,11 +71,17 @@ export default class Component extends (FieldComponent as any) { drawOptions[this.component.markerType] = true; // set marker type from user choice } - const { numPoints, defaultZoom, readOnlyMap } = this.component; + const { numPoints, defaultZoom, readOnlyMap, center } = this.component; + + let parsedCenter; + if (center) { + parsedCenter = JSON.parse(center).latlng; + } + this.mapService = new MapService({ mapContainer, drawOptions, - center: CENTER, + center: center ? parsedCenter : DEFAULT_CENTER, form, numPoints, defaultZoom, diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index d00ad3fbb..4bf640ee0 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -56,6 +56,19 @@ export default { type: 'simplenumber', input: true, }, + { + key: 'center', + type: 'map', + input: true, + label: 'Default Center', + numPoints: 1, + tableView: false, + markerType: 'marker', + defaultZoom: 13, + readOnlyMap: false, + description: + 'Please select the desired default center using a single marker', + }, { label: 'Read Only Map', description: From c2900768a6ec1f06fa7b72d1693a893a1def4799 Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Wed, 10 Jul 2024 15:08:59 -0700 Subject: [PATCH 35/80] Readonly in view submission mode --- components/src/components/Map/Component.ts | 2 ++ .../src/components/Map/services/MapService.ts | 30 +++++++++++++------ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index c69c858ab..a0c9aefb8 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -72,6 +72,7 @@ export default class Component extends (FieldComponent as any) { } const { numPoints, defaultZoom, readOnlyMap, center } = this.component; + const { readOnly: viewMode } = this.options; let parsedCenter; if (center) { @@ -87,6 +88,7 @@ export default class Component extends (FieldComponent as any) { defaultZoom, readOnlyMap, onDrawnItemsChange: this.saveDrawnItems.bind(this), + viewMode, }); // Load existing data if available diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 46585a644..d9f07bd48 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -20,6 +20,7 @@ interface MapServiceOptions { defaultZoom?: number; readOnlyMap?: boolean; onDrawnItemsChange: (items: any) => void; // Support both single and multiple items + viewMode?: boolean; } class MapService { @@ -29,6 +30,7 @@ class MapService { constructor(options: MapServiceOptions) { this.options = options; + if (options.mapContainer) { const { map, drawnItems } = this.initializeMap(options); this.map = map; @@ -53,8 +55,16 @@ class MapService { } initializeMap(options: MapServiceOptions) { - let { mapContainer, center, drawOptions, form, defaultZoom, readOnlyMap } = - options; + let { + mapContainer, + center, + drawOptions, + form, + defaultZoom, + readOnlyMap, + viewMode, + } = options; + if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; } @@ -72,13 +82,15 @@ class MapService { // Add Drawing Controllers if (!readOnlyMap) { - let drawControl = new L.Control.Draw({ - draw: drawOptions, - edit: { - featureGroup: drawnItems, - }, - }); - map.addControl(drawControl); + if (!viewMode) { + let drawControl = new L.Control.Draw({ + draw: drawOptions, + edit: { + featureGroup: drawnItems, + }, + }); + map.addControl(drawControl); + } } // Checking to see if the map should be interactable From 263774042a588841889cf4064ab4b8e405637e33 Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Tue, 16 Jul 2024 09:27:56 -0700 Subject: [PATCH 36/80] Updated for Map data Submission to be an Json --- components/src/components/Map/Component.ts | 38 +++++++++---------- .../src/components/Map/services/MapService.ts | 8 ++-- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index a0c9aefb8..131a5eb07 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -15,6 +15,7 @@ export default class Component extends (FieldComponent as any) { label: 'Map', key: 'map', input: true, + defaultvalue: { features: [] }, ...extend, }); } @@ -74,15 +75,15 @@ export default class Component extends (FieldComponent as any) { const { numPoints, defaultZoom, readOnlyMap, center } = this.component; const { readOnly: viewMode } = this.options; - let parsedCenter; - if (center) { - parsedCenter = JSON.parse(center).latlng; + let initialCenter; + if (center && center.features && center.features[0]) { + initialCenter = center.features[0].coordinates; } this.mapService = new MapService({ mapContainer, drawOptions, - center: center ? parsedCenter : DEFAULT_CENTER, + center: center ? initialCenter : DEFAULT_CENTER, form, numPoints, defaultZoom, @@ -92,10 +93,9 @@ export default class Component extends (FieldComponent as any) { }); // Load existing data if available - if (this.dataValue) { + if (this.dataValue && this.dataValue.features) { try { - const parsedValue = JSON.parse(this.dataValue); - this.mapService.loadDrawnItems(parsedValue); + this.mapService.loadDrawnItems(this.dataValue.features); } catch (error) { console.error('Failed to parse dataValue:', error); } @@ -103,11 +103,11 @@ export default class Component extends (FieldComponent as any) { } saveDrawnItems(drawnItems: L.Layer[]) { - const value = drawnItems.map((layer: any) => { + const features = drawnItems.map((layer: any) => { if (layer instanceof L.Marker) { return { type: 'marker', - latlng: layer.getLatLng(), + coordinates: layer.getLatLng(), }; } else if (layer instanceof L.Rectangle) { return { @@ -117,38 +117,34 @@ export default class Component extends (FieldComponent as any) { } else if (layer instanceof L.Circle) { return { type: 'circle', - latlng: layer.getLatLng(), + coordinates: layer.getLatLng(), radius: layer.getRadius(), }; } else if (layer instanceof L.Polygon) { return { type: 'polygon', - latlngs: layer.getLatLngs(), + coordinates: layer.getLatLngs(), }; } else if (layer instanceof L.Polyline) { return { type: 'polyline', - latlngs: layer.getLatLngs(), + coordinates: layer.getLatLngs(), }; } }); - // Convert to JSON string - const jsonValue = - this.component.numPoints === 1 - ? JSON.stringify(value[0]) - : JSON.stringify(value); - this.setValue(jsonValue); + this.setValue({ features }); } setValue(value) { super.setValue(value); // Additional logic to render the saved data on the map if necessary - if (this.mapService && value) { + if (this.mapService && value && value.features) { try { - const parsedValue = JSON.parse(value); - this.mapService.loadDrawnItems(parsedValue); + //const parsedValue = JSON.parse(value); + + this.mapService.loadDrawnItems(value.features); } catch (error) { console.error('Failed to parse value:', error); } diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index d9f07bd48..fe6d28abf 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -157,15 +157,15 @@ class MapService { items.forEach((item) => { let layer; if (item.type === 'marker') { - layer = L.marker(item.latlng); + layer = L.marker(item.coordinates); } else if (item.type === 'rectangle') { layer = L.rectangle(item.bounds); } else if (item.type === 'circle') { - layer = L.circle(item.latlng, { radius: item.radius }); + layer = L.circle(item.coordinates, { radius: item.radius }); } else if (item.type === 'polygon') { - layer = L.polygon(item.latlngs); + layer = L.polygon(item.coordinates); } else if (item.type === 'polyline') { - layer = L.polyline(item.latlngs); + layer = L.polyline(item.coordinates); } if (layer) { From 13a4ae6c4f212c7db98b7d27188f727e45431329 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 16 Jul 2024 16:43:43 +0000 Subject: [PATCH 37/80] reorganized map settings, set new default center --- .../src/components/Map/Component.form.ts | 33 +++-------- components/src/components/Map/Component.ts | 2 +- .../Map/editForm/Component.edit.data.ts | 3 +- .../src/components/Map/services/MapService.ts | 56 ++++++------------- 4 files changed, 26 insertions(+), 68 deletions(-) diff --git a/components/src/components/Map/Component.form.ts b/components/src/components/Map/Component.form.ts index 9b8ac2603..20c3c4533 100644 --- a/components/src/components/Map/Component.form.ts +++ b/components/src/components/Map/Component.form.ts @@ -1,32 +1,17 @@ import baseEditForm from 'formiojs/components/_classes/component/Component.form'; import EditData from './editForm/Component.edit.data'; import EditDisplay from './editForm/Component.edit.display'; -import EditValidation from './editForm/Component.edit.validation'; import SimpleApi from '../Common/Simple.edit.api'; import SimpleConditional from '../Common/Simple.edit.conditional'; +import AdvancedEditLogic from '../Common/Advanced.edit.logic'; +import AdvancedEditLayout from '../Common/Advanced.edit.layout'; export default function (...extend) { return baseEditForm( [ EditDisplay, - { - key: 'data', - ignore: true, - }, EditData, { - key: 'api', - ignore: true, - }, - { - key: 'layout', - ignore: true, - }, - { - key: 'conditional', - ignore: true, - }, - { - key: 'logic', + key: 'data', ignore: true, }, { @@ -34,16 +19,12 @@ export default function (...extend) { ignore: true, }, { - label: 'API', - key: 'customAPI', - weight: 30, - components: SimpleApi, + key: 'logic', + components: AdvancedEditLogic, }, { - label: 'Conditional', - key: 'customConditional', - weight: 40, - components: SimpleConditional, + key: 'layout', + components: AdvancedEditLayout, }, ], ...extend diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index c69c858ab..ba079b97f 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -5,7 +5,7 @@ import baseEditForm from './Component.form'; import * as L from 'leaflet'; const DEFAULT_CENTER: [number, number] = [ - 48.41939025932759, -123.37029576301576, + 53.96717190097409, -123.98320425388914, ]; // Ensure CENTER is a tuple with exactly two elements export default class Component extends (FieldComponent as any) { diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index 4bf640ee0..6dbf7d242 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -1,4 +1,3 @@ -import common from '../../Common/Simple.edit.data'; export default { key: 'customData', label: 'Data', @@ -44,7 +43,7 @@ export default { label: 'Default Zoom Level', description: 'Zoom Levels are from 0 (Most zoomed out) to 18 (most zoomed in).', - defaultValue: 13, + defaultValue: 5, delimiter: false, requireDecimal: false, validate: { diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 46585a644..3ad22e8ba 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -2,7 +2,6 @@ import * as L from 'leaflet'; import 'leaflet-draw'; import 'leaflet/dist/leaflet.css'; import 'leaflet-draw/dist/leaflet.draw-src.css'; - const DEFAULT_MAP_LAYER_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; const DEFAULT_LAYER_ATTRIBUTION = @@ -10,33 +9,20 @@ const DEFAULT_LAYER_ATTRIBUTION = const DEFAULT_MAP_ZOOM = 13; const DECIMALS_LATLNG = 5; // the number of decimals of latitude and longitude to be displayed in the marker popup const COMPONENT_EDIT_CLASS = 'component-edit-tabs'; - -interface MapServiceOptions { - mapContainer: HTMLElement; - center: [number, number]; // Ensure center is a tuple with exactly two elements - drawOptions: any; - form: HTMLCollectionOf; - numPoints: number; - defaultZoom?: number; - readOnlyMap?: boolean; - onDrawnItemsChange: (items: any) => void; // Support both single and multiple items -} - +const FORM_REVIEW_CLASS = 'review-form'; class MapService { - options: MapServiceOptions; - map: L.Map; - drawnItems: L.FeatureGroup; - - constructor(options: MapServiceOptions) { + options; + map; + drawnItems; + constructor(options) { this.options = options; if (options.mapContainer) { const { map, drawnItems } = this.initializeMap(options); this.map = map; this.drawnItems = drawnItems; map.invalidateSize(); - // Event listener for drawn objects - map.on('draw:created', (e: any) => { + map.on('draw:created', (e) => { let layer = e.layer; if (drawnItems.getLayers().length === options.numPoints) { L.popup() @@ -51,8 +37,7 @@ class MapService { }); } } - - initializeMap(options: MapServiceOptions) { + initializeMap(options) { let { mapContainer, center, drawOptions, form, defaultZoom, readOnlyMap } = options; if (drawOptions.rectangle) { @@ -65,13 +50,15 @@ class MapService { L.tileLayer(DEFAULT_MAP_LAYER_URL, { attribution: DEFAULT_LAYER_ATTRIBUTION, }).addTo(map); - // Initialize Draw Layer let drawnItems = new L.FeatureGroup(); map.addLayer(drawnItems); - // Add Drawing Controllers - if (!readOnlyMap) { + const formReviewNode = document.getElementsByClassName(FORM_REVIEW_CLASS); + if ( + !readOnlyMap || + !(formReviewNode && this.hasChildNode(formReviewNode[0], mapContainer)) + ) { let drawControl = new L.Control.Draw({ draw: drawOptions, edit: { @@ -80,7 +67,6 @@ class MapService { }); map.addControl(drawControl); } - // Checking to see if the map should be interactable const componentEditNode = document.getElementsByClassName(COMPONENT_EDIT_CLASS); @@ -91,14 +77,14 @@ class MapService { if (this.hasChildNode(componentEditNode[0], mapContainer)) { map.dragging.enable(); map.scrollWheelZoom.enable(); + console.log(map); + map.invalidateSize(true); } } } - return { map, drawnItems }; } - - bindPopupToLayer(layer: L.Layer) { + bindPopupToLayer(layer) { if (layer instanceof L.Marker) { layer .bindPopup( @@ -127,21 +113,16 @@ class MapService { .openPopup(); } } - - loadDrawnItems(items: any) { + loadDrawnItems(items) { const { drawnItems } = this; - if (!drawnItems) { console.error('drawnItems is undefined'); return; } - drawnItems.clearLayers(); - if (!Array.isArray(items)) { items = [items]; } - items.forEach((item) => { let layer; if (item.type === 'marker') { @@ -155,15 +136,13 @@ class MapService { } else if (item.type === 'polyline') { layer = L.polyline(item.latlngs); } - if (layer) { drawnItems.addLayer(layer); this.bindPopupToLayer(layer); } }); } - - hasChildNode(parent: any, targetNode: any) { + hasChildNode(parent, targetNode) { if (parent === targetNode) { return true; } @@ -175,5 +154,4 @@ class MapService { return false; } } - export default MapService; From ba671ba166bce538ededc40a1ef3ee2a2381bda0 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 24 Jul 2024 17:04:39 +0000 Subject: [PATCH 38/80] Fixed default bug --- components/src/components/Map/Component.ts | 6 ++++-- .../components/Map/editForm/Component.edit.data.ts | 2 +- components/src/components/Map/services/MapService.ts | 11 ++++++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index ba079b97f..c55cbc7f5 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -71,8 +71,9 @@ export default class Component extends (FieldComponent as any) { drawOptions[this.component.markerType] = true; // set marker type from user choice } - const { numPoints, defaultZoom, readOnlyMap, center } = this.component; - + const { numPoints, defaultZoom, readOnlyMap, center, defaultValue } = + this.component; + console.log(defaultValue); let parsedCenter; if (center) { parsedCenter = JSON.parse(center).latlng; @@ -86,6 +87,7 @@ export default class Component extends (FieldComponent as any) { numPoints, defaultZoom, readOnlyMap, + defaultValue, onDrawnItemsChange: this.saveDrawnItems.bind(this), }); diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index 6dbf7d242..74f60d61f 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -63,7 +63,7 @@ export default { numPoints: 1, tableView: false, markerType: 'marker', - defaultZoom: 13, + defaultZoom: 5, readOnlyMap: false, description: 'Please select the desired default center using a single marker', diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 3ad22e8ba..a4174dc09 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -6,7 +6,7 @@ const DEFAULT_MAP_LAYER_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; const DEFAULT_LAYER_ATTRIBUTION = '© OpenStreetMap contributors'; -const DEFAULT_MAP_ZOOM = 13; +const DEFAULT_MAP_ZOOM = 5; const DECIMALS_LATLNG = 5; // the number of decimals of latitude and longitude to be displayed in the marker popup const COMPONENT_EDIT_CLASS = 'component-edit-tabs'; const FORM_REVIEW_CLASS = 'review-form'; @@ -35,6 +35,12 @@ class MapService { this.bindPopupToLayer(layer); options.onDrawnItemsChange(drawnItems.getLayers()); }); + map.on(L.Draw.Event.DELETED, (e) => { + options.onDrawnItemsChange(drawnItems.getLayers()); + }); + map.on(L.Draw.Event.EDITED, (e) => { + options.onDrawnItemsChange(drawnItems.getLayers()); + }); } } initializeMap(options) { @@ -72,13 +78,12 @@ class MapService { document.getElementsByClassName(COMPONENT_EDIT_CLASS); if (form) { if (form[0]?.classList.contains('formbuilder')) { + map.invalidateSize(); map.dragging.disable(); map.scrollWheelZoom.disable(); if (this.hasChildNode(componentEditNode[0], mapContainer)) { map.dragging.enable(); map.scrollWheelZoom.enable(); - console.log(map); - map.invalidateSize(true); } } } From e11174fae7099cdfebe54ce57f5796715061d626 Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Thu, 25 Jul 2024 16:13:27 -0700 Subject: [PATCH 39/80] map broken in Map Settings Page fixed --- components/src/components/Map/Component.ts | 5 +++-- .../src/components/Map/services/MapService.ts | 17 +++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index c32056163..2c5d35127 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -75,18 +75,19 @@ export default class Component extends (FieldComponent as any) { const { numPoints, defaultZoom, readOnlyMap, center, defaultValue } = this.component; - const { readOnly: viewMode } = this.options; let initialCenter; if (center && center.features && center.features[0]) { initialCenter = center.features[0].coordinates; + } else { + initialCenter = DEFAULT_CENTER; } this.mapService = new MapService({ mapContainer, drawOptions, - center: center ? initialCenter : DEFAULT_CENTER, + center: initialCenter, form, numPoints, defaultZoom, diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 06b110b23..840cbb038 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -26,6 +26,7 @@ class MapService { options; map; drawnItems; + constructor(options) { this.options = options; @@ -33,7 +34,10 @@ class MapService { const { map, drawnItems } = this.initializeMap(options); this.map = map; this.drawnItems = drawnItems; + map.invalidateSize(); + // Triggering a resize event after map initialization + setTimeout(() => window.dispatchEvent(new Event('resize')), 0); // Event listener for drawn objects map.on('draw:created', (e) => { let layer = e.layer; @@ -54,6 +58,10 @@ class MapService { map.on(L.Draw.Event.EDITED, (e) => { options.onDrawnItemsChange(drawnItems.getLayers()); }); + + map.on('resize', () => { + map.invalidateSize(); + }); } } @@ -68,10 +76,10 @@ class MapService { viewMode, } = options; - if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; } + const map = L.map(mapContainer).setView( center, defaultZoom || DEFAULT_MAP_ZOOM @@ -79,11 +87,12 @@ class MapService { L.tileLayer(DEFAULT_MAP_LAYER_URL, { attribution: DEFAULT_LAYER_ATTRIBUTION, }).addTo(map); + // Initialize Draw Layer let drawnItems = new L.FeatureGroup(); map.addLayer(drawnItems); - // Add Drawing Controllers + // Add Drawing Controllers if (!readOnlyMap) { if (!viewMode) { let drawControl = new L.Control.Draw({ @@ -95,6 +104,7 @@ class MapService { map.addControl(drawControl); } } + // Checking to see if the map should be interactable const componentEditNode = document.getElementsByClassName(COMPONENT_EDIT_CLASS); @@ -111,6 +121,7 @@ class MapService { } return { map, drawnItems }; } + bindPopupToLayer(layer) { if (layer instanceof L.Marker) { layer @@ -140,6 +151,7 @@ class MapService { .openPopup(); } } + loadDrawnItems(items) { const { drawnItems } = this; if (!drawnItems) { @@ -169,6 +181,7 @@ class MapService { } }); } + hasChildNode(parent, targetNode) { if (parent === targetNode) { return true; From 062e9eb1773375b5c45d3efad891cfd32d392725 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 29 Jul 2024 17:09:30 +0000 Subject: [PATCH 40/80] init, added marker png to component folder --- .../src/components/Map/Common/marker-icon.png | Bin 0 -> 1466 bytes .../src/components/Map/services/MapService.ts | 6 +++++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 components/src/components/Map/Common/marker-icon.png diff --git a/components/src/components/Map/Common/marker-icon.png b/components/src/components/Map/Common/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..950edf24677ded147df13b26f91baa2b0fa70513 GIT binary patch literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?AmOnly one marker for submission

') .openOn(map); } else { + console.log(layer); + layer.icon({ iconUrl: CUSTOM_MARKER_URI }); drawnItems.addLayer(layer); } this.bindPopupToLayer(layer); @@ -68,7 +71,6 @@ class MapService { viewMode, } = options; - if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; } @@ -81,6 +83,8 @@ class MapService { }).addTo(map); // Initialize Draw Layer let drawnItems = new L.FeatureGroup(); + //({ iconUrl: '../common/marker-icon.png/' }); + map.addLayer(drawnItems); // Add Drawing Controllers From f459450222d76a463371bbb61cb5edb641ea5ffe Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 31 Jul 2024 19:20:30 +0000 Subject: [PATCH 41/80] Added custom marker, placeholder marker image --- .../src/components/Map/services/MapService.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 174d27471..9a456aeed 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -9,7 +9,8 @@ const DEFAULT_LAYER_ATTRIBUTION = const DEFAULT_MAP_ZOOM = 5; const DECIMALS_LATLNG = 5; // the number of decimals of latitude and longitude to be displayed in the marker popup const COMPONENT_EDIT_CLASS = 'component-edit-tabs'; -const CUSTOM_MARKER_URI = '../Common/marker-icon.png/'; +const CUSTOM_MARKER_PATH = + 'http://leafletjs.com/examples/custom-icons/leaf-green.png'; interface MapServiceOptions { mapContainer: HTMLElement; @@ -45,7 +46,10 @@ class MapService { .openOn(map); } else { console.log(layer); - layer.icon({ iconUrl: CUSTOM_MARKER_URI }); + if (layer.type === 'marker') { + layer.setIcon(this.customMarker); + console.log('Adding marker' + layer); + } drawnItems.addLayer(layer); } this.bindPopupToLayer(layer); @@ -157,7 +161,8 @@ class MapService { items.forEach((item) => { let layer; if (item.type === 'marker') { - layer = L.marker(item.coordinates); + layer = L.marker(item.coordinates).setIcon(this.customMarker); //layer.setIcon(this.customMarker); + console.log('Loading Marker' + layer); } else if (item.type === 'rectangle') { layer = L.rectangle(item.bounds); } else if (item.type === 'circle') { @@ -184,5 +189,10 @@ class MapService { } return false; } + customMarker = L.icon({ + iconUrl: CUSTOM_MARKER_PATH, + iconSize: [25, 41], + iconAnchor: [12, 20], + }); } export default MapService; From 6decb87633a6ff27c2de8f03f44fbccd98f651f0 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Thu, 1 Aug 2024 17:31:53 +0000 Subject: [PATCH 42/80] Added fixes for marker centering --- components/src/components/Map/services/MapService.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 9a456aeed..24b69e0fa 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -10,7 +10,7 @@ const DEFAULT_MAP_ZOOM = 5; const DECIMALS_LATLNG = 5; // the number of decimals of latitude and longitude to be displayed in the marker popup const COMPONENT_EDIT_CLASS = 'component-edit-tabs'; const CUSTOM_MARKER_PATH = - 'http://leafletjs.com/examples/custom-icons/leaf-green.png'; + 'https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon.png'; interface MapServiceOptions { mapContainer: HTMLElement; @@ -192,7 +192,7 @@ class MapService { customMarker = L.icon({ iconUrl: CUSTOM_MARKER_PATH, iconSize: [25, 41], - iconAnchor: [12, 20], + iconAnchor: [12, 41], }); } export default MapService; From 174dfb1801c36af3185d44a22f52c46226e5d3de Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Thu, 1 Aug 2024 20:55:38 +0000 Subject: [PATCH 43/80] Removed comments, and logs --- components/src/components/Map/services/MapService.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 24b69e0fa..55aaca367 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -45,10 +45,8 @@ class MapService { .setContent('

Only one marker for submission

') .openOn(map); } else { - console.log(layer); if (layer.type === 'marker') { layer.setIcon(this.customMarker); - console.log('Adding marker' + layer); } drawnItems.addLayer(layer); } @@ -162,7 +160,6 @@ class MapService { let layer; if (item.type === 'marker') { layer = L.marker(item.coordinates).setIcon(this.customMarker); //layer.setIcon(this.customMarker); - console.log('Loading Marker' + layer); } else if (item.type === 'rectangle') { layer = L.rectangle(item.bounds); } else if (item.type === 'circle') { From beeb35e4ba383e6428137a7144c521e20241c888 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 6 Aug 2024 23:03:38 +0000 Subject: [PATCH 44/80] Added fix for marker drag --- components/src/components/Map/services/MapService.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 55aaca367..22b8364ad 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -59,6 +59,9 @@ class MapService { map.on(L.Draw.Event.EDITED, (e) => { options.onDrawnItemsChange(drawnItems.getLayers()); }); + map.on(L.Draw.Event.DRAWSTART, (e) => { + e.layer.setIcon(this.customMarker); + }); } } @@ -85,7 +88,6 @@ class MapService { }).addTo(map); // Initialize Draw Layer let drawnItems = new L.FeatureGroup(); - //({ iconUrl: '../common/marker-icon.png/' }); map.addLayer(drawnItems); // Add Drawing Controllers @@ -159,7 +161,7 @@ class MapService { items.forEach((item) => { let layer; if (item.type === 'marker') { - layer = L.marker(item.coordinates).setIcon(this.customMarker); //layer.setIcon(this.customMarker); + layer = L.marker(item.coordinates).setIcon(this.customMarker); } else if (item.type === 'rectangle') { layer = L.rectangle(item.bounds); } else if (item.type === 'circle') { From dac5c6d9e5a34971da229ad35fdce230934bee41 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 7 Aug 2024 16:19:51 +0000 Subject: [PATCH 45/80] Merge error --- components/src/components/Map/services/MapService.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 8afea043a..6cd483ac3 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -66,10 +66,9 @@ class MapService { map.on(L.Draw.Event.DRAWSTART, (e) => { e.layer.setIcon(this.customMarker); - } + }); map.on('resize', () => { map.invalidateSize(); - }); } } From de9d6e4f3de617c97288dcbfed7b4ff093222267 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 7 Aug 2024 16:25:16 +0000 Subject: [PATCH 46/80] Merge from pop --- components/package-lock.json | 157 +++++++++++++++++- components/package.json | 1 + .../src/components/Map/services/MapService.ts | 2 + 3 files changed, 154 insertions(+), 6 deletions(-) diff --git a/components/package-lock.json b/components/package-lock.json index 2b0b32e0d..d55b3d2c1 100644 --- a/components/package-lock.json +++ b/components/package-lock.json @@ -19,6 +19,7 @@ "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", + "vue": "^3.4.36", "webpack": "^5.75.0" }, "devDependencies": { @@ -287,7 +288,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -1093,6 +1093,97 @@ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, + "node_modules/@vue/compiler-core": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.36.tgz", + "integrity": "sha512-qBkndgpwFKdupmOPoiS10i7oFdN7a+4UNDlezD0GlQ1kuA1pNrscg9g12HnB5E8hrWSuEftRsbJhL1HI2zpJhg==", + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/shared": "3.4.36", + "entities": "^5.0.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.36.tgz", + "integrity": "sha512-eEIjy4GwwZTFon/Y+WO8tRRNGqylaRlA79T1RLhUpkOzJ7EtZkkb8MurNfkqY6x6Qiu0R7ESspEF7GkPR/4yYg==", + "dependencies": { + "@vue/compiler-core": "3.4.36", + "@vue/shared": "3.4.36" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.36.tgz", + "integrity": "sha512-rhuHu7qztt/rNH90dXPTzhB7hLQT2OC4s4GrPVqmzVgPY4XBlfWmcWzn4bIPEWNImt0CjO7kfHAf/1UXOtx3vw==", + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/compiler-core": "3.4.36", + "@vue/compiler-dom": "3.4.36", + "@vue/compiler-ssr": "3.4.36", + "@vue/shared": "3.4.36", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.40", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.36.tgz", + "integrity": "sha512-Wt1zyheF0zVvRJyhY74uxQbnkXV2Le/JPOrAxooR4rFYKC7cFr+cRqW6RU3cM/bsTy7sdZ83IDuy/gLPSfPGng==", + "dependencies": { + "@vue/compiler-dom": "3.4.36", + "@vue/shared": "3.4.36" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.36.tgz", + "integrity": "sha512-wN1aoCwSoqrt1yt8wO0gc13QaC+Vk1o6AoSt584YHNnz6TGDhh1NCMUYgAnvp4HEIkLdGsaC1bvu/P+wpoDEXw==", + "dependencies": { + "@vue/shared": "3.4.36" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.36.tgz", + "integrity": "sha512-9+TR14LAVEerZWLOm/N/sG2DVYhrH2bKgFrbH/FVt/Q8Jdw4OtdcGMRC6Tx8VAo0DA1eqAqrZaX0fbOaOxxZ4A==", + "dependencies": { + "@vue/reactivity": "3.4.36", + "@vue/shared": "3.4.36" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.36.tgz", + "integrity": "sha512-2Qe2fKkLxgZBVvHrG0QMNLL4bsx7Ae88pyXebY2WnQYABpOnGYvA+axMbcF9QwM4yxnsv+aELbC0eiNVns7mGw==", + "dependencies": { + "@vue/reactivity": "3.4.36", + "@vue/runtime-core": "3.4.36", + "@vue/shared": "3.4.36", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.36.tgz", + "integrity": "sha512-2XW90Rq8+Y7S1EIsAuubZVLm0gCU8HYb5mRAruFdwfC3XSOU5/YKePz29csFzsch8hXaY5UHh7ZMddmi1XTJEA==", + "dependencies": { + "@vue/compiler-ssr": "3.4.36", + "@vue/shared": "3.4.36" + }, + "peerDependencies": { + "vue": "3.4.36" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.36.tgz", + "integrity": "sha512-fdPLStwl1sDfYuUftBaUVn2pIrVFDASYerZSrlBvVBfylObPA1gtcWJHy5Ox8jLEJ524zBibss488Q3SZtU1uA==" + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -2403,6 +2494,11 @@ "node": ">=4" } }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -2720,6 +2816,17 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-5.0.0.tgz", + "integrity": "sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/envinfo": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", @@ -2962,6 +3069,11 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -5071,6 +5183,19 @@ "yallist": "^2.1.2" } }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -6769,9 +6894,9 @@ } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "funding": [ { "type": "opencollective", @@ -6788,7 +6913,7 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "source-map-js": "^1.2.0" }, "engines": { @@ -8726,7 +8851,7 @@ "version": "4.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -9119,6 +9244,26 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/vue": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.36.tgz", + "integrity": "sha512-mIFvbLgjODfx3Iy1SrxOsiPpDb8Bo3EU+87ioimOZzZTOp15IEdAels70IjBOLO3ZFlLW5AhdwY4dWbXVQKYow==", + "dependencies": { + "@vue/compiler-dom": "3.4.36", + "@vue/compiler-sfc": "3.4.36", + "@vue/runtime-dom": "3.4.36", + "@vue/server-renderer": "3.4.36", + "@vue/shared": "3.4.36" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", diff --git a/components/package.json b/components/package.json index ed2573947..9633d47fc 100644 --- a/components/package.json +++ b/components/package.json @@ -57,6 +57,7 @@ "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", + "vue": "^3.4.36", "webpack": "^5.75.0" }, "devDependencies": { diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 6cd483ac3..0068817cc 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -1,4 +1,5 @@ import * as L from 'leaflet'; +import { toRaw, markRaw } from 'vue'; import 'leaflet-draw'; import 'leaflet/dist/leaflet.css'; import 'leaflet-draw/dist/leaflet.draw-src.css'; @@ -34,6 +35,7 @@ class MapService { if (options.mapContainer) { const { map, drawnItems } = this.initializeMap(options); + this.map = map; this.drawnItems = drawnItems; From 65301b7255423598c67887bd1192d7f513196978 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 7 Aug 2024 16:25:16 +0000 Subject: [PATCH 47/80] Merge from pop From 7a5b17f9ce6fe4583f4262534e8096a87e3466e6 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 7 Aug 2024 16:55:07 +0000 Subject: [PATCH 48/80] Revert "Merge error" This reverts commit dac5c6d9e5a34971da229ad35fdce230934bee41. --- components/src/components/Map/services/MapService.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 0068817cc..7c3d7e1d0 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -68,9 +68,10 @@ class MapService { map.on(L.Draw.Event.DRAWSTART, (e) => { e.layer.setIcon(this.customMarker); - }); + } map.on('resize', () => { map.invalidateSize(); + }); } } From 37716bfa6436b9b31ce68c1a160448b557e6bc99 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Thu, 8 Aug 2024 19:11:31 +0000 Subject: [PATCH 49/80] Commit fixes --- components/package-lock.json | 149 +----------------- components/package.json | 1 - .../src/components/Map/services/MapService.ts | 7 +- 3 files changed, 7 insertions(+), 150 deletions(-) diff --git a/components/package-lock.json b/components/package-lock.json index d55b3d2c1..de6e146a6 100644 --- a/components/package-lock.json +++ b/components/package-lock.json @@ -19,7 +19,6 @@ "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", - "vue": "^3.4.36", "webpack": "^5.75.0" }, "devDependencies": { @@ -288,6 +287,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -1093,97 +1093,6 @@ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, - "node_modules/@vue/compiler-core": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.36.tgz", - "integrity": "sha512-qBkndgpwFKdupmOPoiS10i7oFdN7a+4UNDlezD0GlQ1kuA1pNrscg9g12HnB5E8hrWSuEftRsbJhL1HI2zpJhg==", - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.36", - "entities": "^5.0.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.36.tgz", - "integrity": "sha512-eEIjy4GwwZTFon/Y+WO8tRRNGqylaRlA79T1RLhUpkOzJ7EtZkkb8MurNfkqY6x6Qiu0R7ESspEF7GkPR/4yYg==", - "dependencies": { - "@vue/compiler-core": "3.4.36", - "@vue/shared": "3.4.36" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.36.tgz", - "integrity": "sha512-rhuHu7qztt/rNH90dXPTzhB7hLQT2OC4s4GrPVqmzVgPY4XBlfWmcWzn4bIPEWNImt0CjO7kfHAf/1UXOtx3vw==", - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.36", - "@vue/compiler-dom": "3.4.36", - "@vue/compiler-ssr": "3.4.36", - "@vue/shared": "3.4.36", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.10", - "postcss": "^8.4.40", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.36.tgz", - "integrity": "sha512-Wt1zyheF0zVvRJyhY74uxQbnkXV2Le/JPOrAxooR4rFYKC7cFr+cRqW6RU3cM/bsTy7sdZ83IDuy/gLPSfPGng==", - "dependencies": { - "@vue/compiler-dom": "3.4.36", - "@vue/shared": "3.4.36" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.36.tgz", - "integrity": "sha512-wN1aoCwSoqrt1yt8wO0gc13QaC+Vk1o6AoSt584YHNnz6TGDhh1NCMUYgAnvp4HEIkLdGsaC1bvu/P+wpoDEXw==", - "dependencies": { - "@vue/shared": "3.4.36" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.36.tgz", - "integrity": "sha512-9+TR14LAVEerZWLOm/N/sG2DVYhrH2bKgFrbH/FVt/Q8Jdw4OtdcGMRC6Tx8VAo0DA1eqAqrZaX0fbOaOxxZ4A==", - "dependencies": { - "@vue/reactivity": "3.4.36", - "@vue/shared": "3.4.36" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.36.tgz", - "integrity": "sha512-2Qe2fKkLxgZBVvHrG0QMNLL4bsx7Ae88pyXebY2WnQYABpOnGYvA+axMbcF9QwM4yxnsv+aELbC0eiNVns7mGw==", - "dependencies": { - "@vue/reactivity": "3.4.36", - "@vue/runtime-core": "3.4.36", - "@vue/shared": "3.4.36", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.36.tgz", - "integrity": "sha512-2XW90Rq8+Y7S1EIsAuubZVLm0gCU8HYb5mRAruFdwfC3XSOU5/YKePz29csFzsch8hXaY5UHh7ZMddmi1XTJEA==", - "dependencies": { - "@vue/compiler-ssr": "3.4.36", - "@vue/shared": "3.4.36" - }, - "peerDependencies": { - "vue": "3.4.36" - } - }, - "node_modules/@vue/shared": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.36.tgz", - "integrity": "sha512-fdPLStwl1sDfYuUftBaUVn2pIrVFDASYerZSrlBvVBfylObPA1gtcWJHy5Ox8jLEJ524zBibss488Q3SZtU1uA==" - }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -2494,11 +2403,6 @@ "node": ">=4" } }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -2816,17 +2720,6 @@ "node": ">=10.13.0" } }, - "node_modules/entities": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-5.0.0.tgz", - "integrity": "sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/envinfo": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", @@ -3069,11 +2962,6 @@ "node": ">=4.0" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -5183,19 +5071,6 @@ "yallist": "^2.1.2" } }, - "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -8851,7 +8726,7 @@ "version": "4.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "devOptional": true, + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -9244,26 +9119,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/vue": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.36.tgz", - "integrity": "sha512-mIFvbLgjODfx3Iy1SrxOsiPpDb8Bo3EU+87ioimOZzZTOp15IEdAels70IjBOLO3ZFlLW5AhdwY4dWbXVQKYow==", - "dependencies": { - "@vue/compiler-dom": "3.4.36", - "@vue/compiler-sfc": "3.4.36", - "@vue/runtime-dom": "3.4.36", - "@vue/server-renderer": "3.4.36", - "@vue/shared": "3.4.36" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", diff --git a/components/package.json b/components/package.json index 9633d47fc..ed2573947 100644 --- a/components/package.json +++ b/components/package.json @@ -57,7 +57,6 @@ "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", - "vue": "^3.4.36", "webpack": "^5.75.0" }, "devDependencies": { diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 0068817cc..9e6d887ab 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -1,5 +1,4 @@ import * as L from 'leaflet'; -import { toRaw, markRaw } from 'vue'; import 'leaflet-draw'; import 'leaflet/dist/leaflet.css'; import 'leaflet-draw/dist/leaflet.draw-src.css'; @@ -67,7 +66,11 @@ class MapService { }); map.on(L.Draw.Event.DRAWSTART, (e) => { - e.layer.setIcon(this.customMarker); + console.log(e.target); + console.log(e.layer); + console.log(e.sourceTarget); + console.log(e.propagatedFrom); + //.setIcon(this.customMarker); }); map.on('resize', () => { map.invalidateSize(); From c9b857978ef13a2d9f9f294f794babd929d5a7f9 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 13 Aug 2024 16:03:41 +0000 Subject: [PATCH 50/80] Fixes for marker dragging --- .../src/components/Map/services/MapService.ts | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 7c3d7e1d0..3ccb733c7 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -1,8 +1,8 @@ import * as L from 'leaflet'; -import { toRaw, markRaw } from 'vue'; import 'leaflet-draw'; import 'leaflet/dist/leaflet.css'; import 'leaflet-draw/dist/leaflet.draw-src.css'; + const DEFAULT_MAP_LAYER_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; const DEFAULT_LAYER_ATTRIBUTION = @@ -10,8 +10,14 @@ const DEFAULT_LAYER_ATTRIBUTION = const DEFAULT_MAP_ZOOM = 5; const DECIMALS_LATLNG = 5; // the number of decimals of latitude and longitude to be displayed in the marker popup const COMPONENT_EDIT_CLASS = 'component-edit-tabs'; -const CUSTOM_MARKER_PATH = - 'https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon.png'; +const CUSTOM_MARKER_PATH = 'https://unpkg.com/leaflet@1.9.4/dist/images/'; +// const CUSTOM_MARKER = L.icon({ +// iconUrl: CUSTOM_MARKER_PATH, +// iconSize: [25, 41], +// iconAnchor: [12, 41], +// }); + +L.Icon.Default.imagePath = CUSTOM_MARKER_PATH; interface MapServiceOptions { mapContainer: HTMLElement; @@ -51,9 +57,9 @@ class MapService { .setContent('

Only one marker for submission

') .openOn(map); } else { - if (layer.type === 'marker') { - layer.setIcon(this.customMarker); - } + // if (layer.type === 'marker') { + // layer.setIcon(this.customMarker); + // } drawnItems.addLayer(layer); } this.bindPopupToLayer(layer); @@ -67,11 +73,14 @@ class MapService { }); map.on(L.Draw.Event.DRAWSTART, (e) => { - e.layer.setIcon(this.customMarker); - } + // L.Marker.prototype.options.icon = CUTSOM_MARKER; + // console.log(e.target); + // console.log(e.sourceTarget); + // console.log(e); + // e.layer.setIcon(this.customMarker); + }); map.on('resize', () => { map.invalidateSize(); - }); } } @@ -90,7 +99,7 @@ class MapService { if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; } - + //L.Marker.prototype.options.icon = CUSTOM_MARKER; const map = L.map(mapContainer).setView( center, defaultZoom || DEFAULT_MAP_ZOOM @@ -177,7 +186,7 @@ class MapService { items.forEach((item) => { let layer; if (item.type === 'marker') { - layer = L.marker(item.coordinates).setIcon(this.customMarker); + layer = L.marker(item.coordinates); } else if (item.type === 'rectangle') { layer = L.rectangle(item.bounds); } else if (item.type === 'circle') { @@ -205,10 +214,5 @@ class MapService { } return false; } - customMarker = L.icon({ - iconUrl: CUSTOM_MARKER_PATH, - iconSize: [25, 41], - iconAnchor: [12, 41], - }); } export default MapService; From a54184bbf5814ebcfd405019dcd3d5fb06acaf43 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 13 Aug 2024 16:06:03 +0000 Subject: [PATCH 51/80] Cleanup --- .../src/components/Map/services/MapService.ts | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 3ccb733c7..826535d9a 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -11,11 +11,6 @@ const DEFAULT_MAP_ZOOM = 5; const DECIMALS_LATLNG = 5; // the number of decimals of latitude and longitude to be displayed in the marker popup const COMPONENT_EDIT_CLASS = 'component-edit-tabs'; const CUSTOM_MARKER_PATH = 'https://unpkg.com/leaflet@1.9.4/dist/images/'; -// const CUSTOM_MARKER = L.icon({ -// iconUrl: CUSTOM_MARKER_PATH, -// iconSize: [25, 41], -// iconAnchor: [12, 41], -// }); L.Icon.Default.imagePath = CUSTOM_MARKER_PATH; @@ -57,9 +52,6 @@ class MapService { .setContent('

Only one marker for submission

') .openOn(map); } else { - // if (layer.type === 'marker') { - // layer.setIcon(this.customMarker); - // } drawnItems.addLayer(layer); } this.bindPopupToLayer(layer); @@ -72,13 +64,6 @@ class MapService { options.onDrawnItemsChange(drawnItems.getLayers()); }); - map.on(L.Draw.Event.DRAWSTART, (e) => { - // L.Marker.prototype.options.icon = CUTSOM_MARKER; - // console.log(e.target); - // console.log(e.sourceTarget); - // console.log(e); - // e.layer.setIcon(this.customMarker); - }); map.on('resize', () => { map.invalidateSize(); }); @@ -99,7 +84,6 @@ class MapService { if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; } - //L.Marker.prototype.options.icon = CUSTOM_MARKER; const map = L.map(mapContainer).setView( center, defaultZoom || DEFAULT_MAP_ZOOM From dfb98c17a062c74497eaf68c5d0093006be53905 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 13 Aug 2024 16:13:03 +0000 Subject: [PATCH 52/80] removed extra node installs, vue etc... --- components/package-lock.json | 149 +---------------------------------- components/package.json | 1 - 2 files changed, 2 insertions(+), 148 deletions(-) diff --git a/components/package-lock.json b/components/package-lock.json index d55b3d2c1..de6e146a6 100644 --- a/components/package-lock.json +++ b/components/package-lock.json @@ -19,7 +19,6 @@ "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", - "vue": "^3.4.36", "webpack": "^5.75.0" }, "devDependencies": { @@ -288,6 +287,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -1093,97 +1093,6 @@ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, - "node_modules/@vue/compiler-core": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.36.tgz", - "integrity": "sha512-qBkndgpwFKdupmOPoiS10i7oFdN7a+4UNDlezD0GlQ1kuA1pNrscg9g12HnB5E8hrWSuEftRsbJhL1HI2zpJhg==", - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.36", - "entities": "^5.0.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.36.tgz", - "integrity": "sha512-eEIjy4GwwZTFon/Y+WO8tRRNGqylaRlA79T1RLhUpkOzJ7EtZkkb8MurNfkqY6x6Qiu0R7ESspEF7GkPR/4yYg==", - "dependencies": { - "@vue/compiler-core": "3.4.36", - "@vue/shared": "3.4.36" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.36.tgz", - "integrity": "sha512-rhuHu7qztt/rNH90dXPTzhB7hLQT2OC4s4GrPVqmzVgPY4XBlfWmcWzn4bIPEWNImt0CjO7kfHAf/1UXOtx3vw==", - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.36", - "@vue/compiler-dom": "3.4.36", - "@vue/compiler-ssr": "3.4.36", - "@vue/shared": "3.4.36", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.10", - "postcss": "^8.4.40", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.36.tgz", - "integrity": "sha512-Wt1zyheF0zVvRJyhY74uxQbnkXV2Le/JPOrAxooR4rFYKC7cFr+cRqW6RU3cM/bsTy7sdZ83IDuy/gLPSfPGng==", - "dependencies": { - "@vue/compiler-dom": "3.4.36", - "@vue/shared": "3.4.36" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.36.tgz", - "integrity": "sha512-wN1aoCwSoqrt1yt8wO0gc13QaC+Vk1o6AoSt584YHNnz6TGDhh1NCMUYgAnvp4HEIkLdGsaC1bvu/P+wpoDEXw==", - "dependencies": { - "@vue/shared": "3.4.36" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.36.tgz", - "integrity": "sha512-9+TR14LAVEerZWLOm/N/sG2DVYhrH2bKgFrbH/FVt/Q8Jdw4OtdcGMRC6Tx8VAo0DA1eqAqrZaX0fbOaOxxZ4A==", - "dependencies": { - "@vue/reactivity": "3.4.36", - "@vue/shared": "3.4.36" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.36.tgz", - "integrity": "sha512-2Qe2fKkLxgZBVvHrG0QMNLL4bsx7Ae88pyXebY2WnQYABpOnGYvA+axMbcF9QwM4yxnsv+aELbC0eiNVns7mGw==", - "dependencies": { - "@vue/reactivity": "3.4.36", - "@vue/runtime-core": "3.4.36", - "@vue/shared": "3.4.36", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.36.tgz", - "integrity": "sha512-2XW90Rq8+Y7S1EIsAuubZVLm0gCU8HYb5mRAruFdwfC3XSOU5/YKePz29csFzsch8hXaY5UHh7ZMddmi1XTJEA==", - "dependencies": { - "@vue/compiler-ssr": "3.4.36", - "@vue/shared": "3.4.36" - }, - "peerDependencies": { - "vue": "3.4.36" - } - }, - "node_modules/@vue/shared": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.36.tgz", - "integrity": "sha512-fdPLStwl1sDfYuUftBaUVn2pIrVFDASYerZSrlBvVBfylObPA1gtcWJHy5Ox8jLEJ524zBibss488Q3SZtU1uA==" - }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -2494,11 +2403,6 @@ "node": ">=4" } }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -2816,17 +2720,6 @@ "node": ">=10.13.0" } }, - "node_modules/entities": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-5.0.0.tgz", - "integrity": "sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/envinfo": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", @@ -3069,11 +2962,6 @@ "node": ">=4.0" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -5183,19 +5071,6 @@ "yallist": "^2.1.2" } }, - "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -8851,7 +8726,7 @@ "version": "4.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "devOptional": true, + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -9244,26 +9119,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/vue": { - "version": "3.4.36", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.36.tgz", - "integrity": "sha512-mIFvbLgjODfx3Iy1SrxOsiPpDb8Bo3EU+87ioimOZzZTOp15IEdAels70IjBOLO3ZFlLW5AhdwY4dWbXVQKYow==", - "dependencies": { - "@vue/compiler-dom": "3.4.36", - "@vue/compiler-sfc": "3.4.36", - "@vue/runtime-dom": "3.4.36", - "@vue/server-renderer": "3.4.36", - "@vue/shared": "3.4.36" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", diff --git a/components/package.json b/components/package.json index 9633d47fc..ed2573947 100644 --- a/components/package.json +++ b/components/package.json @@ -57,7 +57,6 @@ "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", - "vue": "^3.4.36", "webpack": "^5.75.0" }, "devDependencies": { From b47b3d89178cf8f4476872502a68955968c1e9c0 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 19 Aug 2024 19:12:37 +0000 Subject: [PATCH 53/80] marker edit fix --- components/src/components/Map/services/MapService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 826535d9a..7a8e5467f 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -60,7 +60,7 @@ class MapService { map.on(L.Draw.Event.DELETED, (e) => { options.onDrawnItemsChange(drawnItems.getLayers()); }); - map.on(L.Draw.Event.EDITED, (e) => { + map.on(L.Draw.Event.EDITSTOP, (e) => { options.onDrawnItemsChange(drawnItems.getLayers()); }); From a3603904c045833dfdea367db1087814fbfbbde2 Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Wed, 4 Sep 2024 09:54:05 -0700 Subject: [PATCH 54/80] updated Map Component Settings --- .../src/components/Map/Component.form.ts | 41 ++++++++++++++--- .../Map/editForm/Component.edit.display.ts | 46 ++++++++++--------- 2 files changed, 60 insertions(+), 27 deletions(-) diff --git a/components/src/components/Map/Component.form.ts b/components/src/components/Map/Component.form.ts index 20c3c4533..fd051ab8e 100644 --- a/components/src/components/Map/Component.form.ts +++ b/components/src/components/Map/Component.form.ts @@ -1,14 +1,43 @@ import baseEditForm from 'formiojs/components/_classes/component/Component.form'; import EditData from './editForm/Component.edit.data'; -import EditDisplay from './editForm/Component.edit.display'; -import SimpleApi from '../Common/Simple.edit.api'; -import SimpleConditional from '../Common/Simple.edit.conditional'; import AdvancedEditLogic from '../Common/Advanced.edit.logic'; -import AdvancedEditLayout from '../Common/Advanced.edit.layout'; export default function (...extend) { return baseEditForm( [ - EditDisplay, + { + key: 'display', + components: [ + { + // You can ignore existing fields. + key: 'placeholder', + ignore: true, + }, + { + key: 'tableView', + ignore: true, + }, + { + key: 'hidden', + ignore: true, + }, + { + key: 'autofocus', + ignore: true, + }, + { + key: 'tabindex', + ignore: true, + }, + { + key: 'modalEdit', + ignore: true, + }, + { + key: 'disabled', + ignore: true, + }, + ], + }, EditData, { key: 'data', @@ -24,7 +53,7 @@ export default function (...extend) { }, { key: 'layout', - components: AdvancedEditLayout, + ignore: true, }, ], ...extend diff --git a/components/src/components/Map/editForm/Component.edit.display.ts b/components/src/components/Map/editForm/Component.edit.display.ts index 5c0cae03f..53fd494a3 100644 --- a/components/src/components/Map/editForm/Component.edit.display.ts +++ b/components/src/components/Map/editForm/Component.edit.display.ts @@ -1,24 +1,28 @@ import common from '../../Common/Simple.edit.display'; export default [ - ...common, - { - key: 'refreshOnChange', - ignore: true - }, - { - key: 'className', - ignore: true, - }, - { - key: 'prefix', - ignore: true - }, - { - key: 'suffix', - ignore: true - }, - { - key: 'labelPosition', - ignore: true, - }, + ...common, + { + key: 'refreshOnChange', + ignore: true, + }, + { + key: 'className', + ignore: true, + }, + { + key: 'prefix', + ignore: true, + }, + { + key: 'suffix', + ignore: true, + }, + { + key: 'labelPosition', + ignore: true, + }, + { + key: 'placeholder', + ignore: true, + }, ]; From 4998ac29fa01bf86251a208c42b3e019cfe02ebe Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 4 Sep 2024 17:11:46 +0000 Subject: [PATCH 55/80] Vue fix recant --- components/package-lock.json | 171 ++++++++++++++++-- components/package.json | 1 + .../src/components/Map/services/MapService.ts | 7 +- 3 files changed, 165 insertions(+), 14 deletions(-) diff --git a/components/package-lock.json b/components/package-lock.json index 6f996c015..3d3db03ef 100644 --- a/components/package-lock.json +++ b/components/package-lock.json @@ -19,6 +19,7 @@ "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", + "vue": "^3.4.38", "webpack": "^5.75.0" }, "devDependencies": { @@ -272,7 +273,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -1076,6 +1076,97 @@ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, + "node_modules/@vue/compiler-core": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", + "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==", + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/shared": "3.4.38", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz", + "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==", + "dependencies": { + "@vue/compiler-core": "3.4.38", + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz", + "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==", + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/compiler-core": "3.4.38", + "@vue/compiler-dom": "3.4.38", + "@vue/compiler-ssr": "3.4.38", + "@vue/shared": "3.4.38", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.40", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz", + "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==", + "dependencies": { + "@vue/compiler-dom": "3.4.38", + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz", + "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==", + "dependencies": { + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz", + "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==", + "dependencies": { + "@vue/reactivity": "3.4.38", + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz", + "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==", + "dependencies": { + "@vue/reactivity": "3.4.38", + "@vue/runtime-core": "3.4.38", + "@vue/shared": "3.4.38", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz", + "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==", + "dependencies": { + "@vue/compiler-ssr": "3.4.38", + "@vue/shared": "3.4.38" + }, + "peerDependencies": { + "vue": "3.4.38" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz", + "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==" + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -2036,6 +2127,11 @@ "node": ">=4" } }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -2261,6 +2357,17 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/envinfo": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", @@ -2423,6 +2530,11 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -3218,17 +3330,6 @@ "@babel/runtime": "^7.17.2" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -3241,6 +3342,17 @@ "node": ">=0.10.0" } }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/idb": { "version": "6.1.5", "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", @@ -4187,6 +4299,19 @@ "yallist": "^2.1.2" } }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -6557,7 +6682,7 @@ "version": "4.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6821,6 +6946,26 @@ } } }, + "node_modules/vue": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz", + "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==", + "dependencies": { + "@vue/compiler-dom": "3.4.38", + "@vue/compiler-sfc": "3.4.38", + "@vue/runtime-dom": "3.4.38", + "@vue/server-renderer": "3.4.38", + "@vue/shared": "3.4.38" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", diff --git a/components/package.json b/components/package.json index 8961cee2d..968469aae 100644 --- a/components/package.json +++ b/components/package.json @@ -57,6 +57,7 @@ "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", + "vue": "^3.4.38", "webpack": "^5.75.0" }, "devDependencies": { diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 0f20e87d0..e4e296d60 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -13,6 +13,9 @@ const COMPONENT_EDIT_CLASS = 'component-edit-tabs'; const CUSTOM_MARKER_PATH = 'https://unpkg.com/leaflet@1.9.4/dist/images/'; L.Icon.Default.imagePath = CUSTOM_MARKER_PATH; +L.Icon.Default.mergeOptions({ + iconAnchor: [17, 46], +}); interface MapServiceOptions { mapContainer: HTMLElement; @@ -32,12 +35,13 @@ class MapService { drawnItems; constructor(options) { + console.log(L.Icon.Default); this.options = options; if (options.mapContainer) { const { map, drawnItems } = this.initializeMap(options); - this.map = map; + // this.map = map; this.drawnItems = drawnItems; map.invalidateSize(); @@ -91,6 +95,7 @@ class MapService { ); L.tileLayer(DEFAULT_MAP_LAYER_URL, { attribution: DEFAULT_LAYER_ATTRIBUTION, + //}).addTo(map); }).addTo(map); // Initialize Draw Layer From 92e7431e559d586b46ae80e18cc545c78ff94feb Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 9 Sep 2024 17:54:43 +0000 Subject: [PATCH 56/80] zoom bug fix,disable zoom animation --- components/package-lock.json | 149 +----------------- components/package.json | 1 - components/src/components/Map/Component.ts | 1 + .../src/components/Map/services/MapService.ts | 13 +- 4 files changed, 8 insertions(+), 156 deletions(-) diff --git a/components/package-lock.json b/components/package-lock.json index 3d3db03ef..0fc29cacb 100644 --- a/components/package-lock.json +++ b/components/package-lock.json @@ -19,7 +19,6 @@ "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", - "vue": "^3.4.38", "webpack": "^5.75.0" }, "devDependencies": { @@ -273,6 +272,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -1076,97 +1076,6 @@ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, - "node_modules/@vue/compiler-core": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", - "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==", - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.38", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz", - "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==", - "dependencies": { - "@vue/compiler-core": "3.4.38", - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz", - "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==", - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.38", - "@vue/compiler-dom": "3.4.38", - "@vue/compiler-ssr": "3.4.38", - "@vue/shared": "3.4.38", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.10", - "postcss": "^8.4.40", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz", - "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==", - "dependencies": { - "@vue/compiler-dom": "3.4.38", - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz", - "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==", - "dependencies": { - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz", - "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==", - "dependencies": { - "@vue/reactivity": "3.4.38", - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz", - "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==", - "dependencies": { - "@vue/reactivity": "3.4.38", - "@vue/runtime-core": "3.4.38", - "@vue/shared": "3.4.38", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz", - "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==", - "dependencies": { - "@vue/compiler-ssr": "3.4.38", - "@vue/shared": "3.4.38" - }, - "peerDependencies": { - "vue": "3.4.38" - } - }, - "node_modules/@vue/shared": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz", - "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==" - }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -2127,11 +2036,6 @@ "node": ">=4" } }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -2357,17 +2261,6 @@ "node": ">=10.13.0" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/envinfo": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", @@ -2530,11 +2423,6 @@ "node": ">=4.0" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -4299,19 +4187,6 @@ "yallist": "^2.1.2" } }, - "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -6682,7 +6557,7 @@ "version": "4.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "devOptional": true, + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6946,26 +6821,6 @@ } } }, - "node_modules/vue": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz", - "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==", - "dependencies": { - "@vue/compiler-dom": "3.4.38", - "@vue/compiler-sfc": "3.4.38", - "@vue/runtime-dom": "3.4.38", - "@vue/server-renderer": "3.4.38", - "@vue/shared": "3.4.38" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", diff --git a/components/package.json b/components/package.json index 968469aae..8961cee2d 100644 --- a/components/package.json +++ b/components/package.json @@ -57,7 +57,6 @@ "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", - "vue": "^3.4.38", "webpack": "^5.75.0" }, "devDependencies": { diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 2c5d35127..e66dc1891 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -96,6 +96,7 @@ export default class Component extends (FieldComponent as any) { onDrawnItemsChange: this.saveDrawnItems.bind(this), viewMode, }); + this.map = this.mapService.getMap(); // Load existing data if available if (this.dataValue && this.dataValue.features) { diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index e4e296d60..1c607eb8b 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -13,9 +13,6 @@ const COMPONENT_EDIT_CLASS = 'component-edit-tabs'; const CUSTOM_MARKER_PATH = 'https://unpkg.com/leaflet@1.9.4/dist/images/'; L.Icon.Default.imagePath = CUSTOM_MARKER_PATH; -L.Icon.Default.mergeOptions({ - iconAnchor: [17, 46], -}); interface MapServiceOptions { mapContainer: HTMLElement; @@ -40,7 +37,7 @@ class MapService { if (options.mapContainer) { const { map, drawnItems } = this.initializeMap(options); - + this.map = map; // this.map = map; this.drawnItems = drawnItems; @@ -67,7 +64,6 @@ class MapService { map.on(L.Draw.Event.EDITSTOP, (e) => { options.onDrawnItemsChange(drawnItems.getLayers()); }); - map.on('resize', () => { map.invalidateSize(); }); @@ -89,13 +85,12 @@ class MapService { drawOptions.rectangle.showArea = false; } - const map = L.map(mapContainer).setView( + const map = L.map(mapContainer, { zoomAnimation: false }).setView( center, defaultZoom || DEFAULT_MAP_ZOOM ); L.tileLayer(DEFAULT_MAP_LAYER_URL, { attribution: DEFAULT_LAYER_ATTRIBUTION, - //}).addTo(map); }).addTo(map); // Initialize Draw Layer @@ -132,7 +127,9 @@ class MapService { } return { map, drawnItems }; } - + getMap() { + return this.map; + } bindPopupToLayer(layer) { if (layer instanceof L.Marker) { layer From f4cfe7ed964fd6c1b6ea471131b93f018d82395c Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 9 Sep 2024 18:10:48 +0000 Subject: [PATCH 57/80] cleanup --- components/src/components/Map/Component.ts | 1 - components/src/components/Map/services/MapService.ts | 7 ------- 2 files changed, 8 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index e66dc1891..2c5d35127 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -96,7 +96,6 @@ export default class Component extends (FieldComponent as any) { onDrawnItemsChange: this.saveDrawnItems.bind(this), viewMode, }); - this.map = this.mapService.getMap(); // Load existing data if available if (this.dataValue && this.dataValue.features) { diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 1c607eb8b..04fce37a5 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -32,14 +32,10 @@ class MapService { drawnItems; constructor(options) { - console.log(L.Icon.Default); this.options = options; if (options.mapContainer) { const { map, drawnItems } = this.initializeMap(options); - this.map = map; - // this.map = map; - this.drawnItems = drawnItems; map.invalidateSize(); // Triggering a resize event after map initialization @@ -127,9 +123,6 @@ class MapService { } return { map, drawnItems }; } - getMap() { - return this.map; - } bindPopupToLayer(layer) { if (layer instanceof L.Marker) { layer From 69ec9a7e6cd4d68930380619f31713d21b4f1bbf Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Wed, 11 Sep 2024 13:35:04 -0700 Subject: [PATCH 58/80] restructure the display tab --- .../src/components/Map/Component.form.ts | 47 ++++------- .../Map/editForm/Component.edit.display.ts | 78 ++++++++++++------- 2 files changed, 64 insertions(+), 61 deletions(-) diff --git a/components/src/components/Map/Component.form.ts b/components/src/components/Map/Component.form.ts index fd051ab8e..a4e5f4d63 100644 --- a/components/src/components/Map/Component.form.ts +++ b/components/src/components/Map/Component.form.ts @@ -1,52 +1,33 @@ import baseEditForm from 'formiojs/components/_classes/component/Component.form'; import EditData from './editForm/Component.edit.data'; +import EditDisplay from './editForm/Component.edit.display'; import AdvancedEditLogic from '../Common/Advanced.edit.logic'; export default function (...extend) { return baseEditForm( [ + EditDisplay, + EditData, + { + key: 'data', + ignore: true, + }, + { + key: 'validation', + ignore: true, + }, { - key: 'display', + key: 'api', components: [ { - // You can ignore existing fields. - key: 'placeholder', + key: 'tags', ignore: true, }, { - key: 'tableView', - ignore: true, - }, - { - key: 'hidden', - ignore: true, - }, - { - key: 'autofocus', - ignore: true, - }, - { - key: 'tabindex', - ignore: true, - }, - { - key: 'modalEdit', - ignore: true, - }, - { - key: 'disabled', + key: 'properties', ignore: true, }, ], }, - EditData, - { - key: 'data', - ignore: true, - }, - { - key: 'validation', - ignore: true, - }, { key: 'logic', components: AdvancedEditLogic, diff --git a/components/src/components/Map/editForm/Component.edit.display.ts b/components/src/components/Map/editForm/Component.edit.display.ts index 53fd494a3..bdfebe452 100644 --- a/components/src/components/Map/editForm/Component.edit.display.ts +++ b/components/src/components/Map/editForm/Component.edit.display.ts @@ -1,28 +1,50 @@ -import common from '../../Common/Simple.edit.display'; -export default [ - ...common, - { - key: 'refreshOnChange', - ignore: true, - }, - { - key: 'className', - ignore: true, - }, - { - key: 'prefix', - ignore: true, - }, - { - key: 'suffix', - ignore: true, - }, - { - key: 'labelPosition', - ignore: true, - }, - { - key: 'placeholder', - ignore: true, - }, -]; +export default { + key: 'display', + components: [ + { + key: 'description', + label: 'Text Description (optional)', + placeholder: 'This will appear below the map', + tooltip: 'Enter a description for the map component here', // Example change + }, + { + key: 'customClass', + tooltip: + 'Assign one or more CSS class names to customize the appearance of this component', + }, + { + // You can ignore existing fields. + key: 'placeholder', + ignore: true, + }, + { + key: 'tableView', + ignore: true, + }, + { + key: 'hidden', + ignore: true, + }, + { + key: 'autofocus', + ignore: true, + }, + { + key: 'tabindex', + ignore: true, + }, + { + key: 'modalEdit', + ignore: true, + }, + { + key: 'disabled', + ignore: true, + }, + { + key: 'hideLabel', + label: 'Hide Label', + weight: 10, + }, + ], +}; From db9a6c2127c97bb2200702a7a4c68347d52002cf Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Wed, 11 Sep 2024 16:06:19 -0700 Subject: [PATCH 59/80] updated Display tab Settings in Map component --- .../src/components/Map/Component.form.ts | 4 + .../Map/editForm/Component.edit.display.ts | 109 ++++++++++++------ 2 files changed, 80 insertions(+), 33 deletions(-) diff --git a/components/src/components/Map/Component.form.ts b/components/src/components/Map/Component.form.ts index a4e5f4d63..6376c87af 100644 --- a/components/src/components/Map/Component.form.ts +++ b/components/src/components/Map/Component.form.ts @@ -7,6 +7,10 @@ export default function (...extend) { [ EditDisplay, EditData, + { + key: 'display', + ignore: true, + }, { key: 'data', ignore: true, diff --git a/components/src/components/Map/editForm/Component.edit.display.ts b/components/src/components/Map/editForm/Component.edit.display.ts index bdfebe452..5dd2fc6e6 100644 --- a/components/src/components/Map/editForm/Component.edit.display.ts +++ b/components/src/components/Map/editForm/Component.edit.display.ts @@ -1,50 +1,93 @@ export default { - key: 'display', + key: 'customDisplay', + label: 'Display', + weight: 10, components: [ { - key: 'description', - label: 'Text Description (optional)', - placeholder: 'This will appear below the map', - tooltip: 'Enter a description for the map component here', // Example change + key: 'label', + label: 'Label', + type: 'textfield', + input: true, + tooltip: 'The label for this field.', }, { - key: 'customClass', + key: 'hideLabel', + label: 'Hide Label', + type: 'checkbox', tooltip: - 'Assign one or more CSS class names to customize the appearance of this component', + 'Check to hide the label for this component. This allows you to show the label in the form Builder, but not when it is rendered', + input: true, }, { - // You can ignore existing fields. - key: 'placeholder', - ignore: true, + key: 'labelPosition', + label: 'Label Position', + type: 'select', + input: true, + data: { + values: [ + { value: 'top', label: 'Top' }, + { value: 'left-left', label: 'Left (Left-aligned)' }, + { value: 'left-right', label: 'Left (Right-aligned)' }, + { value: 'right-left', label: 'Right (Left-aligned)' }, + { value: 'right-right', label: 'Right (Right-aligned)' }, + { value: 'bottom', label: 'Bottom' }, + ], + }, + tooltip: 'Position of the label relative to the field.', }, { - key: 'tableView', - ignore: true, - }, - { - key: 'hidden', - ignore: true, - }, - { - key: 'autofocus', - ignore: true, - }, - { - key: 'tabindex', - ignore: true, - }, - { - key: 'modalEdit', - ignore: true, + key: 'description', + label: 'Text Description (optional)', + type: 'textarea', + input: true, + placeholder: 'This will appear below the map', + tooltip: 'Enter a description for the map component here', }, { - key: 'disabled', - ignore: true, + key: 'tooltip', + label: 'Tooltip', + type: 'textarea', + input: true, + tooltip: 'Add a tooltip to provide additional information.', + placeholder: 'Add a tooltip beside the label', }, { - key: 'hideLabel', - label: 'Hide Label', - weight: 10, + key: 'customClass', + label: 'Custom CSS Class', + type: 'textfield', + input: true, + tooltip: + 'Assign one or more CSS class names to customize the appearance of this component.', }, + + // { + // // You can ignore existing fields. + // key: 'placeholder', + // ignore: true, + // }, + // { + // key: 'tableView', + // ignore: true, + // }, + // { + // key: 'hidden', + // ignore: true, + // }, + // { + // key: 'autofocus', + // ignore: true, + // }, + // { + // key: 'tabindex', + // ignore: true, + // }, + // { + // key: 'modalEdit', + // ignore: true, + // }, + // { + // key: 'disabled', + // ignore: true, + // }, ], }; From aecf19933f1f08570a0d8e6c5c93d0a9df849fca Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 16 Sep 2024 15:55:27 +0000 Subject: [PATCH 60/80] Added zoom animations only for read-only maps --- .../src/components/Map/services/MapService.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 04fce37a5..0f522eb95 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -10,6 +10,7 @@ const DEFAULT_LAYER_ATTRIBUTION = const DEFAULT_MAP_ZOOM = 5; const DECIMALS_LATLNG = 5; // the number of decimals of latitude and longitude to be displayed in the marker popup const COMPONENT_EDIT_CLASS = 'component-edit-tabs'; +const READ_ONLY_CLASS = 'formio-read-only'; const CUSTOM_MARKER_PATH = 'https://unpkg.com/leaflet@1.9.4/dist/images/'; L.Icon.Default.imagePath = CUSTOM_MARKER_PATH; @@ -36,6 +37,9 @@ class MapService { if (options.mapContainer) { const { map, drawnItems } = this.initializeMap(options); + this.map = map; + // this.map = map; + this.drawnItems = drawnItems; map.invalidateSize(); // Triggering a resize event after map initialization @@ -80,11 +84,12 @@ class MapService { if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; } + //Check to see if there is the formio read only class in the current page, and set notEditable to true if the map is inside a read-only page - const map = L.map(mapContainer, { zoomAnimation: false }).setView( - center, - defaultZoom || DEFAULT_MAP_ZOOM - ); + //if the user chooses it to be read-only, and the + const map = L.map(mapContainer, { + zoomAnimation: viewMode, + }).setView(center, defaultZoom || DEFAULT_MAP_ZOOM); L.tileLayer(DEFAULT_MAP_LAYER_URL, { attribution: DEFAULT_LAYER_ATTRIBUTION, }).addTo(map); From 5a41d021c9385cd2e2aab41f5e151e00928ceea1 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 23 Sep 2024 18:37:42 +0000 Subject: [PATCH 61/80] Added My Location button --- components/src/components/Map/Component.ts | 11 ++++- .../Map/editForm/Component.edit.data.ts | 8 +++ .../src/components/Map/services/MapService.ts | 49 +++++++++++++++++++ 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 2c5d35127..7275147e0 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -72,8 +72,14 @@ export default class Component extends (FieldComponent as any) { drawOptions[this.component.markerType] = true; // set marker type from user choice } - const { numPoints, defaultZoom, readOnlyMap, center, defaultValue } = - this.component; + const { + numPoints, + defaultZoom, + readOnlyMap, + center, + defaultValue, + myLocation, + } = this.component; const { readOnly: viewMode } = this.options; @@ -95,6 +101,7 @@ export default class Component extends (FieldComponent as any) { defaultValue, onDrawnItemsChange: this.saveDrawnItems.bind(this), viewMode, + myLocation, }); // Load existing data if available diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index 74f60d61f..29d343100 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -76,5 +76,13 @@ export default { type: 'simplecheckbox', input: true, }, + { + label: 'Submitter "My Location" button', + description: + 'This allows for the user to center the map on their location.', + key: 'myLocation', + type: 'simplecheckbox', + input: true, + }, ], }; diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 0f522eb95..9e3ac9ef0 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -25,6 +25,7 @@ interface MapServiceOptions { readOnlyMap?: boolean; onDrawnItemsChange: (items: any) => void; // Support both single and multiple items viewMode?: boolean; + myLocation?: boolean; } class MapService { @@ -38,6 +39,7 @@ class MapService { if (options.mapContainer) { const { map, drawnItems } = this.initializeMap(options); this.map = map; + // this.map = map; this.drawnItems = drawnItems; @@ -79,7 +81,9 @@ class MapService { defaultZoom, readOnlyMap, viewMode, + myLocation, } = options; + console.log(options); if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; @@ -99,6 +103,51 @@ class MapService { map.addLayer(drawnItems); + if (myLocation) { + const myLocationButton = L.Control.extend({ + options: { + position: 'topright', + }, + onAdd: function (map) { + var container = L.DomUtil.create( + 'div', + 'leaflet-bar leaflet-control' + ); + var button = L.DomUtil.create( + 'a', + 'leaflet-control-button', + container + ); + button.innerHTML = ''; + L.DomEvent.disableClickPropagation(button); + L.DomEvent.on(button, 'click', function () { + if ('geolocation' in navigator) { + navigator.geolocation.getCurrentPosition((position) => { + map.setView( + [position.coords.latitude, position.coords.longitude], + 14 + ); + L.popup() + .setLatLng([ + position.coords.latitude, + position.coords.longitude, + ]) + .setContent( + `(${position.coords.latitude}, ${position.coords.longitude})` + ) + .openOn(map); + }); + } + }); + container.title = 'Click to center the map on your location'; + return container; + }, + onRemove: function (map) {}, + }); + var myLocationControl = new myLocationButton(); + myLocationControl.addTo(map); + } + // Add Drawing Controllers if (!readOnlyMap) { if (!viewMode) { From 73395f559fb1e43012bc1f1260676db1a95ef216 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 23 Sep 2024 19:21:03 +0000 Subject: [PATCH 62/80] linting fixes --- components/src/components/Map/Component.ts | 4 +-- .../src/components/Map/services/MapService.ts | 26 +++++++++---------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 7275147e0..bc92c7f8f 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -55,7 +55,7 @@ export default class Component extends (FieldComponent as any) { loadMap() { const mapContainer = document.getElementById(`map-${this.componentID}`); const form = document.getElementsByClassName('formio'); - let drawOptions = { + const drawOptions = { marker: false, circlemarker: false, polygon: false, @@ -154,8 +154,6 @@ export default class Component extends (FieldComponent as any) { // Additional logic to render the saved data on the map if necessary if (this.mapService && value && value.features) { try { - //const parsedValue = JSON.parse(value); - this.mapService.loadDrawnItems(value.features); } catch (error) { console.error('Failed to parse value:', error); diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 9e3ac9ef0..360eee268 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -48,7 +48,7 @@ class MapService { setTimeout(() => window.dispatchEvent(new Event('resize')), 0); // Event listener for drawn objects map.on('draw:created', (e) => { - let layer = e.layer; + const layer = e.layer; if (drawnItems.getLayers().length === options.numPoints) { L.popup() .setLatLng(layer.getLatLng()) @@ -73,7 +73,7 @@ class MapService { } initializeMap(options: MapServiceOptions) { - let { + const { mapContainer, center, drawOptions, @@ -83,14 +83,13 @@ class MapService { viewMode, myLocation, } = options; - console.log(options); if (drawOptions.rectangle) { drawOptions.rectangle.showArea = false; } - //Check to see if there is the formio read only class in the current page, and set notEditable to true if the map is inside a read-only page + // Check to see if there is the formio read only class in the current page, and set notEditable to true if the map is inside a read-only page - //if the user chooses it to be read-only, and the + // if the user chooses it to be read-only, and the const map = L.map(mapContainer, { zoomAnimation: viewMode, }).setView(center, defaultZoom || DEFAULT_MAP_ZOOM); @@ -99,28 +98,28 @@ class MapService { }).addTo(map); // Initialize Draw Layer - let drawnItems = new L.FeatureGroup(); + const drawnItems = new L.FeatureGroup(); map.addLayer(drawnItems); if (myLocation) { const myLocationButton = L.Control.extend({ options: { - position: 'topright', + position: 'bottomright', }, - onAdd: function (map) { - var container = L.DomUtil.create( + onAdd(map) { + const container = L.DomUtil.create( 'div', 'leaflet-bar leaflet-control' ); - var button = L.DomUtil.create( + const button = L.DomUtil.create( 'a', 'leaflet-control-button', container ); button.innerHTML = ''; L.DomEvent.disableClickPropagation(button); - L.DomEvent.on(button, 'click', function () { + L.DomEvent.on(button, 'click', () => { if ('geolocation' in navigator) { navigator.geolocation.getCurrentPosition((position) => { map.setView( @@ -142,16 +141,15 @@ class MapService { container.title = 'Click to center the map on your location'; return container; }, - onRemove: function (map) {}, }); - var myLocationControl = new myLocationButton(); + const myLocationControl = new myLocationButton(); myLocationControl.addTo(map); } // Add Drawing Controllers if (!readOnlyMap) { if (!viewMode) { - let drawControl = new L.Control.Draw({ + const drawControl = new L.Control.Draw({ draw: drawOptions, edit: { featureGroup: drawnItems, From 10ba795d96b466f4d896b03d7bc95a1e62a7f09a Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Tue, 24 Sep 2024 08:34:21 -0700 Subject: [PATCH 63/80] updated for polygon change --- .../Map/editForm/Component.edit.data.ts | 5 ++++ .../Map/editForm/Component.edit.display.ts | 30 ------------------- 2 files changed, 5 insertions(+), 30 deletions(-) diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index 29d343100..54af345e9 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -25,6 +25,11 @@ export default { 'Add circular area of interest through a point and custom radius', value: 'circle', }, + { + label: + 'Add polygon', + value: 'polygon', + }, ], defaultValue: 'marker', key: 'markerType', diff --git a/components/src/components/Map/editForm/Component.edit.display.ts b/components/src/components/Map/editForm/Component.edit.display.ts index 5dd2fc6e6..6072f1634 100644 --- a/components/src/components/Map/editForm/Component.edit.display.ts +++ b/components/src/components/Map/editForm/Component.edit.display.ts @@ -59,35 +59,5 @@ export default { tooltip: 'Assign one or more CSS class names to customize the appearance of this component.', }, - - // { - // // You can ignore existing fields. - // key: 'placeholder', - // ignore: true, - // }, - // { - // key: 'tableView', - // ignore: true, - // }, - // { - // key: 'hidden', - // ignore: true, - // }, - // { - // key: 'autofocus', - // ignore: true, - // }, - // { - // key: 'tabindex', - // ignore: true, - // }, - // { - // key: 'modalEdit', - // ignore: true, - // }, - // { - // key: 'disabled', - // ignore: true, - // }, ], }; From 518b568c1cbabf4ada6976fb5b630419b0c5376f Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 24 Sep 2024 22:20:59 +0000 Subject: [PATCH 64/80] added reorganization to settings page --- components/src/components/Map/Component.ts | 4 +- .../Map/editForm/Component.edit.data.ts | 73 +++++++++++-------- 2 files changed, 46 insertions(+), 31 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index bc92c7f8f..e49266f78 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -75,7 +75,7 @@ export default class Component extends (FieldComponent as any) { const { numPoints, defaultZoom, - readOnlyMap, + allowSubmissions, center, defaultValue, myLocation, @@ -97,7 +97,7 @@ export default class Component extends (FieldComponent as any) { form, numPoints, defaultZoom, - readOnlyMap, + readOnlyMap: !allowSubmissions, // if allow submissions, read only is false defaultValue, onDrawnItemsChange: this.saveDrawnItems.bind(this), viewMode, diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index 29d343100..e72e1f1e5 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -3,6 +3,14 @@ export default { label: 'Data', weight: 20, components: [ + { + html: '

Default Values

', + key: 'simplecontent1', + type: 'simplecontent', + input: false, + tableView: false, + label: 'Text/Images', + }, { type: 'map', label: 'Default Value', @@ -13,32 +21,6 @@ export default { 'This will be the value for this field, before user interaction.', input: true, }, - { - label: 'Marker Type ', - values: [ - { - label: 'Add a point marker (drop a pin)', - value: 'marker', - }, - { - label: - 'Add circular area of interest through a point and custom radius', - value: 'circle', - }, - ], - defaultValue: 'marker', - key: 'markerType', - type: 'simpleradios', - input: true, - }, - { - label: 'How many Markers per Submission?', - key: 'numPoints', - type: 'simplenumber', - defaultValue: 1, - input: true, - }, - { label: 'Default Zoom Level', description: @@ -64,18 +46,51 @@ export default { tableView: false, markerType: 'marker', defaultZoom: 5, - readOnlyMap: false, + allowSubmissions: true, description: 'Please select the desired default center using a single marker', }, { - label: 'Read Only Map', + html: '

Submitter Options

', + key: 'simplecontent1', + type: 'simplecontent', + input: false, + tableView: false, + label: 'Text/Images', + }, + { + label: 'Allow submitters to add input on the map', description: 'This allows for the user to view and scroll the map, but not add any input', - key: 'readOnlyMap', + key: 'allowSubmissions', type: 'simplecheckbox', input: true, }, + { + label: 'Marker Type ', + values: [ + { + label: 'Add a point marker (drop a pin)', + value: 'marker', + }, + { + label: + 'Add circular area of interest through a point and custom radius', + value: 'circle', + }, + ], + defaultValue: 'marker', + key: 'markerType', + type: 'simpleradios', + input: true, + }, + { + label: 'How many Markers per Submission?', + key: 'numPoints', + type: 'simplenumber', + defaultValue: 1, + input: true, + }, { label: 'Submitter "My Location" button', description: From 03d20e4b0358d9ae0ba6eed620259a34f58b1962 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Thu, 26 Sep 2024 20:35:47 +0000 Subject: [PATCH 65/80] Added multiple marker type options, default to add input map --- components/src/components/Map/Component.ts | 10 ++++++++-- .../src/components/Map/editForm/Component.edit.data.ts | 9 +++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index e49266f78..4644c3f94 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -55,6 +55,7 @@ export default class Component extends (FieldComponent as any) { loadMap() { const mapContainer = document.getElementById(`map-${this.componentID}`); const form = document.getElementsByClassName('formio'); + const drawOptions = { marker: false, circlemarker: false, @@ -63,13 +64,18 @@ export default class Component extends (FieldComponent as any) { circle: false, rectangle: null, }; + // set marker type from user choice + if (this.component.markerType) { + for (const [key, value] of Object.entries(this.component.markerType)) { + drawOptions[key] = value; + } + } // Set drawing options based on markerType - if (this.component.markerType === 'rectangle') { + if (this.component?.markerType?.rectangle) { drawOptions.rectangle = { showArea: false }; // fixes a bug in Leaflet.Draw } else { drawOptions.rectangle = false; - drawOptions[this.component.markerType] = true; // set marker type from user choice } const { diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index e72e1f1e5..5ef215b42 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -44,7 +44,7 @@ export default { label: 'Default Center', numPoints: 1, tableView: false, - markerType: 'marker', + markerType: { marker: true }, defaultZoom: 5, allowSubmissions: true, description: @@ -81,7 +81,7 @@ export default { ], defaultValue: 'marker', key: 'markerType', - type: 'simpleradios', + type: 'simplecheckboxes', input: true, }, { @@ -92,12 +92,13 @@ export default { input: true, }, { - label: 'Submitter "My Location" button', + label: 'Enable Submitter "My Location" button', description: 'This allows for the user to center the map on their location.', key: 'myLocation', - type: 'simplecheckbox', + type: 'simplecheckboxadvanced', input: true, + defaultValue: true, }, ], }; From 34d08675672815e71edbeb3dc96a8e29ad49ea22 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Thu, 26 Sep 2024 21:13:28 +0000 Subject: [PATCH 66/80] Added default interactivity --- components/src/components/Map/editForm/Component.edit.data.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index 171ecf627..5a0d9e456 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -72,6 +72,7 @@ export default { 'This allows for the user to view and scroll the map, but not add any input', key: 'allowSubmissions', type: 'simplecheckbox', + defaultValue: true, input: true, }, { From 47d32a5641cdb62143e4faea676134e44f5afeb9 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Fri, 11 Oct 2024 16:34:00 +0000 Subject: [PATCH 67/80] Geocoder working for BC --- app/frontend/package-lock.json | 16 +++++++++++ app/frontend/package.json | 1 + components/package-lock.json | 23 +++++++++++++++ components/package.json | 2 ++ components/src/components/Map/Component.ts | 18 ++++++++---- .../Map/editForm/Component.edit.data.ts | 7 ----- .../Map/services/BCGeocoderProvider.ts | 28 +++++++++++++++++++ .../src/components/Map/services/MapService.ts | 22 +++++++++++++++ 8 files changed, 104 insertions(+), 13 deletions(-) create mode 100644 components/src/components/Map/services/BCGeocoderProvider.ts diff --git a/app/frontend/package-lock.json b/app/frontend/package-lock.json index e3d4efeb1..250dd02a3 100644 --- a/app/frontend/package-lock.json +++ b/app/frontend/package-lock.json @@ -23,6 +23,7 @@ "keycloak-js": "^21.1.1", "leaflet": "^1.9.4", "leaflet-draw": "^1.0.4", + "leaflet-geosearch": "^4.0.0", "lodash": "^4.17.21", "mitt": "^3.0.0", "moment": "^2.29.4", @@ -592,6 +593,12 @@ "vue": ">= 3.0.0 < 4" } }, + "node_modules/@googlemaps/js-api-loader": { + "version": "1.16.8", + "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.8.tgz", + "integrity": "sha512-CROqqwfKotdO6EBjZO/gQGVTbeDps5V7Mt9+8+5Q+jTg5CRMi3Ii/L9PmV3USROrt2uWxtGzJHORmByxyo9pSQ==", + "optional": true + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", @@ -3705,6 +3712,15 @@ "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" }, + "node_modules/leaflet-geosearch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/leaflet-geosearch/-/leaflet-geosearch-4.0.0.tgz", + "integrity": "sha512-a92VNY9gxyv3oyEDqIWoCNoBllajWRYejztzOSNmpLRtzpA6JtGgy/wwl9tsB8+6Eek1fe+L6+W0MDEOaidbXA==", + "optionalDependencies": { + "@googlemaps/js-api-loader": "^1.16.6", + "leaflet": "^1.6.0" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", diff --git a/app/frontend/package.json b/app/frontend/package.json index 3759ab75c..fc3590af6 100644 --- a/app/frontend/package.json +++ b/app/frontend/package.json @@ -44,6 +44,7 @@ "keycloak-js": "^21.1.1", "leaflet": "^1.9.4", "leaflet-draw": "^1.0.4", + "leaflet-geosearch": "^4.0.0", "lodash": "^4.17.21", "mitt": "^3.0.0", "moment": "^2.29.4", diff --git a/components/package-lock.json b/components/package-lock.json index 0fc29cacb..15e0f0ea4 100644 --- a/components/package-lock.json +++ b/components/package-lock.json @@ -16,6 +16,7 @@ "formiojs": "^4.14.6", "leaflet": "^1.9.4", "leaflet-draw": "^1.0.4", + "leaflet-geosearch": "^4.0.0", "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", @@ -24,6 +25,7 @@ "devDependencies": { "@types/chai": "^4.3.1", "@types/ejs": "^3.1.1", + "@types/google.maps": "^3.58.1", "@types/mocha": "^9.1.1", "@types/node": "^16.11.8", "@types/sinon": "^10.0.12", @@ -741,6 +743,12 @@ "resolved": "https://registry.npmjs.org/@formio/vanilla-text-mask/-/vanilla-text-mask-5.1.1.tgz", "integrity": "sha512-7MhrbMypySPi7RLchg0ys7HnS3Wqddbq/btAijKB1nA94TE7AOOLhpZJWcNm3kOlX0Y3nHfoavj/HP7vsvF34Q==" }, + "node_modules/@googlemaps/js-api-loader": { + "version": "1.16.8", + "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.8.tgz", + "integrity": "sha512-CROqqwfKotdO6EBjZO/gQGVTbeDps5V7Mt9+8+5Q+jTg5CRMi3Ii/L9PmV3USROrt2uWxtGzJHORmByxyo9pSQ==", + "optional": true + }, "node_modules/@gulpjs/messages": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@gulpjs/messages/-/messages-1.1.0.tgz", @@ -1013,6 +1021,12 @@ "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" }, + "node_modules/@types/google.maps": { + "version": "3.58.1", + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.58.1.tgz", + "integrity": "sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", @@ -4018,6 +4032,15 @@ "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.4.tgz", "integrity": "sha512-rsQ6saQO5ST5Aj6XRFylr5zvarWgzWnrg46zQ1MEOEIHsppdC/8hnN8qMoFvACsPvTioAuysya/TVtog15tyAQ==" }, + "node_modules/leaflet-geosearch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/leaflet-geosearch/-/leaflet-geosearch-4.0.0.tgz", + "integrity": "sha512-a92VNY9gxyv3oyEDqIWoCNoBllajWRYejztzOSNmpLRtzpA6JtGgy/wwl9tsB8+6Eek1fe+L6+W0MDEOaidbXA==", + "optionalDependencies": { + "@googlemaps/js-api-loader": "^1.16.6", + "leaflet": "^1.6.0" + } + }, "node_modules/liftoff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.0.tgz", diff --git a/components/package.json b/components/package.json index 8961cee2d..13ce65d7d 100644 --- a/components/package.json +++ b/components/package.json @@ -54,6 +54,7 @@ "formiojs": "^4.14.6", "leaflet": "^1.9.4", "leaflet-draw": "^1.0.4", + "leaflet-geosearch": "^4.0.0", "lodash": "^4.17.21", "native-promise-only": "^0.8.1", "path-browserify": "^1.0.1", @@ -62,6 +63,7 @@ "devDependencies": { "@types/chai": "^4.3.1", "@types/ejs": "^3.1.1", + "@types/google.maps": "^3.58.1", "@types/mocha": "^9.1.1", "@types/node": "^16.11.8", "@types/sinon": "^10.0.12", diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 4644c3f94..1a031b8b6 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -42,7 +42,7 @@ export default class Component extends (FieldComponent as any) { render() { return super.render( - `
` + `
` ); } @@ -57,13 +57,19 @@ export default class Component extends (FieldComponent as any) { const form = document.getElementsByClassName('formio'); const drawOptions = { - marker: false, - circlemarker: false, - polygon: false, - polyline: false, - circle: false, rectangle: null, + circle: false, + polyline: false, + polygon: false, + circlemarker: false, + marker: false, }; + // marker: false, + // circlemarker: false, + // polygon: false, + // polyline: false, + // circle: false, + // rectangle: null, // set marker type from user choice if (this.component.markerType) { for (const [key, value] of Object.entries(this.component.markerType)) { diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index 5a0d9e456..d047abf33 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -21,13 +21,6 @@ export default { 'This will be the value for this field, before user interaction.', input: true, }, - { - label: 'How many Markers per Submission?', - key: 'numPoints', - type: 'simplenumber', - defaultValue: 1, - input: true, - }, { label: 'Default Zoom Level', diff --git a/components/src/components/Map/services/BCGeocoderProvider.ts b/components/src/components/Map/services/BCGeocoderProvider.ts new file mode 100644 index 000000000..d8cae43b9 --- /dev/null +++ b/components/src/components/Map/services/BCGeocoderProvider.ts @@ -0,0 +1,28 @@ +import { OpenStreetMapProvider } from 'leaflet-geosearch'; +import { EndpointArgument } from 'leaflet-geosearch/dist/providers/provider'; + +export class BCGeocoderProvider extends OpenStreetMapProvider { + endpoint({ query, type }: EndpointArgument): string { + console.log(query); + return this.getUrl(import.meta.env.VITE_CHEFS_GEO_ADDRESS_APIURL, { + addressString: query as string, + }); + } + parse({ data }) { + return data.features + .filter(function (feature) { + if (!feature.geometry.coordinates) return false; + if (feature.properties.fullAddress == 'BC') return false; + return true; + }) + .map(function (feature) { + return { + x: feature.geometry.coordinates[0], + y: feature.geometry.coordinates[1], + label: feature.properties.fullAddress, + matchPrecision: feature.properties.matchPrecision, + raw: feature, + }; + }); + } +} diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 360eee268..edfd9b732 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -1,7 +1,10 @@ import * as L from 'leaflet'; +import * as GeoSearch from 'leaflet-geosearch'; +import { BCGeocoderProvider } from '../services/BCGeocoderProvider'; import 'leaflet-draw'; import 'leaflet/dist/leaflet.css'; import 'leaflet-draw/dist/leaflet.draw-src.css'; +import 'leaflet-geosearch/dist/geosearch.css'; const DEFAULT_MAP_LAYER_URL = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; @@ -26,6 +29,7 @@ interface MapServiceOptions { onDrawnItemsChange: (items: any) => void; // Support both single and multiple items viewMode?: boolean; myLocation?: boolean; + geocoder: any; } class MapService { @@ -146,6 +150,24 @@ class MapService { myLocationControl.addTo(map); } + //Geocoder Control + // const geoControl = new GeoSearch.GeoSearchControl({ + + // }) + const geocoderControl = new (GeoSearch.GeoSearchControl as any)({ + provider: new BCGeocoderProvider(), + style: 'bar', + position: 'bottomleft', + }); + + // const geocoderControl = new (GeoSearch.GeoSearchControl as any)({ + // provider: new GeoSearch.OpenStreetMapProvider(), + // style: 'bar', + // position: 'bottomleft', + // }); + + map.addControl(geocoderControl); + // Add Drawing Controllers if (!readOnlyMap) { if (!viewMode) { From 04a7d2fb10a907821df0cdf99b5340ed912f09ed Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 15 Oct 2024 18:39:54 +0000 Subject: [PATCH 68/80] Adding form and location popups --- components/src/components/Map/Component.ts | 2 ++ .../Map/editForm/Component.edit.data.ts | 9 +++++ .../src/components/Map/services/MapService.ts | 34 +++++++++---------- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 1a031b8b6..c3fb06650 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -91,6 +91,7 @@ export default class Component extends (FieldComponent as any) { center, defaultValue, myLocation, + bcGeocoder, } = this.component; const { readOnly: viewMode } = this.options; @@ -114,6 +115,7 @@ export default class Component extends (FieldComponent as any) { onDrawnItemsChange: this.saveDrawnItems.bind(this), viewMode, myLocation, + bcGeocoder, }); // Load existing data if available diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index d047abf33..ac89cb0b3 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -106,5 +106,14 @@ export default { input: true, defaultValue: true, }, + { + label: 'Enable BC Address Autocomplete', + description: + 'This allows for the user to enter an address and have results appear in a dropdown. The user can then select the result which fits best and have the map center on that location', + key: 'bcGeocoder', + type: 'simplecheckboxadvanced', + input: true, + defaultValue: true, + }, ], }; diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index edfd9b732..3cccb849b 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -29,7 +29,7 @@ interface MapServiceOptions { onDrawnItemsChange: (items: any) => void; // Support both single and multiple items viewMode?: boolean; myLocation?: boolean; - geocoder: any; + bcGeocoder: boolean; } class MapService { @@ -86,6 +86,7 @@ class MapService { readOnlyMap, viewMode, myLocation, + bcGeocoder, } = options; if (drawOptions.rectangle) { @@ -150,23 +151,20 @@ class MapService { myLocationControl.addTo(map); } - //Geocoder Control - // const geoControl = new GeoSearch.GeoSearchControl({ - - // }) - const geocoderControl = new (GeoSearch.GeoSearchControl as any)({ - provider: new BCGeocoderProvider(), - style: 'bar', - position: 'bottomleft', - }); - - // const geocoderControl = new (GeoSearch.GeoSearchControl as any)({ - // provider: new GeoSearch.OpenStreetMapProvider(), - // style: 'bar', - // position: 'bottomleft', - // }); - - map.addControl(geocoderControl); + if (bcGeocoder) { + const geocoderControl = new (GeoSearch.GeoSearchControl as any)({ + provider: new BCGeocoderProvider(), + style: 'bar', + position: 'bottomleft', + }); + map.addControl(geocoderControl); + map.on('geosearch/showlocation', (e) => { + L.popup() + .setLatLng([(e as any).location.y, (e as any).location.x]) + .setContent(`${(e as any).location.label}`) + .openOn(map); + }); + } // Add Drawing Controllers if (!readOnlyMap) { From 5391c7d98f5d985b317a4c8e10c67638953a4055 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Wed, 16 Oct 2024 16:47:19 +0000 Subject: [PATCH 69/80] fixes for marker appearing at geocoder search, replaced with popup --- .../src/components/Map/services/BCGeocoderProvider.ts | 11 +++++------ components/src/components/Map/services/MapService.ts | 2 ++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/components/src/components/Map/services/BCGeocoderProvider.ts b/components/src/components/Map/services/BCGeocoderProvider.ts index d8cae43b9..3fa9db72c 100644 --- a/components/src/components/Map/services/BCGeocoderProvider.ts +++ b/components/src/components/Map/services/BCGeocoderProvider.ts @@ -2,17 +2,16 @@ import { OpenStreetMapProvider } from 'leaflet-geosearch'; import { EndpointArgument } from 'leaflet-geosearch/dist/providers/provider'; export class BCGeocoderProvider extends OpenStreetMapProvider { - endpoint({ query, type }: EndpointArgument): string { - console.log(query); + endpoint = ({ query, type }: EndpointArgument): string => { return this.getUrl(import.meta.env.VITE_CHEFS_GEO_ADDRESS_APIURL, { addressString: query as string, }); - } - parse({ data }) { + }; + parse = ({ data }) => { return data.features .filter(function (feature) { if (!feature.geometry.coordinates) return false; - if (feature.properties.fullAddress == 'BC') return false; + if (feature.properties.fullAddress === 'BC') return false; return true; }) .map(function (feature) { @@ -24,5 +23,5 @@ export class BCGeocoderProvider extends OpenStreetMapProvider { raw: feature, }; }); - } + }; } diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 3cccb849b..80197ea40 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -156,9 +156,11 @@ class MapService { provider: new BCGeocoderProvider(), style: 'bar', position: 'bottomleft', + showMarker: false, }); map.addControl(geocoderControl); map.on('geosearch/showlocation', (e) => { + console.log((e as any).location); L.popup() .setLatLng([(e as any).location.y, (e as any).location.x]) .setContent(`${(e as any).location.label}`) From d7605f30f3fab3ab63ca93f197da2d0044454a99 Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Wed, 16 Oct 2024 09:52:00 -0700 Subject: [PATCH 70/80] Update MapService.ts console removed --- components/src/components/Map/services/MapService.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 80197ea40..2e0f72121 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -160,7 +160,6 @@ class MapService { }); map.addControl(geocoderControl); map.on('geosearch/showlocation', (e) => { - console.log((e as any).location); L.popup() .setLatLng([(e as any).location.y, (e as any).location.x]) .setContent(`${(e as any).location.label}`) From 9286ac33e73d516ae3af83f5f8d7b18f04680f53 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 22 Oct 2024 18:07:04 +0000 Subject: [PATCH 71/80] Added fix for popup bug --- components/src/components/Map/services/MapService.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 2e0f72121..478e56178 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -54,10 +54,14 @@ class MapService { map.on('draw:created', (e) => { const layer = e.layer; if (drawnItems.getLayers().length === options.numPoints) { + console.log('too many markers'); + map.closePopup(); L.popup() - .setLatLng(layer.getLatLng()) - .setContent('

Only one marker for submission

') - .openOn(map); + .setLatLng(map.getCenter()) + .setContent( + `

Only ${options.numPoints} features per submission

` + ) + .addTo(map); } else { drawnItems.addLayer(layer); } From abf00267c3f74c4cfbc1895e3e94e53172e91eba Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Tue, 22 Oct 2024 23:50:13 +0000 Subject: [PATCH 72/80] Removed console --- components/src/components/Map/services/MapService.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 478e56178..3698d1e0e 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -54,7 +54,6 @@ class MapService { map.on('draw:created', (e) => { const layer = e.layer; if (drawnItems.getLayers().length === options.numPoints) { - console.log('too many markers'); map.closePopup(); L.popup() .setLatLng(map.getCenter()) From b04274e35a0edbb6a507e435cd64fbf37941683f Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Thu, 24 Oct 2024 17:19:20 +0000 Subject: [PATCH 73/80] Changes to map settings form to enable line input --- .../src/components/Map/editForm/Component.edit.data.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index ac89cb0b3..fc4f63b06 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -76,14 +76,17 @@ export default { value: 'marker', }, { - label: - 'Add circular area of interest through a point and custom radius', + label: 'Add circular area of interest with a point and custom radius', value: 'circle', }, { label: 'Add a polygon', value: 'polygon', }, + { + label: 'Add a line', + value: 'polyline', + }, ], defaultValue: 'marker', key: 'markerType', From bebd66752cac4a7ff43b415add8ed90f0a2968bb Mon Sep 17 00:00:00 2001 From: abhilash-aot Date: Wed, 30 Oct 2024 07:35:17 -0700 Subject: [PATCH 74/80] Update constants.js for Map component include Update for Map component include in form Designer --- app/frontend/src/utils/constants.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/frontend/src/utils/constants.js b/app/frontend/src/utils/constants.js index 05bb2441f..9c7ee6511 100755 --- a/app/frontend/src/utils/constants.js +++ b/app/frontend/src/utils/constants.js @@ -323,6 +323,7 @@ export const FormDesignerBuilderOptions = Object.freeze({ orgbook: true, bcaddress: true, simplebcaddress: true, + map: true, }, }, }); From 2110031834209ba04c8c7ed8c32a3fcb3c18bcf0 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Fri, 8 Nov 2024 20:02:20 +0000 Subject: [PATCH 75/80] Changed settings form to formio defaults --- .../components/Map/editForm/Component.edit.data.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index fc4f63b06..d3a0e1397 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -35,7 +35,7 @@ export default { max: 18, }, key: 'defaultZoom', - type: 'simplenumber', + type: 'number', input: true, }, { @@ -54,7 +54,7 @@ export default { { html: '

Submitter Options

', key: 'simplecontent1', - type: 'simplecontent', + type: 'content', input: false, tableView: false, label: 'Text/Images', @@ -64,7 +64,7 @@ export default { description: 'This allows for the user to view and scroll the map, but not add any input', key: 'allowSubmissions', - type: 'simplecheckbox', + type: 'checkbox', defaultValue: true, input: true, }, @@ -90,13 +90,13 @@ export default { ], defaultValue: 'marker', key: 'markerType', - type: 'simplecheckboxes', + type: 'selectboxes', input: true, }, { label: 'How many Markers per Submission?', key: 'numPoints', - type: 'simplenumber', + type: 'number', defaultValue: 1, input: true, }, @@ -105,7 +105,7 @@ export default { description: 'This allows for the user to center the map on their location.', key: 'myLocation', - type: 'simplecheckboxadvanced', + type: 'checkbox', input: true, defaultValue: true, }, @@ -114,7 +114,7 @@ export default { description: 'This allows for the user to enter an address and have results appear in a dropdown. The user can then select the result which fits best and have the map center on that location', key: 'bcGeocoder', - type: 'simplecheckboxadvanced', + type: 'checkbox', input: true, defaultValue: true, }, From 523af058c45294d5408d71d84005203c7790ca38 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Fri, 8 Nov 2024 23:05:14 +0000 Subject: [PATCH 76/80] Tried turning on validation settings page, looking into more in-depth solutions --- components/src/components/Map/Component.form.ts | 2 ++ components/src/components/Map/Component.ts | 8 ++++++++ .../components/Map/editForm/Component.edit.validation.ts | 9 ++++++--- components/src/components/Map/services/MapService.ts | 2 ++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/components/src/components/Map/Component.form.ts b/components/src/components/Map/Component.form.ts index 6376c87af..5fc4025b9 100644 --- a/components/src/components/Map/Component.form.ts +++ b/components/src/components/Map/Component.form.ts @@ -1,12 +1,14 @@ import baseEditForm from 'formiojs/components/_classes/component/Component.form'; import EditData from './editForm/Component.edit.data'; import EditDisplay from './editForm/Component.edit.display'; +import EditValidation from './editForm/Component.edit.validation'; import AdvancedEditLogic from '../Common/Advanced.edit.logic'; export default function (...extend) { return baseEditForm( [ EditDisplay, EditData, + EditValidation, { key: 'display', ignore: true, diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index c3fb06650..0eecebb6e 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -93,6 +93,8 @@ export default class Component extends (FieldComponent as any) { myLocation, bcGeocoder, } = this.component; + const { required } = this.component.validate; + console.log(this.component); const { readOnly: viewMode } = this.options; @@ -178,4 +180,10 @@ export default class Component extends (FieldComponent as any) { getValue() { return this.dataValue; } + isValid() { + if (this.this.component.validate) { + console.log(this.dataValue); + return !!this.dataValue; + } + } } diff --git a/components/src/components/Map/editForm/Component.edit.validation.ts b/components/src/components/Map/editForm/Component.edit.validation.ts index 1cec573db..438873440 100644 --- a/components/src/components/Map/editForm/Component.edit.validation.ts +++ b/components/src/components/Map/editForm/Component.edit.validation.ts @@ -1,4 +1,7 @@ import common from '../../Common/Simple.edit.validation'; -export default [ - ...common, -]; +export default { + key: 'customValidation', + label: 'Validation', + weight: 10, + components: common, +}; diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 3698d1e0e..089fdaae3 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -30,6 +30,7 @@ interface MapServiceOptions { viewMode?: boolean; myLocation?: boolean; bcGeocoder: boolean; + required: boolean; } class MapService { @@ -90,6 +91,7 @@ class MapService { viewMode, myLocation, bcGeocoder, + required, } = options; if (drawOptions.rectangle) { From 6ae027c421ada35cfa7ee374c030ae520b501287 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Thu, 21 Nov 2024 19:53:40 +0000 Subject: [PATCH 77/80] Fixes for PR comments, added constant for map component height --- components/src/components/Map/Component.ts | 3 ++- components/src/components/Map/editForm/Component.edit.data.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index c3fb06650..e66474baf 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -7,6 +7,7 @@ import * as L from 'leaflet'; const DEFAULT_CENTER: [number, number] = [ 53.96717190097409, -123.98320425388914, ]; // Ensure CENTER is a tuple with exactly two elements +const DEFAULT_CONTAINER_HEIGHT = '400px'; export default class Component extends (FieldComponent as any) { static schema(...extend) { @@ -42,7 +43,7 @@ export default class Component extends (FieldComponent as any) { render() { return super.render( - `
` + `
` ); } diff --git a/components/src/components/Map/editForm/Component.edit.data.ts b/components/src/components/Map/editForm/Component.edit.data.ts index d3a0e1397..1725808ff 100644 --- a/components/src/components/Map/editForm/Component.edit.data.ts +++ b/components/src/components/Map/editForm/Component.edit.data.ts @@ -6,7 +6,7 @@ export default { { html: '

Default Values

', key: 'simplecontent1', - type: 'simplecontent', + type: 'content', input: false, tableView: false, label: 'Text/Images', From 52eaeb248bd6016461b6f5ec5a82ea190da97891 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Fri, 13 Dec 2024 01:47:20 +0000 Subject: [PATCH 78/80] Added required field and overrode isEmpty from formio base component, also added preventing the deletion of pre-set features on the map --- components/src/components/Map/Component.ts | 12 +- .../src/components/Map/services/MapService.ts | 103 +++++++++++++++++- 2 files changed, 106 insertions(+), 9 deletions(-) diff --git a/components/src/components/Map/Component.ts b/components/src/components/Map/Component.ts index 0eecebb6e..1f85076c9 100644 --- a/components/src/components/Map/Component.ts +++ b/components/src/components/Map/Component.ts @@ -94,7 +94,6 @@ export default class Component extends (FieldComponent as any) { bcGeocoder, } = this.component; const { required } = this.component.validate; - console.log(this.component); const { readOnly: viewMode } = this.options; @@ -180,10 +179,11 @@ export default class Component extends (FieldComponent as any) { getValue() { return this.dataValue; } - isValid() { - if (this.this.component.validate) { - console.log(this.dataValue); - return !!this.dataValue; - } + + isEmpty(value) { + return ( + value?.features.length === 0 || + value?.features.length === this.defaultValue?.features.length + ); } } diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 089fdaae3..6314426ab 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -31,6 +31,7 @@ interface MapServiceOptions { myLocation?: boolean; bcGeocoder: boolean; required: boolean; + defaultValue?: any; } class MapService { @@ -47,7 +48,7 @@ class MapService { // this.map = map; this.drawnItems = drawnItems; - + console.log(options.defaultValue); map.invalidateSize(); // Triggering a resize event after map initialization setTimeout(() => window.dispatchEvent(new Event('resize')), 0); @@ -68,9 +69,24 @@ class MapService { this.bindPopupToLayer(layer); options.onDrawnItemsChange(drawnItems.getLayers()); }); - map.on(L.Draw.Event.DELETED, (e) => { + + map.on(L.Draw.Event.DELETED, (e: any) => { + e.layers.eachLayer((layer) => { + const match = this.isDefaultFeature(layer as L.Layer); + if (match) { + //re-add the feature/layer to the map + drawnItems.addLayer(layer); + L.popup() + .setLatLng(map.getCenter()) + .setContent(`

Please do not delete pre-existing features

`) + .addTo(map); + } + }); options.onDrawnItemsChange(drawnItems.getLayers()); }); + map.on(L.Draw.Event.DELETESTOP, (e) => { + console.log('end of delete'); + }); map.on(L.Draw.Event.EDITSTOP, (e) => { options.onDrawnItemsChange(drawnItems.getLayers()); }); @@ -91,7 +107,6 @@ class MapService { viewMode, myLocation, bcGeocoder, - required, } = options; if (drawOptions.rectangle) { @@ -132,6 +147,10 @@ class MapService { L.DomEvent.on(button, 'click', () => { if ('geolocation' in navigator) { navigator.geolocation.getCurrentPosition((position) => { + console.log( + 'centering map on: ' + + [position.coords.latitude, position.coords.longitude] + ); map.setView( [position.coords.latitude, position.coords.longitude], 14 @@ -272,5 +291,83 @@ class MapService { } return false; } + isDefaultFeature(feature): boolean { + const defaults = this.options.defaultValue.features; + if (defaults.length === 0) { + console.log('No Defaults'); + return false; + } + const featureType = this.getFeatureType(feature); + console.log(featureType); + const sameTypes = defaults.filter((d) => { + return d.type === featureType; + }); //filter out the types that don't match the marker to be deleted + if (sameTypes.length === 0) { + return false; + } + return sameTypes.some((f) => { + //returns true if one of the filtered defaults + switch (featureType) { + case 'marker': + return this.coordinatesEqual(f.coordinates, feature.getLatLng()); + case 'rectangle': + console.log('Match Rectangle'); + return f.bounds === feature.getBounds(); + case 'circle': + console.log('Match Circle'); + const radCheck = f.radius === feature.getRadius(); + const pointCheck = this.coordinatesEqual( + f.coordinates, + feature.getLatLng() + ); + return radCheck && pointCheck; + case 'polygon': + console.log('Match Polygon'); + return this.polyEqual(f.coordinates, feature.getLatLngs()); + case 'polyline': + console.log('Match Polyline'); + return this.polyEqual(f.coordinates, feature.getLatLngs()); + default: + console.log('Not matching a feature type'); + return false; + } + }); + } + getFeatureType(feature) { + if (feature instanceof L.Marker) { + return 'marker'; + } else if (feature instanceof L.Rectangle) { + return 'rectangle'; + } else if (feature instanceof L.Circle) { + return 'circle'; + } else if (feature instanceof L.Polygon) { + return 'polygon'; + } else if (feature instanceof L.Polyline) { + return 'polyline'; + } + } + coordinatesEqual(c1, c2) { + return c1.lat === c2.lat && c1.lng === c2.lng; + } + polyEqual(c1, c2) { + if (c1[0] instanceof Array) { + c1 = c1[0]; + console.log(c1); + } + if (c2[0] instanceof Array) { + c2 = c2[0]; + } + if (c1.length !== c2.length) { + //different number of vertices, no match + return false; + } else { + for (var i = 0; i < c1.length; i++) { + if (!this.coordinatesEqual(c1[i], c2[i])) { + return false; //if there's no match in one of the points, it's a new feature + } + } + return true; + } + } } export default MapService; From 23a3c6225446238e99031b75a928bb517f95a7b1 Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Fri, 13 Dec 2024 01:56:05 +0000 Subject: [PATCH 79/80] cleanup --- .../src/components/Map/services/MapService.ts | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index 6314426ab..a75bf0b21 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -48,7 +48,6 @@ class MapService { // this.map = map; this.drawnItems = drawnItems; - console.log(options.defaultValue); map.invalidateSize(); // Triggering a resize event after map initialization setTimeout(() => window.dispatchEvent(new Event('resize')), 0); @@ -84,9 +83,7 @@ class MapService { }); options.onDrawnItemsChange(drawnItems.getLayers()); }); - map.on(L.Draw.Event.DELETESTOP, (e) => { - console.log('end of delete'); - }); + map.on(L.Draw.Event.EDITSTOP, (e) => { options.onDrawnItemsChange(drawnItems.getLayers()); }); @@ -294,11 +291,9 @@ class MapService { isDefaultFeature(feature): boolean { const defaults = this.options.defaultValue.features; if (defaults.length === 0) { - console.log('No Defaults'); return false; } const featureType = this.getFeatureType(feature); - console.log(featureType); const sameTypes = defaults.filter((d) => { return d.type === featureType; }); //filter out the types that don't match the marker to be deleted @@ -311,10 +306,8 @@ class MapService { case 'marker': return this.coordinatesEqual(f.coordinates, feature.getLatLng()); case 'rectangle': - console.log('Match Rectangle'); return f.bounds === feature.getBounds(); case 'circle': - console.log('Match Circle'); const radCheck = f.radius === feature.getRadius(); const pointCheck = this.coordinatesEqual( f.coordinates, @@ -322,13 +315,10 @@ class MapService { ); return radCheck && pointCheck; case 'polygon': - console.log('Match Polygon'); return this.polyEqual(f.coordinates, feature.getLatLngs()); case 'polyline': - console.log('Match Polyline'); return this.polyEqual(f.coordinates, feature.getLatLngs()); default: - console.log('Not matching a feature type'); return false; } }); @@ -352,7 +342,6 @@ class MapService { polyEqual(c1, c2) { if (c1[0] instanceof Array) { c1 = c1[0]; - console.log(c1); } if (c2[0] instanceof Array) { c2 = c2[0]; From 4e533619b99a6feb842602acae19c83cae9c528b Mon Sep 17 00:00:00 2001 From: RyanBirtch-aot Date: Mon, 16 Dec 2024 17:53:37 +0000 Subject: [PATCH 80/80] Linting fixes --- .../Map/services/BCGeocoderProvider.ts | 4 ++-- .../src/components/Map/services/MapService.ts | 18 +++++++----------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/components/src/components/Map/services/BCGeocoderProvider.ts b/components/src/components/Map/services/BCGeocoderProvider.ts index 3fa9db72c..81506dd94 100644 --- a/components/src/components/Map/services/BCGeocoderProvider.ts +++ b/components/src/components/Map/services/BCGeocoderProvider.ts @@ -9,12 +9,12 @@ export class BCGeocoderProvider extends OpenStreetMapProvider { }; parse = ({ data }) => { return data.features - .filter(function (feature) { + .filter((feature) => { if (!feature.geometry.coordinates) return false; if (feature.properties.fullAddress === 'BC') return false; return true; }) - .map(function (feature) { + .map((feature) => { return { x: feature.geometry.coordinates[0], y: feature.geometry.coordinates[1], diff --git a/components/src/components/Map/services/MapService.ts b/components/src/components/Map/services/MapService.ts index a75bf0b21..83bb997ca 100644 --- a/components/src/components/Map/services/MapService.ts +++ b/components/src/components/Map/services/MapService.ts @@ -73,11 +73,11 @@ class MapService { e.layers.eachLayer((layer) => { const match = this.isDefaultFeature(layer as L.Layer); if (match) { - //re-add the feature/layer to the map + // re-add the feature/layer to the map drawnItems.addLayer(layer); L.popup() .setLatLng(map.getCenter()) - .setContent(`

Please do not delete pre-existing features

`) + .setContent('

Please do not delete pre-existing features

') .addTo(map); } }); @@ -144,10 +144,6 @@ class MapService { L.DomEvent.on(button, 'click', () => { if ('geolocation' in navigator) { navigator.geolocation.getCurrentPosition((position) => { - console.log( - 'centering map on: ' + - [position.coords.latitude, position.coords.longitude] - ); map.setView( [position.coords.latitude, position.coords.longitude], 14 @@ -296,12 +292,12 @@ class MapService { const featureType = this.getFeatureType(feature); const sameTypes = defaults.filter((d) => { return d.type === featureType; - }); //filter out the types that don't match the marker to be deleted + }); // filter out the types that don't match the marker to be deleted if (sameTypes.length === 0) { return false; } return sameTypes.some((f) => { - //returns true if one of the filtered defaults + // returns true if one of the filtered defaults switch (featureType) { case 'marker': return this.coordinatesEqual(f.coordinates, feature.getLatLng()); @@ -347,12 +343,12 @@ class MapService { c2 = c2[0]; } if (c1.length !== c2.length) { - //different number of vertices, no match + // different number of vertices, no match return false; } else { - for (var i = 0; i < c1.length; i++) { + for (let i = 0; i < c1.length; i++) { if (!this.coordinatesEqual(c1[i], c2[i])) { - return false; //if there's no match in one of the points, it's a new feature + return false; // if there's no match in one of the points, it's a new feature } } return true;