├── .browserslistrc ├── .eslintignore ├── .eslintrc.js ├── .github └── commit-convention.md ├── .gitignore ├── .postcssrc.js ├── .prettierignore ├── .prettierrc.js ├── .vscode └── settings.json ├── CHANGELOG.md ├── LICENSE ├── README.md ├── babel.config.js ├── dist ├── demo.html ├── vue-azure-maps.common.js ├── vue-azure-maps.common.js.map ├── vue-azure-maps.umd.js ├── vue-azure-maps.umd.js.map ├── vue-azure-maps.umd.min.js └── vue-azure-maps.umd.min.js.map ├── docs ├── 404.html ├── assets │ ├── css │ │ └── 0.styles.bfe8f6c0.css │ ├── img │ │ └── search.83621669.svg │ └── js │ │ ├── 10.ae5c7f89.js │ │ ├── 11.5b7b9255.js │ │ ├── 12.d7a73b41.js │ │ ├── 13.baefac84.js │ │ ├── 14.1a6d52e9.js │ │ ├── 15.68aefaa7.js │ │ ├── 16.26148cbc.js │ │ ├── 17.ba684306.js │ │ ├── 18.2c5c972f.js │ │ ├── 19.833cf518.js │ │ ├── 2.a1beb208.js │ │ ├── 20.c7ef9250.js │ │ ├── 21.03c69513.js │ │ ├── 22.7ad94c47.js │ │ ├── 23.7df41de2.js │ │ ├── 24.b9f455f5.js │ │ ├── 25.f0592366.js │ │ ├── 26.f847646c.js │ │ ├── 27.8b7b6227.js │ │ ├── 28.d8fc4988.js │ │ ├── 29.af817759.js │ │ ├── 3.f56e32e6.js │ │ ├── 30.32a82dcd.js │ │ ├── 31.72ae5f1d.js │ │ ├── 32.fcb673e6.js │ │ ├── 4.334ce881.js │ │ ├── 5.0775b545.js │ │ ├── 6.0f60fbe7.js │ │ ├── 7.e21efecb.js │ │ ├── 8.2d109972.js │ │ ├── 9.58c36026.js │ │ └── app.31952048.js ├── components │ ├── AzureMap.html │ ├── controls │ │ ├── AzureMapCompassControl.html │ │ ├── AzureMapFullscreenControl.html │ │ ├── AzureMapGeolocationControl.html │ │ ├── AzureMapPitchControl.html │ │ ├── AzureMapStyleControl.html │ │ └── AzureMapZoomControl.html │ ├── geometries │ │ ├── AzureMapCircle.html │ │ ├── AzureMapLineString.html │ │ ├── AzureMapPoint.html │ │ └── AzureMapPolygon.html │ ├── layers │ │ ├── AzureMapBubbleLayer.html │ │ ├── AzureMapHeatMapLayer.html │ │ ├── AzureMapImageLayer.html │ │ ├── AzureMapLineLayer.html │ │ ├── AzureMapPolygonLayer.html │ │ ├── AzureMapSymbolLayer.html │ │ └── AzureMapTileLayer.html │ └── other │ │ ├── AzureMapDataSource.html │ │ ├── AzureMapHtmlMarker.html │ │ ├── AzureMapImageSpriteIcon.html │ │ ├── AzureMapPopup.html │ │ ├── AzureMapSpiderClusterManager.html │ │ └── AzureMapUserPosition.html ├── guide │ ├── installation.html │ └── introduction.html ├── img │ ├── android-icon-144x144.png │ ├── android-icon-192x192.png │ ├── android-icon-256x256.png │ ├── android-icon-384x384.png │ ├── android-icon-512x512.png │ ├── apple-icon-120x120.png │ ├── apple-icon-152x152.png │ ├── apple-icon-180x180.png │ ├── apple-icon-60x60.png │ ├── apple-icon-76x76.png │ ├── apple-icon.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ └── mstile-70x70.png ├── index.html └── logo.png ├── jest.config.js ├── package.json ├── public ├── favicon.ico └── index.html ├── scripts ├── release.js └── verifyCommitMsg.js ├── src ├── App.vue ├── assets │ └── logo.png ├── components │ └── vue-azure-maps │ │ ├── AzureMapExample.vue │ │ └── AzureMapSpiderClusterManagerExample.vue ├── main.ts ├── plugin │ ├── components │ │ ├── AzureMap.vue │ │ ├── AzureMapDataSource.vue │ │ ├── AzureMapHtmlMarker.vue │ │ ├── AzureMapImageSpriteIcon.vue │ │ ├── AzureMapPopup.vue │ │ ├── AzureMapSpiderClusterManager.vue │ │ ├── AzureMapUserPosition.vue │ │ ├── controls │ │ │ ├── AzureMapCompassControl.vue │ │ │ ├── AzureMapControl.vue │ │ │ ├── AzureMapFullscreenControl.vue │ │ │ ├── AzureMapGeolocationControl.vue │ │ │ ├── AzureMapPitchControl.vue │ │ │ ├── AzureMapStyleControl.vue │ │ │ └── AzureMapZoomControl.vue │ │ ├── geometries │ │ │ ├── AzureMapCircle.vue │ │ │ ├── AzureMapLineString.vue │ │ │ ├── AzureMapPoint.vue │ │ │ └── AzureMapPolygon.vue │ │ └── layers │ │ │ ├── AzureMapBubbleLayer.vue │ │ │ ├── AzureMapHeatMapLayer.vue │ │ │ ├── AzureMapImageLayer.vue │ │ │ ├── AzureMapLineLayer.vue │ │ │ ├── AzureMapPolygonLayer.vue │ │ │ ├── AzureMapSymbolLayer.vue │ │ │ └── AzureMapTileLayer.vue │ ├── index.ts │ ├── install.ts │ ├── modules │ │ ├── controls │ │ │ ├── fullscreen.ts │ │ │ └── geolocation.ts │ │ └── other │ │ │ └── spiderClusterManager.ts │ ├── shims-atlas.d.ts │ ├── utils │ │ ├── add-map-event-listeners.ts │ │ ├── bind-props.ts │ │ ├── dependency-injection.ts │ │ ├── dom.ts │ │ ├── find-parent-component-by-name.ts │ │ ├── get-options-from-props.ts │ │ ├── index.ts │ │ └── warn.ts │ └── vue-azure-maps.ts ├── setup │ └── index.ts ├── shims-tsx.d.ts └── shims-vue.d.ts ├── tests └── unit │ └── .eslintrc.js ├── tsconfig.json ├── types ├── index.d.ts ├── vue-azure-maps.d.ts └── vue.d.ts ├── vue.config.js ├── vuepress ├── .vuepress │ ├── config.js │ └── public │ │ ├── img │ │ ├── android-icon-144x144.png │ │ ├── android-icon-192x192.png │ │ ├── android-icon-256x256.png │ │ ├── android-icon-384x384.png │ │ ├── android-icon-512x512.png │ │ ├── apple-icon-120x120.png │ │ ├── apple-icon-152x152.png │ │ ├── apple-icon-180x180.png │ │ ├── apple-icon-60x60.png │ │ ├── apple-icon-76x76.png │ │ ├── apple-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ ├── mstile-150x150.png │ │ ├── mstile-310x150.png │ │ ├── mstile-310x310.png │ │ └── mstile-70x70.png │ │ └── logo.png ├── README.md ├── components │ ├── AzureMap.md │ ├── controls │ │ ├── AzureMapCompassControl.md │ │ ├── AzureMapFullscreenControl.md │ │ ├── AzureMapGeolocationControl.md │ │ ├── AzureMapPitchControl.md │ │ ├── AzureMapStyleControl.md │ │ └── AzureMapZoomControl.md │ ├── geometries │ │ ├── AzureMapCircle.md │ │ ├── AzureMapLineString.md │ │ ├── AzureMapPoint.md │ │ └── AzureMapPolygon.md │ ├── layers │ │ ├── AzureMapBubbleLayer.md │ │ ├── AzureMapHeatMapLayer.md │ │ ├── AzureMapImageLayer.md │ │ ├── AzureMapLineLayer.md │ │ ├── AzureMapPolygonLayer.md │ │ ├── AzureMapSymbolLayer.md │ │ └── AzureMapTileLayer.md │ └── other │ │ ├── AzureMapDataSource.md │ │ ├── AzureMapHtmlMarker.md │ │ ├── AzureMapImageSpriteIcon.md │ │ ├── AzureMapPopup.md │ │ ├── AzureMapSpiderClusterManager.md │ │ └── AzureMapUserPosition.md └── guide │ ├── installation.md │ └── introduction.md └── yarn.lock /.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /dist/ 2 | /tests/unit/coverage/ 3 | 4 | # Ignore third party custom modules 5 | /src/plugin/modules/ 6 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true, 5 | }, 6 | extends: [ 7 | 'plugin:vue/recommended', 8 | 'eslint:recommended', 9 | '@vue/typescript/recommended', 10 | '@vue/prettier', 11 | '@vue/prettier/@typescript-eslint', 12 | ], 13 | rules: { 14 | '@typescript-eslint/no-empty-function': 'off', 15 | '@typescript-eslint/no-empty-interface': 'off', 16 | // https://vuejs.org/v2/style-guide/#Private-property-names-essential 17 | '@typescript-eslint/camelcase': [ 18 | 'error', 19 | { 20 | properties: 'always', 21 | allow: ['$_azureMaps'], 22 | }, 23 | ], 24 | 'no-use-before-define': 'off', 25 | '@typescript-eslint/no-use-before-define': [ 26 | 'error', 27 | { 28 | functions: false, 29 | classes: false, 30 | }, 31 | ], 32 | '@typescript-eslint/no-explicit-any': 'off', 33 | '@typescript-eslint/member-delimiter-style': [ 34 | 'error', 35 | { 36 | multiline: { 37 | delimiter: 'none', 38 | requireLast: true, 39 | }, 40 | singleline: { 41 | delimiter: 'semi', 42 | requireLast: false, 43 | }, 44 | }, 45 | ], 46 | 'no-console': 'off', 47 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 48 | 'vue/no-v-html': 'off', 49 | 'comma-dangle': [ 50 | 'error', 51 | { 52 | arrays: 'always-multiline', 53 | objects: 'always-multiline', 54 | imports: 'always-multiline', 55 | exports: 'always-multiline', 56 | functions: 'never', 57 | }, 58 | ], 59 | semi: ['error', 'never'], 60 | quotes: [ 61 | 'error', 62 | 'single', 63 | { 64 | avoidEscape: true, 65 | allowTemplateLiterals: true, 66 | }, 67 | ], 68 | }, 69 | parserOptions: { 70 | ecmaVersion: 2020, 71 | }, 72 | overrides: [ 73 | { 74 | files: [ 75 | '**/__tests__/*.{j,t}s?(x)', 76 | '**/tests/unit/**/*.spec.{j,t}s?(x)', 77 | ], 78 | env: { 79 | jest: true, 80 | }, 81 | rules: { 82 | 'import/no-extraneous-dependencies': 'off', 83 | }, 84 | }, 85 | { 86 | files: ['*.js'], 87 | rules: { 88 | '@typescript-eslint/no-var-requires': 'off', 89 | }, 90 | }, 91 | ], 92 | } 93 | -------------------------------------------------------------------------------- /.github/commit-convention.md: -------------------------------------------------------------------------------- 1 | # Git Commit Message Convention 2 | 3 | > This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular). 4 | 5 | ## TL;DR 6 | 7 | Messages must be matched by the following regex: 8 | 9 | ```js 10 | ;/^(revert: )?(feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip)(\(.+\))?: .{1,50}/ 11 | ``` 12 | 13 | ### Examples 14 | 15 | Appears under "Features" header, `compiler` subheader: 16 | 17 | ```sh 18 | feat(compiler): add 'comments' option 19 | ``` 20 | 21 | Appears under "Bug Fixes" header, `v-model` subheader, with a link to issue #28: 22 | 23 | ```sh 24 | fix(v-model): handle events on blur 25 | 26 | close #28 27 | ``` 28 | 29 | Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation: 30 | 31 | ```sh 32 | perf(core): improve vdom diffing by removing 'foo' option 33 | 34 | BREAKING CHANGE: The 'foo' option has been removed. 35 | ``` 36 | 37 | The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header. 38 | 39 | ```sh 40 | revert: feat(compiler): add 'comments' option 41 | 42 | This reverts commit 667ecc1654a317a13331b17617d973392f415f02. 43 | ``` 44 | 45 | ### Full Message Format 46 | 47 | A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**: 48 | 49 | ```sh 50 | (): 51 | 52 | 53 | 54 |