From 6057f956e66ac4441f7080a0d8a3a765938fc624 Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Thu, 19 Oct 2023 12:08:55 +0200 Subject: [PATCH 01/11] docs: fixes typos and extends info in tooltips --- builder/index.html | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/builder/index.html b/builder/index.html index d7c7f2b..f152df4 100644 --- a/builder/index.html +++ b/builder/index.html @@ -40,7 +40,7 @@

Custom Snippet

Prefix * + >Prefix* Custom Snippet Prefix

Defines one or more trigger words that display the - snippet in IntelliSense. Substring matching is performed on - prefixes, so in this case, "fc" could match "for-const". + snippet in IntelliSense. Approximate string matching (fuzzy search) is performed on + prefixes, so in this case, "fl" could match "FeatureLayer".

- Recomendations
+ Recommendations
Good prefixes are short and easy to remember, so you can include the name of the method, class or property. Avoid - using just acronyms. + using just acronyms. E.g. MapView, basemapsWithAPIKeys, findLayerByTitle, popupTemplateProps.

@@ -74,7 +74,7 @@

Custom Snippet

- Name * + Name* Custom Snippet Short description that follows the prefix.

- Recomendations
- To differentiate from other IntelliSense we recommend you to - include (Esri JSAPI) + Recommendations
+ Use plain English, using spaces as needed (length <35 characters). E.g. "Find layer in a MapView by title"

@@ -118,8 +117,8 @@

Custom Snippet

IntelliSense.

- Recomendations
- Explain of what the snippet does, but keep it short. + Recommendations
+ Explain of what the snippet does. Reuse text from the API reference whenever possible. Add AMD and ESM paths if it is a class initialization (new ...)

@@ -131,11 +130,11 @@

Custom Snippet

>
- +
- Body * + Body* (Prettier playground) Custom Snippet which the snippet is inserted.

- Recomendations
+ Recommendations
Use "Placeholders" (${1:foo}) and "Choices" (${1|value1,value2}) when possible.

