├── docs ├── public │ ├── robots.txt │ ├── favicons │ │ ├── 192.png │ │ ├── 512.png │ │ ├── favicon.ico │ │ ├── apple-touch-icon.png │ │ └── icon.svg │ └── manifest.webmanifest └── src │ ├── components │ ├── RepoLink.vue │ └── Demo.vue │ ├── layouts │ └── BaseLayout.astro │ ├── styles │ └── tailwind.css │ ├── pages │ └── index.mdx │ └── assets │ └── bikeShelters.json ├── src ├── main.ts ├── shims │ └── vue.d.ts └── components │ ├── animateFuncs.ts │ ├── paintStyles.ts │ └── VueMapboxFeature.vue ├── .markdownlint.json ├── .stylelintrc.cjs ├── .gitignore ├── postcss.config.cjs ├── .github └── workflows │ ├── publish_package.yml │ ├── firebase-hosting-merge.yml │ └── firebase-hosting-pull-request.yml ├── .prettierrc.cjs ├── tsconfig.json ├── README.md ├── firebase.json ├── .eslintrc.cjs ├── LICENSE ├── rollup.config.mjs ├── tailwind.config.cjs ├── astro.config.mjs └── package.json /docs/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import VueMapboxFeature from './components/VueMapboxFeature.vue' 2 | 3 | export default VueMapboxFeature 4 | -------------------------------------------------------------------------------- /docs/public/favicons/192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benchmark-urbanism/vue-mapbox-feature/HEAD/docs/public/favicons/192.png -------------------------------------------------------------------------------- /docs/public/favicons/512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benchmark-urbanism/vue-mapbox-feature/HEAD/docs/public/favicons/512.png -------------------------------------------------------------------------------- /docs/public/favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benchmark-urbanism/vue-mapbox-feature/HEAD/docs/public/favicons/favicon.ico -------------------------------------------------------------------------------- /.markdownlint.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": true, 3 | "MD001": false, 4 | "MD013": false, 5 | "MD033": false, 6 | "MD041": false 7 | } 8 | -------------------------------------------------------------------------------- /docs/public/favicons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/benchmark-urbanism/vue-mapbox-feature/HEAD/docs/public/favicons/apple-touch-icon.png -------------------------------------------------------------------------------- /src/shims/vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import { defineComponent } from 'vue' 3 | const component: ReturnType 4 | export default component 5 | } 6 | -------------------------------------------------------------------------------- /docs/public/manifest.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "icons": [ 3 | { "src": "/favicons/192.png", "type": "image/png", "sizes": "192x192" }, 4 | { "src": "/favicons/512.png", "type": "image/png", "sizes": "512x512" } 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /.stylelintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: [ 3 | 'stylelint-config-standard', 4 | // last - to turn of clashes with prettier 5 | 'stylelint-config-prettier', 6 | ], 7 | plugins: [], 8 | rules: { 9 | 'selector-nested-pattern': '^&', 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # mac 2 | .DS_Store 3 | 4 | # Dev 5 | .idea/ 6 | build/ 7 | dist/ 8 | 9 | # node modules and gridsome 10 | logs 11 | *.log 12 | node_modules/ 13 | docs/node_modules/ 14 | .cache 15 | .temp 16 | 17 | # firebase 18 | **/.firebase* 19 | 20 | # venv for bib conversion 21 | venv/ -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | require('postcss-import'), 4 | require('postcss-html'), 5 | require('postcss-markdown'), 6 | require('tailwindcss/nesting'), 7 | require('tailwindcss'), 8 | require('autoprefixer'), 9 | ], 10 | } 11 | -------------------------------------------------------------------------------- /.github/workflows/publish_package.yml: -------------------------------------------------------------------------------- 1 | name: publish package 2 | on: 3 | release: 4 | types: [created] 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v3 10 | - run: npm install && npm run bundle 11 | - uses: actions/setup-node@v2 12 | with: 13 | registry-url: 'https://registry.npmjs.org' 14 | scope: '@benchmark-urbanism' 15 | - run: npm publish --access public 16 | env: 17 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 18 | -------------------------------------------------------------------------------- /.prettierrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | printWidth: 100, 3 | semi: false, 4 | singleQuote: true, 5 | pugAttributeSeparator: 'as-needed', 6 | pugCommentPreserveSpaces: 'trim-all', 7 | pugSortAttributes: 'asc', 8 | pugWrapAttributesThreshold: 1, 9 | pugFramework: 'vue', 10 | pugEmptyAttributes: 'all', 11 | pugClassLocation: 'after-attributes', 12 | pugExplicitDiv: true, 13 | overrides: [ 14 | { 15 | files: '*.astro', 16 | options: { 17 | parser: 'astro', 18 | }, 19 | }, 20 | ], 21 | } 22 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "jsx": "preserve", 5 | "module": "esnext", 6 | "rootDir": "./src", 7 | "moduleResolution": "node", 8 | "baseUrl": ".", 9 | "declaration": true, 10 | "declarationMap": true, 11 | "sourceMap": true, 12 | "outDir": "./dist", 13 | "esModuleInterop": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "strict": true, 16 | "skipLibCheck": true 17 | }, 18 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 19 | "exclude": ["**/node_modules"], 20 | "vueCompilerOptions": { 21 | "plugins": ["@volar/vue-language-plugin-pug"] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-mapbox-feature 2 | 3 | [![publish package](https://github.com/benchmark-urbanism/vue-mapbox-feature/actions/workflows/publish_package.yml/badge.svg)](https://github.com/benchmark-urbanism/vue-mapbox-feature/actions/workflows/publish_package.yml)[![deploy docs (merge)](https://github.com/benchmark-urbanism/vue-mapbox-feature/actions/workflows/firebase-hosting-merge.yml/badge.svg)](https://github.com/benchmark-urbanism/vue-mapbox-feature/actions/workflows/firebase-hosting-merge.yml) 4 | 5 | A minimalist [Vue](https://vuejs.org/) component for displaying dynamic geojson on a [Mapbox GL JS](https://www.mapbox.com/mapbox-gl-js/api/) map. 6 | 7 | Please see the [docs](https://vue-mapbox-feature.web.app/) for more information! 8 | -------------------------------------------------------------------------------- /.github/workflows/firebase-hosting-merge.yml: -------------------------------------------------------------------------------- 1 | # This file was auto-generated by the Firebase CLI 2 | # https://github.com/firebase/firebase-tools 3 | 4 | name: deploy docs (merge) 5 | 'on': 6 | push: 7 | branches: 8 | - master 9 | jobs: 10 | build_and_deploy: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v3 14 | - run: npm install && npm run build 15 | - uses: FirebaseExtended/action-hosting-deploy@v0 16 | with: 17 | repoToken: '${{ secrets.GITHUB_TOKEN }}' 18 | firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_VUE_MAPBOX_FEATURE }}' 19 | channelId: live 20 | projectId: vue-mapbox-feature 21 | env: 22 | FIREBASE_CLI_PREVIEWS: hostingchannels 23 | -------------------------------------------------------------------------------- /.github/workflows/firebase-hosting-pull-request.yml: -------------------------------------------------------------------------------- 1 | # This file was auto-generated by the Firebase CLI 2 | # https://github.com/firebase/firebase-tools 3 | 4 | name: deploy docs (pull) 5 | 'on': pull_request 6 | jobs: 7 | build_and_preview: 8 | if: '${{ github.event.pull_request.head.repo.full_name == github.repository }}' 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | - run: npm install && npm run build 13 | - uses: FirebaseExtended/action-hosting-deploy@v0 14 | with: 15 | repoToken: '${{ secrets.GITHUB_TOKEN }}' 16 | firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_VUE_MAPBOX_FEATURE }}' 17 | projectId: vue-mapbox-feature 18 | env: 19 | FIREBASE_CLI_PREVIEWS: hostingchannels 20 | -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosting": { 3 | "public": "./docs/dist", 4 | "rewrites": [ 5 | { 6 | "source": "**", 7 | "destination": "/index.html" 8 | } 9 | ], 10 | "trailingSlash": false, 11 | "cleanUrls": true, 12 | "headers": [ 13 | { 14 | "source": "/**", 15 | "headers": [ 16 | { 17 | "key": "Cache-Control", 18 | "value": "public, max-age=0, must-revalidate" 19 | } 20 | ] 21 | }, 22 | { 23 | "source": "**/*.@(jpg|jpeg|gif|png|svg|webp|eot|otf|ttf|ttc|woff|woff2|font.css)", 24 | "headers": [ 25 | { 26 | "key": "Cache-Control", 27 | "value": "public, max-age=31536000, immutable" 28 | } 29 | ] 30 | }, 31 | { 32 | "source": "**/*.@(js|css)", 33 | "headers": [ 34 | { 35 | "key": "Cache-Control", 36 | "value": "public, max-age=31536000, immutable" 37 | } 38 | ] 39 | } 40 | ] 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | require('@rushstack/eslint-patch/modern-module-resolution') 3 | 4 | module.exports = { 5 | root: true, 6 | env: { 7 | node: true, 8 | }, 9 | extends: [ 10 | 'eslint:recommended', 11 | 'plugin:@typescript-eslint/recommended', 12 | 'plugin:vue/vue3-recommended', // eslint-plugin-vue 13 | 'plugin:astro/recommended', 14 | // last - to turn of clashes with prettier 15 | 'prettier', // eslint-config-prettier 16 | ], 17 | // for parsing vue