From d36de92dc995f9a4929080081cd8298b2304382a Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Thu, 19 Oct 2023 18:56:26 +0200 Subject: [PATCH 02/11] docs: replace link to deprecated extension, improve usage, other minor changes --- README.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 232a6e3..bfdf2d6 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Visual Studio Code extension that contains a collection of snippets for common c To use this extension you will need to install: 1. [Visual Studio Code](https://code.visualstudio.com/download) (version 1.35 or higher). 2. The extension. There are two possibilities: - - From the [Visual Studio Code marketplace](https://marketplace.visualstudio.com/items?itemName=Esri.arcgis-jsapi-snippets). + - From the [Visual Studio Code marketplace](https://marketplace.visualstudio.com/items?itemName=Esri.arcgis-maps-sdk-js-snippets). - Using the ***[Install from VSIX](https://code.visualstudio.com/docs/editor/extension-marketplace#_install-from-a-vsix)*** command in Visual Studio Code then import the [arcgis-jsapi-snippets-1.0.0.vsix](./arcgis-jsapi-snippets-1.0.0.vsix) file. ### Usage @@ -39,12 +39,15 @@ To use this extension you will need to install: After installing, there are two ways to use it: **Option 1**) Using [built-in VS Code Intellisense](https://code.visualstudio.com/docs/languages/javascript#_intellisense): -1. Start typing the prefix for the code snippet. -2. Select the snippet by pressing `Tab` or `Enter` key. +1. Create an empty project with an empty `index.js` file. +2. Start typing one the prefix of one the [available code snippets](#snippets-available). (e.g. `elev`). +3. Select the snippet by pressing `Tab` or `Enter` key. +4. If there are values highlighted in gray, you can move between them using `Tab` (forward) and `Shift+Tab` (backwards). Intelissense demo -> **Notes:** +> **Troubleshooting:**
+> If the Intellisense doesn't work: > - Make sure to have `"editor.tabCompletion": "on"` in the settings (`Preferences` > `Open Settings(JSON)`) > - If pressing Tab doesn't work then you might have several snippets with the same prefix. Press `Ctrl-Space` (`Cmd-Space` on mac) to select the one you need. > @@ -58,12 +61,6 @@ This extension adds a new option to the activity bar that lets you quickly brows Intelissense demo -### Configuration - -If you want to create you own custom snippets you can do so. Read [about User defined snippets in Visual Studio official documentation](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_create-your-own-snippets). - -If you do so, please consider [contributing to this repository](#contributing) or join [other developers sharing their snippets](#community-snippets). - ## Snippets available ### [HTML snippets](snippets/html.json) @@ -172,14 +169,18 @@ If you do so, please consider [contributing to this repository](#contributing) o ## Issues -If something isn't working the way you expected, please take a look at [previously logged issues](https://github.com/Esri/arcgis-js-vscode-snippets/issues/) first. Have you found a new bug? Want to request a new feature? [Open a new issue](https://github.com/Esri/arcgis-js-vscode-snippets/issues/), we'd love to hear from you. - -If you're looking for help you can also post issues on Stack Overflow with the "[**esri-oss**](https://stackoverflow.com/questions/tagged/esri-oss)" tag. +If something isn't working the way you expected, please take a look at [previously logged issues](https://github.com/Esri/arcgis-js-vscode-snippets/issues/) first. Have you found a new bug? Want to request an enhancement to an existing snippet? Suggest a new snippet or tool? [Open a new issue](https://github.com/Esri/arcgis-js-vscode-snippets/issues/new/choose), we'd love to hear from you. ## Contributing Esri welcomes contributions from anyone and everyone. Please see our [guidelines for contributing](./CONTRIBUTING.md). +### Additional resources + +To learn more about **general use of code snippets in Visual Studio Code** read [Visual Studio official documentation](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_create-your-own-snippets). + +If you create your own custom code snippets to work with the ArcGIS Maps SDK for JavaScript, please consider [contributing to this repository](#contributing) or join [other developers sharing their snippets](#community-snippets). + ## License Copyright 2023 Esri From 3f26a52718b0a57cffac0f1a8129aee51a9cd42e Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Thu, 19 Oct 2023 19:51:32 +0200 Subject: [PATCH 03/11] doc: adds development environment and improve contributing guidelines --- .vscode/development.code-snippets | 99 +++++++++++++++++ CONTRIBUTING.md | 175 +++++++++++++++++++++--------- dev/README.md | 148 +++++++++++++++++++++++++ dev/playgrounds/config.json | 2 + dev/playgrounds/data.geojson | 2 + dev/playgrounds/index.html | 18 +++ dev/playgrounds/index.ts | 1 + dev/playgrounds/index.tsx | 1 + dev/playgrounds/main.scss | 1 + dev/sample-app.html | 71 ++++++++++++ 10 files changed, 465 insertions(+), 53 deletions(-) create mode 100644 .vscode/development.code-snippets create mode 100644 dev/README.md create mode 100644 dev/playgrounds/config.json create mode 100644 dev/playgrounds/data.geojson create mode 100644 dev/playgrounds/index.html create mode 100644 dev/playgrounds/index.ts create mode 100644 dev/playgrounds/index.tsx create mode 100644 dev/playgrounds/main.scss create mode 100644 dev/sample-app.html diff --git a/.vscode/development.code-snippets b/.vscode/development.code-snippets new file mode 100644 index 0000000..9bec482 --- /dev/null +++ b/.vscode/development.code-snippets @@ -0,0 +1,99 @@ +{ + // Develop / test your contributions here + + // JavaScript only snippet (*.js) + "A JavaScript only snippet": { + "scope": "javascript", + "prefix": "myConsoleLog", + "body": [ + "console.log(\"Hello Map\");" + ], + "description": "Console log \"Hello Map\"" + }, + + // HTML only snippet (*.html and *.htm) + "A HTML only snippet": { + "scope": "html", + "prefix": "dojoConfig", + "body": [ + "" + ], + "description": "Loads dojoConfig" + }, + + // CSS only snippet (*.css) + "A CSS only snippet": { + "scope": "css", + "prefix": "smallMap", + "body": [ + ".viewDiv{ width: 300px; height: 300px }" + ], + "description": "Set viewDiv to 300px x 300px" + }, + + // JSON only snippet (*.json and *.geojson) + "A JSON only snippet": { + "scope": "json", + "prefix": "featureCollectionPoint", + "body": [ + "{", + "\t\"type\": \"FeatureCollection\",", + "\t\"features\": [", + "\t\t{", + "\t\t\t\"type\": \"Feature\",", + "\t\t\t\"properties\": {},", + "\t\t\t\"geometry\": {", + "\t\t\t\t\"coordinates\": [", + "\t\t\t\t\t-4.795935418929616,", + "\t\t\t\t\t38.74031154905251", + "\t\t\t\t],", + "\t\t\t\t\"type\": \"Point\"", + "\t\t\t}", + "\t\t}", + "\t]", + "}", + ], + "description": "Sample of camera position object" + }, + + // TypeScript (*.ts) + "A TypeScript only snippet": { + "scope": "typescript", + "body": [ + "declare function myDebug(value: any): void;" + ], + "description": "Example using any and void", + "prefix": "myDebug" + }, + + // TypeScript React (*.tsx) + "A TypeScript only snippet": { + "scope": "typescriptreact", + "body": [ + "const HelloWorld = () =>

Hello, World!

", + "export default HelloWorld", + ], + "description": "Hello world usint TypeScript and React", + "prefix": "helloWorldTSX" + }, + + // SCSS only snippet (*.scss) + "A SCSS snippet": { + "scope": "scss", + "prefix": "smallMap", + "body": [ + ".viewDiv{ width: 400px; height: 400px }" + ], + "description": "Set viewDiv to 400px x 400px" + }, +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 15d59e0..c42ab02 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,14 +7,17 @@ Esri welcomes contributions from anyone and everyone. Please see our [guidelines **Table of Contents** - [I want to contribute, what should I work on?](#i-want-to-contribute-what-should-i-work-on) -- [Getting a development environment set up](#getting-a-development-environment-set-up) -- [Adding a new snippet](#adding-a-new-snippet) +- [Type of snippets accepted](#type-of-snippets-accepted) +- [Development environment](#development-environment) +- [Add your changes](#add-your-changes) +- [Commit message format](#commit-message-format) +- [Pull request](#pull-request) - [Conventions](#conventions) - [`prefix`](#prefix) - [`name`](#name) - [`description`](#description) - [`body`](#body) -- [Pull request](#pull-request) +- [FAQ](#faq) - [Additional resources](#additional-resources) @@ -30,18 +33,7 @@ You can help mostly by: * Comment on the issue and check if any additional context is needed before you start working. This will also help everyone knows that you are already working on it. * Sharing your own list to the [community snippets](https://github.com/Esri/arcgis-js-vscode-snippets#community-snippets) -## Getting a development environment set up - -> **Note**: to avoid conflicts, we do not recommend editing the local installation of the plugin placed in (`~/.vscode/extensions/esri.arcgis-jsapi-snippets-version`) - -**Steps:** - -1. In VSCode show command palette pressing: `Cmd + Shift + P` (Windows: `Ctrl + Shift + P`) then type/select `Preferences: Configure User Snippets`. -2. Select your preferred option, `New Global Snippets file...` or the folder you want to place the snippets file. -3. Depending on the type of snippet you want to add, you need to type: `html.json`, `javascript.json`, `json.json`, `typescript.json` or `typescriptreact.json.` -4. Now you can test it there. You will need to use the command palette again but instead, type `Developer: Reload Window` for VSCode to recognize the new snippet. - -## Adding a new snippet +## Type of snippets accepted We accept different type of snippets: @@ -50,41 +42,126 @@ We accept different type of snippets: * Common procedures (E.g. query a layer, disable navigation, project a geometry, ...). * Enumeration of possible values (E.g: basemap styles, renderer and symbol types, ...). -Consider using the [snippet builder](https://esri.github.io/arcgis-js-vscode-snippets/builder/) to validate your snippet, and please make sure it follows the [conventions](#conventions). +## Development environment + +A local development environment with instructions is provided in the [dev folder](./dev). + +## Add your changes + +Although it is possible to make your changes directly through the GitHub web interface, we recommend that you add your changes to a local copy of the repository. + +**Which branch should I use?**
+If your are not doing a lot of changes you can use `master`, otherwise we encourage you to do the changes in a new branch. Branch name convention: +* For changes associated with an issue: `/-`. +* For changes without an associated issue: `/`. + +**These are the steps required:** + +1. Update the corresponding file in the [snippets folder](./snippets). Depending on the type of snippet, you need to will have to modify: `html.json`, `javascript.json`, `json.json`, `typescript.json`, ... + 1. Respects the alphabetical order, snippets are sorted by `name`). + 2. Make sure your snippet meets [our conventions]((#conventions)). +2. Update the snippets table within the [README.md](./README.md) to reflect the changes. +3. Update the [CHANGELOG.md](./CHANGELOG.md) file to reflect the changes. +4. Commit your changes. + +## Commit message format + +This project do not strictly follows [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/), but we will use the format `: description [optional #issue-number]` to generate the changelog. Be sure to provide clear and sufficient information in commit messages. + +For `` you should use: + +* **feat**: A new snippet or feature +* **fix**: A bug fix with the snippet +* **docs**: Documentation only changes (changes in markdown) +* **style**: Changes that do not affect the meaning of the code (conventions, white-space, formatting, missing semi-colons, etc) +* **refactor**: A code change that neither fixes a bug nor adds a feature + +`description`: + +* The subject contains succinct description of the change +* use the imperative, present tense: "change" not "changed" nor "changes" +* do not capitalize first letter +* do not place a period . at the end +* entire length of the subject must not go over 50 characters +* describe what the commit does, not what issue it relates to or fixes +* **be brief, yet descriptive** - we should have a good understanding of what the commit does by reading the subject + +**Examples:** +* `style: apply prefix conventions to all snippets #30` +* `doc: update contributing guidelines and minor conventions changes #37` + +## Pull request + +When submitting, if you are working on an issue, remember to [link your PR to it](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue), by use a supported keyword in the pull request description. For example: "`Closes #10`" or "`Fixes Esri/arcgis-js-vscode-snippets#10`". ## Conventions ### `prefix` +Prefix are the trigger words that display the snippet in the Intellisense: + +![Image showing how the prefix shows in VS Code](./builder/assets/snippet-prefix.png) + * Avoid acronyms (like `sms` for `SimpleMarkerSymbol`) -* Use camelcase (not [snake_case](https://en.wikipedia.org/wiki/Snake_case), UPPERCASE, etc.) +* Use camelCase (not [snake_case](https://en.wikipedia.org/wiki/Snake_case), UPPERCASE, etc.) * Per snippet type: * **Class properties objects**: add the suffix "Props". * **Class constructors**: match JS SDK capitalization. +**Examples**: +* Class constructors: `SimpleMarkerSymbol`, `MapView`, ... +* Class properties objects: `popupTemplateProps`, `featureReductionClusterProps`... +* Common procedures an enumerations: `basemapsWithAPIKeys`, `findLayerByTitle`, ... + > If you want to suggest a change, please [check the issue #10](https://github.com/Esri/arcgis-js-vscode-snippets/issues/10). ### `name` +Name is the short description that follows the prefix: + +![Image showing how the name shows in VS Code](./builder/assets/snippet-name.png) + * Start your sentence with capitals (do not capitalize, uppercase) * Use plain english using spaces as needed (don't use [camelCase](https://en.wikipedia.org/wiki/Camel_case), [snake_case](https://en.wikipedia.org/wiki/Snake_case), [PascalCase](https://www.freecodecamp.org/news/snake-case-vs-camel-case-vs-pascal-case-vs-kebab-case-whats-the-difference/#pascal-case), or [kebab-case](https://en.wikipedia.org/wiki/Letter_case#Kebab_case)). * Keep the name short as possible (< 35 characters) to avoid ellipsis ("..."). +**Examples**: +* `City scale 3D callout` +* `Create class breaks renderer` +* `Create 3D extruded polygon symbol` +* `Generate icon Point 3D` + > If you want to suggest a change, please [check the issue #20](https://github.com/Esri/arcgis-js-vscode-snippets/issues/20). ### `description` +Description is a long description that precedes the body: + +![Image showing how the description shows in VS Code](./builder/assets/snippet-description.png) + * It should be a proper description of what the snippet does, and reuse text from the API reference whenever possible. -* If it is a snippet related to a class/module include the AMD and ESM paths. For example: `Convert a geometry from Web Mercator units (wkid: 3857) to geographic units (wkid: 4326). AMD path: esri/geometry/support/webMercatorUtils | ESM path: @arcgis/core/geometry/support/webMercatorUtils.js` +* If it is a snippet related to a class/module include the AMD and ESM paths. + +Examples: +* `Create an instance of MapView using a Map.` +* `Create an instance of MapView using a WebMap.` +* `Convert a geometry from Web Mercator units (wkid: 3857) to geographic units (wkid: 4326). AMD path: esri/geometry/support/webMercatorUtils | ESM path: @arcgis/core/geometry/support/webMercatorUtils.js` +* `Create a PictureFillSymbol with customizable image-based patterns for polygons.` > If you want to suggest a change, please [check the issue #21](https://github.com/Esri/arcgis-js-vscode-snippets/issues/21). ### `body` +Body contain the code snippet that will be inserted: + +![Image showing how the body shows in VS Code](./builder/assets/snippet-body.png) + > If you want to suggest a change, please [check the issue #19](https://github.com/Esri/arcgis-js-vscode-snippets/issues/19). #### 1) Use `\t` for tabs (do not use spaces) +> **Note:** You don't have to worry about this if you use the [Snippets Builder](https://esri.github.io/arcgis-js-vscode-snippets/builder/). + **Example:** ```js @@ -105,7 +182,24 @@ Consider using the [snippet builder](https://esri.github.io/arcgis-js-vscode-sni } ``` -#### 2) Don't add comments in your snippets +#### 2) Style guide conventions + +Follow the ArcGIS Maps SDK for JavaScript coding conventions define in [github.com/esri/jsapi-resources/.prettierrc.json](https://github.com/Esri/jsapi-resources/blob/main/.prettierrc.json): + +* **Plain JavaScript**: + * Print semicolons at the ends of statements. + * Always require parentheses around arrow function arguments ([example](https://eslint.org/docs/latest/rules/arrow-parens)). + * Print spaces between brackets in object literals: true ([example](https://prettier.io/docs/en/options.html)). + * If at least one property in an object requires quotes, quote all properties. + * No [trailing commas](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas) (final commas) + * Line length: 120 +* **JavaScript React** (JSX): + * Put the \> of a multi-line JSX element at the end of the last line instead of being alone on the next line (does not apply to self closing elements) ([example](https://prettier.io/docs/en/options.html#deprecated-jsx-brackets)). + * Line length: 100 + +We have set [this prettier.io/playground](https://prettier.io/playground/#N4Igxg9gdgLgprEAuEIA0IIAcYEtoDOyoAhgE5kQDuACuQkSiQDZUkCeRGARmSWAGs4MAMokAtnAAyuKHGQAzFgTg8+g4SKz9ZAc2QwyAV1UgV43AeOmCe5nACKRiPEXLTAKwIAPEXcfOrkhKzCoYAI6BcDSUWIzghLgE8IgYhiS4zHoAwhDi4iTIIFDQ8hi2ULr2AIIwhrjcRvA0cGQycm6hpgAWMOLMAOrduPAE2mBwIgwjuABuI+xFYARcILMmAJJQACYIomBkuDjVOyIw7PadYSBYlCoDfFhFt3AqZLNlILJvMDEkugUrqZtGQ3kVuCRuHBmOgbodYANcNsYN1kABGABMAAYMGQ4JFcHi-gDCsF3GlIYjkaikBiMEYVAAVSGMELXODiKHbXbbKQkSpGf5wABiEDIBTqeiKJCaEBAAF95UA) to help you beautify your code. + +#### 3) Don't add comments in your snippets **Example:** @@ -116,7 +210,7 @@ myLayer.queryFeatures().then(results => { }) ``` -#### 3) Keep snippets small +#### 4) Keep snippets small Try not to instantiate more than one class whenever possible. Keeping snippets small helps make them more reusable. So instead of doing this: @@ -152,7 +246,7 @@ new MapView({ }); ``` -#### 4) Conventions for constructor properties +#### 5) Conventions for constructor properties * Sort properties by alphabetical order. * Include what you think are the most common properties. @@ -173,7 +267,7 @@ new PopupTemplate({ Observe the [PopupTemplate property "content"](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html#content) include a list of possible values, and `popupContent` will trigger other snippets like: `popupCustomContent`, `popupMediaContent`, `popupFieldsContent`, `popupTextContent` and `popupAttachmentsContent`. -#### 5) After a class initialization, don't assign it to a variable +#### 6) After a class initialization, don't assign it to a variable Avoid doing this: @@ -195,7 +289,7 @@ new WebMap({ }) ``` -#### 6) For inherited methods, try to make generic snippets. +#### 7) For inherited methods, try to make generic snippets For methods like [fromJSON()](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-Renderer.html#methods-summary), which is inherited in many classes, for example: SimpleRenderer, UniqueValueRenderer, HeatmapRenderer, ... do something like this: @@ -203,41 +297,16 @@ For methods like [fromJSON()](https://developers.arcgis.com/javascript/latest/ap ${1|Simple,UniqueValue,ClassBreaks,Dictionary,DotDensity,Heatmap|}Renderer.fromJSON(json) ``` -## Commit message format -This project do not strictly follows [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/), but we will use the format `: description [optional #issue-number]` to generate the changelog. Be sure to provide clear and sufficient information in commit messages. +## FAQ -For `` you should use: +**I have made a contribution, but I can't find the contribution in the extension deployed in the marketplace. Why?** -* **feat**: A new snippet or feature -* **fix**: A bug fix with the snippet -** **docs**: Documentation only changes (changes in markdown) -* **style**: Changes that do not affect the meaning of the code (conventions, white-space, formatting, missing semi-colons, etc) -* **refactor**: A code change that neither fixes a bug nor adds a feature - -`description`: - -* The subject contains succinct description of the change -* use the imperative, present tense: "change" not "changed" nor "changes" -* do not capitalize first letter -* do not place a period . at the end -* entire length of the subject must not go over 50 characters -* describe what the commit does, not what issue it relates to or fixes -* **be brief, yet descriptive** - we should have a good understanding of what the commit does by reading the subject - -Examples: -`style: apply prefix conventions to all snippets #30` -`doc: update contributing guidelines and minor conventions changes #37` - -## Pull request +The Esri team have to to deploy a new version of the snippet to the Visual Studio Code marketplace in order to make the changes available to every user of the extension. -Before each PR follow these steps: +**Can I modify the local installation of the extension to test my edits?**
+To avoid conflicts and overwrites, we do not recommend editing the local installation of your extension placed in your home folder (`~/.vscode/extensions/esri.arcgis-maps-sdk-js-snippets-VERSION_NO`). -1. Update the file in the [snippets folder](./snippets) (respects the alphabetical order). -2. Update the [CHANGELOG.md](./CHANGELOG.md) file to reflect the changes. -3. Add the info to the [snippets table](./README.md). -4. Submit your PR. - * [Link your PR to an issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) if it exists. Use a supported keyword in the pull request description. Ex."`Closes #10`" or "`Fixes Esri/arcgis-js-vscode-snippets#10`". ## Additional resources diff --git a/dev/README.md b/dev/README.md new file mode 100644 index 0000000..99ef4d0 --- /dev/null +++ b/dev/README.md @@ -0,0 +1,148 @@ +# Development environment + +To contribute without messing around with other snippets you might use in other projects, this repo provides a project-folder scoped file (`development.code-snippets`) and several playgrounds to help you test the snippets you are going to contribute. + + + +**Table of Contents**: + +- [Before you get started](#before-you-get-started) + - [How Visual Studio Intellisense works](#how-visual-studio-intellisense-works) + - [Project folder structure](#project-folder-structure) +- [Getting started](#getting-started) + - [Add a new snippet](#add-a-new-snippet) + - [Enhance an existing snippet](#enhance-an-existing-snippet) + - [Test a snippet](#test-a-snippet) +- [Troubleshooting](#troubleshooting) +- [FAQ](#faq) + - [How do I add placeholders to my snippet?](#how-do-i-add-placeholders-to-my-snippet) + - [How do I add a dropdown/choices in my snippet?](#how-do-i-add-a-dropdownchoices-in-my-snippet) + - [Are there other alternatives to use the `development.code-snippets` file?](#are-there-other-alternatives-to-use-the-developmentcode-snippets-file) + - [Are there other alternatives to use the Snippet Builder to generate JSON code?](#are-there-other-alternatives-to-use-the-snippet-builder-to-generate-json-code) +- [Additional resources](#additional-resources) + + + + +## Before you get started + +### How Visual Studio Intellisense works + +The first thing you should familiarize yourself with, if you have never created a custom snippet in Visual Studio Code, is the different components that make up Intellisense (intelligent code completion) in Visual Studio Code: + +![](../builder/assets/use-sample.png) + +These fields are shown in the image above: `Name`, `prefix`, `Body`, and `Description`, have to be defined in a JSON object that looks like this: + +```js +"Name": { +"prefix": "PREFIX", +"body": [ + "BODY", +], +"description": "Description" +} +``` + +Later on, we will see where we will have to enter this code. To help you creating the snippet code we provide you with an user interface, the [Snippets Builder](https://esri.github.io/arcgis-js-vscode-snippets/builder/). + +### Project folder structure + +Let's see the most relevant files and folders in this repository and what they contain: + +* **[.vscode/](../.vscode/)**: the most important file in this folder is `development.code-snippets` that you will use to test the snippets you will contribute. +* **[builder/](../builder/)**: this folder include the code of the [Snippets Builder application](https://esri.github.io/arcgis-js-vscode-snippets/builder/). +* **[dev/](.)**: the folder you are currently in have the files to help you during your development proccess, and the instructions to use them. +* **[images/](.)**: contains the assets being used in the README files as well as the icon being use in the Visual Studio Code marketplace. +* **[snippets/](../snippets/)**: this folder have all the available snippets within the official extension that is published (defined in the [package.json file](../package.json)). +* **[CHANGELOG.md](../CHANGELOG.md)**: this file keeps a log or record of all notable changes made to the project. + +## Getting started + +First of all, **fork and clone locally** this repository. + +### Add a new snippet + +* 1\) Within this folder ([dev](./dev)), build a sample app make sure you have tested the code snippet you want to contribute (e.g. [sample-app.html](./sample-app.html)). +* 2\) Generate the [custom snippet code](#what-is-a-custom-snippet-code) using the [VS Code Snippets Builder](https://esri.github.io/arcgis-js-vscode-snippets/builder/). +* 3\) Paste your VS Code Snippets JSON syntax into [../.vscode/development.code-snippets](../.vscode/development.code-snippets). +* 4\) [Test the snippet](#test-a-snippet) + + +### Enhance an existing snippet + +To be able to test your modifications, we encourage you to follow these steps, even if you are doing a simple change to the `prefix`, `name`, or `description`. + +* 1\) Open the file (from the [snippets folder](../snippets/)) that contains the [custom snippet code](#what-is-a-custom-snippet-code) you are going to enhance, **find it and copy it**. +* 2\) Paste the snippet into [../.vscode/development.code-snippets](../.vscode/development.code-snippets). +* 3\) Do the modifications there. Use the [snippets builder](https://esri.github.io/arcgis-js-vscode-snippets/builder/), and add [placeholders](#are-there-other-alternatives-to-use-the-developmentcode-snippets-file), [choices](#how-do-i-add-a-dropdownchoices-in-my-snippet), ... as needed. +* 4\) [Test the snippet](#test-a-snippet) + +### Test a snippet + +* 1\) Open in VS Code a file and start typing your snippet prefix. You can use any of the provided files within the folder [playgrounds](./playgrounds/) to test it. Choose the right one based on the type of snippets you want to contribute: + * **index.html** for HTML, CSS and JavaScript snippets. + * **config.json** or **data.geojson** for JSON snippets. + * **main.scss** for SCSS snippets. + * **index.ts** for TypeScript snippets. + * **index.tsx** for TypeScript React snippets. +* 2\) If everything works as expected, follow the [steps to add your changes](https://github.com/Esri/arcgis-js-vscode-snippets/blob/master/CONTRIBUTING.md#add-your-changes). + + +## Troubleshooting + +If your code snippet doesn't show up: +* Make sure the developmnet.code-snippets is still a valid JSON. You can test it with [JSONLint](http://jsonlint.com/) (but **remember to remove comments**). +* Use the command palette (Mac: `Cmd + Shift + P` | Windows/Linux: `Ctrl + Shift + P`) and type Developer: `Reload Window`. + +## FAQ + +### How do I add placeholders to my snippet? + +You have to use the syntax `${1:default_value}`. Example: + +```json +{ + "Load a new MapView (2D)": { + "prefix": "mapView", + "body": [ + "new MapView({", + "\tcontainer: \"${1:viewDiv}\",", + "\tmap: ${2:map},", + "});" + ] + }, +} +``` +Learn [more about placeholders](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_placeholders). + +### How do I add a dropdown/choices in my snippet? + +You have to use the syntax `${1|one,two,three|}`. Example: + +```json + "Get the API from the CDN": { + "prefix": "getApi", + "body": [ + "", + "" + ], + }, +``` + +Learn [more about choices](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_choice). + +### Are there other alternatives to use the `development.code-snippets` file? +1. In VSCode show command palette pressing: `Cmd + Shift + P` (Windows: `Ctrl + Shift + P`) then type/select `Preferences: Configure User Snippets`. +2. Select your preferred option, `New Global Snippets file...` or the folder you want to place the snippets file. + +### Are there other alternatives to use the Snippet Builder to generate JSON code? +Yes, you can use any another extension, for example, the [Snippet Generator](https://marketplace.visualstudio.com/items?itemName=wenfangdu.snippet-generator). + +## Additional resources + +Learn more about: +* [VS Code Snippets JSON syntax](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_snippet-syntax) +* [Snippets scope (language and project scopes)](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_snippet-scope) + + diff --git a/dev/playgrounds/config.json b/dev/playgrounds/config.json new file mode 100644 index 0000000..50fddb5 --- /dev/null +++ b/dev/playgrounds/config.json @@ -0,0 +1,2 @@ +// Test your JSON snippets here (e.g. featureCollectionPoint) +// Note: Remove this comments afterwards (JSON do not support comments) diff --git a/dev/playgrounds/data.geojson b/dev/playgrounds/data.geojson new file mode 100644 index 0000000..68e2b2f --- /dev/null +++ b/dev/playgrounds/data.geojson @@ -0,0 +1,2 @@ +// Test your JSON snippets here (e.g. featureCollectionPoint) +// Note: Remove this comments afterwards (GeoJSON do not support comments) diff --git a/dev/playgrounds/index.html b/dev/playgrounds/index.html new file mode 100644 index 0000000..5209fd7 --- /dev/null +++ b/dev/playgrounds/index.html @@ -0,0 +1,18 @@ + + + + + + Development environment + + + + + + + + diff --git a/dev/playgrounds/index.ts b/dev/playgrounds/index.ts new file mode 100644 index 0000000..fe2fea3 --- /dev/null +++ b/dev/playgrounds/index.ts @@ -0,0 +1 @@ +// Test your TypeScript here (e.g. myDebug) diff --git a/dev/playgrounds/index.tsx b/dev/playgrounds/index.tsx new file mode 100644 index 0000000..9fe6253 --- /dev/null +++ b/dev/playgrounds/index.tsx @@ -0,0 +1 @@ +// Test your TypeScript React here (e.g. helloWorldTSX) \ No newline at end of file diff --git a/dev/playgrounds/main.scss b/dev/playgrounds/main.scss new file mode 100644 index 0000000..7265696 --- /dev/null +++ b/dev/playgrounds/main.scss @@ -0,0 +1 @@ +// Test your JavaScript snippets here (e.g. smallMap) \ No newline at end of file diff --git a/dev/sample-app.html b/dev/sample-app.html new file mode 100644 index 0000000..2f94457 --- /dev/null +++ b/dev/sample-app.html @@ -0,0 +1,71 @@ + + + + + + Document + + + + + + +
+ + From d8d71388eb04bcaf7ae50ab889e7113b5e5dbc49 Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Fri, 20 Oct 2023 11:30:59 +0200 Subject: [PATCH 04/11] doc: extended doc to suggest new snippets and intro to VSCode snippets --- CONTRIBUTING.md | 156 +++++++++++++++++++++-- dev/README.md | 37 ------ images/places-and-choices.png | Bin 0 -> 121562 bytes images/vscode-intelisense-components.png | Bin 0 -> 37491 bytes 4 files changed, 142 insertions(+), 51 deletions(-) create mode 100644 images/places-and-choices.png create mode 100644 images/vscode-intelisense-components.png diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c42ab02..d9fc2c3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,8 +6,13 @@ Esri welcomes contributions from anyone and everyone. Please see our [guidelines **Table of Contents** +- [Before you get started](#before-you-get-started) + - [How Visual Studio Intellisense works](#how-visual-studio-intellisense-works) + - [Project folder structure](#project-folder-structure) - [I want to contribute, what should I work on?](#i-want-to-contribute-what-should-i-work-on) -- [Type of snippets accepted](#type-of-snippets-accepted) +- [Suggesting new snippets](#suggesting-new-snippets) + - [JavaScript and TypeScript snippets](#javascript-and-typescript-snippets) + - [Other snippets](#other-snippets) - [Development environment](#development-environment) - [Add your changes](#add-your-changes) - [Commit message format](#commit-message-format) @@ -22,32 +27,152 @@ Esri welcomes contributions from anyone and everyone. Please see our [guidelines +## Before you get started + +### How Visual Studio Intellisense works + +The first thing you should familiarize yourself with, if you have never created a custom snippet in Visual Studio Code, is the most important components that make up Intellisense (intelligent code completion) in Visual Studio Code: + +![](./images/vscode-intelisense-components.png) + +These fields are shown in the image above: `prefix`, `name`, `description`, and `body`, have to be defined in a JSON object that looks like this: + +```json +"Layer View query features": { +"prefix": ["layerView", "layerViewQF"], +"body": [ + "layerView.queryFeatures().then(function(results){", + "\tconsole.log(results.features);", + "});", +], +"description": "Get features in the layer" +} +``` + +Where: +* "Layer View query features": is the snippet name. It is displayed via IntelliSense if no `description` is provided +* `prefix` defines **one or more** trigger words that display the snippet in IntelliSense. Substring matching (fuzzy search) is performed on prefixes, that's why in this case, "lq" matched "layerViewQF" +* `body` is one or more lines of content, which will be joined as multiple lines upon insertion. Newlines and embedded tabs will be formatted according to the context in which the snippet is inserted. +* `description` is a description of the snippet displayed by IntelliSense. + +> **Note**: there is another optional component ([scope](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_snippet-scope)) that can be used to specify in which context ([language](https://code.visualstudio.com/docs/languages/identifiers#_known-language-identifiers)) the snippet is relevant. + +To improve accessibility and usability, Visual Studio Code have a special syntax that can be used inside the `body`, for example [placeholders](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_placeholders), and [choices](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_choice): +![IPlaceholders and Choices](./images/places-and-choices.png) + +Later on, we will see in which file(s) we will have to add this code and the user interface we provide to facilitate the creation of the snippet code. + +### Project folder structure + +The most relevant files and folders in this repository are: + +* **[.vscode/](./.vscode/)**: the most important file in this folder is `development.code-snippets` that you will use to test the snippets you will contribute. +* **[builder/](./builder/)**: this folder include the code of the [Snippets Builder application](https://esri.github.io/arcgis-js-vscode-snippets/builder/). +* **[dev/](./dev)**: this folder contains the files to help you during your development proccess, and the instructions on how to use them. +* **[images/](./images/)**: contains the assets being used in the README files as well as the icon being use in the Visual Studio Code marketplace. +* **[snippets/](./snippets/)**: this folder have all the available snippets within the official extension that is published (defined in the [package.json file](./package.json)). +* **[CHANGELOG.md](./CHANGELOG.md)**: this file keeps a log or record of all notable changes made to the project. + ## I want to contribute, what should I work on? You can help mostly by: -* Adding ideas for snippets using the [snippet builder](https://esri.github.io/arcgis-js-vscode-snippets/builder/). -* Requesting updates for existing snippets by creating a [Enhancement issue](https://github.com/Esri/arcgis-js-vscode-snippets/issues/new?assignees=&labels=type%2Fenhancement%2C0+-+new%2Cneeds+triage&projects=&template=enhancement.yml). -* Reporting problems by creating a [Bug issue](https://github.com/Esri/arcgis-js-vscode-snippets/issues/new?assignees=&labels=type%2Fenhancement%2C0+-+new%2Cneeds+triage&projects=&template=bug.yml). -* Working on the issues marked as `help wanted`. There is also a `good first issue` label if you are just getting started. +* **Adding ideas for snippets** using the [snippet builder](https://esri.github.io/arcgis-js-vscode-snippets/builder/). If you are planning to do so, check [Suggesting new snippets](#suggesting-new-snippets). +* **Requesting enhancements** for existing snippets by creating a [Enhancement issue](https://github.com/Esri/arcgis-js-vscode-snippets/issues/new?assignees=&labels=type%2Fenhancement%2C0+-+new%2Cneeds+triage&projects=&template=enhancement.yml). +* **Reporting problems** by creating a [Bug issue](https://github.com/Esri/arcgis-js-vscode-snippets/issues/new?assignees=&labels=type%2Fenhancement%2C0+-+new%2Cneeds+triage&projects=&template=bug.yml). +* **Working on the issues** marked as `help wanted`. There is also a `good first issue` label if you are just getting started. * Comment on the issue and check if any additional context is needed before you start working. This will also help everyone knows that you are already working on it. -* Sharing your own list to the [community snippets](https://github.com/Esri/arcgis-js-vscode-snippets#community-snippets) +* **Sharing your own list of snippets** to the [community snippets](https://github.com/Esri/arcgis-js-vscode-snippets#community-snippets) + +## Suggesting new snippets + +If you plan to propose new snippets, this section contains an overview of the main type of snippets this extension contains for each language, but if you have any another idea(s), do not hesitate to share them. + +### JavaScript and TypeScript snippets + +The list below summarize the main type of snippets within [snippets/javascript.json](./snippets/javascript.json), [snippets/typescript.json](./snippets/typescript.json), and [snippets/typescriptreact.json](./snippets/typescriptreact.json). -## Type of snippets accepted +**1) Initialization of classes.** + +Instantiate an object of a new class like MapView, FeatureLayers, widgets (e.g. Search widget with multple configurations: multiple sources, custom sources, ...). + +Examples: `FeatureLayerClientSide` + +```js +new FeatureLayer({ + fields: [{ + name: "OBJECTID", + type: "oid" + }, { + name: "${1:url}", + type: "string" + }], + objectIdField: "OBJECTID", + popupTemplate: { + content: "${2:}" + }, + renderer: ${3:Renderer}, + source: ${4:graphics}, +}); +``` -We accept different type of snippets: +**2) JS objects with constructor properties** + +JavaScript objects to facilitate class configuration: + +Examples: `featureReductionClusterProps` + +```js +{ + type: "cluster", + clusterMaxSize: ${1:37.5}, + clusterMinSize: ${2:16.5}, + clusterRadius: ${3:60}, + labelingInfo: ${4:LabelClass}, + labelsVisible: true + popupEnabled: true, + popupTemplate: ${5:PopupTemplate}, +} +``` + +**3) Common procedures and programming patterns** + +Like query a layer, disable navigation, project a geometry, ... + +Example: `queryLayerView` + +```js +view.whenLayerView(${1:fl}).then(function (layerView) { + layerView.queryFeatures().then(function (results) { + console.log(results.features); + }); +}); +``` +**4) Enumeration of possible values** + +Snippets to help choosing between multiple enumerations, like [basemap styles](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html#basemap), [renderer types](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-Renderer.html#type), [symbol types](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-Symbol.html#type), [layer types](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html#type), ... + +Example: `basemapsWithAPIKeys` + +``` +${1|arcgis-imagery,arcgis-imagery-standard,arcgis-imagery-labels,arcgis-light-gray,arcgis-dark-gray,arcgis-navigation,arcgis-navigation-night,arcgis-streets,arcgis-streets-night,arcgis-streets-relief,arcgis-topographic,arcgis-oceans,osm-standard,osm-standard-relief,osm-streets,osm-streets-relief,osm-light-gray,osm-dark-gray,arcgis-terrain,arcgis-community,arcgis-charted-territory,arcgis-colored-pencil,arcgis-nova,arcgis-modern-antique,arcgis-midcentury,arcgis-newspaper,arcgis-hillshade-light,arcgis-hillshade-dark|} +``` + +### Other snippets + +The list of snippets within [html.json](./snippets/html.json), and [json.json](./snippets/json.json) is short, so we encourage you to check yourself. -* Initialization of classes. (E.g. `new FeatureLayer({ ... })`). -* JS objects with constructor properties (`{ url: ... }`). -* Common procedures (E.g. query a layer, disable navigation, project a geometry, ...). -* Enumeration of possible values (E.g: basemap styles, renderer and symbol types, ...). ## Development environment -A local development environment with instructions is provided in the [dev folder](./dev). +At this point you are almost ready to start doing your contribution. + +Go to the [dev folder](./dev), and read the instructions to learn how to setup and use your local development environment. ## Add your changes +Do you have your contribution ready? If so, keep reading. + Although it is possible to make your changes directly through the GitHub web interface, we recommend that you add your changes to a local copy of the repository. **Which branch should I use?**
@@ -55,7 +180,8 @@ If your are not doing a lot of changes you can use `master`, otherwise we encour * For changes associated with an issue: `/-`. * For changes without an associated issue: `/`. -**These are the steps required:** +**Checklist before doing a Pull Request**
+Please ensure that you have completed the following steps before making a PR: 1. Update the corresponding file in the [snippets folder](./snippets). Depending on the type of snippet, you need to will have to modify: `html.json`, `javascript.json`, `json.json`, `typescript.json`, ... 1. Respects the alphabetical order, snippets are sorted by `name`). @@ -92,6 +218,8 @@ For `` you should use: ## Pull request +> **Reminder**: before doing a PR, ensure that you have completed the checklist included in [Add your changes](#add-your-changes). + When submitting, if you are working on an issue, remember to [link your PR to it](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue), by use a supported keyword in the pull request description. For example: "`Closes #10`" or "`Fixes Esri/arcgis-js-vscode-snippets#10`". ## Conventions diff --git a/dev/README.md b/dev/README.md index 99ef4d0..8f9d5d1 100644 --- a/dev/README.md +++ b/dev/README.md @@ -6,9 +6,6 @@ To contribute without messing around with other snippets you might use in other **Table of Contents**: -- [Before you get started](#before-you-get-started) - - [How Visual Studio Intellisense works](#how-visual-studio-intellisense-works) - - [Project folder structure](#project-folder-structure) - [Getting started](#getting-started) - [Add a new snippet](#add-a-new-snippet) - [Enhance an existing snippet](#enhance-an-existing-snippet) @@ -23,40 +20,6 @@ To contribute without messing around with other snippets you might use in other - -## Before you get started - -### How Visual Studio Intellisense works - -The first thing you should familiarize yourself with, if you have never created a custom snippet in Visual Studio Code, is the different components that make up Intellisense (intelligent code completion) in Visual Studio Code: - -![](../builder/assets/use-sample.png) - -These fields are shown in the image above: `Name`, `prefix`, `Body`, and `Description`, have to be defined in a JSON object that looks like this: - -```js -"Name": { -"prefix": "PREFIX", -"body": [ - "BODY", -], -"description": "Description" -} -``` - -Later on, we will see where we will have to enter this code. To help you creating the snippet code we provide you with an user interface, the [Snippets Builder](https://esri.github.io/arcgis-js-vscode-snippets/builder/). - -### Project folder structure - -Let's see the most relevant files and folders in this repository and what they contain: - -* **[.vscode/](../.vscode/)**: the most important file in this folder is `development.code-snippets` that you will use to test the snippets you will contribute. -* **[builder/](../builder/)**: this folder include the code of the [Snippets Builder application](https://esri.github.io/arcgis-js-vscode-snippets/builder/). -* **[dev/](.)**: the folder you are currently in have the files to help you during your development proccess, and the instructions to use them. -* **[images/](.)**: contains the assets being used in the README files as well as the icon being use in the Visual Studio Code marketplace. -* **[snippets/](../snippets/)**: this folder have all the available snippets within the official extension that is published (defined in the [package.json file](../package.json)). -* **[CHANGELOG.md](../CHANGELOG.md)**: this file keeps a log or record of all notable changes made to the project. - ## Getting started First of all, **fork and clone locally** this repository. diff --git a/images/places-and-choices.png b/images/places-and-choices.png new file mode 100644 index 0000000000000000000000000000000000000000..8c71bb5ee358153a418d8ffaa9d8605e0ae61476 GIT binary patch literal 121562 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 ~y_}pJ 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ⅆ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 F{{yqruKfT2 literal 0 HcmV?d00001 diff --git a/images/vscode-intelisense-components.png b/images/vscode-intelisense-components.png new file mode 100644 index 0000000000000000000000000000000000000000..c24f36fe8e8820dc33a784005fc49655d48eaef8 GIT binary patch literal 37491 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 z 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 XI;+t2L?XZ97x1yOfgO8d?T`HjopR_s literal 0 HcmV?d00001 From fba96849aa570a0611eaf49e45db6dd9a22fc1cc Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Fri, 20 Oct 2023 11:38:40 +0200 Subject: [PATCH 05/11] doc: scale images within conventions --- CONTRIBUTING.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d9fc2c3..7a6c25c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -228,7 +228,7 @@ When submitting, if you are working on an issue, remember to [link your PR to it Prefix are the trigger words that display the snippet in the Intellisense: -![Image showing how the prefix shows in VS Code](./builder/assets/snippet-prefix.png) +Image showing how the prefix shows in VS Code * Avoid acronyms (like `sms` for `SimpleMarkerSymbol`) * Use camelCase (not [snake_case](https://en.wikipedia.org/wiki/Snake_case), UPPERCASE, etc.) @@ -247,7 +247,7 @@ Prefix are the trigger words that display the snippet in the Intellisense: Name is the short description that follows the prefix: -![Image showing how the name shows in VS Code](./builder/assets/snippet-name.png) +Image showing how the name shows in VS Code * Start your sentence with capitals (do not capitalize, uppercase) * Use plain english using spaces as needed (don't use [camelCase](https://en.wikipedia.org/wiki/Camel_case), [snake_case](https://en.wikipedia.org/wiki/Snake_case), [PascalCase](https://www.freecodecamp.org/news/snake-case-vs-camel-case-vs-pascal-case-vs-kebab-case-whats-the-difference/#pascal-case), or [kebab-case](https://en.wikipedia.org/wiki/Letter_case#Kebab_case)). @@ -265,7 +265,7 @@ Name is the short description that follows the prefix: Description is a long description that precedes the body: -![Image showing how the description shows in VS Code](./builder/assets/snippet-description.png) +Image showing how the description shows in VS Code * It should be a proper description of what the snippet does, and reuse text from the API reference whenever possible. * If it is a snippet related to a class/module include the AMD and ESM paths. @@ -282,7 +282,7 @@ Examples: Body contain the code snippet that will be inserted: -![Image showing how the body shows in VS Code](./builder/assets/snippet-body.png) +Image showing how the body shows in VS Code > If you want to suggest a change, please [check the issue #19](https://github.com/Esri/arcgis-js-vscode-snippets/issues/19). From 15ba6846878bc7b9973a4e67194acc29b7591481 Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Fri, 20 Oct 2023 19:44:49 +0200 Subject: [PATCH 06/11] docs: add new conventions for prefix, description and body #19 #10 #21 --- CONTRIBUTING.md | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7a6c25c..7349e39 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -184,8 +184,9 @@ If your are not doing a lot of changes you can use `master`, otherwise we encour Please ensure that you have completed the following steps before making a PR: 1. Update the corresponding file in the [snippets folder](./snippets). Depending on the type of snippet, you need to will have to modify: `html.json`, `javascript.json`, `json.json`, `typescript.json`, ... - 1. Respects the alphabetical order, snippets are sorted by `name`). - 2. Make sure your snippet meets [our conventions]((#conventions)). + 1. Make sure your snippet meets [our conventions]((#conventions)). + 2. Make sure snippets are sorted in the alphabetical order, by `name`). Use any [JSON ABC](https://novicelab.org/jsonabc/) **checking "Spare plain Arrays"**. + 3. Validate JSON and indentation with [JSONLint](https://jsonlint.com/). 2. Update the snippets table within the [README.md](./README.md) to reflect the changes. 3. Update the [CHANGELOG.md](./CHANGELOG.md) file to reflect the changes. 4. Commit your changes. @@ -220,7 +221,9 @@ For `` you should use: > **Reminder**: before doing a PR, ensure that you have completed the checklist included in [Add your changes](#add-your-changes). -When submitting, if you are working on an issue, remember to [link your PR to it](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue), by use a supported keyword in the pull request description. For example: "`Closes #10`" or "`Fixes Esri/arcgis-js-vscode-snippets#10`". +When submitting: +* If you are adding a new snippet, please provide a codepen example to help during the review process. +* If you are working on an issue, remember to [link your PR to it](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue), by use a supported keyword in the pull request description. For example: "`Closes #10`" or "`Fixes Esri/arcgis-js-vscode-snippets#10`". ## Conventions @@ -236,6 +239,8 @@ Prefix are the trigger words that display the snippet in the Intellisense: * **Class properties objects**: add the suffix "Props". * **Class constructors**: match JS SDK capitalization. +> **⚠️ Important**: when changing an exist prefix, or backwards compatibility, if the new prefix is totally different, instead of removing the previous prefix, add a new one (`prefix` support `strings` and `arrays`). + **Examples**: * Class constructors: `SimpleMarkerSymbol`, `MapView`, ... * Class properties objects: `popupTemplateProps`, `featureReductionClusterProps`... @@ -251,7 +256,7 @@ Name is the short description that follows the prefix: * Start your sentence with capitals (do not capitalize, uppercase) * Use plain english using spaces as needed (don't use [camelCase](https://en.wikipedia.org/wiki/Camel_case), [snake_case](https://en.wikipedia.org/wiki/Snake_case), [PascalCase](https://www.freecodecamp.org/news/snake-case-vs-camel-case-vs-pascal-case-vs-kebab-case-whats-the-difference/#pascal-case), or [kebab-case](https://en.wikipedia.org/wiki/Letter_case#Kebab_case)). -* Keep the name short as possible (< 35 characters) to avoid ellipsis ("..."). +* Keep the name short as possible to avoid ellipsis ("..."). Ideally it should be less than 35 characters, but it also depends on the prefix(es) length, so try and adjust it. **Examples**: * `City scale 3D callout` @@ -265,16 +270,17 @@ Name is the short description that follows the prefix: Description is a long description that precedes the body: -Image showing how the description shows in VS Code +Image showing how the description shows in VS Code * It should be a proper description of what the snippet does, and reuse text from the API reference whenever possible. -* If it is a snippet related to a class/module include the AMD and ESM paths. +* For "Initialization of classes" snippets finish with: `AMD path: | ESM path: ` +* For "JS objects with constructor properties" finish with: `This snippet is usually used to set the property \"\" of a ` Examples: -* `Create an instance of MapView using a Map.` -* `Create an instance of MapView using a WebMap.` -* `Convert a geometry from Web Mercator units (wkid: 3857) to geographic units (wkid: 4326). AMD path: esri/geometry/support/webMercatorUtils | ESM path: @arcgis/core/geometry/support/webMercatorUtils.js` -* `Create a PictureFillSymbol with customizable image-based patterns for polygons.` +* `Load the config, Map and MapView modules using require.` +* `Use of these basemaps requires a valid ArcGIS Online organizational subscription or an ArcGIS Enterprise license.` +* `Specifies how features are placed on the vertical axis (z). This snippets should be used to set the property "elevationInfo" of a FeatureLayer, CSVLayer, WFSLayer, SceneLayer, StreamLayer, GeoJSONLayer, IntegratedMeshLayer, etc.` +* `Creates the labelingInfo for labels in a layer for 3D maps. It is normally used in the property "labelingInfo[]" of a FeatureLayer, SceneLayer or any layyer with that property within a SceneView. AMD path: esri/layers/support/LabelClass | ESM path: @arcgis/core/layers/support/LabelClass.js` > If you want to suggest a change, please [check the issue #21](https://github.com/Esri/arcgis-js-vscode-snippets/issues/21). @@ -377,6 +383,7 @@ new MapView({ #### 5) Conventions for constructor properties * Sort properties by alphabetical order. + * For "JS objects with constructor properties" `type` is an exception. It can be set as the first one. * Include what you think are the most common properties. * If a property expects another instance of class, add the name of the snippet (if it exists). * When a property support multiple value types, add just a placeholder. From 0a26fdc945187e5d221d43ed32e25c717f9d0448 Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Fri, 20 Oct 2023 19:55:14 +0200 Subject: [PATCH 07/11] docs: fixing error in a example JS snippet --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2e05ba1..5c954bc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -129,9 +129,9 @@ Examples: `featureReductionClusterProps` clusterMinSize: ${2:16.5}, clusterRadius: ${3:60}, labelingInfo: ${4:LabelClass}, - labelsVisible: true + labelsVisible: true, popupEnabled: true, - popupTemplate: ${5:PopupTemplate}, + popupTemplate: ${5:PopupTemplate} } ``` From 040f511e4383fbc01d17d3ecfd2c0dc77e03a9d6 Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Fri, 20 Oct 2023 20:21:24 +0200 Subject: [PATCH 08/11] doc & fix: removing SCSS snippets and HTML snippet to load calcite --- .vscode/development.code-snippets | 12 +----------- dev/README.md | 1 - snippets/html.json | 9 --------- snippets/scss.json | 13 ------------- 4 files changed, 1 insertion(+), 34 deletions(-) delete mode 100644 snippets/scss.json diff --git a/.vscode/development.code-snippets b/.vscode/development.code-snippets index 9bec482..f308f82 100644 --- a/.vscode/development.code-snippets +++ b/.vscode/development.code-snippets @@ -85,15 +85,5 @@ ], "description": "Hello world usint TypeScript and React", "prefix": "helloWorldTSX" - }, - - // SCSS only snippet (*.scss) - "A SCSS snippet": { - "scope": "scss", - "prefix": "smallMap", - "body": [ - ".viewDiv{ width: 400px; height: 400px }" - ], - "description": "Set viewDiv to 400px x 400px" - }, + } } \ No newline at end of file diff --git a/dev/README.md b/dev/README.md index 8f9d5d1..c6128e8 100644 --- a/dev/README.md +++ b/dev/README.md @@ -46,7 +46,6 @@ To be able to test your modifications, we encourage you to follow these steps, e * 1\) Open in VS Code a file and start typing your snippet prefix. You can use any of the provided files within the folder [playgrounds](./playgrounds/) to test it. Choose the right one based on the type of snippets you want to contribute: * **index.html** for HTML, CSS and JavaScript snippets. * **config.json** or **data.geojson** for JSON snippets. - * **main.scss** for SCSS snippets. * **index.ts** for TypeScript snippets. * **index.tsx** for TypeScript React snippets. * 2\) If everything works as expected, follow the [steps to add your changes](https://github.com/Esri/arcgis-js-vscode-snippets/blob/master/CONTRIBUTING.md#add-your-changes). diff --git a/snippets/html.json b/snippets/html.json index 2448b81..c146646 100644 --- a/snippets/html.json +++ b/snippets/html.json @@ -22,15 +22,6 @@ "" ], "description": "Sets /app folder to be able to load packages using require([\"app/your_file.js\"]);" - }, - "Get Calcite": { - "prefix": "calcite", - "body": [ - "", - "", - "" - ], - "description": "Get Calcite library" } } diff --git a/snippets/scss.json b/snippets/scss.json deleted file mode 100644 index d19ee55..0000000 --- a/snippets/scss.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Full Map": { - "prefix": "fmap-sass", - "body": [ - "html, body, #viewDiv{", - "padding:0;", - "margin:0;", - "height:100%;", - "width:100%;}" - ], - "description": "Full Map CSS" - } -} \ No newline at end of file From 77e8242c1e2e3b5483762f28056c745acbc13dae Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Fri, 20 Oct 2023 20:22:10 +0200 Subject: [PATCH 09/11] doc: minor enhancement to prefix convenction --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5c954bc..c595ad6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -239,7 +239,7 @@ Prefix are the trigger words that display the snippet in the Intellisense: * **Class properties objects**: add the suffix "Props". * **Class constructors**: match JS SDK capitalization. -> **⚠️ Important**: when changing an exist prefix, or backwards compatibility, if the new prefix is totally different, instead of removing the previous prefix, add a new one (`prefix` support `strings` and `arrays`). +> **⚠️ Important**: when changing an exist prefix, or backwards compatibility, if the new prefix is totally different, instead of removing the previous prefix, add a new one (`prefix` support `strings` and `arrays`), but new one as the first element in the array. **Examples**: * Class constructors: `SimpleMarkerSymbol`, `MapView`, ... From 21373233656117d6e62e44c056c3abb00767824f Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Fri, 20 Oct 2023 20:23:11 +0200 Subject: [PATCH 10/11] doc: updating reference table to match current snippets updated by #30 --- README.md | 63 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index bfdf2d6..3e31861 100644 --- a/README.md +++ b/README.md @@ -74,38 +74,39 @@ This extension adds a new option to the activity bar that lets you quickly brows | Prefix | Description | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| require | Load the Map and MapView modules using require | -| map | Create a map and view. Contains placeholders for the basemap, container, zoom and center | -| scene | Create a scene and view. Contains placeholders to replace the basemap and the container value. | -| webmap | Create a map from a WebMap. Contains a placeholder for the portal item id and for the container. | -| webscene | Create a 3D map from a WebScene. Contains a placeholder for the portal item id and for the container. | +| require | Load the Map and MapView modules using require +| requireApiKeys | Load the config, Map and MapView modules using require require | +| MapViewMap | Create 2D MapView using a Map | +| SceneViewMap | Create 3D SceneView using a Map. | +| MapViewWebMap | Create 2D map using a WebMap and a portalItem. | +| SceneViewWebScene | Create 3D map using a WebScene and a portalItem.. | | addLayerFromPortalItem | Add a new layer to the map using a portal item id. Contains a placeholder for the portal item id. | -| simpleRenderer | Generate a simple renderer. Contains a placeholder for the symbol. | -| uniqueValueRenderer | Generate a unique value renderer. Contains a placeholder for the field, the symbol and it generates a uniqueValueInfos array with placeholers for value, symbol and label for the legend. | -| classBreaksRenderer | Generate a class breaks renderer. Contains a placeholder for the field, the default symbol and it generates a classBreakInfos array with placeholers for minValue, maxValue, symbol and label for the legend. | -| sizeVar | Creates a SizeVariable with 2 size stops. The axis property is only used in 3D. It contains placeholders for field, normalizationField, the legend title and the size stop values. | -| colorVar | Creates a ColorVariable with 2 color stops. It contains placeholders for field, normalizationField, the legend title and the color stop values. | -| clusterConfig | Generates the configuration for clustering in a MapView. This should be set on layers containing point geometry. | -| labeling2d | Creates the labelingInfo for labels in a MapView. | -| labeling3d | Creates the labelingInfo for labels in a SceneView. | -| simpleMarkerSymbol | Creates a SimpleMarkerSymbol in a MapView. Contains placeholder for style. | -| pictureMarkerSymbol | Creates a PictureMarkerSymbol in a MapView. | -| simpleLineSymbol | Creates a SimpleLineSymbol in a MapView. Contains placeholder for style, cap and join. | -| simpleFillSymbol | Creates a SimpleFillSymbol in a MapView. Contains placeholder for style. | -| pictureFillSymbol | Creates a PictureFillSymbol in a MapView. | -| icon | Creates a PointSymbol3D with IconSymbol3DLayer in a SceneView. Contains placeholders for primitive, color and size.. | -| line | Creates a LineSymbol3D with a LineSymbol3DLayer in a SceneView. Contains placeholders for color and size. | -| path | Creates a LineSymbol3D with a PathSymbol3DLayer in a SceneView. Contains placeholders for profile, color, width, height, join, cap, anchor and profileRotation. | -| fill | Creates a PolygonSymbol3D with a FillSymbol3DLayer in a SceneView. Contains placeholders for style, material color and outline color. | -| water | Creates a PolygonSymbol3D with a WaterSymbol3DLayer in a SceneView. Contains placeholder for waterbodySize and waveStrength. | -| extrude | Creates a PolygonSymbol3D with an ExtrudeSymbol3DLayer in a SceneView. Contains placeholders for material color and size. | -| mesh | Creates a MeshSymbol3D with a FillSymbol3DLayer in a SceneView. Contains placeholder for color. | -| edges | Creates an edges object that can be applied to a FillSymbol3DLayer. Contains placeholders for the type of edges (solid or sketch), the color, the size and the extensionLength. | -| calloutSmall | Generates the verticalOffset for a city scale level and the callout property. They should be set on PointSymbol3D or LabelSymbol3D. Contains placeholders for size, color and border color. | -| calloutLarge | Generates the verticalOffset for a globe scale level and the callout property. They should be set on PointSymbol3D or LabelSymbol3D. Contains placeholders for size, color and border color. | -| elevationInfo | Creates an object for elevationInfo to be set on layers. Contains placeholders for mode, offset, arcade driven expression and unit. | -| background | Creates an environment object for changing the background of a scene. It should be set on a SceneView and it contains a placeholder for color. | -| basemapStyle | List all basemap strings | +| simpleRendererProps | Renders all features in a Layer with one Symbol. This snippet is usually used to set the property \"renderer\" of a FeatureLayer, SceneLayer, MapImageLayer, CSVLayer, GeoJSONLayer, OGCFeatureLayer, WFSLayer, or StreamLayer.. | +| uniqueValueRendererProps | Generate a unique value renderer. This snippet is usually used to set the property \"renderer\" of a FeatureLayer, SceneLayer, MapImageLayer, CSVLayer, GeoJSONLayer, OGCFeatureLayer, WFSLayer, StreamLayer, ImageryLayer, or ImageryTileLayer | +| classBreaksRendererProps | Generate a ClassBreaksRenderer. This snippet is usually used to set the property \"renderer\" of a FeatureLayer, SceneLayer, MapImageLayer, CSVLayer, GeoJSONLayer, OGCFeatureLayer, WFSLayer, StreamLayer, ImageryLayer, or ImageryTileLayer. | +| sizeVisualVariableProps | Set size of features based on a numeric value. Creates a SizeVariable with 2 size stops. The axis property is only used in 3D. This snippet is usually used to set the property \"visualVariables[]\" of a renderer. | +| colorVarProps | Generate a ColorVariable with 2 color stops. Used to visualize features along a continuous color ramp based on the values of a numeric attribute field or an expression. This snippet is usually used to set the property \"visualVariables[]\" of a renderer class. | +| featureReductionClusterProps | Generates the configuration for clustering in a MapView. This should be set on layers containing point geometry. This snippet is usually used to set the property \"featureReduction\" of a FeatureLayer, CSVLayer, GeoJSONLayer, WFSLayer, or OGCFeatureLayer geometry. | +| LabelClass2D | Creates the labelingInfo for labels in a layer for 2D maps. It in normally used in the property \"labelingInfo[]\" of a FeatureLayer, CSVLayer, GeoJSONLayer, StreamLayer, OGCFeatureLayer, or WFSLayer in 2D MapViews. | +| LabelClass3D | Creates the labelingInfo for labels in a layer for 3D maps. It is normally used in the property \"labelingInfo[]\" of a FeatureLayer, SceneLayer or any layyer with that property within a SceneView. | +| simpleMarkerSymbolProps | Create a SimpleMarkerSymbol for rendering 2D Point geometries with a simple shape and color in either a MapView or a SceneView, but for 3D it is recommended to use PointSymbol3D. This snippet is usually used to set the property \"symbol\" of renderers or individual graphics.. | +| pictureMarkerSymbolProps | Create a PictureMarkerSymbol, allowing custom image-based markers for points on maps. | +| simpleLineSymbolProps | Create a SimpleLineSymbol for rendering 2D polyline geometries in a 2D or 3D view, but for 3D it is recommended to use LineSymbol3D. It can be used in several properties like \"symbol\" of renderers or individual graphics, but also \"outline\" of marker and fill symbols. | +| simpleFillSymbolProps | Create a SimpleFillSymbol for rendering 2D polygon geometries in a 2D or 3D view, but for 3D it is recommended to use PolygonSymbol3D. It can be filled with a solid color, or a pattern. This snippet is usually used to set the property \"symbol\" of renderers or individual graphics.. | +| pictureFillSymbolProps | CPictureFillSymbol uses an image in a repeating pattern to symbolize polygon features in a 2D MapView. patterns for polygons. This snippet is usually used to set the property \"symbol\" of renderers or individual graphics. | +| pointSymbol3dIconProps | Generate PointSymbol3D with a IconSymbol3DLayer in a SceneView. Available shapes: circle, square, cross, x, kite, and triangle. This snippet is usually used to set the property \"symbol\" of renderers or individual graphics. | +| lineSymbol3DProps | Generate LineSymbol3D with a LineSymbol3DLayer in a SceneView. This snippet is usually used to set the property \"symbol\" of renderers or individual graphics. | +| lineSymbol3DPathProps | Generate LineSymbol3D with a PathSymbol3DLayer. Renders Polyline geometries by extruding a 2D profile along the line. This snippet is usually used to set the property \"symbol\" of renderers or individual graphics. | +| meshSymbol3DProps | Generate MeshSymbol3D with a FillSymbol3DLayer in a SceneLayer in a SceneView. This snippet is usually used to set the property \"symbol\" of renderers or individual graphics. | +| waterSymbol3dLayerProps | WaterSymbol3DLayer is used to render Polygon geometries as realistic, animated water surfaces, therefore it can only be used inside a PolygonSymbol3D. This snippet is usually used to set the property \"symbol\" of renderers or individual graphics. | +| polygonSymbol3DExtrudeProps | Generate PolygonSymbol3D with a ExtrudeSymbol3DLayer to be used in a SceneView. It render polygon geometries by extruding them upward from the ground, creating a 3D volumetric object. This snippet is usually used to set the property \"symbol\" of renderers or individual graphics. | | +| edges3DProps | Add edge rendering visualization to existing symbols. Can only be applied to \"edges\" property of FillSymbol3DLayer on MeshSymbol3D or ExtrudeSymbol3DLayer on PolygonSymbol3D. | +| callout3DSmallProps | Generates a Callout3D with a verticalOffset for a city scale level and the callout property. They should be set on the property \"callout\" of PointSymbol3D or LabelSymbol3D. | +| callout3DLargeProps | Generates a Callout3D with a verticalOffset for a world scale level and the callout property. They should be set on the property \"callout\" of PointSymbol3D or LabelSymbol3D. | +| elevationInfoProps | Specifies how features are placed on the vertical axis (z). This snippets should be used to set the property \"elevationInfo\" of a FeatureLayer, CSVLayer, WFSLayer, SceneLayer, StreamLayer, GeoJSONLayer, IntegratedMeshLayer, etc. | +| sceneViewEnvironmentProps | Creates an environment object for changing the background of a scene. This snippet is usually used to set the property \"environment\" of the SceneView. | +| basemapsWithAPIKeys | List all available map styles to be used without API keys. Use of these basemaps requires an ArcGIS Developer subscription or a valid ArcGIS Online organizational subscription | +| basemapsWithoutAPIKeys | List all available map styles to be used without API keys. Use of these basemaps requires an ArcGIS Developer subscription or a valid ArcGIS Online organizational subscription | ### [TypeScript snippets](snippets/typescript.json) From 4732a089d43aa010b4b048921af792963b42b1e6 Mon Sep 17 00:00:00 2001 From: Raul Jimenez Ortega Date: Fri, 20 Oct 2023 20:27:47 +0200 Subject: [PATCH 11/11] docs: add changes after matching conventions #30 --- CHANGELOG.md | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c841e9..5ce30b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,4 +32,40 @@ All notable changes to the "arcgis-jsapi-snippets" extension will be documented - Added React Map snippet - Added Calcite snippet -- Added latest versions to the getAPI snippet \ No newline at end of file +- Added latest versions to the getAPI snippet + +## [Version 1.1.5] + +- Removed Calcite snippet +- Added `requireApiKeys` snippet +- Added `basemapsWithoutAPIKeys` snippet +- New prefixes added to existing snippets to match conventions: + - `map` -> `MapViewMap` + - `scene` -> `SceneViewMap` + - `webmap` -> `MapViewWebMap` + - `webscene` -> `SceneViewWebScene` + - `simpleRenderer` -> `simpleRendererProps` + - `uniqueValueRenderer` -> `uniqueValueRendererProps` + - `classBreaksRenderer` -> `classBreaksRendererProps` + - `sizeVar` -> `sizeVisualVariableProps` + - `colorVar` -> `colorVarProps` + - `clusterConfig` -> `featureReductionClusterProps` + - `labeling2d` -> `LabelClass2D` + - `labeling3d` -> `LabelClass3D` + - `simpleMarkerSymbol` -> `simpleMarkerSymbolProps` + - `pictureMarkerSymbol` -> `pictureMarkerSymbolProps` + - `simpleLineSymbol` -> `simpleLineSymbolProps` + - `simpleFillSymbol` -> `simpleFillSymbolProps` + - `pictureFillSymbol` -> `pictureFillSymbolProps` + - `icon` -> `pointSymbol3dIconProps` + - `line` -> `lineSymbol3DProps` + - `path3d` -> `lineSymbol3DPathProps` + - `fillMesh3d` -> `fillMesh3dProps, meshSymbol3DProps` + - `waterSymbol3dLayer` -> `waterSymbol3dLayerProps` + - `extrudePolygon3d` -> `polygonSymbol3DExtrudeProps` + - `edges` -> `edges3DProps` + - `calloutSmall` -> `callout3DSmallProps` + - `calloutLarge` -> `callout3DLargeProps` + - `elevationInfo` -> `elevationInfoProps` + - `background` -> `sceneViewEnvironmentProps` + - `basemapStyle` -> `basemapsWithAPIKeys`