diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index b76334d..0000000 --- a/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -.git -*Dockerfile* -.env \ No newline at end of file diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index fe825ff..0000000 --- a/.drone.yml +++ /dev/null @@ -1,149 +0,0 @@ -# DEPLOY -kind: pipeline -name: deploy - -trigger: - status: - - success - event: - - push - -steps: - # - # Restore cache (node_modules, build, etc) - # - - name: cache-restore - image: meltwater/drone-cache:dev - pull: true - volumes: - - name: cache - path: /tmp/cache - settings: - backend: "filesystem" - restore: true - cache_key: "volume" - archive_format: "gzip" - mount: - - "node_modules" - - # - # Build Node.js app - # - - name: build-node - image: node:latest - commands: - - yarn - - yarn build - - # - # Build the Docker image - # - # DEV - - name: build-docker-dev - image: docker:latest - volumes: - - name: docker_sock - path: /var/run/docker.sock - commands: - - docker build --pull --no-cache -t cetrucflotte/housesof:dev . - when: - branch: - - dev - - # PROD - - name: build-docker-prod - image: docker:latest - volumes: - - name: docker_sock - path: /var/run/docker.sock - commands: - - docker build --pull --no-cache -t cetrucflotte/housesof:latest . - when: - branch: - - master - - - - # - # Restart container - # - # DEV - - name: restart-container-dev - image: appleboy/drone-ssh - settings: - host: flayks.com - username: - from_secret: ssh_user - key: - from_secret: ssh_key - script: - - cd /data/sites/housesof.world/test - - docker-compose down - - docker-compose up -d --remove-orphans - when: - branch: - - dev - - # PROD - - name: restart-container-prod - image: appleboy/drone-ssh - settings: - host: flayks.com - username: - from_secret: ssh_user - key: - from_secret: ssh_key - script: - - cd /data/sites/housesof.world/www - - docker-compose down - - docker-compose up -d --remove-orphans - when: - branch: - - master - - - - # - # Rebuild cache - # - - name: cache-rebuild - image: meltwater/drone-cache:dev - pull: true - volumes: - - name: cache - path: /tmp/cache - settings: - backend: "filesystem" - rebuild: true - cache_key: "volume" - archive_format: "gzip" - mount: - - "node_modules" - - # - # Notify (by Email) - # - - name: notify-email - image: drillster/drone-email - settings: - host: - from_secret: notify_email_server - from: - from_secret: notify_email_address - username: - from_secret: notify_email_address - password: - from_secret: notify_email_password - recipients: - - hello@flayks.com - recipients_only: true - - -# Mount cache volume -volumes: - - name: cache - host: - path: /var/lib/cache - - name: docker_sock - host: - path: /var/run/docker.sock diff --git a/.env b/.env deleted file mode 100644 index 7c15590..0000000 --- a/.env +++ /dev/null @@ -1,11 +0,0 @@ -# Website -PROD_URL="https://housesof.world" -HOME_PHOTOS_LIMIT=6 - -# API -API_TOKEN="NJk0urljsdSvApUDzWxGgoO6" -API_URL_DEV="http://api.housesof.localhost/how" -API_URL_PROD="https://api.housesof.world/how" - -# Tracking -GA_TRACKER_ID="UA-4060922-27" \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..342c596 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,20 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], + plugins: ['svelte3', '@typescript-eslint'], + ignorePatterns: ['*.cjs'], + overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], + settings: { + 'svelte3/typescript': () => require('typescript') + }, + parserOptions: { + sourceType: 'module', + ecmaVersion: 2019 + }, + env: { + browser: true, + es2017: true, + node: true + } +} \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 88c58b6..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - extends: [ - // 'eslint:recommended' - ], - env: { - 'browser': true, - 'es6': true - }, - plugins: ['svelte3'], - parserOptions: { - 'ecmaVersion': 2019, - 'sourceType': 'module' - }, - overrides: [{ - files: ['**/*.svelte'], - processor: 'svelte3/svelte3' - }], - rules: { - indent: [ 'error', 4 ], - 'no-multiple-empty-lines': [ 1, { 'max': 5 } ] - } -} diff --git a/.gitignore b/.gitignore index 480ace8..f137096 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ .DS_Store node_modules -__sapper__ -/cypress/screenshots +/build +/.svelte-kit +.env +.env.* +!.env.example \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index c126d8d..0000000 --- a/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM node:current-alpine - -WORKDIR /var/www - -# Copy build and modules -COPY . . - -# Open port -EXPOSE 3000 - -# Serve -CMD node dist - -VOLUME ["/var/www"] diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 41954a4..0000000 --- a/babel.config.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - presets: [ - '@babel/preset-env' - ], - plugins: [ - '@babel/plugin-syntax-dynamic-import', - ['@babel/plugin-transform-runtime', { - 'useESModules': true - }] - ] -} diff --git a/package.json b/package.json index 95e0bc6..53570da 100644 --- a/package.json +++ b/package.json @@ -1,61 +1,58 @@ { "name": "housesof", - "version": "1.2.0", - "description": "Houses Of website", - "author": { - "name": "Flayks", - "email": "hello@flayks.com", - "url": "http://flayks.com" - }, + "version": "2.0.0", "private": true, + "author": "Félix Péault (https://flayks.com)", + "contributors": [ + "Shelby Kay (https://shelbykay.dev)" + ], "scripts": { - "dev": "sapper dev --port 3000", - "build": "sapper build dist --legacy", - "export": "sapper export export --legacy", - "start": "node dist" + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "eslint --ignore-path .gitignore ." }, "dependencies": { - "animejs": "^3.2.1", - "compression": "^1.7.4", - "imagesloaded": "^4.1.4", - "lazysizes": "^5.3.0", - "node-fetch": "^2.6.1", - "normalize.css": "^8.0.1", - "polka": "^1.0.0-next.11", - "rellax": "^1.12.1", - "scroll-out": "^2.2.12", - "sirv": "^1.0.10", - "svelte-lazy": "^1.0.8", - "swipe-listener": "^1.3.0" + "@studio-freight/lenis": "^0.2.6", + "dayjs": "^1.11.5", + "embla-carousel": "^7.0.3", + "focus-visible": "^5.2.0", + "motion": "^10.14.2", + "ogl": "^0.0.99", + "sanitize.css": "^13.0.0", + "swell-js": "^3.17.6", + "tweakpane": "^3.1.0" }, "devDependencies": { - "@babel/core": "^7.12.10", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.12.10", - "@babel/preset-env": "^7.12.11", - "@babel/runtime": "^7.12.5", - "@rollup/plugin-alias": "^3.1.1", - "@rollup/plugin-babel": "^5.2.2", - "@rollup/plugin-commonjs": "17.0.0", - "@rollup/plugin-node-resolve": "^11.1.0", - "@rollup/plugin-replace": "^2.3.4", - "autoprefixer": "^10.2.1", - "dotenv": "^8.2.0", - "node-sass": "^5.0.0", - "postcss": "^8.2.4", - "postcss-load-config": "^3.0.0", - "postcss-preset-env": "^6.7.0", - "rollup": "^2.36.2", - "rollup-plugin-glslify": "^1.2.0", - "rollup-plugin-svelte": "^7.0.0", - "rollup-plugin-terser": "^7.0.2", - "sapper": "^0.28.10", - "svelte": "^3.31.2", - "svelte-preprocess": "^4.6.1" + "@sveltejs/adapter-auto": "^1.0.0-next.80", + "@sveltejs/adapter-node": "^1.0.0-next.96", + "@sveltejs/adapter-vercel": "^1.0.0-next.77", + "@sveltejs/kit": "^1.0.0-next.504", + "@typescript-eslint/eslint-plugin": "^5.38.1", + "@typescript-eslint/parser": "^5.38.1", + "base-64": "^1.0.0", + "browserslist": "^4.21.4", + "cssnano": "^5.1.13", + "eslint": "^8.24.0", + "eslint-plugin-svelte3": "^4.0.0", + "postcss": "^8.4.16", + "postcss-focus-visible": "^7.1.0", + "postcss-normalize": "^10.0.1", + "postcss-preset-env": "^7.8.2", + "postcss-sort-media-queries": "^4.3.0", + "sass": "^1.55.0", + "svelte": "^3.50.1", + "svelte-check": "^2.9.1", + "svelte-preprocess": "^4.10.7", + "tslib": "^2.4.0", + "typescript": "^4.8.3", + "vite": "^3.1.3" }, + "type": "module", "browserslist": [ - "> 0.5%", - "last 2 versions", - "not dead" + "last 3 versions", + "> 0.3%" ] -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7e838e7..107906e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,3823 +1,3352 @@ +lockfileVersion: 5.4 + +specifiers: + '@studio-freight/lenis': ^0.2.6 + '@sveltejs/adapter-auto': ^1.0.0-next.80 + '@sveltejs/adapter-node': ^1.0.0-next.96 + '@sveltejs/adapter-vercel': ^1.0.0-next.77 + '@sveltejs/kit': ^1.0.0-next.504 + '@typescript-eslint/eslint-plugin': ^5.38.1 + '@typescript-eslint/parser': ^5.38.1 + base-64: ^1.0.0 + browserslist: ^4.21.4 + cssnano: ^5.1.13 + dayjs: ^1.11.5 + embla-carousel: ^7.0.3 + eslint: ^8.24.0 + eslint-plugin-svelte3: ^4.0.0 + focus-visible: ^5.2.0 + motion: ^10.14.2 + ogl: ^0.0.99 + postcss: ^8.4.16 + postcss-focus-visible: ^7.1.0 + postcss-normalize: ^10.0.1 + postcss-preset-env: ^7.8.2 + postcss-sort-media-queries: ^4.3.0 + sanitize.css: ^13.0.0 + sass: ^1.55.0 + svelte: ^3.50.1 + svelte-check: ^2.9.1 + svelte-preprocess: ^4.10.7 + swell-js: ^3.17.6 + tslib: ^2.4.0 + tweakpane: ^3.1.0 + typescript: ^4.8.3 + vite: ^3.1.3 + dependencies: - animejs: 3.2.1 - compression: 1.7.4 - imagesloaded: 4.1.4 - lazysizes: 5.3.0 - node-fetch: 2.6.1 - normalize.css: 8.0.1 - polka: 1.0.0-next.11 - rellax: 1.12.1 - scroll-out: 2.2.12 - sirv: 1.0.10 - svelte-lazy: 1.0.8_svelte@3.31.2 - swipe-listener: 1.3.0 + '@studio-freight/lenis': 0.2.6 + dayjs: 1.11.5 + embla-carousel: 7.0.3 + focus-visible: 5.2.0 + motion: 10.14.2 + ogl: 0.0.99 + sanitize.css: 13.0.0 + swell-js: 3.17.6 + tweakpane: 3.1.0 + devDependencies: - '@babel/core': 7.12.10 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.10 - '@babel/plugin-transform-runtime': 7.12.10_@babel+core@7.12.10 - '@babel/preset-env': 7.12.11_@babel+core@7.12.10 - '@babel/runtime': 7.12.5 - '@rollup/plugin-alias': 3.1.1_rollup@2.36.2 - '@rollup/plugin-babel': 5.2.2_d291def3ad863a337509a274a4371b7e - '@rollup/plugin-commonjs': 17.0.0_rollup@2.36.2 - '@rollup/plugin-node-resolve': 11.1.0_rollup@2.36.2 - '@rollup/plugin-replace': 2.3.4_rollup@2.36.2 - autoprefixer: 10.2.1_postcss@8.2.4 - dotenv: 8.2.0 - node-sass: 5.0.0 - postcss: 8.2.4 - postcss-load-config: 3.0.0 - postcss-preset-env: 6.7.0 - rollup: 2.36.2 - rollup-plugin-glslify: 1.2.0 - rollup-plugin-svelte: 7.0.0_rollup@2.36.2+svelte@3.31.2 - rollup-plugin-terser: 7.0.2_rollup@2.36.2 - sapper: 0.28.10_svelte@3.31.2 - svelte: 3.31.2 - svelte-preprocess: 4.6.1_f1d5d739eab137f4683f3cf6104542ab -lockfileVersion: 5.2 + '@sveltejs/adapter-auto': 1.0.0-next.80 + '@sveltejs/adapter-node': 1.0.0-next.96 + '@sveltejs/adapter-vercel': 1.0.0-next.77 + '@sveltejs/kit': 1.0.0-next.504_svelte@3.50.1+vite@3.1.3 + '@typescript-eslint/eslint-plugin': 5.38.1_qatzzi2vqzjqg2tq57nszrvcfi + '@typescript-eslint/parser': 5.38.1_7ilbxdl5iguzcjriqqcg2m5cku + base-64: 1.0.0 + browserslist: 4.21.4 + cssnano: 5.1.13_postcss@8.4.16 + eslint: 8.24.0 + eslint-plugin-svelte3: 4.0.0_snydkosur25h6rjxszquwacaua + postcss: 8.4.16 + postcss-focus-visible: 7.1.0_postcss@8.4.16 + postcss-normalize: 10.0.1_yroec54rl3ndwvbunmnefp5nvy + postcss-preset-env: 7.8.2_postcss@8.4.16 + postcss-sort-media-queries: 4.3.0_postcss@8.4.16 + sass: 1.55.0 + svelte: 3.50.1 + svelte-check: 2.9.1_yvs2ufmgd7w5odpvp3nw2pbb7y + svelte-preprocess: 4.10.7_stzz5n57hyiugj4ntsptwutnlu + tslib: 2.4.0 + typescript: 4.8.3 + vite: 3.1.3_sass@1.55.0 + packages: - /@babel/code-frame/7.12.11: - dependencies: - '@babel/highlight': 7.10.4 + + /@cloudflare/workers-types/3.16.0: + resolution: {integrity: sha512-gaBUSaKS65mN3iKZEgichbXYEmAa/pXkc5Gbt+1BptYphdGkj09ggdsiE4w8g0F/uI1g36QaTKrzVnBAWMipvQ==} dev: true - resolution: - integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - /@babel/compat-data/7.12.7: - dev: true - resolution: - integrity: sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== - /@babel/core/7.12.10: - dependencies: - '@babel/code-frame': 7.12.11 - '@babel/generator': 7.12.11 - '@babel/helper-module-transforms': 7.12.1 - '@babel/helpers': 7.12.5 - '@babel/parser': 7.12.11 - '@babel/template': 7.12.7 - '@babel/traverse': 7.12.12 - '@babel/types': 7.12.12 - convert-source-map: 1.7.0 - debug: 4.3.1 - gensync: 1.0.0-beta.2 - json5: 2.1.3 - lodash: 4.17.20 - semver: 5.7.1 - source-map: 0.5.7 - dev: true - engines: - node: '>=6.9.0' - resolution: - integrity: sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== - /@babel/generator/7.12.11: - dependencies: - '@babel/types': 7.12.12 - jsesc: 2.5.2 - source-map: 0.5.7 - dev: true - resolution: - integrity: sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== - /@babel/helper-annotate-as-pure/7.12.10: - dependencies: - '@babel/types': 7.12.12 - dev: true - resolution: - integrity: sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ== - /@babel/helper-builder-binary-assignment-operator-visitor/7.10.4: - dependencies: - '@babel/helper-explode-assignable-expression': 7.12.1 - '@babel/types': 7.12.12 - dev: true - resolution: - integrity: sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== - /@babel/helper-compilation-targets/7.12.5_@babel+core@7.12.10: - dependencies: - '@babel/compat-data': 7.12.7 - '@babel/core': 7.12.10 - '@babel/helper-validator-option': 7.12.11 - browserslist: 4.16.1 - semver: 5.7.1 + + /@csstools/normalize.css/12.0.0: + resolution: {integrity: sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==} dev: true + + /@csstools/postcss-cascade-layers/1.1.1_postcss@8.4.16: + resolution: {integrity: sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==} + engines: {node: ^12 || ^14 || >=16} peerDependencies: - '@babel/core': ^7.0.0 - resolution: - integrity: sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== - /@babel/helper-create-class-features-plugin/7.12.1_@babel+core@7.12.10: + postcss: ^8.2 dependencies: - '@babel/core': 7.12.10 - '@babel/helper-function-name': 7.12.11 - '@babel/helper-member-expression-to-functions': 7.12.7 - '@babel/helper-optimise-call-expression': 7.12.10 - '@babel/helper-replace-supers': 7.12.11 - '@babel/helper-split-export-declaration': 7.12.11 + '@csstools/selector-specificity': 2.0.2_pnx64jze6bptzcedy5bidi3zdi + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true + + /@csstools/postcss-color-function/1.1.1_postcss@8.4.16: + resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} + engines: {node: ^12 || ^14 || >=16} peerDependencies: - '@babel/core': ^7.0.0 - resolution: - integrity: sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== - /@babel/helper-create-regexp-features-plugin/7.12.7_@babel+core@7.12.10: + postcss: ^8.2 dependencies: - '@babel/core': 7.12.10 - '@babel/helper-annotate-as-pure': 7.12.10 - regexpu-core: 4.7.1 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true + + /@csstools/postcss-font-format-keywords/1.0.1_postcss@8.4.16: + resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} + engines: {node: ^12 || ^14 || >=16} peerDependencies: - '@babel/core': ^7.0.0 - resolution: - integrity: sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ== - /@babel/helper-define-map/7.10.5: + postcss: ^8.2 dependencies: - '@babel/helper-function-name': 7.12.11 - '@babel/types': 7.12.12 - lodash: 4.17.20 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== - /@babel/helper-explode-assignable-expression/7.12.1: + + /@csstools/postcss-hwb-function/1.0.2_postcss@8.4.16: + resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/types': 7.12.12 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== - /@babel/helper-function-name/7.12.11: + + /@csstools/postcss-ic-unit/1.0.1_postcss@8.4.16: + resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/helper-get-function-arity': 7.12.10 - '@babel/template': 7.12.7 - '@babel/types': 7.12.12 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== - /@babel/helper-get-function-arity/7.12.10: + + /@csstools/postcss-is-pseudo-class/2.0.7_postcss@8.4.16: + resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/types': 7.12.12 + '@csstools/selector-specificity': 2.0.2_pnx64jze6bptzcedy5bidi3zdi + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - resolution: - integrity: sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== - /@babel/helper-hoist-variables/7.10.4: + + /@csstools/postcss-nested-calc/1.0.0_postcss@8.4.16: + resolution: {integrity: sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/types': 7.12.12 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== - /@babel/helper-member-expression-to-functions/7.12.7: + + /@csstools/postcss-normalize-display-values/1.0.1_postcss@8.4.16: + resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/types': 7.12.12 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== - /@babel/helper-module-imports/7.12.5: + + /@csstools/postcss-oklab-function/1.1.1_postcss@8.4.16: + resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/types': 7.12.12 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== - /@babel/helper-module-transforms/7.12.1: + + /@csstools/postcss-progressive-custom-properties/1.3.0_postcss@8.4.16: + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 dependencies: - '@babel/helper-module-imports': 7.12.5 - '@babel/helper-replace-supers': 7.12.11 - '@babel/helper-simple-access': 7.12.1 - '@babel/helper-split-export-declaration': 7.12.11 - '@babel/helper-validator-identifier': 7.12.11 - '@babel/template': 7.12.7 - '@babel/traverse': 7.12.12 - '@babel/types': 7.12.12 - lodash: 4.17.20 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== - /@babel/helper-optimise-call-expression/7.12.10: + + /@csstools/postcss-stepped-value-functions/1.0.1_postcss@8.4.16: + resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/types': 7.12.12 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== - /@babel/helper-plugin-utils/7.10.4: - dev: true - resolution: - integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - /@babel/helper-remap-async-to-generator/7.12.1: + + /@csstools/postcss-text-decoration-shorthand/1.0.0_postcss@8.4.16: + resolution: {integrity: sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/helper-annotate-as-pure': 7.12.10 - '@babel/helper-wrap-function': 7.12.3 - '@babel/types': 7.12.12 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== - /@babel/helper-replace-supers/7.12.11: + + /@csstools/postcss-trigonometric-functions/1.0.2_postcss@8.4.16: + resolution: {integrity: sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==} + engines: {node: ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/helper-member-expression-to-functions': 7.12.7 - '@babel/helper-optimise-call-expression': 7.12.10 - '@babel/traverse': 7.12.12 - '@babel/types': 7.12.12 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== - /@babel/helper-simple-access/7.12.1: + + /@csstools/postcss-unset-value/1.0.2_postcss@8.4.16: + resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/types': 7.12.12 + postcss: 8.4.16 dev: true - resolution: - integrity: sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== - /@babel/helper-skip-transparent-expression-wrappers/7.12.1: + + /@csstools/selector-specificity/2.0.2_pnx64jze6bptzcedy5bidi3zdi: + resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + postcss-selector-parser: ^6.0.10 dependencies: - '@babel/types': 7.12.12 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - resolution: - integrity: sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== - /@babel/helper-split-export-declaration/7.12.11: + + /@esbuild/android-arm/0.15.9: + resolution: {integrity: sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.15.9: + resolution: {integrity: sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@eslint/eslintrc/1.3.2: + resolution: {integrity: sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@babel/types': 7.12.12 + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.0 + globals: 13.17.0 + ignore: 5.2.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color dev: true - resolution: - integrity: sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== - /@babel/helper-validator-identifier/7.12.11: - dev: true - resolution: - integrity: sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - /@babel/helper-validator-option/7.12.11: - dev: true - resolution: - integrity: sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== - /@babel/helper-wrap-function/7.12.3: + + /@humanwhocodes/config-array/0.10.5: + resolution: {integrity: sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==} + engines: {node: '>=10.10.0'} dependencies: - '@babel/helper-function-name': 7.12.11 - '@babel/template': 7.12.7 - '@babel/traverse': 7.12.12 - '@babel/types': 7.12.12 + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color dev: true - resolution: - integrity: sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== - /@babel/helpers/7.12.5: + + /@humanwhocodes/gitignore-to-minimatch/1.0.2: + resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==} + dev: true + + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@iarna/toml/2.2.5: + resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} + dev: true + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/trace-mapping/0.3.15: + resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} dependencies: - '@babel/template': 7.12.7 - '@babel/traverse': 7.12.12 - '@babel/types': 7.12.12 + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 dev: true - resolution: - integrity: sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== - /@babel/highlight/7.10.4: - dependencies: - '@babel/helper-validator-identifier': 7.12.11 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - resolution: - integrity: sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - /@babel/parser/7.12.11: - dev: true - engines: - node: '>=6.0.0' + + /@mapbox/node-pre-gyp/1.0.10: + resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} hasBin: true - resolution: - integrity: sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== - /@babel/plugin-proposal-async-generator-functions/7.12.12_@babel+core@7.12.10: dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/helper-remap-async-to-generator': 7.12.1 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.10 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A== - /@babel/plugin-proposal-class-properties/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-create-class-features-plugin': 7.12.1_@babel+core@7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== - /@babel/plugin-proposal-dynamic-import/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.10 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== - /@babel/plugin-proposal-export-namespace-from/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.10 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== - /@babel/plugin-proposal-json-strings/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.10 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== - /@babel/plugin-proposal-logical-assignment-operators/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.10 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== - /@babel/plugin-proposal-nullish-coalescing-operator/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.10 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== - /@babel/plugin-proposal-numeric-separator/7.12.7_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.10 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ== - /@babel/plugin-proposal-object-rest-spread/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.10 - '@babel/plugin-transform-parameters': 7.12.1_@babel+core@7.12.10 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== - /@babel/plugin-proposal-optional-catch-binding/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.10 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== - /@babel/plugin-proposal-optional-chaining/7.12.7_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/helper-skip-transparent-expression-wrappers': 7.12.1 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.10 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA== - /@babel/plugin-proposal-private-methods/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-create-class-features-plugin': 7.12.1_@babel+core@7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== - /@babel/plugin-proposal-unicode-property-regex/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-create-regexp-features-plugin': 7.12.7_@babel+core@7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - engines: - node: '>=4' - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - /@babel/plugin-syntax-class-properties/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - /@babel/plugin-syntax-top-level-await/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== - /@babel/plugin-transform-arrow-functions/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== - /@babel/plugin-transform-async-to-generator/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-module-imports': 7.12.5 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/helper-remap-async-to-generator': 7.12.1 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== - /@babel/plugin-transform-block-scoped-functions/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== - /@babel/plugin-transform-block-scoping/7.12.12_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ== - /@babel/plugin-transform-classes/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-annotate-as-pure': 7.12.10 - '@babel/helper-define-map': 7.10.5 - '@babel/helper-function-name': 7.12.11 - '@babel/helper-optimise-call-expression': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/helper-replace-supers': 7.12.11 - '@babel/helper-split-export-declaration': 7.12.11 - globals: 11.12.0 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== - /@babel/plugin-transform-computed-properties/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== - /@babel/plugin-transform-destructuring/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== - /@babel/plugin-transform-dotall-regex/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-create-regexp-features-plugin': 7.12.7_@babel+core@7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== - /@babel/plugin-transform-duplicate-keys/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== - /@babel/plugin-transform-exponentiation-operator/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.10.4 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== - /@babel/plugin-transform-for-of/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== - /@babel/plugin-transform-function-name/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-function-name': 7.12.11 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== - /@babel/plugin-transform-literals/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== - /@babel/plugin-transform-member-expression-literals/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== - /@babel/plugin-transform-modules-amd/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-module-transforms': 7.12.1 - '@babel/helper-plugin-utils': 7.10.4 - babel-plugin-dynamic-import-node: 2.3.3 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== - /@babel/plugin-transform-modules-commonjs/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-module-transforms': 7.12.1 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/helper-simple-access': 7.12.1 - babel-plugin-dynamic-import-node: 2.3.3 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== - /@babel/plugin-transform-modules-systemjs/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-hoist-variables': 7.10.4 - '@babel/helper-module-transforms': 7.12.1 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/helper-validator-identifier': 7.12.11 - babel-plugin-dynamic-import-node: 2.3.3 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== - /@babel/plugin-transform-modules-umd/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-module-transforms': 7.12.1 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== - /@babel/plugin-transform-named-capturing-groups-regex/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-create-regexp-features-plugin': 7.12.7_@babel+core@7.12.10 - dev: true - peerDependencies: - '@babel/core': ^7.0.0 - resolution: - integrity: sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== - /@babel/plugin-transform-new-target/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== - /@babel/plugin-transform-object-super/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/helper-replace-supers': 7.12.11 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== - /@babel/plugin-transform-parameters/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== - /@babel/plugin-transform-property-literals/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== - /@babel/plugin-transform-regenerator/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - regenerator-transform: 0.14.5 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== - /@babel/plugin-transform-reserved-words/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== - /@babel/plugin-transform-runtime/7.12.10_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-module-imports': 7.12.5 - '@babel/helper-plugin-utils': 7.10.4 - semver: 5.7.1 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA== - /@babel/plugin-transform-shorthand-properties/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== - /@babel/plugin-transform-spread/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/helper-skip-transparent-expression-wrappers': 7.12.1 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== - /@babel/plugin-transform-sticky-regex/7.12.7_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg== - /@babel/plugin-transform-template-literals/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== - /@babel/plugin-transform-typeof-symbol/7.12.10_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA== - /@babel/plugin-transform-unicode-escapes/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== - /@babel/plugin-transform-unicode-regex/7.12.1_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-create-regexp-features-plugin': 7.12.7_@babel+core@7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== - /@babel/preset-env/7.12.11_@babel+core@7.12.10: - dependencies: - '@babel/compat-data': 7.12.7 - '@babel/core': 7.12.10 - '@babel/helper-compilation-targets': 7.12.5_@babel+core@7.12.10 - '@babel/helper-module-imports': 7.12.5 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/helper-validator-option': 7.12.11 - '@babel/plugin-proposal-async-generator-functions': 7.12.12_@babel+core@7.12.10 - '@babel/plugin-proposal-class-properties': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-proposal-dynamic-import': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-proposal-export-namespace-from': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-proposal-json-strings': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-proposal-logical-assignment-operators': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-proposal-numeric-separator': 7.12.7_@babel+core@7.12.10 - '@babel/plugin-proposal-object-rest-spread': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-proposal-optional-catch-binding': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-proposal-optional-chaining': 7.12.7_@babel+core@7.12.10 - '@babel/plugin-proposal-private-methods': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-proposal-unicode-property-regex': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.10 - '@babel/plugin-syntax-class-properties': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.10 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.10 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.10 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.10 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.10 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.10 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.10 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.10 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.10 - '@babel/plugin-syntax-top-level-await': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-arrow-functions': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-async-to-generator': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-block-scoped-functions': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-block-scoping': 7.12.12_@babel+core@7.12.10 - '@babel/plugin-transform-classes': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-computed-properties': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-destructuring': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-dotall-regex': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-duplicate-keys': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-exponentiation-operator': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-for-of': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-function-name': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-literals': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-member-expression-literals': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-modules-amd': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-modules-commonjs': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-modules-systemjs': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-modules-umd': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-named-capturing-groups-regex': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-new-target': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-object-super': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-parameters': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-property-literals': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-regenerator': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-reserved-words': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-shorthand-properties': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-spread': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-sticky-regex': 7.12.7_@babel+core@7.12.10 - '@babel/plugin-transform-template-literals': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-typeof-symbol': 7.12.10_@babel+core@7.12.10 - '@babel/plugin-transform-unicode-escapes': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-unicode-regex': 7.12.1_@babel+core@7.12.10 - '@babel/preset-modules': 0.1.4_@babel+core@7.12.10 - '@babel/types': 7.12.12 - core-js-compat: 3.8.2 - semver: 5.7.1 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw== - /@babel/preset-modules/0.1.4_@babel+core@7.12.10: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-proposal-unicode-property-regex': 7.12.1_@babel+core@7.12.10 - '@babel/plugin-transform-dotall-regex': 7.12.1_@babel+core@7.12.10 - '@babel/types': 7.12.12 - esutils: 2.0.3 - dev: true - peerDependencies: - '@babel/core': ^7.0.0-0 - resolution: - integrity: sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== - /@babel/runtime/7.12.5: - dependencies: - regenerator-runtime: 0.13.7 - dev: true - resolution: - integrity: sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== - /@babel/template/7.12.7: - dependencies: - '@babel/code-frame': 7.12.11 - '@babel/parser': 7.12.11 - '@babel/types': 7.12.12 - dev: true - resolution: - integrity: sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== - /@babel/traverse/7.12.12: - dependencies: - '@babel/code-frame': 7.12.11 - '@babel/generator': 7.12.11 - '@babel/helper-function-name': 7.12.11 - '@babel/helper-split-export-declaration': 7.12.11 - '@babel/parser': 7.12.11 - '@babel/types': 7.12.12 - debug: 4.3.1 - globals: 11.12.0 - lodash: 4.17.20 - dev: true - resolution: - integrity: sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== - /@babel/types/7.12.12: - dependencies: - '@babel/helper-validator-identifier': 7.12.11 - lodash: 4.17.20 - to-fast-properties: 2.0.0 - dev: true - resolution: - integrity: sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== - /@choojs/findup/0.2.1: - dependencies: - commander: 2.20.3 - dev: true - hasBin: true - resolution: - integrity: sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw== - /@csstools/convert-colors/1.4.0: - dev: true - engines: - node: '>=4.0.0' - resolution: - integrity: sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== - /@polka/url/1.0.0-next.11: + detect-libc: 2.0.1 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.6.7 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.3.7 + tar: 6.1.11 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@motionone/animation/10.14.0: + resolution: {integrity: sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==} + dependencies: + '@motionone/easing': 10.14.0 + '@motionone/types': 10.14.0 + '@motionone/utils': 10.14.0 + tslib: 2.4.0 dev: false - resolution: - integrity: sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA== - /@rollup/plugin-alias/3.1.1_rollup@2.36.2: + + /@motionone/dom/10.14.2: + resolution: {integrity: sha512-GbGtvTSelXfT4TeQUQ3Y31PllAu0Uvghqr68FSPAJsh1hjbuYPaiPJWpP6+t/t50cHtvUbl4m2SgnGKJ0NCgWA==} dependencies: - rollup: 2.36.2 - slash: 3.0.0 + '@motionone/animation': 10.14.0 + '@motionone/generators': 10.14.0 + '@motionone/types': 10.14.0 + '@motionone/utils': 10.14.0 + hey-listen: 1.0.8 + tslib: 2.4.0 + dev: false + + /@motionone/easing/10.14.0: + resolution: {integrity: sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==} + dependencies: + '@motionone/utils': 10.14.0 + tslib: 2.4.0 + dev: false + + /@motionone/generators/10.14.0: + resolution: {integrity: sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==} + dependencies: + '@motionone/types': 10.14.0 + '@motionone/utils': 10.14.0 + tslib: 2.4.0 + dev: false + + /@motionone/svelte/10.14.2: + resolution: {integrity: sha512-WKgER0eH7b8q0/ODElHIbzMM3uIINdcdCw87jf7xqs4daidsy6e1ckh2XJF2Z8zyWyUEtO4VHvGumRX7EjrxFA==} + dependencies: + '@motionone/dom': 10.14.2 + tslib: 2.4.0 + dev: false + + /@motionone/types/10.14.0: + resolution: {integrity: sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==} + dev: false + + /@motionone/utils/10.14.0: + resolution: {integrity: sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==} + dependencies: + '@motionone/types': 10.14.0 + hey-listen: 1.0.8 + tslib: 2.4.0 + dev: false + + /@motionone/vue/10.14.2: + resolution: {integrity: sha512-nxC/j4WhOsXxVDUdWHJDUIvHSb97eu0Kn1HNzGp08Fm9WTFkKy0HtJtTqTdkGVks2jB/XBh/FO3wU2OzyDFZNw==} + dependencies: + '@motionone/dom': 10.14.2 + tslib: 2.4.0 + dev: false + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 dev: true - engines: - node: '>=8.0.0' - peerDependencies: - rollup: ^1.20.0||^2.0.0 - resolution: - integrity: sha512-hNcQY4bpBUIvxekd26DBPgF7BT4mKVNDF5tBG4Zi+3IgwLxGYRY0itHs9D0oLVwXM5pvJDWJlBQro+au8WaUWw== - /@rollup/plugin-babel/5.2.2_d291def3ad863a337509a274a4371b7e: - dependencies: - '@babel/core': 7.12.10 - '@babel/helper-module-imports': 7.12.5 - '@rollup/pluginutils': 3.1.0_rollup@2.36.2 - rollup: 2.36.2 + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} dev: true - engines: - node: '>= 10.0.0' - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - resolution: - integrity: sha512-MjmH7GvFT4TW8xFdIeFS3wqIX646y5tACdxkTO+khbHvS3ZcVJL6vkAHLw2wqPmkhwCfWHoNsp15VYNwW6JEJA== - /@rollup/plugin-commonjs/17.0.0_rollup@2.36.2: + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.36.2 + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.13.0 + dev: true + + /@polka/url/1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + dev: true + + /@rollup/plugin-commonjs/22.0.2_rollup@2.79.1: + resolution: {integrity: sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg==} + engines: {node: '>= 12.0.0'} + peerDependencies: + rollup: ^2.68.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.79.1 commondir: 1.0.1 estree-walker: 2.0.2 - glob: 7.1.6 + glob: 7.2.3 is-reference: 1.2.1 - magic-string: 0.25.7 - resolve: 1.19.0 - rollup: 2.36.2 - dev: true - engines: - node: '>= 8.0.0' - peerDependencies: - rollup: ^2.30.0 - resolution: - integrity: sha512-/omBIJG1nHQc+bgkYDuLpb/V08QyutP9amOrJRUSlYJZP+b/68gM//D8sxJe3Yry2QnYIr3QjR3x4AlxJEN3GA== - /@rollup/plugin-node-resolve/11.1.0_rollup@2.36.2: - dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.36.2 - '@types/resolve': 1.17.1 - builtin-modules: 3.2.0 - deepmerge: 4.2.2 - is-module: 1.0.0 - resolve: 1.19.0 - rollup: 2.36.2 - dev: true - engines: - node: '>= 10.0.0' - peerDependencies: - rollup: ^1.20.0||^2.0.0 - resolution: - integrity: sha512-ouBBppRdWJKCllDXGzJ7ZIkYbaq+5TmyP0smt1vdJCFfoZhLi31vhpmjLhyo8lreHf4RoeSNllaWrvSqHpHRog== - /@rollup/plugin-replace/2.3.4_rollup@2.36.2: - dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.36.2 - magic-string: 0.25.7 - rollup: 2.36.2 + magic-string: 0.25.9 + resolve: 1.22.1 + rollup: 2.79.1 dev: true + + /@rollup/plugin-json/4.1.0_rollup@2.79.1: + resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 - resolution: - integrity: sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ== - /@rollup/pluginutils/3.1.0_rollup@2.36.2: + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + rollup: 2.79.1 + dev: true + + /@rollup/plugin-node-resolve/14.1.0_rollup@2.79.1: + resolution: {integrity: sha512-5G2niJroNCz/1zqwXtk0t9+twOSDlG00k1Wfd7bkbbXmwg8H8dvgHdIWAun53Ps/rckfvOC7scDBjuGFg5OaWw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^2.78.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@types/resolve': 1.17.1 + deepmerge: 4.2.2 + is-builtin-module: 3.2.0 + is-module: 1.0.0 + resolve: 1.22.1 + rollup: 2.79.1 + dev: true + + /@rollup/pluginutils/3.1.0_rollup@2.79.1: + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 - picomatch: 2.2.2 - rollup: 2.36.2 + picomatch: 2.3.1 + rollup: 2.79.1 dev: true - engines: - node: '>= 8.0.0' - peerDependencies: - rollup: ^1.20.0||^2.0.0 - resolution: - integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - /@types/estree/0.0.39: - dev: true - resolution: - integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - /@types/estree/0.0.45: - dev: true - resolution: - integrity: sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== - /@types/node/14.14.20: - dev: true - resolution: - integrity: sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A== - /@types/parse-json/4.0.0: - dev: true - resolution: - integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - /@types/pug/2.0.4: - dev: true - resolution: - integrity: sha1-h3L80EGOPNLMFxVV1zAHQVBR9LI= - /@types/resolve/1.17.1: + + /@rollup/pluginutils/4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} dependencies: - '@types/node': 14.14.20 + estree-walker: 2.0.2 + picomatch: 2.3.1 dev: true - resolution: - integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - /@types/sass/1.16.0: + + /@studio-freight/lenis/0.2.6: + resolution: {integrity: sha512-SbLDZBMj8fV7grwNnnsUgKYTVPDMzSSwccxZF7pTinbctgjr/WgKGaD5zBPJwDo8bQ8/gb+lmnfkEm2VethvfQ==} dependencies: - '@types/node': 14.14.20 - dev: true - resolution: - integrity: sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA== - /abbrev/1.1.1: - dev: true - resolution: - integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - /accepts/1.3.7: - dependencies: - mime-types: 2.1.28 - negotiator: 0.6.2 + tiny-emitter: 2.1.0 + virtual-scroll: 2.2.1 dev: false - engines: - node: '>= 0.6' - resolution: - integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - /acorn/7.4.1: + + /@sveltejs/adapter-auto/1.0.0-next.80: + resolution: {integrity: sha512-352WoZr9fQgxJqgNENvxRr2gsA+wTF6V9AVaQaaatDYd3RVEBaXTYOOalFaRLSa25mRUJaLYP2aaliqczMl23g==} + dependencies: + '@sveltejs/adapter-cloudflare': 1.0.0-next.38 + '@sveltejs/adapter-netlify': 1.0.0-next.78 + '@sveltejs/adapter-vercel': 1.0.0-next.77 + transitivePeerDependencies: + - encoding + - supports-color dev: true - engines: - node: '>=0.4.0' + + /@sveltejs/adapter-cloudflare/1.0.0-next.38: + resolution: {integrity: sha512-N6jdTomRZkdKlcNoguwYD7lpdXSt0beIyUJsp0MS/YLm/4gI83y698zFYInFKJ9t5e6DAnuEBSAXcg568z2oFA==} + dependencies: + '@cloudflare/workers-types': 3.16.0 + esbuild: 0.15.9 + worktop: 0.8.0-next.14 + dev: true + + /@sveltejs/adapter-netlify/1.0.0-next.78: + resolution: {integrity: sha512-Yyn/j/0QcLK3Db442ducLUZmyvkO74j7Gdcwu9xN0fQN3kBlCJP9Itx5o4SySrPFGc4Q8cLJ5ELNg+mWduLBAA==} + dependencies: + '@iarna/toml': 2.2.5 + esbuild: 0.15.9 + set-cookie-parser: 2.5.1 + dev: true + + /@sveltejs/adapter-node/1.0.0-next.96: + resolution: {integrity: sha512-tIHaRolUYy2PiHl4RUWaOsYxEjK5lN9501qzCzFbYr/uoLnZcnPGSXNJICwX0AX9AUkV6cvkZey6bLbUQcwH0Q==} + dependencies: + '@rollup/plugin-commonjs': 22.0.2_rollup@2.79.1 + '@rollup/plugin-json': 4.1.0_rollup@2.79.1 + '@rollup/plugin-node-resolve': 14.1.0_rollup@2.79.1 + rollup: 2.79.1 + dev: true + + /@sveltejs/adapter-vercel/1.0.0-next.77: + resolution: {integrity: sha512-r4MqtP+lzx83HfcvI8PU0Yxzmxt6WQq9nzZETLboJouJzhSBUFIN5RmNZfEn6nNIlUwZbGQUEK/FxsRnnxI/Ig==} + dependencies: + '@vercel/nft': 0.22.1 + esbuild: 0.15.9 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@sveltejs/kit/1.0.0-next.504_svelte@3.50.1+vite@3.1.3: + resolution: {integrity: sha512-KrhlSHT3aCVnhRgUoN6aGIjIw3nWEdNwfoZcE1x65F5D7Ju/K9D8dQwyal9v0aBAZyN9nFuXxsYGaMLE9sppfw==} + engines: {node: '>=16.14'} hasBin: true - resolution: - integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + requiresBuild: true + peerDependencies: + svelte: ^3.44.0 + vite: ^3.1.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 1.0.8_svelte@3.50.1+vite@3.1.3 + '@types/cookie': 0.5.1 + cookie: 0.5.0 + devalue: 3.1.3 + kleur: 4.1.5 + magic-string: 0.26.4 + mime: 3.0.0 + node-fetch: 3.2.10 + sade: 1.8.1 + set-cookie-parser: 2.5.1 + sirv: 2.0.2 + svelte: 3.50.1 + tiny-glob: 0.2.9 + undici: 5.10.0 + vite: 3.1.3_sass@1.55.0 + transitivePeerDependencies: + - diff-match-patch + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte/1.0.8_svelte@3.50.1+vite@3.1.3: + resolution: {integrity: sha512-1xkVTB4pm6zuign858FzVYE9Fdw9MQBOlxrdd85STV0NvTDmcofcRpcrK+zcIyT8SZ2dseHLu8hvDwzssF6RfA==} + engines: {node: ^14.18.0 || >= 16} + peerDependencies: + diff-match-patch: ^1.0.5 + svelte: ^3.44.0 + vite: ^3.0.0 + peerDependenciesMeta: + diff-match-patch: + optional: true + dependencies: + '@rollup/pluginutils': 4.2.1 + debug: 4.3.4 + deepmerge: 4.2.2 + kleur: 4.1.5 + magic-string: 0.26.4 + svelte: 3.50.1 + svelte-hmr: 0.15.0_svelte@3.50.1 + vite: 3.1.3_sass@1.55.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@trysound/sax/0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true + + /@types/cookie/0.5.1: + resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} + dev: true + + /@types/estree/0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: true + + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + dev: true + + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + + /@types/node/18.7.22: + resolution: {integrity: sha512-TsmoXYd4zrkkKjJB0URF/mTIKPl+kVcbqClB2F/ykU7vil1BfWZVndOnpEIozPv4fURD28gyPFeIkW2G+KXOvw==} + dev: true + + /@types/pug/2.0.6: + resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} + dev: true + + /@types/resolve/1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 18.7.22 + dev: true + + /@types/sass/1.43.1: + resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} + dependencies: + '@types/node': 18.7.22 + dev: true + + /@typescript-eslint/eslint-plugin/5.38.1_qatzzi2vqzjqg2tq57nszrvcfi: + resolution: {integrity: sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.38.1_7ilbxdl5iguzcjriqqcg2m5cku + '@typescript-eslint/scope-manager': 5.38.1 + '@typescript-eslint/type-utils': 5.38.1_7ilbxdl5iguzcjriqqcg2m5cku + '@typescript-eslint/utils': 5.38.1_7ilbxdl5iguzcjriqqcg2m5cku + debug: 4.3.4 + eslint: 8.24.0 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.38.1_7ilbxdl5iguzcjriqqcg2m5cku: + resolution: {integrity: sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.38.1 + '@typescript-eslint/types': 5.38.1 + '@typescript-eslint/typescript-estree': 5.38.1_typescript@4.8.3 + debug: 4.3.4 + eslint: 8.24.0 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/5.38.1: + resolution: {integrity: sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.38.1 + '@typescript-eslint/visitor-keys': 5.38.1 + dev: true + + /@typescript-eslint/type-utils/5.38.1_7ilbxdl5iguzcjriqqcg2m5cku: + resolution: {integrity: sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.38.1_typescript@4.8.3 + '@typescript-eslint/utils': 5.38.1_7ilbxdl5iguzcjriqqcg2m5cku + debug: 4.3.4 + eslint: 8.24.0 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/5.38.1: + resolution: {integrity: sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree/5.38.1_typescript@4.8.3: + resolution: {integrity: sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.38.1 + '@typescript-eslint/visitor-keys': 5.38.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.8.3 + typescript: 4.8.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.38.1_7ilbxdl5iguzcjriqqcg2m5cku: + resolution: {integrity: sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 5.38.1 + '@typescript-eslint/types': 5.38.1 + '@typescript-eslint/typescript-estree': 5.38.1_typescript@4.8.3 + eslint: 8.24.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.24.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/5.38.1: + resolution: {integrity: sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.38.1 + eslint-visitor-keys: 3.3.0 + dev: true + + /@vercel/nft/0.22.1: + resolution: {integrity: sha512-lYYZIoxRurqDOSoVIdBicGnpUIpfyaS5qVjdPq+EfI285WqtZK3NK/dyCkiyBul+X2U2OEhRyeMdXPCHGJbohw==} + hasBin: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.10 + acorn: 8.8.0 + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + node-gyp-build: 4.5.0 + resolve-from: 5.0.0 + rollup-pluginutils: 2.8.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /abbrev/1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: true + + /acorn-jsx/5.3.2_acorn@8.8.0: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.0 + dev: true + + /acorn/8.8.0: + resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /agent-base/6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 dev: true - resolution: - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - /amdefine/1.0.1: + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} dev: true - engines: - node: '>=0.4.2' - resolution: - integrity: sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - /animejs/3.2.1: - dev: false - resolution: - integrity: sha512-sWno3ugFryK5nhiDm/2BKeFCpZv7vzerWUcUPyAZLDhMek3+S/p418ldZJbJXo5ZUOpfm2kP2XRO4NJcULMy9A== - /ansi-regex/2.1.1: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - /ansi-regex/4.1.0: - dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - /ansi-styles/2.2.1: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - /ansi-styles/3.2.1: + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: - color-convert: 1.9.3 + color-convert: 2.0.1 dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - /aproba/1.2.0: + + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 dev: true - resolution: - integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - /are-we-there-yet/1.1.5: + + /aproba/2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: true + + /are-we-there-yet/2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} dependencies: delegates: 1.0.0 - readable-stream: 2.3.7 + readable-stream: 3.6.0 dev: true - resolution: - integrity: sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - /array-find-index/1.0.2: + + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - /asn1/0.2.4: - dependencies: - safer-buffer: 2.1.2 + + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} dev: true - resolution: - integrity: sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - /assert-plus/1.0.0: + + /async-sema/3.1.1: + resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} dev: true - engines: - node: '>=0.8' - resolution: - integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - /async-foreach/0.1.3: - dev: true - resolution: - integrity: sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= - /asynckit/0.4.0: - dev: true - resolution: - integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k= - /autoprefixer/10.2.1_postcss@8.2.4: - dependencies: - browserslist: 4.16.1 - caniuse-lite: 1.0.30001173 - colorette: 1.2.1 - fraction.js: 4.0.13 - normalize-range: 0.1.2 - postcss: 8.2.4 - postcss-value-parser: 4.1.0 - dev: true - engines: - node: ^10 || ^12 || >=14 + + /autoprefixer/10.4.12_postcss@8.4.16: + resolution: {integrity: sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==} + engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 - resolution: - integrity: sha512-dwP0UjyYvROUvtU+boBx8ff5pPWami1NGTrJs9YUsS/oZVbRAcdNHOOuXSA1fc46tgKqe072cVaKD69rvCc3QQ== - /autoprefixer/9.8.6: dependencies: - browserslist: 4.16.1 - caniuse-lite: 1.0.30001173 - colorette: 1.2.1 + browserslist: 4.21.4 + caniuse-lite: 1.0.30001412 + fraction.js: 4.2.0 normalize-range: 0.1.2 - num2fraction: 1.2.2 - postcss: 7.0.35 - postcss-value-parser: 4.1.0 + picocolors: 1.0.0 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - hasBin: true - resolution: - integrity: sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== - /aws-sign2/0.7.0: + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - resolution: - integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - /aws4/1.11.0: + + /base-64/1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} dev: true - resolution: - integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - /babel-plugin-dynamic-import-node/2.3.3: + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bindings/1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: - object.assign: 4.1.2 + file-uri-to-path: 1.0.0 dev: true - resolution: - integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - /balanced-match/1.0.0: + + /boolbase/1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true - resolution: - integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - /bcrypt-pbkdf/1.0.2: - dependencies: - tweetnacl: 0.14.5 - dev: true - resolution: - integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - /bl/2.2.1: - dependencies: - readable-stream: 2.3.7 - safe-buffer: 5.2.1 - dev: true - resolution: - integrity: sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: - balanced-match: 1.0.0 + balanced-match: 1.0.2 concat-map: 0.0.1 dev: true - resolution: - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - /browserslist/4.16.1: + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} dependencies: - caniuse-lite: 1.0.30001173 - colorette: 1.2.1 - electron-to-chromium: 1.3.635 - escalade: 3.1.1 - node-releases: 1.1.69 + fill-range: 7.0.1 dev: true - engines: - node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 + + /browserslist/4.21.4: + resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - resolution: - integrity: sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== - /buffer-from/1.1.1: + dependencies: + caniuse-lite: 1.0.30001412 + electron-to-chromium: 1.4.262 + node-releases: 2.0.6 + update-browserslist-db: 1.0.9_browserslist@4.21.4 dev: true - resolution: - integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - /builtin-modules/3.2.0: + + /buffer-crc32/0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - /bytes/3.0.0: - dev: false - engines: - node: '>= 0.8' - resolution: - integrity: sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - /call-bind/1.0.1: + + /builtin-modules/3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.0.2 - dev: true - resolution: - integrity: sha512-tvAvUwNcRikl3RVF20X9lsYmmepsovzTWeJiXjO0PkJp15uy/6xKFZOQtuiSULwYW+6ToZBprphCgWXC2dSgcQ== + get-intrinsic: 1.1.3 + dev: false + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - /camel-case/3.0.0: + + /caniuse-api/3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 + browserslist: 4.21.4 + caniuse-lite: 1.0.30001412 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 dev: true - resolution: - integrity: sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - /camelcase-keys/2.1.0: + + /caniuse-lite/1.0.30001412: + resolution: {integrity: sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==} + dev: true + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: - camelcase: 2.1.1 - map-obj: 1.0.1 + ansi-styles: 4.3.0 + supports-color: 7.2.0 dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - /camelcase/2.1.1: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - /camelcase/5.3.1: - dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - /caniuse-lite/1.0.30001173: - dev: true - resolution: - integrity: sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw== - /caseless/0.12.0: - dev: true - resolution: - integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - /chalk/1.1.3: + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - /chalk/2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + /chownr/2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} dev: true - engines: - node: '>=10' - resolution: - integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - /clean-css/4.2.3: + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: - source-map: 0.6.1 + color-name: 1.1.4 dev: true - engines: - node: '>= 4.0' - resolution: - integrity: sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - /cliui/5.0.0: - dependencies: - string-width: 3.1.0 - strip-ansi: 5.2.0 - wrap-ansi: 5.1.0 + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - resolution: - integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - /code-point-at/1.1.0: + + /color-support/1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - /color-convert/1.9.3: - dependencies: - color-name: 1.1.3 + + /colord/2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: true - resolution: - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - /color-name/1.1.3: + + /commander/7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} dev: true - resolution: - integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - /colorette/1.2.1: - dev: true - resolution: - integrity: sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== - /combined-stream/1.0.8: - dependencies: - delayed-stream: 1.0.0 - dev: true - engines: - node: '>= 0.8' - resolution: - integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - /commander/2.20.3: - dev: true - resolution: - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + /commondir/1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true - resolution: - integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - /compressible/2.0.18: - dependencies: - mime-db: 1.45.0 - dev: false - engines: - node: '>= 0.6' - resolution: - integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - /compression/1.7.4: - dependencies: - accepts: 1.3.7 - bytes: 3.0.0 - compressible: 2.0.18 - debug: 2.6.9 - on-headers: 1.0.2 - safe-buffer: 5.1.2 - vary: 1.1.2 - dev: false - engines: - node: '>= 0.8.0' - resolution: - integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - resolution: - integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - /concat-stream/1.6.2: - dependencies: - buffer-from: 1.1.1 - inherits: 2.0.4 - readable-stream: 2.3.7 - typedarray: 0.0.6 - dev: true - engines: - '0': node >= 0.8 - resolution: - integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + /console-control-strings/1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: true - resolution: - integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - /convert-source-map/1.7.0: - dependencies: - safe-buffer: 5.1.2 + + /cookie/0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} dev: true - resolution: - integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - /core-js-compat/3.8.2: - dependencies: - browserslist: 4.16.1 - semver: 7.0.0 - dev: true - resolution: - integrity: sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ== - /core-util-is/1.0.2: - dev: true - resolution: - integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - /cosmiconfig/7.0.0: - dependencies: - '@types/parse-json': 4.0.0 - import-fresh: 3.3.0 - parse-json: 5.1.0 - path-type: 4.0.0 - yaml: 1.10.0 - dev: true - engines: - node: '>=10' - resolution: - integrity: sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 dev: true - engines: - node: '>= 8' - resolution: - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - /css-blank-pseudo/0.1.4: + + /css-blank-pseudo/3.0.3_postcss@8.4.16: + resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - engines: - node: '>=6.0.0' - hasBin: true - resolution: - integrity: sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== - /css-has-pseudo/0.10.0: + + /css-declaration-sorter/6.3.1_postcss@8.4.16: + resolution: {integrity: sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 dependencies: - postcss: 7.0.35 - postcss-selector-parser: 5.0.0 + postcss: 8.4.16 dev: true - engines: - node: '>=6.0.0' + + /css-has-pseudo/3.0.4_postcss@8.4.16: + resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} + engines: {node: ^12 || ^14 || >=16} hasBin: true - resolution: - integrity: sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== - /css-prefers-color-scheme/3.1.1: + peerDependencies: + postcss: ^8.4 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - engines: - node: '>=6.0.0' + + /css-prefers-color-scheme/6.0.3_postcss@8.4.16: + resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} + engines: {node: ^12 || ^14 || >=16} hasBin: true - resolution: - integrity: sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== - /cssdb/4.4.0: + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.16 dev: true - resolution: - integrity: sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== - /cssesc/2.0.0: + + /css-select/4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 dev: true - engines: - node: '>=4' - hasBin: true - resolution: - integrity: sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + + /css-tree/1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-what/6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssdb/7.0.1: + resolution: {integrity: sha512-pT3nzyGM78poCKLAEy2zWIVX2hikq6dIrjuZzLV98MumBg+xMTNYfHx7paUlfiRTgg91O/vR889CIf+qiv79Rw==} + dev: true + /cssesc/3.0.0: - dev: true - engines: - node: '>=4' + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} hasBin: true - resolution: - integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - /currently-unhandled/0.4.1: - dependencies: - array-find-index: 1.0.2 dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-mI3zP+qxke95mmE2nddsF635V+o= - /dashdash/1.14.1: + + /cssnano-preset-default/5.2.12_postcss@8.4.16: + resolution: {integrity: sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - assert-plus: 1.0.0 + css-declaration-sorter: 6.3.1_postcss@8.4.16 + cssnano-utils: 3.1.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-calc: 8.2.4_postcss@8.4.16 + postcss-colormin: 5.3.0_postcss@8.4.16 + postcss-convert-values: 5.1.2_postcss@8.4.16 + postcss-discard-comments: 5.1.2_postcss@8.4.16 + postcss-discard-duplicates: 5.1.0_postcss@8.4.16 + postcss-discard-empty: 5.1.1_postcss@8.4.16 + postcss-discard-overridden: 5.1.0_postcss@8.4.16 + postcss-merge-longhand: 5.1.6_postcss@8.4.16 + postcss-merge-rules: 5.1.2_postcss@8.4.16 + postcss-minify-font-values: 5.1.0_postcss@8.4.16 + postcss-minify-gradients: 5.1.1_postcss@8.4.16 + postcss-minify-params: 5.1.3_postcss@8.4.16 + postcss-minify-selectors: 5.2.1_postcss@8.4.16 + postcss-normalize-charset: 5.1.0_postcss@8.4.16 + postcss-normalize-display-values: 5.1.0_postcss@8.4.16 + postcss-normalize-positions: 5.1.1_postcss@8.4.16 + postcss-normalize-repeat-style: 5.1.1_postcss@8.4.16 + postcss-normalize-string: 5.1.0_postcss@8.4.16 + postcss-normalize-timing-functions: 5.1.0_postcss@8.4.16 + postcss-normalize-unicode: 5.1.0_postcss@8.4.16 + postcss-normalize-url: 5.1.0_postcss@8.4.16 + postcss-normalize-whitespace: 5.1.1_postcss@8.4.16 + postcss-ordered-values: 5.1.3_postcss@8.4.16 + postcss-reduce-initial: 5.1.0_postcss@8.4.16 + postcss-reduce-transforms: 5.1.0_postcss@8.4.16 + postcss-svgo: 5.1.0_postcss@8.4.16 + postcss-unique-selectors: 5.1.1_postcss@8.4.16 dev: true - engines: - node: '>=0.10' - resolution: - integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - /debug/2.6.9: + + /cssnano-utils/3.1.0_postcss@8.4.16: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - ms: 2.0.0 + postcss: 8.4.16 + dev: true + + /cssnano/5.1.13_postcss@8.4.16: + resolution: {integrity: sha512-S2SL2ekdEz6w6a2epXn4CmMKU4K3KpcyXLKfAYc9UQQqJRkD/2eLUG0vJ3Db/9OvO5GuAdgXw3pFbR6abqghDQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.12_postcss@8.4.16 + lilconfig: 2.0.6 + postcss: 8.4.16 + yaml: 1.10.2 + dev: true + + /csso/4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true + + /data-uri-to-buffer/4.0.0: + resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} + engines: {node: '>= 12'} + dev: true + + /dayjs/1.11.5: + resolution: {integrity: sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==} dev: false - resolution: - integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - /debug/4.3.1: - dependencies: - ms: 2.1.2 - dev: true - engines: - node: '>=6.0' + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: supports-color: optional: true - resolution: - integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - /decamelize/1.2.0: + dependencies: + ms: 2.1.2 dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - /deep-is/0.1.3: + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - resolution: - integrity: sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + /deepmerge/4.2.2: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - /define-properties/1.1.3: - dependencies: - object-keys: 1.1.1 - dev: true - engines: - node: '>= 0.4' - resolution: - integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - /delayed-stream/1.0.0: - dev: true - engines: - node: '>=0.4.0' - resolution: - integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + /delegates/1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: true - resolution: - integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - /detect-indent/6.0.0: + + /detect-indent/6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== - /dotenv/8.2.0: + + /detect-libc/2.0.1: + resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} + engines: {node: '>=8'} dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - /duplexify/3.7.1: + + /devalue/3.1.3: + resolution: {integrity: sha512-9KO89Cb+qjzf2CqdrH+NuLaqdk9GhDP5EhR4zlkR51dvuIaiqtlkDkGzLMShDemwUy21raSMdu+kpX8Enw3yGQ==} + dev: true + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.7 - stream-shift: 1.0.1 + path-type: 4.0.0 dev: true - resolution: - integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - /ecc-jsbn/0.1.2: + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - dev: true - resolution: - integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - /electron-to-chromium/1.3.635: - dev: true - resolution: - integrity: sha512-RRriZOLs9CpW6KTLmgBqyUdnY0QNqqWs0HOtuQGGEMizOTNNn1P7sGRBxARnUeLejOsgwjDyRqT3E/CSst02ZQ== - /emoji-regex/7.0.3: - dev: true - resolution: - integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - /end-of-stream/1.4.4: - dependencies: - once: 1.4.0 - dev: true - resolution: - integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - /env-paths/2.2.0: - dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== - /error-ex/1.3.2: - dependencies: - is-arrayish: 0.2.1 - dev: true - resolution: - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - /escalade/3.1.1: - dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - /escape-string-regexp/1.0.5: - dev: true - engines: - node: '>=0.8.0' - resolution: - integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - /escodegen/1.14.3: - dependencies: - esprima: 4.0.1 - estraverse: 4.3.0 esutils: 2.0.3 - optionator: 0.8.3 dev: true - engines: - node: '>=4.0' - hasBin: true - optionalDependencies: - source-map: 0.6.1 - resolution: - integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - /esprima/4.0.1: + + /dom-serializer/1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 dev: true - engines: - node: '>=4' - hasBin: true - resolution: - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - /estraverse/4.3.0: + + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true - engines: - node: '>=4.0' - resolution: - integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - /estree-walker/0.6.1: + + /domhandler/4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 dev: true - resolution: - integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - /estree-walker/1.0.1: + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 dev: true - resolution: - integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - /estree-walker/2.0.2: + + /electron-to-chromium/1.4.262: + resolution: {integrity: sha512-Ckn5haqmGh/xS8IbcgK3dnwAVnhDyo/WQnklWn6yaMucYTq7NNxwlGE8ElzEOnonzRLzUCo2Ot3vUb2GYUF2Hw==} dev: true - resolution: - integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - /esutils/2.0.3: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - /ev-emitter/1.1.1: + + /embla-carousel/7.0.3: + resolution: {integrity: sha512-Zo8E/qNb8J7n/jcfQxPrfdARlTgsMvmcXshn3J/2oxWVLwL/3N4cAhuqLQiud/oCjZzl+A8maCJDe2PDVlc/cA==} dev: false - resolution: - integrity: sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q== - /events/3.2.0: + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - engines: - node: '>=0.8.x' - resolution: - integrity: sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== - /extend/3.0.2: + + /entities/2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true - resolution: - integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - /extsprintf/1.3.0: + + /es6-promise/3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true - engines: - '0': node >=0.6.0 - resolution: - integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - /falafel/2.2.4: - dependencies: - acorn: 7.4.1 - foreach: 2.0.5 - isarray: 2.0.5 - object-keys: 1.1.1 + + /esbuild-android-64/0.15.9: + resolution: {integrity: sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true dev: true - engines: - node: '>=0.4.0' - resolution: - integrity: sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ== - /fast-deep-equal/3.1.3: - dev: true - resolution: - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - /fast-json-stable-stringify/2.1.0: - dev: true - resolution: - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - /fast-levenshtein/2.0.6: - dev: true - resolution: - integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - /find-up/1.1.2: - dependencies: - path-exists: 2.1.0 - pinkie-promise: 2.0.1 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - /find-up/3.0.0: - dependencies: - locate-path: 3.0.0 - dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - /flatten/1.0.3: - dev: true - resolution: - integrity: sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== - /foreach/2.0.5: - dev: true - resolution: - integrity: sha1-C+4AUBiusmDQo6865ljdATbsG5k= - /forever-agent/0.6.1: - dev: true - resolution: - integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - /form-data/2.3.3: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.28 - dev: true - engines: - node: '>= 0.12' - resolution: - integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - /fraction.js/4.0.13: - dev: true - resolution: - integrity: sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA== - /from2/2.3.0: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.7 - dev: true - resolution: - integrity: sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - /fs-minipass/2.1.0: - dependencies: - minipass: 3.1.3 - dev: true - engines: - node: '>= 8' - resolution: - integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - /fs.realpath/1.0.0: - dev: true - resolution: - integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - /fsevents/2.1.3: - deprecated: '"Please update to latest v2.3 or v2.2"' - dev: true - engines: - node: ^8.16.0 || ^10.6.0 || >=11.0.0 optional: true - os: - - darwin - resolution: - integrity: sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - /function-bind/1.1.1: + + /esbuild-android-arm64/0.15.9: + resolution: {integrity: sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true - resolution: - integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - /gauge/2.7.4: + optional: true + + /esbuild-darwin-64/0.15.9: + resolution: {integrity: sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.15.9: + resolution: {integrity: sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.15.9: + resolution: {integrity: sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.15.9: + resolution: {integrity: sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.15.9: + resolution: {integrity: sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.15.9: + resolution: {integrity: sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.15.9: + resolution: {integrity: sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.15.9: + resolution: {integrity: sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.15.9: + resolution: {integrity: sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.15.9: + resolution: {integrity: sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.15.9: + resolution: {integrity: sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.15.9: + resolution: {integrity: sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.15.9: + resolution: {integrity: sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.15.9: + resolution: {integrity: sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.15.9: + resolution: {integrity: sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.15.9: + resolution: {integrity: sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.15.9: + resolution: {integrity: sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.15.9: + resolution: {integrity: sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.15.9: + resolution: {integrity: sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.9 + '@esbuild/linux-loong64': 0.15.9 + esbuild-android-64: 0.15.9 + esbuild-android-arm64: 0.15.9 + esbuild-darwin-64: 0.15.9 + esbuild-darwin-arm64: 0.15.9 + esbuild-freebsd-64: 0.15.9 + esbuild-freebsd-arm64: 0.15.9 + esbuild-linux-32: 0.15.9 + esbuild-linux-64: 0.15.9 + esbuild-linux-arm: 0.15.9 + esbuild-linux-arm64: 0.15.9 + esbuild-linux-mips64le: 0.15.9 + esbuild-linux-ppc64le: 0.15.9 + esbuild-linux-riscv64: 0.15.9 + esbuild-linux-s390x: 0.15.9 + esbuild-netbsd-64: 0.15.9 + esbuild-openbsd-64: 0.15.9 + esbuild-sunos-64: 0.15.9 + esbuild-windows-32: 0.15.9 + esbuild-windows-64: 0.15.9 + esbuild-windows-arm64: 0.15.9 + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-plugin-svelte3/4.0.0_snydkosur25h6rjxszquwacaua: + resolution: {integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==} + peerDependencies: + eslint: '>=8.0.0' + svelte: ^3.2.0 dependencies: - aproba: 1.2.0 + eslint: 8.24.0 + svelte: 3.50.1 + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.24.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.24.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint/8.24.0: + resolution: {integrity: sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.3.2 + '@humanwhocodes/config-array': 0.10.5 + '@humanwhocodes/gitignore-to-minimatch': 1.0.2 + '@humanwhocodes/module-importer': 1.0.1 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.24.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.0 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.17.0 + globby: 11.1.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-sdsl: 4.1.4 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.4.0: + resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.0 + acorn-jsx: 5.3.2_acorn@8.8.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker/0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + dev: true + + /estree-walker/1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq/1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + dependencies: + reusify: 1.0.4 + dev: true + + /fetch-blob/3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: true + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /file-uri-to-path/1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted/3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /focus-visible/5.2.0: + resolution: {integrity: sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==} + dev: false + + /formdata-polyfill/4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: true + + /fraction.js/4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + dev: true + + /fs-minipass/2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /gauge/3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 console-control-strings: 1.1.0 has-unicode: 2.0.1 object-assign: 4.1.1 - signal-exit: 3.0.3 - string-width: 1.0.2 - strip-ansi: 3.0.1 - wide-align: 1.1.3 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 dev: true - resolution: - integrity: sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - /gaze/1.1.3: - dependencies: - globule: 1.3.2 - dev: true - engines: - node: '>= 4.0.0' - resolution: - integrity: sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== - /gensync/1.0.0-beta.2: - dev: true - engines: - node: '>=6.9.0' - resolution: - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - /get-caller-file/2.0.5: - dev: true - engines: - node: 6.* || 8.* || >= 10.* - resolution: - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - /get-intrinsic/1.0.2: + + /get-intrinsic/1.1.3: + resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: function-bind: 1.1.1 has: 1.0.3 - has-symbols: 1.0.1 - dev: true - resolution: - integrity: sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== - /get-stdin/4.0.1: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - /getpass/0.1.7: + has-symbols: 1.0.3 + dev: false + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: - assert-plus: 1.0.0 + is-glob: 4.0.3 dev: true - resolution: - integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - /glob/7.1.6: + + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.4 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 dev: true - resolution: - integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - /globals/11.12.0: - dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - /globule/1.3.2: + + /globals/13.17.0: + resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} + engines: {node: '>=8'} dependencies: - glob: 7.1.6 - lodash: 4.17.20 - minimatch: 3.0.4 + type-fest: 0.20.2 dev: true - engines: - node: '>= 0.10' - resolution: - integrity: sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA== - /glsl-inject-defines/1.0.3: + + /globalyzer/0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: - glsl-token-inject-block: 1.1.0 - glsl-token-string: 1.0.1 - glsl-tokenizer: 2.1.5 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 dev: true - resolution: - integrity: sha1-3RqswsF/yyvT/DJBHGYz0Ne2D9Q= - /glsl-resolve/0.0.1: - dependencies: - resolve: 0.6.3 - xtend: 2.2.0 + + /globrex/0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: true - resolution: - integrity: sha1-iUvvc5ENeSyBtRQxgANdCnivdtM= - /glsl-token-assignments/2.0.2: + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true - resolution: - integrity: sha1-pdgqt4SZwuimuDy2lJXm5mXOAZ8= - /glsl-token-defines/1.0.0: - dependencies: - glsl-tokenizer: 2.1.5 + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - resolution: - integrity: sha1-y4kqqVmTYjFyhHDU90AySJaX+p0= - /glsl-token-depth/1.1.2: - dev: true - resolution: - integrity: sha1-I8XjDuK9JViEtKKLyFC495HpXYQ= - /glsl-token-descope/1.0.2: - dependencies: - glsl-token-assignments: 2.0.2 - glsl-token-depth: 1.1.2 - glsl-token-properties: 1.0.1 - glsl-token-scope: 1.1.2 - dev: true - resolution: - integrity: sha1-D8kKsyYYa4L1l7LnfcniHvzTIHY= - /glsl-token-inject-block/1.1.0: - dev: true - resolution: - integrity: sha1-4QFfWYDBCRgkraomJfHf3ovQADQ= - /glsl-token-properties/1.0.1: - dev: true - resolution: - integrity: sha1-SD3D2Dnw1LXGFx0VkfJJvlPCip4= - /glsl-token-scope/1.1.2: - dev: true - resolution: - integrity: sha1-oXKOeN8kRE+cuT/RjvD3VQOmQ7E= - /glsl-token-string/1.0.1: - dev: true - resolution: - integrity: sha1-WUQdL4V958NEnJRWZgIezjWOSOw= - /glsl-token-whitespace-trim/1.0.0: - dev: true - resolution: - integrity: sha1-RtHf6Yx1vX1QTAXX0RsbPpzJOxA= - /glsl-tokenizer/2.1.5: - dependencies: - through2: 0.6.5 - dev: true - resolution: - integrity: sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA== - /glslify-bundle/5.1.1: - dependencies: - glsl-inject-defines: 1.0.3 - glsl-token-defines: 1.0.0 - glsl-token-depth: 1.1.2 - glsl-token-descope: 1.0.2 - glsl-token-scope: 1.1.2 - glsl-token-string: 1.0.1 - glsl-token-whitespace-trim: 1.0.0 - glsl-tokenizer: 2.1.5 - murmurhash-js: 1.0.0 - shallow-copy: 0.0.1 - dev: true - resolution: - integrity: sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A== - /glslify-deps/1.3.2: - dependencies: - '@choojs/findup': 0.2.1 - events: 3.2.0 - glsl-resolve: 0.0.1 - glsl-tokenizer: 2.1.5 - graceful-fs: 4.2.4 - inherits: 2.0.4 - map-limit: 0.0.1 - resolve: 1.19.0 - dev: true - resolution: - integrity: sha512-7S7IkHWygJRjcawveXQjRXLO2FTjijPDYC7QfZyAQanY+yGLCFHYnPtsGT9bdyHiwPTw/5a1m1M9hamT2aBpag== - /glslify/7.1.1: - dependencies: - bl: 2.2.1 - concat-stream: 1.6.2 - duplexify: 3.7.1 - falafel: 2.2.4 - from2: 2.3.0 - glsl-resolve: 0.0.1 - glsl-token-whitespace-trim: 1.0.0 - glslify-bundle: 5.1.1 - glslify-deps: 1.3.2 - minimist: 1.2.5 - resolve: 1.19.0 - stack-trace: 0.0.9 - static-eval: 2.1.0 - through2: 2.0.5 - xtend: 4.0.2 - dev: true - hasBin: true - resolution: - integrity: sha512-bud98CJ6kGZcP9Yxcsi7Iz647wuDz3oN+IZsjCRi5X1PI7t/xPKeL0mOwXJjo+CRZMqvq0CkSJiywCcY7kVYog== - /graceful-fs/4.2.4: - dev: true - resolution: - integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - /har-schema/2.0.0: - dev: true - engines: - node: '>=4' - resolution: - integrity: sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - /har-validator/5.1.5: - dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - deprecated: this library is no longer supported - dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - /has-ansi/2.0.0: - dependencies: - ansi-regex: 2.1.1 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - /has-flag/3.0.0: - dev: true - engines: - node: '>=4' - resolution: - integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - /has-symbols/1.0.1: - dev: true - engines: - node: '>= 0.4' - resolution: - integrity: sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false + /has-unicode/2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} dev: true - resolution: - integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: true - engines: - node: '>= 0.4.0' - resolution: - integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - /he/1.2.0: - dev: true - hasBin: true - resolution: - integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - /hosted-git-info/2.8.8: - dev: true - resolution: - integrity: sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - /html-minifier/4.0.0: - dependencies: - camel-case: 3.0.0 - clean-css: 4.2.3 - commander: 2.20.3 - he: 1.2.0 - param-case: 2.1.1 - relateurl: 0.2.7 - uglify-js: 3.12.4 - dev: true - engines: - node: '>=6' - hasBin: true - resolution: - integrity: sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig== - /http-link-header/1.0.3: - dev: true - engines: - node: '>=4.0.0' - resolution: - integrity: sha512-nARK1wSKoBBrtcoESlHBx36c1Ln/gnbNQi1eB6MeTUefJIT3NvUOsV15bClga0k38f0q/kN5xxrGSDS3EFnm9w== - /http-signature/1.2.0: - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.1 - sshpk: 1.16.1 - dev: true - engines: - node: '>=0.8' - npm: '>=1.3.7' - resolution: - integrity: sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - /imagesloaded/4.1.4: - dependencies: - ev-emitter: 1.1.1 + + /hey-listen/1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} dev: false - resolution: - integrity: sha512-ltiBVcYpc/TYTF5nolkMNsnREHW+ICvfQ3Yla2Sgr71YFwQ86bDwV9hgpFhFtrGPuwEx5+LqOHIrdXBdoWwwsA== - /import-cwd/3.0.0: + + /https-proxy-agent/5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} dependencies: - import-from: 3.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== + + /ignore/5.2.0: + resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + engines: {node: '>= 4'} + dev: true + + /immutable/4.1.0: + resolution: {integrity: sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==} + dev: true + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - /import-from/3.0.0: - dependencies: - resolve-from: 5.0.0 + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - /indent-string/2.1.0: - dependencies: - repeating: 2.0.1 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - /indexes-of/1.0.1: - dev: true - resolution: - integrity: sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true - resolution: - integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - resolution: - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - /is-arrayish/0.2.1: + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 dev: true - resolution: - integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - /is-core-module/2.2.0: + + /is-builtin-module/3.2.0: + resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-core-module/2.10.0: + resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: has: 1.0.3 dev: true - resolution: - integrity: sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - /is-finite/1.1.0: + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - /is-fullwidth-code-point/1.0.0: + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: - number-is-nan: 1.0.1 + is-extglob: 2.1.1 dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - /is-fullwidth-code-point/2.0.0: - dev: true - engines: - node: '>=4' - resolution: - integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + /is-module/1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true - resolution: - integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + /is-reference/1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': 0.0.45 + '@types/estree': 1.0.0 dev: true - resolution: - integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - /is-typedarray/1.0.0: - dev: true - resolution: - integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - /is-utf8/0.2.1: - dev: true - resolution: - integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - /isarray/0.0.1: - dev: true - resolution: - integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - /isarray/1.0.0: - dev: true - resolution: - integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - /isarray/2.0.5: - dev: true - resolution: - integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - resolution: - integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - /isstream/0.1.2: - dev: true - resolution: - integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - /jest-worker/26.6.2: + + /isomorphic-fetch/3.0.0: + resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} dependencies: - '@types/node': 14.14.20 - merge-stream: 2.0.0 - supports-color: 7.2.0 - dev: true - engines: - node: '>= 10.13.0' - resolution: - integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - /js-base64/2.6.4: - dev: true - resolution: - integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== - /js-tokens/4.0.0: - dev: true - resolution: - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - /jsbn/0.1.1: - dev: true - resolution: - integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - /jsesc/0.5.0: - dev: true - hasBin: true - resolution: - integrity: sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - /jsesc/2.5.2: - dev: true - engines: - node: '>=4' - hasBin: true - resolution: - integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - /json-parse-even-better-errors/2.3.1: - dev: true - resolution: - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - /json-schema-traverse/0.4.1: - dev: true - resolution: - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - /json-schema/0.2.3: - dev: true - resolution: - integrity: sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - /json-stringify-safe/5.0.1: - dev: true - resolution: - integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - /json5/2.1.3: - dependencies: - minimist: 1.2.5 - dev: true - engines: - node: '>=6' - hasBin: true - resolution: - integrity: sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - /jsprim/1.4.1: - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.2.3 - verror: 1.10.0 - dev: true - engines: - '0': node >=0.6.0 - resolution: - integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - /lazysizes/5.3.0: + node-fetch: 2.6.7 + whatwg-fetch: 3.6.2 + transitivePeerDependencies: + - encoding dev: false - resolution: - integrity: sha512-h5i4WPc2FdeTOUHBcU7eyNnOULPCC90wVho+SQTZRh9Q8lev6P0yFwKq8rvfMdBvsKsCyDQBdqoBng9FYbcR/g== - /levn/0.3.0: + + /js-sdsl/4.1.4: + resolution: {integrity: sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==} + dev: true + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 + argparse: 2.0.1 dev: true - engines: - node: '>= 0.8.0' - resolution: - integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - /lines-and-columns/1.1.6: + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - resolution: - integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - /load-json-file/1.1.0: + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /kleur/4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: - graceful-fs: 4.2.4 - parse-json: 2.2.0 - pify: 2.3.0 - pinkie-promise: 2.0.1 - strip-bom: 2.0.0 + prelude-ls: 1.2.1 + type-check: 0.4.0 dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - /locate-path/3.0.0: + + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + engines: {node: '>=10'} + dev: true + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 + p-locate: 5.0.0 dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - /lodash._reinterpolate/3.0.0: + + /lodash.camelcase/4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: false + + /lodash.memoize/4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true - resolution: - integrity: sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - /lodash.template/4.5.0: - dependencies: - lodash._reinterpolate: 3.0.0 - lodash.templatesettings: 4.2.0 + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - resolution: - integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - /lodash.templatesettings/4.2.0: - dependencies: - lodash._reinterpolate: 3.0.0 + + /lodash.snakecase/4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: false + + /lodash.uniq/4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} dev: true - resolution: - integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - /lodash/4.17.20: - dev: true - resolution: - integrity: sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - /loud-rejection/1.6.0: - dependencies: - currently-unhandled: 0.4.1 - signal-exit: 3.0.3 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - /lower-case/1.1.4: - dev: true - resolution: - integrity: sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true - engines: - node: '>=10' - resolution: - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - /magic-string/0.25.7: + + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 dev: true - resolution: - integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - /map-limit/0.0.1: + + /magic-string/0.26.4: + resolution: {integrity: sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==} + engines: {node: '>=12'} dependencies: - once: 1.3.3 + sourcemap-codec: 1.4.8 dev: true - resolution: - integrity: sha1-63lhAxwPDo0AG/LVb6toXViCLzg= - /map-obj/1.0.1: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - /meow/3.7.0: + + /make-dir/3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} dependencies: - camelcase-keys: 2.1.0 - decamelize: 1.2.0 - loud-rejection: 1.6.0 - map-obj: 1.0.1 - minimist: 1.2.5 - normalize-package-data: 2.5.0 - object-assign: 4.1.1 - read-pkg-up: 1.0.1 - redent: 1.0.0 - trim-newlines: 1.0.0 + semver: 6.3.0 dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - /merge-stream/2.0.0: + + /mdn-data/2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: true - resolution: - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - /mime-db/1.45.0: - engines: - node: '>= 0.6' - resolution: - integrity: sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== - /mime-types/2.1.28: + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: - mime-db: 1.45.0 - engines: - node: '>= 0.6' - resolution: - integrity: sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== - /mime/2.4.7: - dev: false - engines: - node: '>=4.0.0' + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime/3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} hasBin: true - resolution: - integrity: sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA== - /min-indent/1.0.1: dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - /minimatch/3.0.4: + + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true - resolution: - integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - /minimist/1.2.5: + + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: true - resolution: - integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - /minipass/3.1.3: + + /minipass/3.3.4: + resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} + engines: {node: '>=8'} dependencies: yallist: 4.0.0 dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + /minizlib/2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} dependencies: - minipass: 3.1.3 + minipass: 3.3.4 yallist: 4.0.0 dev: true - engines: - node: '>= 8' - resolution: - integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - /mkdirp/0.5.5: - dependencies: - minimist: 1.2.5 - dev: true + + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true - resolution: - integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist: 1.2.6 + dev: true + /mkdirp/1.0.4: - dev: true - engines: - node: '>=10' + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} hasBin: true - resolution: - integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - /ms/2.0.0: + dev: true + + /motion/10.14.2: + resolution: {integrity: sha512-zZp9PL4/O7nSgQBWBDdyvGm25Ef/hQUUVAOnyzxn2IvAhp496M+RB9p1ce4nN7cYLizox2Bq77/dTIjFGkJmAw==} + dependencies: + '@motionone/animation': 10.14.0 + '@motionone/dom': 10.14.2 + '@motionone/svelte': 10.14.2 + '@motionone/types': 10.14.0 + '@motionone/utils': 10.14.0 + '@motionone/vue': 10.14.2 dev: false - resolution: - integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + + /mri/1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + + /mrmime/1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - resolution: - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - /murmurhash-js/1.0.0: - dev: true - resolution: - integrity: sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E= - /nan/2.14.2: - dev: true - resolution: - integrity: sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - /nanoid/3.1.20: - dev: true - engines: - node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - resolution: - integrity: sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== - /negotiator/0.6.2: - dev: false - engines: - node: '>= 0.6' - resolution: - integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - /no-case/2.3.2: - dependencies: - lower-case: 1.1.4 dev: true - resolution: - integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - /node-fetch/2.6.1: - dev: false - engines: - node: 4.x || >=6.0.0 - resolution: - integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - /node-gyp/7.1.2: - dependencies: - env-paths: 2.2.0 - glob: 7.1.6 - graceful-fs: 4.2.4 - nopt: 5.0.0 - npmlog: 4.1.2 - request: 2.88.2 - rimraf: 3.0.2 - semver: 7.3.4 - tar: 6.1.0 - which: 2.0.2 + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - engines: - node: '>= 10.12.0' + + /node-domexception/1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: true + + /node-fetch/2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + + /node-fetch/3.2.10: + resolution: {integrity: sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.0 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: true + + /node-gyp-build/4.5.0: + resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} hasBin: true - resolution: - integrity: sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== - /node-releases/1.1.69: dev: true - resolution: - integrity: sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA== - /node-sass/5.0.0: - dependencies: - async-foreach: 0.1.3 - chalk: 1.1.3 - cross-spawn: 7.0.3 - gaze: 1.1.3 - get-stdin: 4.0.1 - glob: 7.1.6 - lodash: 4.17.20 - meow: 3.7.0 - mkdirp: 0.5.5 - nan: 2.14.2 - node-gyp: 7.1.2 - npmlog: 4.1.2 - request: 2.88.2 - sass-graph: 2.2.5 - stdout-stream: 1.4.1 - true-case-path: 1.0.3 + + /node-releases/2.0.6: + resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} dev: true - engines: - node: '>=10' - hasBin: true - requiresBuild: true - resolution: - integrity: sha512-opNgmlu83ZCF792U281Ry7tak9IbVC+AKnXGovcQ8LG8wFaJv6cLnRlc6DIHlmNxWEexB5bZxi9SZ9JyUuOYjw== + /nopt/5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true dependencies: abbrev: 1.1.1 dev: true - engines: - node: '>=6' - hasBin: true - resolution: - integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - /normalize-package-data/2.5.0: - dependencies: - hosted-git-info: 2.8.8 - resolve: 1.19.0 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} dev: true - resolution: - integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + /normalize-range/0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - /normalize.css/8.0.1: - dev: false - resolution: - integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== - /npmlog/4.1.2: + + /normalize-url/6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true + + /npmlog/5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} dependencies: - are-we-there-yet: 1.1.5 + are-we-there-yet: 2.0.0 console-control-strings: 1.1.0 - gauge: 2.7.4 + gauge: 3.0.2 set-blocking: 2.0.0 dev: true - resolution: - integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - /num2fraction/1.2.2: + + /nth-check/2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 dev: true - resolution: - integrity: sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - /number-is-nan/1.0.1: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - /oauth-sign/0.9.0: - dev: true - resolution: - integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - /object-keys/1.1.1: - dev: true - engines: - node: '>= 0.4' - resolution: - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - /object.assign/4.1.2: - dependencies: - call-bind: 1.0.1 - define-properties: 1.1.3 - has-symbols: 1.0.1 - object-keys: 1.1.1 - dev: true - engines: - node: '>= 0.4' - resolution: - integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - /on-headers/1.0.2: + + /object-inspect/1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: false - engines: - node: '>= 0.8' - resolution: - integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - /once/1.3.3: + + /object-keys-normalizer/1.0.1: + resolution: {integrity: sha512-bQk7HLUK9UxmOlniNcwaESebtOM7i8eJhTnqDQCwkukVA72XRnO0RIvs+a5EIJsH8tWEK9m96NryugxdXQ6AXg==} dependencies: - wrappy: 1.0.2 - dev: true - resolution: - integrity: sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA= + lodash.camelcase: 4.3.0 + lodash.snakecase: 4.1.1 + dev: false + + /ogl/0.0.99: + resolution: {integrity: sha512-ENuWxkHGsUJeKNGLuBKjxDDGfLOb8FKxB1Tj/j1Gm9wAZHCFhHGKMgZ9C0UjMaRgE48/BZQ+ARQFhn5pl4QKbg==} + dev: false + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true - resolution: - integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - /optionator/0.8.3: + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} dependencies: - deep-is: 0.1.3 + deep-is: 0.1.4 fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 word-wrap: 1.2.3 dev: true - engines: - node: '>= 0.8.0' - resolution: - integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - /p-limit/2.3.0: + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: - p-try: 2.2.0 + yocto-queue: 0.1.0 dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - /p-locate/3.0.0: + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: - p-limit: 2.3.0 + p-limit: 3.1.0 dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - /p-try/2.2.0: - dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - /param-case/2.1.1: - dependencies: - no-case: 2.3.2 - dev: true - resolution: - integrity: sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - /parse-json/2.2.0: - dependencies: - error-ex: 1.3.2 + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - /parse-json/5.1.0: - dependencies: - '@babel/code-frame': 7.12.11 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.1.6 - dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== - /path-exists/2.1.0: - dependencies: - pinkie-promise: 2.0.1 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - /path-exists/3.0.0: - dev: true - engines: - node: '>=4' - resolution: - integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - /path-parse/1.0.6: + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - resolution: - integrity: sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - /path-type/1.1.0: - dependencies: - graceful-fs: 4.2.4 - pify: 2.3.0 - pinkie-promise: 2.0.1 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - /performance-now/2.1.0: + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true - resolution: - integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - /picomatch/2.2.2: + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} dev: true - engines: - node: '>=8.6' - resolution: - integrity: sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - /pify/2.3.0: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - /pinkie-promise/2.0.1: + + /postcss-attribute-case-insensitive/5.0.2_postcss@8.4.16: + resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - pinkie: 2.0.4 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-ITXW36ejWMBprJsXh3YogihFD/o= - /pinkie/2.0.4: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - /polka/1.0.0-next.11: + + /postcss-browser-comments/4.0.0_yroec54rl3ndwvbunmnefp5nvy: + resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==} + engines: {node: '>=8'} + peerDependencies: + browserslist: '>=4' + postcss: '>=8' dependencies: - '@polka/url': 1.0.0-next.11 - trouter: 3.1.0 - dev: false - engines: - node: '>=6' - resolution: - integrity: sha512-M/HBkS6ILksrDq7uvktCTev81OzuLwNtpxMyYdUhxLKQlMWdsu789XMotQU+p8JY8CM8vx8ML0HudyWjRus/lg== - /postcss-attribute-case-insensitive/4.0.2: - dependencies: - postcss: 7.0.35 - postcss-selector-parser: 6.0.4 + browserslist: 4.21.4 + postcss: 8.4.16 dev: true - resolution: - integrity: sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== - /postcss-color-functional-notation/2.0.1: + + /postcss-calc/8.2.4_postcss@8.4.16: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 dependencies: - postcss: 7.0.35 - postcss-values-parser: 2.0.1 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== - /postcss-color-gray/5.0.0: + + /postcss-clamp/4.1.0_postcss@8.4.16: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 dependencies: - '@csstools/convert-colors': 1.4.0 - postcss: 7.0.35 - postcss-values-parser: 2.0.1 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== - /postcss-color-hex-alpha/5.0.3: + + /postcss-color-functional-notation/4.2.4_postcss@8.4.16: + resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - postcss: 7.0.35 - postcss-values-parser: 2.0.1 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== - /postcss-color-mod-function/3.0.3: + + /postcss-color-hex-alpha/8.0.4_postcss@8.4.16: + resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 dependencies: - '@csstools/convert-colors': 1.4.0 - postcss: 7.0.35 - postcss-values-parser: 2.0.1 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== - /postcss-color-rebeccapurple/4.0.1: + + /postcss-color-rebeccapurple/7.1.1_postcss@8.4.16: + resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - postcss: 7.0.35 - postcss-values-parser: 2.0.1 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== - /postcss-custom-media/7.0.8: + + /postcss-colormin/5.3.0_postcss@8.4.16: + resolution: {integrity: sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 7.0.35 + browserslist: 4.21.4 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== - /postcss-custom-properties/8.0.11: + + /postcss-convert-values/5.1.2_postcss@8.4.16: + resolution: {integrity: sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 7.0.35 - postcss-values-parser: 2.0.1 + browserslist: 4.21.4 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== - /postcss-custom-selectors/5.1.2: + + /postcss-custom-media/8.0.2_postcss@8.4.16: + resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 dependencies: - postcss: 7.0.35 - postcss-selector-parser: 5.0.0 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== - /postcss-dir-pseudo-class/5.0.0: + + /postcss-custom-properties/12.1.9_postcss@8.4.16: + resolution: {integrity: sha512-/E7PRvK8DAVljBbeWrcEQJPG72jaImxF3vvCNFwv9cC8CzigVoNIpeyfnJzphnN3Fd8/auBf5wvkw6W9MfmTyg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - postcss: 7.0.35 - postcss-selector-parser: 5.0.0 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=4.0.0' - resolution: - integrity: sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== - /postcss-double-position-gradients/1.0.0: + + /postcss-custom-selectors/6.0.3_postcss@8.4.16: + resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 dependencies: - postcss: 7.0.35 - postcss-values-parser: 2.0.1 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== - /postcss-env-function/2.0.2: + + /postcss-dir-pseudo-class/6.0.5_postcss@8.4.16: + resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - postcss: 7.0.35 - postcss-values-parser: 2.0.1 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== - /postcss-focus-visible/4.0.0: + + /postcss-discard-comments/5.1.2_postcss@8.4.16: + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== - /postcss-focus-within/3.0.0: + + /postcss-discard-duplicates/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== - /postcss-font-variant/4.0.1: + + /postcss-discard-empty/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 dev: true - resolution: - integrity: sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== - /postcss-gap-properties/2.0.0: + + /postcss-discard-overridden/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== - /postcss-image-set-function/3.0.1: + + /postcss-double-position-gradients/3.1.2_postcss@8.4.16: + resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - postcss: 7.0.35 - postcss-values-parser: 2.0.1 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== - /postcss-initial/3.0.2: + + /postcss-env-function/4.0.6_postcss@8.4.16: + resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 dependencies: - lodash.template: 4.5.0 - postcss: 7.0.35 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== - /postcss-lab-function/2.0.1: + + /postcss-focus-visible/6.0.4_postcss@8.4.16: + resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 dependencies: - '@csstools/convert-colors': 1.4.0 - postcss: 7.0.35 - postcss-values-parser: 2.0.1 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== - /postcss-load-config/3.0.0: + + /postcss-focus-visible/7.1.0_postcss@8.4.16: + resolution: {integrity: sha512-OGxO+eCXVkF94us4uOVLHDPaoJuV8HQhaqmVPo2DtECdjqzWNkmwhFRSRRDT5Sg04JQsAECzgIhpyX0JRTgwlQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - cosmiconfig: 7.0.0 - import-cwd: 3.0.0 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - engines: - node: '>= 10' - resolution: - integrity: sha512-lErrN8imuEF1cSiHBV8MiR7HeuzlDpCGNtaMyYHlOBuJHHOGw6S4xOMZp8BbXPr7AGQp14L6PZDlIOpfFJ6f7w== - /postcss-logical/3.0.0: + + /postcss-focus-within/5.0.4_postcss@8.4.16: + resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== - /postcss-media-minmax/4.0.0: + + /postcss-font-variant/5.0.0_postcss@8.4.16: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== - /postcss-nesting/7.0.1: + + /postcss-gap-properties/3.0.5_postcss@8.4.16: + resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== - /postcss-overflow-shorthand/2.0.0: + + /postcss-image-set-function/4.0.7_postcss@8.4.16: + resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== - /postcss-page-break/2.0.0: + + /postcss-initial/4.0.1_postcss@8.4.16: + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 dev: true - resolution: - integrity: sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== - /postcss-place/4.0.1: + + /postcss-lab-function/4.2.1_postcss@8.4.16: + resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - postcss: 7.0.35 - postcss-values-parser: 2.0.1 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== - /postcss-preset-env/6.7.0: + + /postcss-logical/5.0.4_postcss@8.4.16: + resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 dependencies: - autoprefixer: 9.8.6 - browserslist: 4.16.1 - caniuse-lite: 1.0.30001173 - css-blank-pseudo: 0.1.4 - css-has-pseudo: 0.10.0 - css-prefers-color-scheme: 3.1.1 - cssdb: 4.4.0 - postcss: 7.0.35 - postcss-attribute-case-insensitive: 4.0.2 - postcss-color-functional-notation: 2.0.1 - postcss-color-gray: 5.0.0 - postcss-color-hex-alpha: 5.0.3 - postcss-color-mod-function: 3.0.3 - postcss-color-rebeccapurple: 4.0.1 - postcss-custom-media: 7.0.8 - postcss-custom-properties: 8.0.11 - postcss-custom-selectors: 5.1.2 - postcss-dir-pseudo-class: 5.0.0 - postcss-double-position-gradients: 1.0.0 - postcss-env-function: 2.0.2 - postcss-focus-visible: 4.0.0 - postcss-focus-within: 3.0.0 - postcss-font-variant: 4.0.1 - postcss-gap-properties: 2.0.0 - postcss-image-set-function: 3.0.1 - postcss-initial: 3.0.2 - postcss-lab-function: 2.0.1 - postcss-logical: 3.0.0 - postcss-media-minmax: 4.0.0 - postcss-nesting: 7.0.1 - postcss-overflow-shorthand: 2.0.0 - postcss-page-break: 2.0.0 - postcss-place: 4.0.1 - postcss-pseudo-class-any-link: 6.0.0 - postcss-replace-overflow-wrap: 3.0.0 - postcss-selector-matches: 4.0.0 - postcss-selector-not: 4.0.1 + postcss: 8.4.16 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== - /postcss-pseudo-class-any-link/6.0.0: + + /postcss-media-minmax/5.0.0_postcss@8.4.16: + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 dependencies: - postcss: 7.0.35 - postcss-selector-parser: 5.0.0 + postcss: 8.4.16 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== - /postcss-replace-overflow-wrap/3.0.0: + + /postcss-merge-longhand/5.1.6_postcss@8.4.16: + resolution: {integrity: sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 7.0.35 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.0_postcss@8.4.16 dev: true - resolution: - integrity: sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== - /postcss-selector-matches/4.0.0: + + /postcss-merge-rules/5.1.2_postcss@8.4.16: + resolution: {integrity: sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - balanced-match: 1.0.0 - postcss: 7.0.35 + browserslist: 4.21.4 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - resolution: - integrity: sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== - /postcss-selector-not/4.0.1: + + /postcss-minify-font-values/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - balanced-match: 1.0.0 - postcss: 7.0.35 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - resolution: - integrity: sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== - /postcss-selector-parser/5.0.0: + + /postcss-minify-gradients/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - cssesc: 2.0.0 - indexes-of: 1.0.1 - uniq: 1.0.1 + colord: 2.9.3 + cssnano-utils: 3.1.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - /postcss-selector-parser/6.0.4: + + /postcss-minify-params/5.1.3_postcss@8.4.16: + resolution: {integrity: sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + cssnano-utils: 3.1.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-minify-selectors/5.2.1_postcss@8.4.16: + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-nesting/10.2.0_postcss@8.4.16: + resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.0.2_pnx64jze6bptzcedy5bidi3zdi + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-normalize-charset/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + dev: true + + /postcss-normalize-display-values/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-positions/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-repeat-style/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-string/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-timing-functions/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-unicode/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-url/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize-whitespace/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-normalize/10.0.1_yroec54rl3ndwvbunmnefp5nvy: + resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==} + engines: {node: '>= 12'} + peerDependencies: + browserslist: '>= 4' + postcss: '>= 8' + dependencies: + '@csstools/normalize.css': 12.0.0 + browserslist: 4.21.4 + postcss: 8.4.16 + postcss-browser-comments: 4.0.0_yroec54rl3ndwvbunmnefp5nvy + sanitize.css: 13.0.0 + dev: true + + /postcss-opacity-percentage/1.1.2: + resolution: {integrity: sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==} + engines: {node: ^12 || ^14 || >=16} + dev: true + + /postcss-ordered-values/5.1.3_postcss@8.4.16: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0_postcss@8.4.16 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-overflow-shorthand/3.0.4_postcss@8.4.16: + resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-page-break/3.0.4_postcss@8.4.16: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + dependencies: + postcss: 8.4.16 + dev: true + + /postcss-place/7.0.5_postcss@8.4.16: + resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-preset-env/7.8.2_postcss@8.4.16: + resolution: {integrity: sha512-rSMUEaOCnovKnwc5LvBDHUDzpGP+nrUeWZGWt9M72fBvckCi45JmnJigUr4QG4zZeOHmOCNCZnd2LKDvP++ZuQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-cascade-layers': 1.1.1_postcss@8.4.16 + '@csstools/postcss-color-function': 1.1.1_postcss@8.4.16 + '@csstools/postcss-font-format-keywords': 1.0.1_postcss@8.4.16 + '@csstools/postcss-hwb-function': 1.0.2_postcss@8.4.16 + '@csstools/postcss-ic-unit': 1.0.1_postcss@8.4.16 + '@csstools/postcss-is-pseudo-class': 2.0.7_postcss@8.4.16 + '@csstools/postcss-nested-calc': 1.0.0_postcss@8.4.16 + '@csstools/postcss-normalize-display-values': 1.0.1_postcss@8.4.16 + '@csstools/postcss-oklab-function': 1.1.1_postcss@8.4.16 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.16 + '@csstools/postcss-stepped-value-functions': 1.0.1_postcss@8.4.16 + '@csstools/postcss-text-decoration-shorthand': 1.0.0_postcss@8.4.16 + '@csstools/postcss-trigonometric-functions': 1.0.2_postcss@8.4.16 + '@csstools/postcss-unset-value': 1.0.2_postcss@8.4.16 + autoprefixer: 10.4.12_postcss@8.4.16 + browserslist: 4.21.4 + css-blank-pseudo: 3.0.3_postcss@8.4.16 + css-has-pseudo: 3.0.4_postcss@8.4.16 + css-prefers-color-scheme: 6.0.3_postcss@8.4.16 + cssdb: 7.0.1 + postcss: 8.4.16 + postcss-attribute-case-insensitive: 5.0.2_postcss@8.4.16 + postcss-clamp: 4.1.0_postcss@8.4.16 + postcss-color-functional-notation: 4.2.4_postcss@8.4.16 + postcss-color-hex-alpha: 8.0.4_postcss@8.4.16 + postcss-color-rebeccapurple: 7.1.1_postcss@8.4.16 + postcss-custom-media: 8.0.2_postcss@8.4.16 + postcss-custom-properties: 12.1.9_postcss@8.4.16 + postcss-custom-selectors: 6.0.3_postcss@8.4.16 + postcss-dir-pseudo-class: 6.0.5_postcss@8.4.16 + postcss-double-position-gradients: 3.1.2_postcss@8.4.16 + postcss-env-function: 4.0.6_postcss@8.4.16 + postcss-focus-visible: 6.0.4_postcss@8.4.16 + postcss-focus-within: 5.0.4_postcss@8.4.16 + postcss-font-variant: 5.0.0_postcss@8.4.16 + postcss-gap-properties: 3.0.5_postcss@8.4.16 + postcss-image-set-function: 4.0.7_postcss@8.4.16 + postcss-initial: 4.0.1_postcss@8.4.16 + postcss-lab-function: 4.2.1_postcss@8.4.16 + postcss-logical: 5.0.4_postcss@8.4.16 + postcss-media-minmax: 5.0.0_postcss@8.4.16 + postcss-nesting: 10.2.0_postcss@8.4.16 + postcss-opacity-percentage: 1.1.2 + postcss-overflow-shorthand: 3.0.4_postcss@8.4.16 + postcss-page-break: 3.0.4_postcss@8.4.16 + postcss-place: 7.0.5_postcss@8.4.16 + postcss-pseudo-class-any-link: 7.1.6_postcss@8.4.16 + postcss-replace-overflow-wrap: 4.0.0_postcss@8.4.16 + postcss-selector-not: 6.0.1_postcss@8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-pseudo-class-any-link/7.1.6_postcss@8.4.16: + resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-reduce-initial/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.4 + caniuse-api: 3.0.0 + postcss: 8.4.16 + dev: true + + /postcss-reduce-transforms/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-replace-overflow-wrap/4.0.0_postcss@8.4.16: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + dependencies: + postcss: 8.4.16 + dev: true + + /postcss-selector-not/6.0.1_postcss@8.4.16: + resolution: {integrity: sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-selector-parser/6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 - indexes-of: 1.0.1 - uniq: 1.0.1 util-deprecate: 1.0.2 dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== - /postcss-value-parser/4.1.0: - dev: true - resolution: - integrity: sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - /postcss-values-parser/2.0.1: + + /postcss-sort-media-queries/4.3.0_postcss@8.4.16: + resolution: {integrity: sha512-jAl8gJM2DvuIJiI9sL1CuiHtKM4s5aEIomkU8G3LFvbP+p8i7Sz8VV63uieTgoewGqKbi+hxBTiOKJlB35upCg==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.4.16 dependencies: - flatten: 1.0.3 - indexes-of: 1.0.1 - uniq: 1.0.1 + postcss: 8.4.16 + sort-css-media-queries: 2.1.0 dev: true - engines: - node: '>=6.14.4' - resolution: - integrity: sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - /postcss/7.0.35: + + /postcss-svgo/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - chalk: 2.4.2 - source-map: 0.6.1 - supports-color: 6.1.0 + postcss: 8.4.16 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 dev: true - engines: - node: '>=6.0.0' - resolution: - integrity: sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== - /postcss/8.2.4: + + /postcss-unique-selectors/5.1.1_postcss@8.4.16: + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - colorette: 1.2.1 - nanoid: 3.1.20 - source-map: 0.6.1 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - engines: - node: ^10 || ^12 || >=14 - resolution: - integrity: sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg== - /prelude-ls/1.1.2: + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - engines: - node: '>= 0.8.0' - resolution: - integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - /process-nextick-args/2.0.1: + + /postcss/8.4.16: + resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 dev: true - resolution: - integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - /psl/1.8.0: + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} dev: true - resolution: - integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - /qs/6.5.2: - dev: true - engines: - node: '>=0.6' - resolution: - integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - /randombytes/2.1.0: + + /qs/6.10.3: + resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} + engines: {node: '>=0.6'} dependencies: - safe-buffer: 5.2.1 + side-channel: 1.0.4 + dev: false + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - resolution: - integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - /read-pkg-up/1.0.1: + + /readable-stream/3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} dependencies: - find-up: 1.1.2 - read-pkg: 1.1.0 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - /read-pkg/1.1.0: - dependencies: - load-json-file: 1.1.0 - normalize-package-data: 2.5.0 - path-type: 1.1.0 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - /readable-stream/1.0.34: - dependencies: - core-util-is: 1.0.2 inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: true - resolution: - integrity: sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - /readable-stream/2.3.7: - dependencies: - core-util-is: 1.0.2 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 + string_decoder: 1.3.0 util-deprecate: 1.0.2 dev: true - resolution: - integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - /redent/1.0.0: + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: - indent-string: 2.1.0 - strip-indent: 1.0.1 + picomatch: 2.3.1 dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - /regenerate-unicode-properties/8.2.0: - dependencies: - regenerate: 1.4.2 + + /regexparam/2.0.1: + resolution: {integrity: sha512-zRgSaYemnNYxUv+/5SeoHI0eJIgTL/A2pUtXUPLHQxUldagouJ9p+K6IbIZ/JiQuCEv2E2B1O11SjVQy3aMCkw==} + engines: {node: '>=8'} dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - /regenerate/1.4.2: + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} dev: true - resolution: - integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - /regenerator-runtime/0.13.7: - dev: true - resolution: - integrity: sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - /regenerator-transform/0.14.5: - dependencies: - '@babel/runtime': 7.12.5 - dev: true - resolution: - integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - /regexparam/1.3.0: - dev: false - engines: - node: '>=6' - resolution: - integrity: sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g== - /regexpu-core/4.7.1: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 8.2.0 - regjsgen: 0.5.2 - regjsparser: 0.6.6 - unicode-match-property-ecmascript: 1.0.4 - unicode-match-property-value-ecmascript: 1.2.0 - dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - /regjsgen/0.5.2: - dev: true - resolution: - integrity: sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - /regjsparser/0.6.6: - dependencies: - jsesc: 0.5.0 - dev: true - hasBin: true - resolution: - integrity: sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ== - /relateurl/0.2.7: - dev: true - engines: - node: '>= 0.10' - resolution: - integrity: sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - /rellax/1.12.1: - dev: false - resolution: - integrity: sha512-XBIi0CDpW5FLTujYjYBn1CIbK2CJL6TsAg/w409KghP2LucjjzBjsujXDAjyBLWgsfupfUcL5WzdnIPcGfK7XA== - /repeating/2.0.1: - dependencies: - is-finite: 1.1.0 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - /request/2.88.2: - dependencies: - aws-sign2: 0.7.0 - aws4: 1.11.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.28 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.2 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - dev: true - engines: - node: '>= 6' - resolution: - integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - /require-directory/2.1.1: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - /require-main-filename/2.0.0: - dev: true - resolution: - integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - /require-relative/0.8.7: - dev: true - resolution: - integrity: sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4= + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + /resolve-from/5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - /resolve/0.6.3: - dev: true - resolution: - integrity: sha1-3ZV5gufnNt699TtYpN2RdUV13UY= - /resolve/1.19.0: - dependencies: - is-core-module: 2.2.0 - path-parse: 1.0.6 - dev: true - resolution: - integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - /rimraf/3.0.2: - dependencies: - glob: 7.1.6 - dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true - resolution: - integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - /rollup-plugin-glslify/1.2.0: dependencies: - glslify: 7.1.1 - rollup-pluginutils: 2.8.2 + is-core-module: 2.10.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 dev: true - resolution: - integrity: sha512-EqUFINMICD9U3MJ4jsxBcCRhzWNZJBWyAK2ol+2ClWIPaIWOuz0OY/Ml8rdT81F4aufwxJN5I9N7QvCth0OrUQ== - /rollup-plugin-svelte/7.0.0_rollup@2.36.2+svelte@3.31.2: + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf/2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true dependencies: - require-relative: 0.8.7 - rollup: 2.36.2 - rollup-pluginutils: 2.8.2 - svelte: 3.31.2 + glob: 7.2.3 dev: true - engines: - node: '>=10' - peerDependencies: - rollup: '>=2.0.0' - svelte: '>=3.5.0' - resolution: - integrity: sha512-cw4yv/5v1NQV3nPbpOJtikgkB+9mfSJaqKUdq7x5fVQJnwLtcdc2JOszBs5pBY+SemTs5pmJbdEMseEavbUtjQ== - /rollup-plugin-terser/7.0.2_rollup@2.36.2: + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true dependencies: - '@babel/code-frame': 7.12.11 - jest-worker: 26.6.2 - rollup: 2.36.2 - serialize-javascript: 4.0.0 - terser: 5.5.1 + glob: 7.2.3 dev: true - peerDependencies: - rollup: ^2.0.0 - resolution: - integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + /rollup-pluginutils/2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} dependencies: estree-walker: 0.6.1 dev: true - resolution: - integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - /rollup/2.36.2: - dev: true - engines: - node: '>=10.0.0' + + /rollup/2.78.1: + resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} + engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: - fsevents: 2.1.3 - resolution: - integrity: sha512-qjjiuJKb+/8n0EZyQYVW+gFU4bNRBcZaXVzUgSVrGw0HlQBlK2aWyaOMMs1Ufic1jV69b9kW3u3i9B+hISDm3A== - /safe-buffer/5.1.2: - resolution: - integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + fsevents: 2.3.2 + dev: true + + /rollup/2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /sade/1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - resolution: - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - /safer-buffer/2.1.2: - dev: true - resolution: - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - /sapper/0.28.10_svelte@3.31.2: + + /sander/0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} dependencies: - html-minifier: 4.0.0 - http-link-header: 1.0.3 - shimport: 2.0.5 - source-map: 0.6.1 - sourcemap-codec: 1.4.8 - string-hash: 1.1.3 - svelte: 3.31.2 + es6-promise: 3.3.1 + graceful-fs: 4.2.10 + mkdirp: 0.5.6 + rimraf: 2.7.1 dev: true + + /sanitize.css/13.0.0: + resolution: {integrity: sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==} + + /sass/1.55.0: + resolution: {integrity: sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==} + engines: {node: '>=12.0.0'} hasBin: true - peerDependencies: - svelte: ^3.17.3 - resolution: - integrity: sha512-Z6OpuDOHxiRHKd7JCjHaDe8uOM2fFZxpTLsj/0Ib4sM034xstEvNNUtdY7Pg/a85kP3cFCnkNiM1v7W37vzDGg== - /sass-graph/2.2.5: dependencies: - glob: 7.1.6 - lodash: 4.17.20 - scss-tokenizer: 0.2.3 - yargs: 13.3.2 + chokidar: 3.5.3 + immutable: 4.1.0 + source-map-js: 1.0.2 dev: true + + /semver/6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - resolution: - integrity: sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== - /scroll-out/2.2.12: - dev: false - resolution: - integrity: sha512-BPWQJat8mmcjQCq+l4DsibBopkmQQb5ngPJ6T9XRxRl86/LJo7V+0d3Sjd9fxzIJkZmkjoGxEAam+Urvem8VRw== - /scss-tokenizer/0.2.3: - dependencies: - js-base64: 2.6.4 - source-map: 0.4.4 - dev: true - resolution: - integrity: sha1-jrBtualyMzOCTT9VMGQRSYR85dE= - /semver/5.7.1: dev: true + + /semver/7.3.7: + resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} + engines: {node: '>=10'} hasBin: true - resolution: - integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - /semver/7.0.0: - dev: true - hasBin: true - resolution: - integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - /semver/7.3.4: dependencies: lru-cache: 6.0.0 dev: true - engines: - node: '>=10' - hasBin: true - resolution: - integrity: sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - /serialize-javascript/4.0.0: - dependencies: - randombytes: 2.1.0 - dev: true - resolution: - integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + /set-blocking/2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true - resolution: - integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - /shallow-copy/0.0.1: + + /set-cookie-parser/2.5.1: + resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} dev: true - resolution: - integrity: sha1-QV9CcC1z2BAzApLMXuhurhoRoXA= + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - /shimport/2.0.5: - dev: true - resolution: - integrity: sha512-H2FeQyImK4CFhGG1wVhHEB1hASWz+WQK6t2gMP5lk+b0PW30XSrsryDONDBwF1n6hBKsmbr0REfTinaNdEkcPQ== - /signal-exit/3.0.3: - dev: true - resolution: - integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - /sirv/1.0.10: + + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: - '@polka/url': 1.0.0-next.11 - mime: 2.4.7 - totalist: 1.1.0 + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + object-inspect: 1.12.2 dev: false - engines: - node: '>= 10' - resolution: - integrity: sha512-H5EZCoZaggEUQy8ocKsF7WAToGuZhjJlLvM3XOef46CbdIgbNeQ1p32N1PCuCjkVYwrAVOSMacN6CXXgIzuspg== + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sirv/2.0.2: + resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.1 + totalist: 3.0.0 + dev: true + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - /source-map-support/0.5.19: + + /sorcery/0.10.0: + resolution: {integrity: sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==} + hasBin: true dependencies: - buffer-from: 1.1.1 - source-map: 0.6.1 + buffer-crc32: 0.2.13 + minimist: 1.2.6 + sander: 0.5.1 + sourcemap-codec: 1.4.8 dev: true - resolution: - integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - /source-map/0.4.4: - dependencies: - amdefine: 1.0.1 + + /sort-css-media-queries/2.1.0: + resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} + engines: {node: '>= 6.3.0'} dev: true - engines: - node: '>=0.8.0' - resolution: - integrity: sha1-66T12pwNyZneaAMti092FzZSA2s= - /source-map/0.5.7: + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - /source-map/0.7.3: - dev: true - engines: - node: '>= 8' - resolution: - integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} dev: true - resolution: - integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - /spdx-correct/3.1.1: + + /stable/0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.7 + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 dev: true - resolution: - integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - /spdx-exceptions/2.3.0: - dev: true - resolution: - integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - /spdx-expression-parse/3.0.1: + + /string_decoder/1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.7 + safe-buffer: 5.2.1 dev: true - resolution: - integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - /spdx-license-ids/3.0.7: - dev: true - resolution: - integrity: sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== - /sshpk/1.16.1: + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: - asn1: 0.2.4 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 + ansi-regex: 5.0.1 dev: true - engines: - node: '>=0.10.0' - hasBin: true - resolution: - integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - /stack-trace/0.0.9: - dev: true - resolution: - integrity: sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU= - /static-eval/2.1.0: - dependencies: - escodegen: 1.14.3 - dev: true - resolution: - integrity: sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw== - /stdout-stream/1.4.1: - dependencies: - readable-stream: 2.3.7 - dev: true - resolution: - integrity: sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== - /stream-shift/1.0.1: - dev: true - resolution: - integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - /string-hash/1.1.3: - dev: true - resolution: - integrity: sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= - /string-width/1.0.2: - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - /string-width/3.1.0: - dependencies: - emoji-regex: 7.0.3 - is-fullwidth-code-point: 2.0.0 - strip-ansi: 5.2.0 - dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - /string_decoder/0.10.31: - dev: true - resolution: - integrity: sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - /string_decoder/1.1.1: - dependencies: - safe-buffer: 5.1.2 - dev: true - resolution: - integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - /strip-ansi/3.0.1: - dependencies: - ansi-regex: 2.1.1 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - /strip-ansi/5.2.0: - dependencies: - ansi-regex: 4.1.0 - dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - /strip-bom/2.0.0: - dependencies: - is-utf8: 0.2.1 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - /strip-indent/1.0.1: - dependencies: - get-stdin: 4.0.1 - dev: true - engines: - node: '>=0.10.0' - hasBin: true - resolution: - integrity: sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - /supports-color/2.0.0: + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} dev: true - engines: - node: '>=0.8.0' - resolution: - integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - /supports-color/5.5.0: + + /stylehacks/5.1.0_postcss@8.4.16: + resolution: {integrity: sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - has-flag: 3.0.0 + browserslist: 4.21.4 + postcss: 8.4.16 + postcss-selector-parser: 6.0.10 dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - /supports-color/6.1.0: - dependencies: - has-flag: 3.0.0 - dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: true - engines: - node: '>=8' - resolution: - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - /svelte-lazy/1.0.8_svelte@3.31.2: - dependencies: - svelte: 3.31.2 - dev: false - peerDependencies: - svelte: 3.x - resolution: - integrity: sha512-wWuDQo/6rWpkAQANI966+jy0mTmtXQsvtS97JL0EjK0EEbsw7NMa7/xpTOf3CpY8bgiQMvTTOqAh4vMG5j47lA== - /svelte-preprocess/4.6.1_f1d5d739eab137f4683f3cf6104542ab: - dependencies: - '@babel/core': 7.12.10 - '@types/pug': 2.0.4 - '@types/sass': 1.16.0 - detect-indent: 6.0.0 - node-sass: 5.0.0 - postcss: 8.2.4 - postcss-load-config: 3.0.0 - strip-indent: 3.0.0 - svelte: 3.31.2 + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} dev: true - engines: - node: '>= 9.11.2' + + /svelte-check/2.9.1_yvs2ufmgd7w5odpvp3nw2pbb7y: + resolution: {integrity: sha512-+BFPsj6irZ+t2pVSVo//2Ic1mI3A52xCwbkSTVhTqYZqgawcyZd9pYZoEac3fIWbEeTyCb5X82ORKI/gjn+P7A==} + hasBin: true + peerDependencies: + svelte: ^3.24.0 + dependencies: + '@jridgewell/trace-mapping': 0.3.15 + chokidar: 3.5.3 + fast-glob: 3.2.12 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 3.50.1 + svelte-preprocess: 4.10.7_stzz5n57hyiugj4ntsptwutnlu + typescript: 4.8.3 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - node-sass + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + + /svelte-hmr/0.15.0_svelte@3.50.1: + resolution: {integrity: sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: '>=3.19.0' + dependencies: + svelte: 3.50.1 + dev: true + + /svelte-preprocess/4.10.7_stzz5n57hyiugj4ntsptwutnlu: + resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} + engines: {node: '>= 9.11.2'} + requiresBuild: true peerDependencies: '@babel/core': ^7.10.2 coffeescript: ^2.5.1 - less: ^3.11.3 + less: ^3.11.3 || ^4.0.0 node-sass: '*' postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 pug: ^3.0.0 sass: ^1.26.8 - stylus: ^0.54.7 + stylus: ^0.55.0 sugarss: ^2.0.0 svelte: ^3.23.0 typescript: ^3.9.5 || ^4.0.0 @@ -3844,320 +3373,251 @@ packages: optional: true typescript: optional: true - requiresBuild: true - resolution: - integrity: sha512-s7KdhR2pOsffyOzZIMEb315f6pfgeDnOWN47m6YKFeSEx3NMf/79Znc3vuG/Ai79SL/vsi86WDrjFPLGRfDesg== - /svelte/3.31.2: + dependencies: + '@types/pug': 2.0.6 + '@types/sass': 1.43.1 + detect-indent: 6.1.0 + magic-string: 0.25.9 + postcss: 8.4.16 + sass: 1.55.0 + sorcery: 0.10.0 + strip-indent: 3.0.0 + svelte: 3.50.1 + typescript: 4.8.3 dev: true - engines: - node: '>= 8' - resolution: - integrity: sha512-TxZGrXzX2ggFH3BIKY5fmbeMdJuZrMIMDYPMX6R9255bueuYIuVaBQSLUeY2oD7W4IdeqRZiAVGCjDw2POKBRA== - /swipe-listener/1.3.0: + + /svelte/3.50.1: + resolution: {integrity: sha512-bS4odcsdj5D5jEg6riZuMg5NKelzPtmsCbD9RG+8umU03TeNkdWnP6pqbCm0s8UQNBkqk29w/Bdubn3C+HWSwA==} + engines: {node: '>= 8'} + dev: true + + /svgo/2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + + /swell-js/3.17.6: + resolution: {integrity: sha512-4Fo8LWOQzn5QP+qxhpoHo8gykxdQ8noTRxNAARj4nO2wnQhmxFLjsGTjkAFxKo1orId8zM79h5sj3Cx5Xp/6qw==} + engines: {node: 14.19.1, npm: '>=8'} + dependencies: + deepmerge: 4.2.2 + isomorphic-fetch: 3.0.0 + lodash: 4.17.21 + object-keys-normalizer: 1.0.1 + qs: 6.10.3 + transitivePeerDependencies: + - encoding dev: false - resolution: - integrity: sha512-8cOZEHn8I2aVjKiAiu4tprZAS6e0nTy4RjuN/cAALKU/8212u+dqT1cytWGIoWjVzVxVggIduUtuckrHGu6/8Q== - /tar/6.1.0: + + /tar/6.1.11: + resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} + engines: {node: '>= 10'} dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 - minipass: 3.1.3 + minipass: 3.3.4 minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 dev: true - engines: - node: '>= 10' - resolution: - integrity: sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== - /terser/5.5.1: - dependencies: - commander: 2.20.3 - source-map: 0.7.3 - source-map-support: 0.5.19 + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - engines: - node: '>=10' - hasBin: true - resolution: - integrity: sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== - /through2/0.6.5: - dependencies: - readable-stream: 1.0.34 - xtend: 4.0.2 - dev: true - resolution: - integrity: sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= - /through2/2.0.5: - dependencies: - readable-stream: 2.3.7 - xtend: 4.0.2 - dev: true - resolution: - integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - /to-fast-properties/2.0.0: - dev: true - engines: - node: '>=4' - resolution: - integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - /totalist/1.1.0: + + /tiny-emitter/2.1.0: + resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} dev: false - engines: - node: '>=6' - resolution: - integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== - /tough-cookie/2.5.0: + + /tiny-glob/0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: - psl: 1.8.0 - punycode: 2.1.1 + globalyzer: 0.1.0 + globrex: 0.1.2 dev: true - engines: - node: '>=0.8' - resolution: - integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - /trim-newlines/1.0.0: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-WIeWa7WCpFA6QetST301ARgVphM= - /trouter/3.1.0: + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: - regexparam: 1.3.0 + is-number: 7.0.0 + dev: true + + /totalist/3.0.0: + resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} + engines: {node: '>=6'} + dev: true + + /tr46/0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib/2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + + /tsutils/3.21.0_typescript@4.8.3: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.8.3 + dev: true + + /tweakpane/3.1.0: + resolution: {integrity: sha512-PGAp/LPQdHwzL7/iAW4lV1p9iPQTti7YMjMWO48CoYjvZRS59RmgQnhEGzKzqST1JnmOYmQUjTe8bdhlZRJs5A==} dev: false - engines: - node: '>=6' - resolution: - integrity: sha512-3Swwu638QQWOefHLss9cdyLi5/9BKYmXZEXpH0KOFfB9YZwUAwHbDAcoYxaHfqAeFvbi/LqAK7rGkhCr1v1BJA== - /true-case-path/1.0.3: + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: - glob: 7.1.6 + prelude-ls: 1.2.1 dev: true - resolution: - integrity: sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== - /tunnel-agent/0.6.0: - dependencies: - safe-buffer: 5.2.1 + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} dev: true - resolution: - integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - /tweetnacl/0.14.5: - dev: true - resolution: - integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - /type-check/0.3.2: - dependencies: - prelude-ls: 1.1.2 - dev: true - engines: - node: '>= 0.8.0' - resolution: - integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - /typedarray/0.0.6: - dev: true - resolution: - integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - /uglify-js/3.12.4: - dev: true - engines: - node: '>=0.8.0' + + /typescript/4.8.3: + resolution: {integrity: sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==} + engines: {node: '>=4.2.0'} hasBin: true - resolution: - integrity: sha512-L5i5jg/SHkEqzN18gQMTWsZk3KelRsfD1wUVNqtq0kzqWQqcJjyL8yc1o8hJgRrWqrAl2mUFbhfznEIoi7zi2A== - /unicode-canonical-property-names-ecmascript/1.0.4: dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - /unicode-match-property-ecmascript/1.0.4: + + /undici/5.10.0: + resolution: {integrity: sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==} + engines: {node: '>=12.18'} + dev: true + + /update-browserslist-db/1.0.9_browserslist@4.21.4: + resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' dependencies: - unicode-canonical-property-names-ecmascript: 1.0.4 - unicode-property-aliases-ecmascript: 1.1.0 + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - /unicode-match-property-value-ecmascript/1.2.0: - dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - /unicode-property-aliases-ecmascript/1.1.0: - dev: true - engines: - node: '>=4' - resolution: - integrity: sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - /uniq/1.0.1: - dev: true - resolution: - integrity: sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - /upper-case/1.1.3: - dev: true - resolution: - integrity: sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 dev: true - resolution: - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - resolution: - integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - /uuid/3.4.0: - dev: true - hasBin: true - resolution: - integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - /validate-npm-package-license/3.0.4: + + /virtual-scroll/2.2.1: + resolution: {integrity: sha512-RvjcLxluh7B/6GPzLgQ9d0NYG4yqEguTc3MU7AvxyPVltuo2Cq5RokTL9RKUaZCMJ64in2hus0d03gTtoHp55g==} dependencies: - spdx-correct: 3.1.1 - spdx-expression-parse: 3.0.1 - dev: true - resolution: - integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - /vary/1.1.2: + tiny-emitter: 2.1.0 dev: false - engines: - node: '>= 0.8' - resolution: - integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - /verror/1.10.0: + + /vite/3.1.3_sass@1.55.0: + resolution: {integrity: sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + terser: ^5.4.0 + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + terser: + optional: true dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 + esbuild: 0.15.9 + postcss: 8.4.16 + resolve: 1.22.1 + rollup: 2.78.1 + sass: 1.55.0 + optionalDependencies: + fsevents: 2.3.2 dev: true - engines: - '0': node >=0.6.0 - resolution: - integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - /which-module/2.0.0: + + /web-streams-polyfill/3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} dev: true - resolution: - integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + + /webidl-conversions/3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + /whatwg-fetch/3.6.2: + resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} + dev: false + + /whatwg-url/5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 dev: true - engines: - node: '>= 8' - hasBin: true - resolution: - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - /wide-align/1.1.3: + + /wide-align/1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: - string-width: 1.0.2 + string-width: 4.2.3 dev: true - resolution: - integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - /wrap-ansi/5.1.0: + + /worktop/0.8.0-next.14: + resolution: {integrity: sha512-RZgqHu1w/JcUdWOE/BUEAzarrUUHh39eWkLdX8XpA6MfgLJF6X5Vl26CV7/wcm4O/UpZvHMGJUtB9eYTqDjc9g==} + engines: {node: '>=12'} dependencies: - ansi-styles: 3.2.1 - string-width: 3.1.0 - strip-ansi: 5.2.0 + mrmime: 1.0.1 + regexparam: 2.0.1 dev: true - engines: - node: '>=6' - resolution: - integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - resolution: - integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - /xtend/2.2.0: - dev: true - engines: - node: '>=0.4' - resolution: - integrity: sha1-7vax8ZjByN6vrYsXZaBNrUoBxak= - /xtend/4.0.2: - dev: true - engines: - node: '>=0.4' - resolution: - integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - /y18n/4.0.1: - dev: true - resolution: - integrity: sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - resolution: - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - /yaml/1.10.0: + + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} dev: true - engines: - node: '>= 6' - resolution: - integrity: sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== - /yargs-parser/13.1.2: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} dev: true - resolution: - integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - /yargs/13.3.2: - dependencies: - cliui: 5.0.0 - find-up: 3.0.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 3.1.0 - which-module: 2.0.0 - y18n: 4.0.1 - yargs-parser: 13.1.2 - dev: true - resolution: - integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== -specifiers: - '@babel/core': ^7.12.10 - '@babel/plugin-syntax-dynamic-import': ^7.8.3 - '@babel/plugin-transform-runtime': ^7.12.10 - '@babel/preset-env': ^7.12.11 - '@babel/runtime': ^7.12.5 - '@rollup/plugin-alias': ^3.1.1 - '@rollup/plugin-babel': ^5.2.2 - '@rollup/plugin-commonjs': 17.0.0 - '@rollup/plugin-node-resolve': ^11.1.0 - '@rollup/plugin-replace': ^2.3.4 - animejs: ^3.2.1 - autoprefixer: ^10.2.1 - compression: ^1.7.4 - dotenv: ^8.2.0 - imagesloaded: ^4.1.4 - lazysizes: ^5.3.0 - node-fetch: ^2.6.1 - node-sass: ^5.0.0 - normalize.css: ^8.0.1 - polka: ^1.0.0-next.11 - postcss: ^8.2.4 - postcss-load-config: ^3.0.0 - postcss-preset-env: ^6.7.0 - rellax: ^1.12.1 - rollup: ^2.36.2 - rollup-plugin-glslify: ^1.2.0 - rollup-plugin-svelte: ^7.0.0 - rollup-plugin-terser: ^7.0.2 - sapper: ^0.28.10 - scroll-out: ^2.2.12 - sirv: ^1.0.10 - svelte: ^3.31.2 - svelte-lazy: ^1.0.8 - svelte-preprocess: ^4.6.1 - swipe-listener: ^1.3.0 diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..c8d0770 --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,37 @@ +const cssnano = require('cssnano') +const presetEnv = require('postcss-preset-env') +const focusVisible = require('postcss-focus-visible') +// const sortMediaQueries = require('postcss-sort-media-queries') +const normalize = require('postcss-normalize') + +const dev = process.env.NODE_ENV !== 'development' + +module.exports = { + plugins: [ + // Preset Env + presetEnv({ + stage: 2, + }), + + // Focus visible + focusVisible({}), + + // Sort media queries + // sortMediaQueries({ + // sort: 'mobile-first' + // }), + + // Normalize + normalize({}), + + // CSS Nano + !dev && cssnano({ + preset: ['default', { + autoprefixer: true, + discardComments: { removeAll: true }, + calc: { precision: 2 }, + safe: true + }] + }), + ] +} \ No newline at end of file diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index 5533436..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,30 +0,0 @@ -const pkg = require('./package.json') -const dev = process.env.NODE_ENV === 'development' - -module.exports = () => ({ - plugins: [ - // Preset Env - require('postcss-preset-env')({}), - - // Autoprefixer - require('autoprefixer')({}), - - // Extract media queries - // require('postcss-combine-media-query')({}), - - // CSS Nano - !dev && require('cssnano')({ - preset: ['default', { - autoprefixer: true, - discardComments: { removeAll: true }, - calc: { precision: 2 }, - safe: true - }] - }), - - // Banner - !dev && require('postcss-banner')({ - banner: `${pkg.name} v${pkg.version} \nBy ${pkg.author.name} \n${pkg.author.url}` - }) - ] -}) \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index d8ddec6..0000000 --- a/rollup.config.js +++ /dev/null @@ -1,152 +0,0 @@ -import path from 'path' -import resolve from '@rollup/plugin-node-resolve' -import alias from '@rollup/plugin-alias' -import replace from '@rollup/plugin-replace' -import commonjs from '@rollup/plugin-commonjs' -import babel from '@rollup/plugin-babel' -import svelte from 'rollup-plugin-svelte' -import autoPreprocess from 'svelte-preprocess' -import { terser } from 'rollup-plugin-terser' -import glslify from 'rollup-plugin-glslify' -import config from 'sapper/config/rollup' -import { config as dotenv } from 'dotenv' -import pkg from './package.json' - -// Define environment and things -const mode = process.env.NODE_ENV -const dev = mode === 'development' -const legacy = !!process.env.SAPPER_LEGACY_BUILD -const replaceOptions = { - 'process.env.NODE_ENV': JSON.stringify(mode), - 'process.env.CONFIG': JSON.stringify(dotenv().parsed) -} - -// Svelte -const onwarn = (warning, onwarn) => (warning.code === 'MISSING_EXPORT' && /'preload'/.test(warning.message)) || (warning.code === 'CIRCULAR_DEPENDENCY' && /[/\\]@sapper[/\\]/.test(warning.message)) || onwarn(warning) - -// Preprocessors -const preprocess = autoPreprocess({ - scss: { - includePaths: ['src', 'node_modules'], - renderSync: true - }, - postcss: true -}) - -// Resolve and Alias -const resolveExtensions = ['.mjs', '.js', '.svelte', '.scss', '.json', '.html'] -const aliases = alias({ - resolve: resolveExtensions, - entries: [ - { find: 'utils', replacement: path.resolve(__dirname, 'src/utils') }, - { find: 'animations', replacement: path.resolve(__dirname, 'src/animations') }, - { find: 'atoms', replacement: path.resolve(__dirname, 'src/atoms') }, - { find: 'molecules', replacement: path.resolve(__dirname, 'src/molecules') }, - { find: 'organisms', replacement: path.resolve(__dirname, 'src/organisms') }, - { find: 'globe', replacement: path.resolve(__dirname, 'src/globe') }, - ] -}) - - -export default { - /* - ** Client - */ - client: { - input: config.client.input(), - output: config.client.output(), - plugins: [ - // Javascript - replace({ - 'process.browser': true, - ...replaceOptions - }), - svelte({ - preprocess, - emitCss: true, - compilerOptions: { - dev, - hydratable: true, - } - }), - aliases, - glslify(), - resolve({ - browser: true, - extensions: resolveExtensions, - dedupe: ['svelte'] - }), - commonjs(), - legacy && babel({ - extensions: resolveExtensions, - babelHelpers: 'runtime', - exclude: ['node_modules/@babel/**'] - }), - - // Compress Javascript - !dev && terser({ - module: true - }), - ], - preserveEntrySignatures: false, - onwarn, - }, - - - /* - ** Server - */ - server: { - input: config.server.input(), - output: config.server.output(), - plugins: [ - replace({ - 'process.browser': false, - ...replaceOptions - }), - svelte({ - preprocess, - emitCss: false, - compilerOptions: { - generate: 'ssr', - hydratable: true, - dev, - } - }), - aliases, - glslify(), - resolve({ - extensions: resolveExtensions, - dedupe: ['svelte'] - }), - commonjs() - ], - external: Object.keys(pkg.dependencies).concat(require('module').builtinModules), - preserveEntrySignatures: 'strict', - onwarn, - }, - - - /* - ** Service worker - */ - // ...(!dev && { - // serviceworker: { - // input: config.serviceworker.input(), - // output: config.serviceworker.output(), - // plugins: [ - // resolve(), - // replace({ - // 'process.browser': false, - // ...replaceOptions - // }), - // aliases, - // glslify(), - // commonjs(), - // !dev && terser() - // ], - // preserveEntrySignatures: false, - // onwarn, - // } - // }) -} diff --git a/src/animations/Carousel.js b/src/animations/Carousel.js deleted file mode 100644 index f0c018c..0000000 --- a/src/animations/Carousel.js +++ /dev/null @@ -1,76 +0,0 @@ -import anime from 'animejs' -import ScrollOut from 'scroll-out' -import { animDuration, animDelay } from 'utils/store' - - -/* -** Transition In -*/ -export const animateIn = scope => { - const tl = anime.timeline({ - easing: 'easeOutQuart', - duration: animDuration, - autoplay: false - }) - - // Carousel - tl.add({ - targets: scope, - translateY: [window.innerWidth <= 768 ? 16 : 32, 0], - translateZ: [0, 0], - opacity: [0, 1], - complete: event => event.animatables[0].target.removeAttribute('style') - }) - - // Photo: Active - tl.add({ - targets: scope.querySelector('.is-active picture'), - translateY: [8, 0], - translateZ: [0, 0], - complete: event => event.animatables[0].target.removeAttribute('style') - }, 100) - - // Photo: Prev - tl.add({ - targets: scope.querySelector('.is-prev picture'), - translateY: [8, 0], - translateX: [64, 0], - translateZ: [0, 0], - rotate: window.innerWidth >= 768 ? [-2, 0] : [0, 0], - complete: event => event.animatables[0].target.removeAttribute('style') - }, 100) - - // Photo: Next - tl.add({ - targets: scope.querySelector('.is-next picture'), - translateY: [8, 0], - translateX: [-48, 0], - translateZ: [0, 0], - rotate: window.innerWidth >= 768 ? [2, 0] : [0, 0], - complete: event => event.animatables[0].target.removeAttribute('style') - }, 100) - - // Reveal on scroll - let visible = false - setTimeout(() => { - const carouselReveal = ScrollOut({ - once: true, - targets: scope, - onChange: (el, ctx) => { - if (ctx.visible === 0) { - visible = true - } - }, - onShown: (el, ctx) => { - // If revealed on scroll, no delay - if (visible) { - setTimeout(() => tl.restart(), 10) - } - // If revealed on load, add a delay - else { - setTimeout(() => tl.restart(), animDelay * 2) - } - } - }) - }, 10) -} \ No newline at end of file diff --git a/src/animations/Locations.js b/src/animations/Locations.js deleted file mode 100644 index ebbbd2b..0000000 --- a/src/animations/Locations.js +++ /dev/null @@ -1,58 +0,0 @@ -import anime from 'animejs' -import ScrollOut from 'scroll-out' -import { animDurationLong } from 'utils/store' - - -/* -** Transition In -*/ -export const animateIn = scope => { - let delay = 0 - - // Each location (reveal on scroll) - scope.querySelectorAll('.location').forEach(location => { - const tl = anime.timeline({ - easing: 'easeOutQuart', - duration: 600, - autoplay: false, - delay, - complete: () => { - // Reset delay - delay = 0 - } - }) - - // Image - tl.add({ - targets: location.querySelector('img'), - scale: [1.3, 1], - opacity: [0, 1], - translateZ: [0, 0], - duration: 1800 - }, 100) - - // Name - tl.add({ - targets: location.querySelector('h3'), - translateY: ['100%', 0], - translateZ: [0, 0], - }, 150) - - // Country - tl.add({ - targets: location.querySelector('p'), - translateY: ['100%', 0], - translateZ: [0, 0] - }, 200) - - // Increase delay between locations - delay += 65 - - // Scroll reveal - ScrollOut({ - once: true, - targets: location, - onShown: () => tl.restart() - }) - }) -} diff --git a/src/animations/Photo.js b/src/animations/Photo.js deleted file mode 100644 index 0e39fdb..0000000 --- a/src/animations/Photo.js +++ /dev/null @@ -1,95 +0,0 @@ -import anime from 'animejs' -import ScrollOut from 'scroll-out' -import imagesLoaded from 'imagesloaded' -import { throttle, parallaxAnime } from 'utils/functions' -import { animDuration } from 'utils/store' - - -/* -** Transition In -*/ -export const animateIn = scope => { - const tlLocation = anime.timeline({ - easing: 'easeOutQuart', - duration: 1000, - autoplay: false - }) - // Title - tlLocation.add({ - targets: scope.querySelectorAll('.photo__location .line span'), - translateY: ['120%', 0], - translateZ: [0, 0], - delay: anime.stagger(120) - }, 200) - // Description - tlLocation.add({ - targets: scope.querySelectorAll('.photo__location p'), - opacity: [0, 1], - duration: animDuration - }, 400) - - // Reveal on scroll - const locationScroll = ScrollOut({ - once: true, - targets: scope, - onShown: () => tlLocation.restart() - }) - - - // Image (reveal on scroll) - const photoImage = scope.querySelector('.photo__image') - const photoReveal = anime.timeline({ - easing: 'easeOutQuart', - duration: 2000, - autoplay: false - }) - photoReveal.add({ - targets: scope.querySelector('.photo__picture'), - opacity: [0, 1] - }, 50) - photoReveal.add({ - targets: scope.querySelector('.photo__picture img'), - scale: [1.12, 1], - translateZ: [0, 0] - }, 50) - - // Show photo when image is loaded - imagesLoaded(photoImage, instance => { - const photoScroll = ScrollOut({ - once: true, - targets: photoImage, - onShown: () => photoReveal.restart() - }) - }) - - - // Number parallax on scroll - const media768 = window.matchMedia('(min-width: 768px)') - const number = scope.querySelector('.photo__number') - const numberPallax = anime({ - targets: number.querySelector('span'), - translateY: (window.innerWidth <= 768) ? ['0%', '20%'] : ['-20%', '20%'], - easing: 'linear', - duration: 2000, - autoplay: false - }) - const numberPallaxAnime = () => parallaxAnime(number, numberPallax) - const numberPallaxScroll = matchMedia => { - if (matchMedia.matches) { - const scroll = ScrollOut({ - targets: scope, - onShown: () => { - window.addEventListener('scroll', throttle(numberPallaxAnime, 50)) - requestAnimationFrame(numberPallaxAnime) - }, - onHidden: () => { - if (parallaxAnime) window.removeEventListener('scroll', parallaxAnime) - } - }) - } - } - - // Listen on screen size to run the function - media768.addListener(numberPallaxAnime) - numberPallaxScroll(media768) -} diff --git a/src/animations/TitleSite.js b/src/animations/TitleSite.js deleted file mode 100644 index 98cafec..0000000 --- a/src/animations/TitleSite.js +++ /dev/null @@ -1,31 +0,0 @@ -import anime from 'animejs' -import ScrollOut from 'scroll-out' -import { firstLoad, animDurationLong, animDelay } from 'utils/store' - -let firstLoadValue -firstLoad.subscribe(store => firstLoadValue = store) - -/* -** Transition In -*/ -export const animateIn = (scope, init) => { - // Stagger each letters and words - const letters = anime({ - targets: scope.querySelectorAll('span, em span'), - translateY: ['100%', 0], - translateZ: [0, 0], - easing: 'easeOutQuart', - duration: 1000, - delay: anime.stagger(40, { start: init ? 0 : (firstLoadValue) ? animDurationLong : animDelay }), - autoplay: false - }) - - // On scroll animation - requestAnimationFrame(() => { - const title = ScrollOut({ - once: true, - targets: scope, - onShown: () => requestAnimationFrame(() => letters.restart()) - }) - }) -} diff --git a/src/animations/Transition.js b/src/animations/Transition.js deleted file mode 100644 index 9a330ec..0000000 --- a/src/animations/Transition.js +++ /dev/null @@ -1,16 +0,0 @@ -import { quartInOut } from 'svelte/easing' - - -/* -** Animation Out: Background -*/ -export const panelBackgroundOut = (node, params) => { - return { - delay: params.delay || 0, - duration: params.duration || 400, - easing: params.easing || quartInOut, - css: (t, u) => ` - transform: scaleY(${t}) - ` - } -} diff --git a/src/animations/crossfade.js b/src/animations/crossfade.ts similarity index 92% rename from src/animations/crossfade.js rename to src/animations/crossfade.ts index f5e165f..3b38540 100644 --- a/src/animations/crossfade.js +++ b/src/animations/crossfade.ts @@ -3,8 +3,9 @@ import { quartOut } from 'svelte/easing' // Crossfade transition export const [send, receive] = crossfade({ + // duration: 1200, duration: d => Math.sqrt(d * 200), - fallback: (node, params) => { + fallback (node, params) { const { duration = 600, easing = quartOut, @@ -13,6 +14,7 @@ export const [send, receive] = crossfade({ const style = getComputedStyle(node) const transform = style.transform === 'none' ? '' : style.transform const sd = 1 - start + return { duration, easing, @@ -22,4 +24,4 @@ export const [send, receive] = crossfade({ ` } } -}) +}) \ No newline at end of file diff --git a/src/animations/easings.ts b/src/animations/easings.ts new file mode 100644 index 0000000..7f55a49 --- /dev/null +++ b/src/animations/easings.ts @@ -0,0 +1,7 @@ +import type { Easing } from 'motion' + + +/** + * Ease: Quart Out Array + */ +export const quartOut: Easing = [.165, .84, .44, 1] \ No newline at end of file diff --git a/src/animations/index.js b/src/animations/index.js deleted file mode 100644 index ccbd1fe..0000000 --- a/src/animations/index.js +++ /dev/null @@ -1,93 +0,0 @@ -import anime from 'animejs' -import ScrollOut from 'scroll-out' -import { animDuration, animDelay } from 'utils/store' -import { throttle, parallaxAnime } from 'utils/functions' - - -/* -** Transition In -*/ -export const animateIn = () => { - // Title: Houses - const titleHouses = anime({ - targets: document.querySelectorAll('#title-houses span'), - translateY: ['-70%', 0], - translateZ: [0, 0], - easing: 'easeOutQuart', - delay: anime.stagger(80, { start: animDelay }), - duration: animDuration - }) - - // Title: Parallax on scroll - const translate = anime({ - targets: '#title-houses', - translateX: window.innerWidth <= 1920 ? ['25%', '-15%'] : ['7%', '-7%'], - translateZ: [0, 0], - easing: 'linear', - duration: animDuration, - autoplay: false - }) - window.addEventListener('scroll', throttle(() => parallaxAnime(document.getElementById('title-houses'), translate), 5)) - requestAnimationFrame(() => parallaxAnime(document.getElementById('title-houses'), translate)) - - // Intro: Description - const introDescription = anime({ - targets: document.getElementById('intro-description').querySelectorAll('p, a'), - opacity: [0, 1], - translateY: [8, 0], - translateZ: [0, 0], - easing: 'easeOutQuart', - duration: animDuration, - delay: anime.stagger(200, { start: animDelay + 200 }) - }) - - // Title: Of (reveal on scroll) - const titleOf = document.getElementById('title-of') - const titleOfReveal = anime({ - targets: titleOf.querySelectorAll('span'), - translateY: ['100%', 0], - translateZ: [0, 0], - easing: 'easeOutQuart', - delay: anime.stagger(70), - duration: animDuration, - autoplay: false - }) - const titleOfScroll = ScrollOut({ - once: true, - targets: titleOf, - onShown: () => titleOfReveal.restart() - }) - - // Title: World (reveal on scroll) - const titleWorld = document.getElementById('title-world') - const titleWorldReveal = anime({ - targets: titleWorld.querySelectorAll('span'), - translateY: ['100%', 0], - translateZ: [0, 0], - easing: 'easeOutQuart', - delay: anime.stagger(70), - duration: animDuration, - autoplay: false - }) - const titleWorldParallax = anime({ - targets: titleWorld, - translateX: ['5%', '-3%'], - translateZ: [0, 0], - easing: 'linear', - duration: animDuration, - autoplay: false - }) - const titleWorldAnime = () => parallaxAnime(titleWorld, titleWorldParallax) - const titleWorldScroll = ScrollOut({ - once: true, - targets: titleWorld, - onShown: () => { - titleWorldReveal.restart() - window.addEventListener('scroll', throttle(titleWorldAnime, 10)) - requestAnimationFrame(titleWorldAnime) - }, - onHidden: () => { - if (parallaxAnime) window.removeEventListener('scroll', parallaxAnime) - } - }) -} diff --git a/src/animations/page.js b/src/animations/page.js deleted file mode 100644 index 5a72e78..0000000 --- a/src/animations/page.js +++ /dev/null @@ -1,22 +0,0 @@ -import anime from 'animejs' -import { animDuration, animDelay } from 'utils/store' - - -/* -** Transition In -*/ -export const animateIn = () => { - const tl = anime.timeline({ - easing: 'easeOutQuart', - duration: animDuration - }) - - // Simple slide and fade on each part of the page - tl.add({ - targets: document.querySelectorAll('.page__part, .globe'), - opacity: [0, 1], - translateY: [8, 0], - translateZ: [0, 0], - delay: anime.stagger(200, { start: animDelay }) - }) -} diff --git a/src/animations/place.js b/src/animations/place.js deleted file mode 100644 index 3d012ca..0000000 --- a/src/animations/place.js +++ /dev/null @@ -1,62 +0,0 @@ -import anime from 'animejs' -import Rellax from 'rellax' -import { animDuration, animDelay } from 'utils/store' - - -/* -** Transition In -*/ -export const animateIn = () => { - const tl = anime.timeline({ - duration: animDuration, - delay: animDelay, // Delay in AnimeJS waits to run but sets the starting style as opposed to a setTimeout - easing: 'easeOutQuart' - }) - - // Title: Houses - tl.add({ - targets: '.place__title_houses', - translateY: ['150%', 0], - translateZ: [0, 0] - }) - // Title: Of - tl.add({ - targets: '.place__title_of', - opacity: [0, 1] - }, 600) - // Title: Place name - tl.add({ - targets: '.place__title_name', - translateY: ['150%', 0], - translateZ: [0, 0] - }, 150) - - // Switcher link - tl.add({ - targets: '.place__title .button-control', - scale: [0.95, 1], - opacity: [0, 1] - }, 500) - - // Illustration - tl.add({ - targets: '.place__illustration', - scale: [1.05, 1], - translateZ: [0, 0], - opacity: [0, 1] - }, 0) - - // Description - tl.add({ - targets: '.place__description', - opacity: [0, 1], - translateY: [24, 0], - translateZ: [0, 0] - }, 450) - - - /* - ** Parallax - */ - const rellax = new Rellax('[data-rellax-speed]') -} \ No newline at end of file diff --git a/src/animations/reveal.ts b/src/animations/reveal.ts new file mode 100644 index 0000000..bc4fe29 --- /dev/null +++ b/src/animations/reveal.ts @@ -0,0 +1,45 @@ +import { animate, inView, stagger } from 'motion' +import { quartOut } from '$animations/easings' + +const defaultOptions = { + stagger: null, + delay: 0, + duration: 1.6, + easing: quartOut, +} + +export default (node: Element | any, { + enable = true, + children = undefined, + animation = [], + options = defaultOptions, +}: RevealOptions) => { + if (!enable) return + + // Define targets from children, if empty get node + const targets = children ? node.querySelectorAll(children) : [node] + + // If animation has opacity starting with 0, hide it first + if (animation.opacity && animation.opacity[0] === 0) { + targets.forEach((el: HTMLElement) => el.style.opacity = '0') + } + + // Create inView instance + inView(node, ({ isIntersecting }) => { + const anim = animate( + targets, + animation, + { + delay: options.stagger ? stagger(options.stagger, { start: options.delay }) : options.delay, + duration: options.duration, + easing: options.easing, + } + ) + anim.stop() + + // Run animation if in view and tab is active + isIntersecting && requestAnimationFrame(anim.play) + }, { + amount: options.threshold, + }) +} \ No newline at end of file diff --git a/src/animations/transitions.ts b/src/animations/transitions.ts new file mode 100644 index 0000000..350c4e4 --- /dev/null +++ b/src/animations/transitions.ts @@ -0,0 +1,25 @@ +import { animate } from 'motion' +import { quartOut } from './easings' + +export const scaleFade = (node: HTMLElement, { + delay = 0, + duration = 1, + scale = [0.7, 1], + opacity = [1, 0], + x = null, +}) => { + return { + css: () => { + animate(node, { + scale, + opacity, + x, + z: 0, + }, { + easing: quartOut, + duration, + delay, + }) + } + } +} \ No newline at end of file diff --git a/src/animations/viewer.js b/src/animations/viewer.js deleted file mode 100644 index dd9b7dc..0000000 --- a/src/animations/viewer.js +++ /dev/null @@ -1,40 +0,0 @@ -import anime from 'animejs' -import { animDuration, animDelay } from 'utils/store' - - -/* -** Transition In -*/ -export const animateIn = () => { - const viewer = document.querySelector('.viewer') - - const tl = anime.timeline({ - easing: 'easeOutQuart', - duration: animDuration, - delay: 1400 - }) - - // Carousel: Number - tl.add({ - targets: viewer.querySelector('.counter'), - opacity: [0, 1], - translateY: [window.innerWidth >= 768 ? -24 : 24, 0] - }, 0) - - // Dots - tl.add({ - targets: viewer.querySelectorAll('.carousel__dots'), - translateY: [16, 0], - translateZ: [0, 0], - opacity: [0, 1] - }, 150) - - // Buttons - tl.add({ - targets: viewer.querySelectorAll('.tip, .viewer__buttons a'), - translateY: [-32, 0], - translateZ: [0, 0], - opacity: [0, 1], - delay: anime.stagger(120), - }, 400) -} diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..69e86a4 --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,88 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +// and what to do when importing types +declare namespace App { + // interface Locals {} + // interface PageData {} + // interface Error {} + // interface Platform {} +} + + +/** + * Custom Events + */ +// Swipe +declare namespace svelte.JSX { + interface HTMLAttributes { + onswipe?: (event: CustomEvent & { target: EventTarget & T }) => any, + ontap?: (event: CustomEvent & { target: EventTarget & T }) => any, + oncopied?: (event: CustomEvent & { target: EventTarget & T }) => any, + } +} + + +/** + * Custom Types + */ +declare interface PhotoGridAbout { + id: string + title: string + slug: string + image: { + id: string + title: string + } +} + + +/** + * Notifcation + */ +declare interface ShopNotification { + title: string + name: string + image: string + timeout?: number + id?: number +} + + +/** + * Smooth Scroll Options + */ +declare interface smoothScrollOptions { + hash: string + changeHash?: boolean + event?: MouseEvent + callback?: Function +} + + +/** + * Swipe options + */ +declare interface SwipeOptions { + travelX?: number + travelY?: number + timeframe?: number +} + + +/** + * Reveal Animation + */ +declare type RevealOptions = { + enable?: boolean + options?: TransitionOptions + children?: string | HTMLElement + animation: any +} +// Options interface +declare type TransitionOptions = { + threshold?: number + duration?: number + stagger?: number + delay?: number + easing?: string | Easing +} \ No newline at end of file diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..f517035 --- /dev/null +++ b/src/app.html @@ -0,0 +1,23 @@ + + + + + + + + + + + + + %sveltekit.head% + + + + %sveltekit.body% + + + + \ No newline at end of file diff --git a/src/atoms/Badge.svelte b/src/atoms/Badge.svelte deleted file mode 100644 index 8855fb5..0000000 --- a/src/atoms/Badge.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -
- {text} -
\ No newline at end of file diff --git a/src/atoms/Button.svelte b/src/atoms/Button.svelte deleted file mode 100644 index 9fbf465..0000000 --- a/src/atoms/Button.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -{#if type === 'button'} - - -{:else} - - -
- {text} -
-
-{/if} diff --git a/src/atoms/Counter.svelte b/src/atoms/Counter.svelte deleted file mode 100644 index ce47846..0000000 --- a/src/atoms/Counter.svelte +++ /dev/null @@ -1,47 +0,0 @@ - - - - -
- {#each digits as digit} -
- {#each numbers as number} - {number} - {/each} -
- {/each} -
diff --git a/src/atoms/IconArrow.svelte b/src/atoms/IconArrow.svelte deleted file mode 100644 index abecc94..0000000 --- a/src/atoms/IconArrow.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - - {#if direction === 'left'} - - {:else if direction === 'right'} - - {/if} - diff --git a/src/atoms/IconCross.svelte b/src/atoms/IconCross.svelte deleted file mode 100644 index 4e9aa9b..0000000 --- a/src/atoms/IconCross.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/src/atoms/IconGlobe.svelte b/src/atoms/IconGlobe.svelte deleted file mode 100644 index 28dd020..0000000 --- a/src/atoms/IconGlobe.svelte +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/atoms/IconGlobeSmall.svelte b/src/atoms/IconGlobeSmall.svelte deleted file mode 100644 index 878053b..0000000 --- a/src/atoms/IconGlobeSmall.svelte +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/atoms/IconZoomOut.svelte b/src/atoms/IconZoomOut.svelte deleted file mode 100644 index 6c67312..0000000 --- a/src/atoms/IconZoomOut.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/src/atoms/LinkChange.svelte b/src/atoms/LinkChange.svelte deleted file mode 100644 index 16ba895..0000000 --- a/src/atoms/LinkChange.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - {text} - - - - diff --git a/src/atoms/LinkTranslate.svelte b/src/atoms/LinkTranslate.svelte deleted file mode 100644 index 82d2548..0000000 --- a/src/atoms/LinkTranslate.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - - -
- {text} -
-
\ No newline at end of file diff --git a/src/atoms/TitleSite.svelte b/src/atoms/TitleSite.svelte deleted file mode 100644 index 27965cd..0000000 --- a/src/atoms/TitleSite.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - -
-
-
- {@html charsToSpan('Houses')} -
-
- - - of - the - - -
-
- {@html charsToSpan('World')} -
-
-
diff --git a/src/atoms/ToggleLayout.svelte b/src/atoms/ToggleLayout.svelte deleted file mode 100644 index 6d5b3ac..0000000 --- a/src/atoms/ToggleLayout.svelte +++ /dev/null @@ -1,89 +0,0 @@ - - -
- - - - - -
diff --git a/src/client.js b/src/client.js deleted file mode 100644 index 5c251df..0000000 --- a/src/client.js +++ /dev/null @@ -1,6 +0,0 @@ -import * as sapper from '@sapper/app' - -// Start Sapper -sapper.start({ - target: document.body -}) diff --git a/src/components/Analytics.svelte b/src/components/Analytics.svelte new file mode 100644 index 0000000..e615512 --- /dev/null +++ b/src/components/Analytics.svelte @@ -0,0 +1,37 @@ + + + + {#if enabled} + + + + {title} + + + + + + {#if image} + + {/if} + {#if url} + + {/if} + + + + \ No newline at end of file diff --git a/src/components/PageTransition.svelte b/src/components/PageTransition.svelte new file mode 100644 index 0000000..3db93c2 --- /dev/null +++ b/src/components/PageTransition.svelte @@ -0,0 +1,18 @@ + + +
doNotScroll && scrollToTop()} +> + +
\ No newline at end of file diff --git a/src/components/SVGSprite.svelte b/src/components/SVGSprite.svelte new file mode 100644 index 0000000..e71cd94 --- /dev/null +++ b/src/components/SVGSprite.svelte @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/SmoothScroll.svelte b/src/components/SmoothScroll.svelte new file mode 100644 index 0000000..89b1d22 --- /dev/null +++ b/src/components/SmoothScroll.svelte @@ -0,0 +1,37 @@ + \ No newline at end of file diff --git a/src/components/SplitText.svelte b/src/components/SplitText.svelte new file mode 100644 index 0000000..3d7734b --- /dev/null +++ b/src/components/SplitText.svelte @@ -0,0 +1,42 @@ + + +{#if clone} + {#if mode && mode === 'words'} + + {#each Array(2) as _, index} + + {#each split as word, i} + {word}{#if word.includes('\n')}
{/if} + + {#if i < split.length - 1}{/if} + {/each} +
+ {/each} +
+ {:else} + + {#each Array(2) as _, index} + + {text} + + {/each} + + {/if} + +{:else} + + {#each split as char, i} + {char} + {/each} + +{/if} \ No newline at end of file diff --git a/src/components/atoms/AboutGridPhoto.svelte b/src/components/atoms/AboutGridPhoto.svelte new file mode 100644 index 0000000..9c77757 --- /dev/null +++ b/src/components/atoms/AboutGridPhoto.svelte @@ -0,0 +1,41 @@ + + +
+ +
\ No newline at end of file diff --git a/src/components/atoms/Badge.svelte b/src/components/atoms/Badge.svelte new file mode 100644 index 0000000..d12bf28 --- /dev/null +++ b/src/components/atoms/Badge.svelte @@ -0,0 +1,12 @@ + + + + +
+ {text} +
\ No newline at end of file diff --git a/src/components/atoms/BoxCTA.svelte b/src/components/atoms/BoxCTA.svelte new file mode 100644 index 0000000..6f7625f --- /dev/null +++ b/src/components/atoms/BoxCTA.svelte @@ -0,0 +1,23 @@ + + + + + +
+ +
+ + {label} + +
\ No newline at end of file diff --git a/src/components/atoms/Button.svelte b/src/components/atoms/Button.svelte new file mode 100644 index 0000000..4e0e9bd --- /dev/null +++ b/src/components/atoms/Button.svelte @@ -0,0 +1,61 @@ + + + + +{#if tag === 'button'} + +{:else if tag === 'a'} + + {#if slotPosition === 'before'} + + {/if} + + {#if slotPosition === 'after'} + + {/if} + +{/if} \ No newline at end of file diff --git a/src/components/atoms/ButtonCart.svelte b/src/components/atoms/ButtonCart.svelte new file mode 100644 index 0000000..cf19c0e --- /dev/null +++ b/src/components/atoms/ButtonCart.svelte @@ -0,0 +1,25 @@ + + + + +
+ + + {#if $cartAmount > 0} + {$cartAmount} + {/if} + +
\ No newline at end of file diff --git a/src/components/atoms/ButtonCircle.svelte b/src/components/atoms/ButtonCircle.svelte new file mode 100644 index 0000000..50094d9 --- /dev/null +++ b/src/components/atoms/ButtonCircle.svelte @@ -0,0 +1,44 @@ + + + + +{#if tag === 'a'} + + {#if clone} + {#each Array(2) as _} + + {/each} + {:else} + + {/if} + +{:else} + +{/if} \ No newline at end of file diff --git a/src/components/atoms/DiscoverText.svelte b/src/components/atoms/DiscoverText.svelte new file mode 100644 index 0000000..e8eb65f --- /dev/null +++ b/src/components/atoms/DiscoverText.svelte @@ -0,0 +1,15 @@ + + + + +

+ Discover {count.photos} homes
+ from {count.locations} places + in {count.countries} countries +

\ No newline at end of file diff --git a/src/components/atoms/Icon.svelte b/src/components/atoms/Icon.svelte new file mode 100644 index 0000000..2b9fcc1 --- /dev/null +++ b/src/components/atoms/Icon.svelte @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/src/components/atoms/IconArrow.svelte b/src/components/atoms/IconArrow.svelte new file mode 100644 index 0000000..70873be --- /dev/null +++ b/src/components/atoms/IconArrow.svelte @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/src/components/atoms/IconEarth.svelte b/src/components/atoms/IconEarth.svelte new file mode 100644 index 0000000..5b64a72 --- /dev/null +++ b/src/components/atoms/IconEarth.svelte @@ -0,0 +1,44 @@ + + + + + + {#if animate} + + + + + + + + + + + + + + {:else} + + + + + + + + + + + {/if} + \ No newline at end of file diff --git a/src/components/atoms/Image.svelte b/src/components/atoms/Image.svelte new file mode 100644 index 0000000..479a1c7 --- /dev/null +++ b/src/components/atoms/Image.svelte @@ -0,0 +1,86 @@ + + + + + + \ No newline at end of file diff --git a/src/components/atoms/ScrollingTitle.svelte b/src/components/atoms/ScrollingTitle.svelte new file mode 100644 index 0000000..acd6127 --- /dev/null +++ b/src/components/atoms/ScrollingTitle.svelte @@ -0,0 +1,72 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/components/atoms/SiteTitle.svelte b/src/components/atoms/SiteTitle.svelte new file mode 100644 index 0000000..99033be --- /dev/null +++ b/src/components/atoms/SiteTitle.svelte @@ -0,0 +1,37 @@ + + + + +{#if tag === 'h1'} +

+ + + +

+{:else} +
+ Houses + Of The + World +
+{/if} \ No newline at end of file diff --git a/src/components/layouts/PosterLayout.svelte b/src/components/layouts/PosterLayout.svelte new file mode 100644 index 0000000..f4b8b91 --- /dev/null +++ b/src/components/layouts/PosterLayout.svelte @@ -0,0 +1,134 @@ + + + + +
+
+ + + +
+ + + + {#if product.photos_preview.length} +
+ {#each product.photos_preview.slice(0, 3) as { directus_files_id}, index} + {directus_files_id.title} + {/each} +
+ {/if} + +
+
+ {#if product.description} +

{product.description}

+ {/if} + {#if product.details} +

{product.details}

+ {/if} +
+
+ + {#if lastPreviewPhoto} + {lastPreviewPhoto.title} + {/if} +
\ No newline at end of file diff --git a/src/components/molecules/CartItem.svelte b/src/components/molecules/CartItem.svelte new file mode 100644 index 0000000..15f42be --- /dev/null +++ b/src/components/molecules/CartItem.svelte @@ -0,0 +1,69 @@ + + + + +
+
+ {item.product.name} +
+
+

Poster

+

+ {item.product.name} +
– {item.price}€ +

+ + {#if item && item.quantity} + + {/if} + + + + + + +
+
\ No newline at end of file diff --git a/src/components/molecules/EmailForm.svelte b/src/components/molecules/EmailForm.svelte new file mode 100644 index 0000000..ad713c6 --- /dev/null +++ b/src/components/molecules/EmailForm.svelte @@ -0,0 +1,103 @@ + + + + + \ No newline at end of file diff --git a/src/components/molecules/Heading.svelte b/src/components/molecules/Heading.svelte new file mode 100644 index 0000000..c1b0d1b --- /dev/null +++ b/src/components/molecules/Heading.svelte @@ -0,0 +1,17 @@ + + + + +
+ + +
+ {@html text} +
+
\ No newline at end of file diff --git a/src/components/molecules/House.svelte b/src/components/molecules/House.svelte new file mode 100644 index 0000000..10f5430 --- /dev/null +++ b/src/components/molecules/House.svelte @@ -0,0 +1,66 @@ + + + + +
+
+

+ {title} +

+

+ {#if city} + + {city} + + · + {/if} + {#if date} + + {/if} +

+
+ +
+ +
+ {photoAlt} +
+
+ + {index} + +
+
\ No newline at end of file diff --git a/src/components/molecules/Location.svelte b/src/components/molecules/Location.svelte new file mode 100644 index 0000000..187b81c --- /dev/null +++ b/src/components/molecules/Location.svelte @@ -0,0 +1,116 @@ + + + + +
+ + Flag of {location.country.name} +
+
+
+ {location.name} +
+
+ {location.country.name} +
+
+ {#if isNew} + + {/if} +
+
+ + {#if location.photos.length} +
+ {#each location.photos as { image }, index} + {#if image} + {@const classes = ['location__photo', index === photoIndex ? 'is-visible' : null].join(' ').trim()} + {image.title} + {/if} + {/each} +
+ {/if} +
diff --git a/src/components/molecules/NewsletterIssue.svelte b/src/components/molecules/NewsletterIssue.svelte new file mode 100644 index 0000000..28491c1 --- /dev/null +++ b/src/components/molecules/NewsletterIssue.svelte @@ -0,0 +1,33 @@ + + + + + \ No newline at end of file diff --git a/src/components/molecules/NotificationCart.svelte b/src/components/molecules/NotificationCart.svelte new file mode 100644 index 0000000..ec0cd4d --- /dev/null +++ b/src/components/molecules/NotificationCart.svelte @@ -0,0 +1,32 @@ + + + + +
+
+ {title} +
+
+

{title}

+

{name}

+
+
\ No newline at end of file diff --git a/src/components/molecules/Pagination.svelte b/src/components/molecules/Pagination.svelte new file mode 100644 index 0000000..2f67ce8 --- /dev/null +++ b/src/components/molecules/Pagination.svelte @@ -0,0 +1,23 @@ + + + + + \ No newline at end of file diff --git a/src/components/molecules/PhotoCard.svelte b/src/components/molecules/PhotoCard.svelte new file mode 100644 index 0000000..1640707 --- /dev/null +++ b/src/components/molecules/PhotoCard.svelte @@ -0,0 +1,70 @@ + + + + +
sendHover(true)} + on:focus={() => sendHover(true)} + on:mouseout={() => sendHover(false)} + on:blur={() => sendHover(false)} +> + {#if url} + + {:else} + + {/if} +
\ No newline at end of file diff --git a/src/components/molecules/PostCard.svelte b/src/components/molecules/PostCard.svelte new file mode 100644 index 0000000..d12c07f --- /dev/null +++ b/src/components/molecules/PostCard.svelte @@ -0,0 +1,48 @@ + + + + +
+
+

+ Houses of
+ {country} +

+
+
+
+
+ Stamp +
+ Flag of {country} +
+
    +
  • {street}
  • +
  • {location}{region ? `, ${region}` : ''}
  • +
+
+
\ No newline at end of file diff --git a/src/components/molecules/Poster.svelte b/src/components/molecules/Poster.svelte new file mode 100644 index 0000000..312edfe --- /dev/null +++ b/src/components/molecules/Poster.svelte @@ -0,0 +1,50 @@ + + + + +
+ {#if image} + $smoothScroll.scrollTo('#poster', { duration: 2 })} + > + Poster of {location.name} + + {/if} +
+
+
\ No newline at end of file diff --git a/src/components/molecules/ProcessStep.svelte b/src/components/molecules/ProcessStep.svelte new file mode 100644 index 0000000..27bc1a0 --- /dev/null +++ b/src/components/molecules/ProcessStep.svelte @@ -0,0 +1,61 @@ + + + + +{#if visible} +
+ {#if image || video} +
+ {#if image} + {image.title} + {:else if video} + + {/if} +
+ {/if} + +
+ {@html text} +
+
+{/if} \ No newline at end of file diff --git a/src/components/molecules/Select.svelte b/src/components/molecules/Select.svelte new file mode 100644 index 0000000..c11f4c3 --- /dev/null +++ b/src/components/molecules/Select.svelte @@ -0,0 +1,51 @@ + + +
+ + + {currentOption.name} + + +
\ No newline at end of file diff --git a/src/components/molecules/ShopLocationSwitcher.svelte b/src/components/molecules/ShopLocationSwitcher.svelte new file mode 100644 index 0000000..5d3211f --- /dev/null +++ b/src/components/molecules/ShopLocationSwitcher.svelte @@ -0,0 +1,45 @@ + + + + +
+
Choose a city
+
+ + + + +
+
\ No newline at end of file diff --git a/src/components/molecules/Switcher.svelte b/src/components/molecules/Switcher.svelte new file mode 100644 index 0000000..37d58d0 --- /dev/null +++ b/src/components/molecules/Switcher.svelte @@ -0,0 +1,69 @@ + + + + + + + \ No newline at end of file diff --git a/src/components/organisms/Banner.svelte b/src/components/organisms/Banner.svelte new file mode 100644 index 0000000..430026d --- /dev/null +++ b/src/components/organisms/Banner.svelte @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file diff --git a/src/components/organisms/Carousel.svelte b/src/components/organisms/Carousel.svelte new file mode 100644 index 0000000..21d237b --- /dev/null +++ b/src/components/organisms/Carousel.svelte @@ -0,0 +1,129 @@ + + + + + \ No newline at end of file diff --git a/src/components/organisms/Cart.svelte b/src/components/organisms/Cart.svelte new file mode 100644 index 0000000..f779b8a --- /dev/null +++ b/src/components/organisms/Cart.svelte @@ -0,0 +1,139 @@ + + + + +{#if $cartOpen} +
+ +
+ + + +
+{/if} \ No newline at end of file diff --git a/src/components/organisms/Collage.svelte b/src/components/organisms/Collage.svelte new file mode 100644 index 0000000..82655fb --- /dev/null +++ b/src/components/organisms/Collage.svelte @@ -0,0 +1,29 @@ + + + + +{#if photos} +
+ {#each photos as { slug, title, image, location, city }, index} + hovered = detail ? index : null} + /> + {/each} +
+{/if} \ No newline at end of file diff --git a/src/components/organisms/Footer.svelte b/src/components/organisms/Footer.svelte new file mode 100644 index 0000000..7ff04e0 --- /dev/null +++ b/src/components/organisms/Footer.svelte @@ -0,0 +1,45 @@ + + + + + + \ No newline at end of file diff --git a/src/components/organisms/InteractiveGlobe.svelte b/src/components/organisms/InteractiveGlobe.svelte new file mode 100644 index 0000000..63ff01a --- /dev/null +++ b/src/components/organisms/InteractiveGlobe.svelte @@ -0,0 +1,165 @@ + + + + + + +
+
+ +
+ + {#if hoveredMarker} +
+ +

+ {hoveredMarker.country} +

+
+ {/if} +
\ No newline at end of file diff --git a/src/components/organisms/ListCTAs.svelte b/src/components/organisms/ListCTAs.svelte new file mode 100644 index 0000000..ea51f4e --- /dev/null +++ b/src/components/organisms/ListCTAs.svelte @@ -0,0 +1,24 @@ + + +
    + +
\ No newline at end of file diff --git a/src/components/organisms/Locations.svelte b/src/components/organisms/Locations.svelte new file mode 100644 index 0000000..ea0abd8 --- /dev/null +++ b/src/components/organisms/Locations.svelte @@ -0,0 +1,92 @@ + + + + +
+
+

{explore_list}

+
+ +
    + {#each continents as { name, slug }} +
  • + +
  • + {/each} +
+ +
    + {#each filteredLocations as location (location)} +
  • + +
  • + {/each} +
+
\ No newline at end of file diff --git a/src/components/organisms/NewsletterModule.svelte b/src/components/organisms/NewsletterModule.svelte new file mode 100644 index 0000000..f048ddd --- /dev/null +++ b/src/components/organisms/NewsletterModule.svelte @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/src/components/organisms/PostersGrid.svelte b/src/components/organisms/PostersGrid.svelte new file mode 100644 index 0000000..ca07032 --- /dev/null +++ b/src/components/organisms/PostersGrid.svelte @@ -0,0 +1,121 @@ + + + + + + +
+

View all of our available posters

+ + {#if posters} +
+
+ {#each posters as { location, photos_product }} + item.slug.includes(location.slug))} + /> + {/each} +
+ + {#if carousel} +
    + {#each carouselDots as _, index} +
  • +
  • + {/each} +
+ {/if} +
+ {/if} +
\ No newline at end of file diff --git a/src/components/organisms/ShopBanner.svelte b/src/components/organisms/ShopBanner.svelte new file mode 100644 index 0000000..3813d0b --- /dev/null +++ b/src/components/organisms/ShopBanner.svelte @@ -0,0 +1,160 @@ + + + + +
+ + +
+

Shop

+
+ + + + + + {shop.page_heroimage.alt} +
+ + \ No newline at end of file diff --git a/src/components/organisms/ShopModule.svelte b/src/components/organisms/ShopModule.svelte new file mode 100644 index 0000000..a82fb88 --- /dev/null +++ b/src/components/organisms/ShopModule.svelte @@ -0,0 +1,93 @@ + + + + +
+
+ + +
+

{title}

+

{text}

+ {#if enabled} +
+
+
\ No newline at end of file diff --git a/src/globe/beam/ArrayBuffer.js b/src/globe/beam/ArrayBuffer.js deleted file mode 100755 index 51b0431..0000000 --- a/src/globe/beam/ArrayBuffer.js +++ /dev/null @@ -1,26 +0,0 @@ -class ArrayBuffer { - - constructor(gl, data, size, element, name) { - this.name = name; - this.gl = gl; - this._buffer = this.gl.createBuffer(); - this.type = this.gl.FLOAT; - this._target = this.gl[ element ? 'ELEMENT_ARRAY_BUFFER' : 'ARRAY_BUFFER' ]; - this.update(data, size); - } - - update(data, size) { - this.data = data; - this.size = size; - this.length = this.data.length; - this.gl.bindBuffer( this._target, this._buffer); - this.gl.bufferData( this._target, this.data, this.gl.STATIC_DRAW); - } - - bind() { - this.gl.bindBuffer( this._target, this._buffer ); - } - -} - -export default ArrayBuffer; \ No newline at end of file diff --git a/src/globe/beam/Camera.js b/src/globe/beam/Camera.js deleted file mode 100755 index 1b7706e..0000000 --- a/src/globe/beam/Camera.js +++ /dev/null @@ -1,336 +0,0 @@ -import Object3d from './Object3d'; -import Container from './Container'; -import * as mat4 from './glMatrix/mat4'; -import * as vec3 from './glMatrix/vec3'; -import * as quat from './glMatrix/quat'; - -const TOUCH = ('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0); -const POINTER = !!window.navigator.pointerEnabled; -const MS_POINTER = !!window.navigator.msPointerEnabled; - -const POINTER_DOWN = TOUCH ? 'touchstart' : (POINTER ? 'pointerdown' : (MS_POINTER ? 'MSPointerDown' : 'mousedown' ) ); -const POINTER_MOVE = TOUCH ? 'touchmove' : (POINTER ? 'pointermove' : (MS_POINTER ? 'MSPointerMove' : 'mousemove' ) ); -const POINTER_UP = TOUCH ? 'touchend' : (POINTER ? 'pointerup' : (MS_POINTER ? 'MSPointerUp' : 'mouseup' ) ); - - - -var objects = [] - -function needsUpdateLoop() { - requestAnimationFrame(needsUpdateLoop); - for (let i=0; i { - if (value) { - this.defines.USE_MAP = true; - this.compile(); - if (this.uniforms.map) { - this.uniforms.map.value = value; - } - } - else { - this.defines.USE_MAP = false; - this.compile(); - } - } - }); - - this.map = options.map; - - } - - - -} - -export default Material; \ No newline at end of file diff --git a/src/globe/beam/Mesh.js b/src/globe/beam/Mesh.js deleted file mode 100755 index 8f08e46..0000000 --- a/src/globe/beam/Mesh.js +++ /dev/null @@ -1,90 +0,0 @@ -import Container from './Container'; -import * as mat4 from './glMatrix/mat4'; - -class Mesh extends Container { - - constructor(options) { - super(); - this.material = null; - this.geometry = null; - this.options = options || {}; - this._viewMatrix = mat4.create() - this._invViewMatrix = mat4.create() - this._modelViewMatrix = mat4.create() - this._normalMatrix = mat4.create() - } - - render(camera, options={}) { - - super.render( camera, options ); - - let material = options.overrideMaterial || this.material; - - if (camera && material && - this.geometry && //TODO: check for geometry.length - this.visible) { - - if (this.options.beforeRender) { - this.options.beforeRender() - } - // setTimeout(()=>{ - mat4.invert(this._viewMatrix, camera.worldMatrix); - mat4.multiply(this._modelViewMatrix, this._viewMatrix, this.worldMatrix); - - if (material.uniforms['uInverseViewMatrix'] !== void 0) { - mat4.copy(this._invViewMatrix, camera.worldMatrix); - mat4.invert(this._invViewMatrix, this._invViewMatrix); - material.uniforms['uInverseViewMatrix'].value = camera.worldMatrix; - } - - if (material.uniforms['uCameraPosition'] !== void 0) { - material.uniforms['uCameraPosition'].value = camera.position; - } - if (material.uniforms['uVMatrix'] !== void 0) { - material.uniforms['uVMatrix'].value = this._viewMatrix; - } - if (material.uniforms['uNormalMatrix'] !== void 0) { - mat4.multiply( this._normalMatrix, this._rotationMat4, this.parent._rotationMat4); - material.uniforms['uNormalMatrix'].value = this._normalMatrix - } - if (material.uniforms['uMMatrix'] !== void 0) { - material.uniforms['uMMatrix'].value = this.worldMatrix; - // console.log('MANUALLY ASSIGN ', this.matrix, this.name) - // console.log('setMM', this.name, this.matrix[0], this.matrix[1], this.matrix[2], this.matrix[3]) - } - if (material.uniforms['uMVMatrix'] !== void 0) { - material.uniforms['uMVMatrix'].value = this._modelViewMatrix; - } - - if (material.uniforms['uPMatrix'] !== void 0) { - material.uniforms['uPMatrix'].value = camera.projectionMatrix; - } - - for (let u in options.uniforms) { - if (material.uniforms[ u ] !== void 0) { - material.uniforms[ u ].value = options.uniforms[u]; - } - } - - let needsCompile = false; - for (let k in options.defines) { - if (material.defines[ k ] !== options.defines[ k ]) { - material.defines[ k ] = options.defines[ k ]; - needsCompile = true; - } - } - - if (needsCompile) { - material.compile(); - } - - material.draw( this.geometry ); - // }) - - } - - } - -} - -export default Mesh; \ No newline at end of file diff --git a/src/globe/beam/Object3d.js b/src/globe/beam/Object3d.js deleted file mode 100755 index e2c83d4..0000000 --- a/src/globe/beam/Object3d.js +++ /dev/null @@ -1,142 +0,0 @@ -import * as mat4 from './glMatrix/mat4'; -import * as mat3 from './glMatrix/mat3'; -import * as quat from './glMatrix/quat'; -import * as vec3 from './glMatrix/vec3'; - - -class Object3d { - - constructor() { - - this.position = vec3.create(); - this.rotation = vec3.create(); - this.scale = vec3.create(); - this.lookAt = null; - - //use to diff and only update matrix if needed - this.lastPosition = vec3.create(); - this.lastRotation = vec3.create(); - this.lastScale = vec3.create(); - this.lastLookAt = vec3.create(); - - vec3.set(this.scale, 1, 1, 1); - this.up = vec3.create(); - vec3.set(this.up, 0, 1, 0); - this.matrix = mat4.create();//modelMatrix - this.worldMatrix = mat4.create();//modelMatrix * parentMatri(x|ces) - - this.quaternion = null;//quat.create(); - this._quaternion = quat.create(); - - this.inverseWorldMatrix = mat4.create(); - - this._invLookatMat4 = mat4.create(); - this._m3Rotation = mat3.create(); - this._rotationMat4 = mat4.create(); - this._lookAtMat4 = mat4.create(); - - this._lastUpdate = Date.now() - - } - - render() { - - let needsUpdate = false; - // let needsUpdateOrigin = null; - if (this.position[0] !== this.lastPosition[0] || - this.position[1] !== this.lastPosition[1] || - this.position[2] !== this.lastPosition[2] ) { - this.lastPosition[0] = this.position[0]; - this.lastPosition[1] = this.position[1]; - this.lastPosition[2] = this.position[2]; - // needsUpdateOrigin = 'position' - needsUpdate = true; - } - else if ( - this.rotation[0] !== this.lastRotation[0] || - this.rotation[1] !== this.lastRotation[1] || - this.rotation[2] !== this.lastRotation[2] ) { - this.lastScale[0] = this.rotation[0]; - this.lastScale[1] = this.rotation[1]; - this.lastScale[2] = this.rotation[2]; - // needsUpdateOrigin = 'rotation' - needsUpdate = true; - } - else if ( - this.scale[0] !== this.lastScale[0] || - this.scale[1] !== this.lastScale[1] || - this.scale[2] !== this.lastScale[2] ) { - this.lastScale[0] = this.scale[0]; - this.lastScale[1] = this.scale[1]; - this.lastScale[2] = this.scale[2]; - // needsUpdateOrigin = 'scale' - needsUpdate = true; - } - else if ( - this.lookAt !== null && - ( this.lookAt[0] !== this.lastLookAt[0] || - this.lookAt[1] !== this.lastLookAt[1] || - this.lookAt[2] !== this.lastLookAt[2] ) ) { - this.lastLookAt[0] = this.lookAt[0]; - this.lastLookAt[1] = this.lookAt[1]; - this.lastLookAt[2] = this.lookAt[2]; - // needsUpdateOrigin = 'lookAt' - needsUpdate = true; - } - - this.updateMatrix(); - this.updateWorldMatrix(); - - } - - updateMatrix() { - - mat4.identity(this.matrix); - mat4.identity(this._invLookatMat4) - mat3.identity(this._m3Rotation) - mat4.identity(this._rotationMat4) - mat4.identity(this._lookAtMat4) - - if (this.quaternion) { - mat4.fromRotationTranslation(this.matrix, this.quaternion, this.position ); - } - else { - mat4.translate(this.matrix, this.matrix, this.position); - mat4.rotateX(this._rotationMat4, this._rotationMat4, this.rotation[0]); - mat4.rotateY(this._rotationMat4, this._rotationMat4, this.rotation[1]); - mat4.rotateZ(this._rotationMat4, this._rotationMat4, this.rotation[2]); - } - - if (this.lookAt !== null) { - - mat4.lookAt( - this.matrix, - this.position, - this.lookAt, - this.up - ); - - mat4.invert(this.matrix, this.matrix); - mat4.scale(this.matrix, this.matrix, this.scale); - - } - else { - mat4.scale(this.matrix, this.matrix, this.scale); - mat4.multiply(this.matrix, this.matrix, this._rotationMat4); - } - } - - updateWorldMatrix() { - if (this.parent) { - mat4.multiply(this.worldMatrix, this.parent.worldMatrix, this.matrix ); - } - else{ - this.worldMatrix = this.matrix; - } - mat4.invert(this.inverseWorldMatrix, this.worldMatrix); - } - -} - - -export default Object3d; \ No newline at end of file diff --git a/src/globe/beam/PlaneGeometryBuffer.js b/src/globe/beam/PlaneGeometryBuffer.js deleted file mode 100755 index 47e2bd4..0000000 --- a/src/globe/beam/PlaneGeometryBuffer.js +++ /dev/null @@ -1,94 +0,0 @@ -import GeometryBuffer from './GeometryBuffer'; - -class PlaneGeometryBuffer extends GeometryBuffer { - - constructor(gl, options) { - - super(gl, 4.); - - options = Object.assign({}, { - width: 1000, - height: 1000, - widthSegments: 1, - heightSegments: 1 - }, options); - - if (!gl) { - return; - } - - this.width = options.width; - this.height = options.height; - this.widthSegments = options.widthSegments; - this.heightSegments = options.heightSegments; - - this._build(); - this.addAttribute( 'index', new Uint16Array( this.indices ), 1 ); - this.addAttribute( 'position', new Float32Array( this.vertices ), 3 ); - this.addAttribute( 'normal', new Float32Array( this.normals ), 3 ); - this.addAttribute( 'uv', new Float32Array( this.uvs ), 2 ); - this.addAttribute( 'color', new Float32Array( this.colors ), 3 ); - } - - update() { - this._build(); - this.attributes['index'].update( new Uint16Array(this.indices), 1 ); - this.attributes['position'].update( new Float32Array(this.vertices), 3 ); - this.attributes['normal'].update( new Float32Array(this.normals), 3 ); - this.attributes['uv'].update( new Float32Array(this.uvs), 2 ); - this.attributes['color'].update( new Float32Array(this.colors), 3 ); - } - - _build() { - - // buffers - this.indices = []; - this.vertices = []; - this.normals = []; - this.uvs = []; - this.colors = []; - - var width_half = this.width * 0.5; - var height_half = this.height * 0.5; - var gridX = this.widthSegments >> 0; - var gridY = this.heightSegments >> 0; - var gridX1 = gridX + 1; - var gridY1 = gridY + 1; - var segment_width = this.width / gridX; - var segment_height = this.height / gridY; - - var ix, iy; - - // generate vertices, normals and uvs - for ( iy = 0; iy < gridY1; iy ++ ) { - var y = iy * segment_height - height_half; - for ( ix = 0; ix < gridX1; ix ++ ) { - var x = ix * segment_width - width_half; - this.vertices.push( x, - y, 0 ); - this.normals.push( 0, 0, 1 ); - this.uvs.push( ix / gridX, 1 - ( iy / gridY ) ); - this.colors.push( 1, 1, 1 ); - } - } - - // indices - for ( iy = 0; iy < gridY; iy ++ ) { - for ( ix = 0; ix < gridX; ix ++ ) { - var a = ix + gridX1 * iy; - var b = ix + gridX1 * ( iy + 1 ); - var c = ( ix + 1 ) + gridX1 * ( iy + 1 ); - var d = ( ix + 1 ) + gridX1 * iy; - // faces - this.indices.push( a, b, d ); - this.indices.push( b, c, d ); - } - } - - this.length = this.vertices.length/3; - - } - - -} - -export default PlaneGeometryBuffer; \ No newline at end of file diff --git a/src/globe/beam/Program.js b/src/globe/beam/Program.js deleted file mode 100755 index 559d653..0000000 --- a/src/globe/beam/Program.js +++ /dev/null @@ -1,448 +0,0 @@ -import UNIFORM_TYPE from './uniformTypes'; -import defaultVertexShader from './shaders/default-vs.glsl'; -import defaultFragmentShader from './shaders/default-fs.glsl'; -import uuid from './utils/uuid'; - -const TEXTURE_2D = 35678 -const TEXTURE_CUBE_MAP = 35680; - -function addLineNumbers( string ) { - var lines = string.split( '\n' ); - for ( var i = 0; i < lines.length; i ++ ) { - lines[ i ] = ( i + 1 ) + ': ' + lines[ i ]; - } - return lines.join( '\n' ); -} - -function compileShader( gl, shader, code ){ - gl.shaderSource( shader, code ); - gl.compileShader( shader ); - if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - console.error('Shader cannot compile: \n' + gl.getShaderInfoLog(shader) || "" ); - console.warn(addLineNumbers(code)); - return false; - } - return true; -} - - - -var _lastUsedDepthTest = null -var _lastUsedGeometry = null - - -class Program { - - constructor(gl, options={}) { - - this._uuid = uuid(); - - if (!gl) { - return; - } - - options = Object.assign({}, { - vertexShader: defaultVertexShader, - fragmentShader: defaultFragmentShader, - defines: {}, - extentions: {}, - uniforms: {}, - type: gl.TRIANGLES - }, options); - - this.options = options; - - this._vertexShaderSource = options.vertexShader; - this._fragmentShaderSource = options.fragmentShader; - - this.gl = gl; - this._program = gl.createProgram(); - this.vertexShader = gl.createShader( gl.VERTEX_SHADER ); - this.fragmentShader = gl.createShader( gl.FRAGMENT_SHADER ); - - gl.attachShader(this._program, this.vertexShader); - gl.attachShader(this._program, this.fragmentShader); - - this.type = options.type; - this.attributes = {}; - this.defines = options.defines; - this.extentions = options.extentions; - - this._textureUnit = 0; - - this.depthTest = options.depthTest !== void 0 ? options.depthTest : true; - this.blend = options.blend !== void 0 ? options.blend : false; - this.blendEquation = options.blendEquation !== void 0 ? options.blendEquation : this.gl.FUNC_ADD; - this.blendSrc = options.blendSrc !== void 0 ? options.blendSrc : this.gl.SRC_ALPHA; - this.blendDst = options.blendDst !== void 0 ? options.blendDst : this.gl.ONE_MINUS_SRC_ALPHA; - this.blendSrcRGB = options.blendSrcRGB !== void 0 ? options.blendSrcRGB : this.gl.SRC_ALPHA; - this.blendDstRGB = options.blendDstRGB !== void 0 ? options.blendDstRGB : this.gl.ONE_MINUS_SRC_ALPHA; - this.blendSrcAlpha = options.blendSrcAlpha !== void 0 ? options.blendSrcAlpha : this.gl.ONE; - this.blendDstAlpha = options.blendDstAlpha !== void 0 ? options.blendDstAlpha : this.gl.ONE_MINUS_SRC_ALPHA; - - this.wireframe = options.wireframe !== void 0 ? options.wireframe : false; - - this.uniforms = {}; - - this._userDefinedUniforms = options.uniforms; - this.compile(); - - } - - compile() { - - if (!this.gl) { - return; - } - - if (this.isCompiling) { - return; - } - - this.isCompiling = true; - - var defines = ''; - for (var d in this.defines) { - if (this.defines[d]) { - defines += '#define '+d+' '+this.defines[d]+'\n'; - } - } - - if( !( compileShader( this.gl, this.vertexShader, defines + this._vertexShaderSource ) && - compileShader( this.gl, this.fragmentShader, defines + this._fragmentShaderSource ) ) ) { - console.warn('compile error') - return false; - } - - this.gl.linkProgram(this._program); - - if (!this.gl.getProgramParameter(this._program, this.gl.LINK_STATUS)) { - console.error("Cannot link program: \n" + this.gl.getProgramInfoLog(this._program) || ""); - console.warn("VERTEX_SHADER:\n"+addLineNumbers(this._vertexShaderSource) - +"\n\nFRAGMENT_SHADER:\n"+addLineNumbers(this._fragmentShaderSource)); - } - - this.gl.useProgram(this._program); - - this._retrieveUniformsFromShader(); - - this.isCompiling = false; - - } - - _retrieveUniformsFromShader() { - - - -//debug -let isMMatrix = false; - - this._savedUniforms = {}; - for (let k in this.uniforms) { - this._savedUniforms[k] = { - value: this.uniforms[k].value - } - } - - this.uniforms = {}; - this._textureUnit = 0; - - var numUniforms = this.gl.getProgramParameter( this._program, this.gl.ACTIVE_UNIFORMS ); - - for (let i = 0; i < numUniforms; ++i) { - - var uniform = this.gl.getActiveUniform( this._program, i ); - - if( uniform === null ){ - this.gl.getError(); - continue; - } - - let name = uniform.name; - - - - let isArray = false;//is uniform array ?(ex: 3fv, 4fv...) - - // tltr; we want 'myUniform[0]' to become 'myUniform' - // if array uniform, replace the retrieved name as it includes the first index acces - if (/\[.*\]/.test(name) ) { - isArray = true; - name = name.replace(/\[.*\]/,''); - } - - - if (this.uniforms[ name ] !== void 0) { - this.uniforms[ name ].location = this.gl.getUniformLocation( this._program, name ); - this.uniforms[ name ].type = uniform.type; - - } - else { - - this.uniforms[ name ] = { - isArray: isArray, - location: this.gl.getUniformLocation( this._program, name ), - type: uniform.type, - value: null, - size: uniform.size - } - - //set texture unit - if (uniform.type === TEXTURE_2D || uniform.type === TEXTURE_CUBE_MAP) { - this.uniforms[ name ].unit = this._textureUnit; - this._textureUnit++; - } - - } - - } - - - -let isEnd = false; - //merge user defined uniforms - for (let u in this._savedUniforms) { - - - - if (this.uniforms[u] !== void 0){ - if (this._savedUniforms[u].value !== void 0 - && this._savedUniforms[u].value !== null) { - - - this.uniforms[u].value = this._savedUniforms[u].value; - } - } - else { - - } - - } - - - for (let u in this._userDefinedUniforms) { - if (this.uniforms[u] !== void 0 - && this._userDefinedUniforms[u] !== void 0 - && this._userDefinedUniforms[u] !== null) { - this.uniforms[u].value = this._userDefinedUniforms[u]; - } - } - - - var numAttributes = this.gl.getProgramParameter( this._program, this.gl.ACTIVE_ATTRIBUTES ); - - for (let i = 0; i < numAttributes; ++i) { - - var attribute = this.gl.getActiveAttrib( this._program, i ); - - if( attribute === null ){ - this.gl.getError(); - continue; - } - - this.attributes[ attribute.name ] = { - location: this.gl.getAttribLocation( this._program, attribute.name ), - type: attribute.type - } - - //the attribute is only enabled when the buffer is binded - //(so it's enabled by the Program that will use the buffer) - //this way we make sure that any enabled attribute has some data not to trigger an error - //see http://www.mjbshaw.com/2013/03/webgl-fixing-invalidoperation.html - // this.gl.enableVertexAttribArray( this.attributes[attribute.name].location ); - - } - - - } - - dispose() { - - } - - use () { - if (!this.gl) { - return; - } - - - this.gl.useProgram(this._program); - } - - attribPointer(attributes, geometry) { - - if (!this.gl) { - return; - } - - for (var attr in this.attributes) { - if (attributes[attr] !== void 0) { - attributes[attr].bind(); - this.gl.vertexAttribPointer( this.attributes[attr].location, attributes[attr].size, attributes[attr].type, false, 0, 0); - this.gl.enableVertexAttribArray( this.attributes[attr].location ); - } - } - } - - draw(geometry) { - - if (!this.gl) { - return; - } - - - this.gl.useProgram(this._program); - - //todo add a flah on attribute to check if they changed and thus needs to be binded again - //todo check the currently used program to know if it need some buffer bindings - // if (geometry !== _lastUsedGeometry) { - //TODO: check if geometry has changed - this.attribPointer(geometry.attributes, geometry); - // _lastUsedGeometry = geometry; - // } - - // if (this.depthTest !== _lastUsedDepthTest) { - this.gl[ this.depthTest ? 'enable' : 'disable' ](this.gl.DEPTH_TEST); - // _lastUsedDepthTest = this.depthTest; - // } - - if (this.blend) { - - // this.gl.disable(this.gl.DEPTH_TEST); - // this.gl[ this.depthTest ? 'enable' : 'disable' ](this.gl.DEPTH_TEST); - - if (this.depthTest) { - this.gl.depthFunc( this.gl.LESS ); - } - - - this.gl.blendEquation(this.blendEquation); - this.gl.blendFuncSeparate(this.blendSrcRGB, this.blendDstRGB, this.blendSrcAlpha, this.blendDstAlpha); - // this.gl.blendFunc(this.blendSrc,this.blendDst); - this.gl.enable(this.gl.BLEND); - - } - else { - this.gl.disable(this.gl.BLEND); - // this.gl[ this.depthTest ? 'enable' : 'disable' ](this.gl.DEPTH_TEST); - if (this.depthTest) { - this.gl.depthFunc( this.gl.LESS ); - } - } - - - - - - var keys = Object.keys(this.uniforms); - - for (var i=0,l=keys.length; i "3fv" - if (this.uniforms[ uniformName ].isArray) { - type += 'v'; - } - - if (this.uniforms[ uniformName ].value !== null) { - - if (type == '2f') { - this.gl['uniform' + type ](this.uniforms[ uniformName ].location, this.uniforms[ uniformName ].value[0], this.uniforms[ uniformName ].value[1]); - - // drawnUniforms2f.push(uniformName); - } - else if (type == '3f') { - this.gl['uniform' + type ](this.uniforms[ uniformName ].location, this.uniforms[ uniformName ].value[0], this.uniforms[ uniformName ].value[1], this.uniforms[ uniformName ].value[2]); - - // drawnUniforms3f.push(uniformName); - } - else if (type == '4f') { - this.gl['uniform' + type ](this.uniforms[ uniformName ].location, this.uniforms[ uniformName ].value[0], this.uniforms[ uniformName ].value[1], this.uniforms[ uniformName ].value[2], this.uniforms[ uniformName ].value[3]); - - // drawnUniforms4f.push(uniformName); - } - else { - - // drawnUniforms1f.push(uniformName); - this.gl['uniform' + type ](this.uniforms[ uniformName ].location, this.uniforms[ uniformName ].value); - } - - } - - } - //break; - } - - } - - if ( this.type !== this.gl.POINTS && - geometry.attributes['index'] ) { - geometry.attributes['index'].bind() - this.gl.drawElements(this.wireframe ? this.gl.LINE_STRIP : this.type, geometry.attributes['index'].length, this.gl.UNSIGNED_SHORT, 0); - } - else { - this.gl.drawArrays(this.wireframe ? this.gl.LINE_STRIP : this.type, 0, geometry.length); - } - - - } - -} - - -// var drawnUniformsTextures = [] -// var drawnUniforms1f = [] -// var drawnUniforms2f = [] -// var drawnUniforms3f = [] -// var drawnUniforms4f = [] - -// function flushUniforms() { -// console.log('1f: ' + drawnUniforms1f.length + '\n' + -// '2f: ' + drawnUniforms2f.length + '\n' + -// '3f: ' + drawnUniforms3f.length + '\n' + -// '4f: ' + drawnUniforms4f.length + '\n' + -// 'tx: ' + drawnUniformsTextures.length + '\n' ); - -// drawnUniformsTextures = [] -// drawnUniforms1f = [] -// drawnUniforms2f = [] -// drawnUniforms3f = [] -// drawnUniforms4f = [] -// requestAnimationFrame(flushUniforms) -// } - -// flushUniforms(); - -export default Program; \ No newline at end of file diff --git a/src/globe/beam/Renderer.js b/src/globe/beam/Renderer.js deleted file mode 100755 index 71effdd..0000000 --- a/src/globe/beam/Renderer.js +++ /dev/null @@ -1,103 +0,0 @@ - -class Renderer { - - constructor(options) { - - this.canvas = (options && options.canvas) || document.createElement('canvas'); - - this.canvas.style.transformOrigin = '0 0'; - - this.contextAttributes = Object.assign({},{ - alpha: false, - depth: true, - stencil: true, - antialias: false, - premultipliedAlpha: true, - preserveDrawingBuffer: false, - failIfMajorPerformanceCaveat: false, - }, (options || {}) ); - - this._pixelRatio = 1; - - this.gl = this.canvas.getContext("experimental-webgl", this.contextAttributes); - - this.handleContextLost = this.handleContextLost.bind(this); - this.handleContextRestored = this.handleContextRestored.bind(this); - this.canvas.addEventListener('webglcontextlost', this.handleContextLost, false); - this.canvas.addEventListener('webglcontextrestored', this.handleContextRestored, false); - - } - - handleContextLost(event){ - event.preventDefault(); - } - - handleContextRestored(){ - - } - - handleContextRestored() { - - } - - render(container, camera, frameBuffer, preventCameraUpdate) { - - if (!this.gl) { - return; - } - - if (!preventCameraUpdate) { - camera.update(); - } - - if (frameBuffer){ - frameBuffer.bindFrame(); - container.render( camera ); - frameBuffer.unbind(); - } - else{ - this.gl.viewport(0, 0, this._width* this._pixelRatio , this._height* this._pixelRatio ); - container.render( camera ); - } - - } - - resize(width, height) { - if (!this.gl) { - return; - } - this._width = width; - this._height = height; - this.canvas.width = this._width * this._pixelRatio; - this.canvas.height = this._height * this._pixelRatio; - this.canvas.style.transform = 'scale('+(1/this._pixelRatio)+') translateZ(0)'; - this.gl.viewport(0, 0, this._width* this._pixelRatio , this._height* this._pixelRatio ); - } - - clearColor(r, g, b, alpha) { - if (!this.gl) { - return; - } - this.gl.clearColor(r, g, b, alpha); - } - - clear(color, depth, stencil) { - if (!this.gl) { - return; - } - var bits = 0; - if ( color === void 0 || color ) bits |= this.gl.COLOR_BUFFER_BIT; - if ( depth === void 0 || depth ) bits |= this.gl.DEPTH_BUFFER_BIT; - if ( stencil === void 0 || stencil ) bits |= this.gl.STENCIL_BUFFER_BIT; - this.gl.clear( bits ); - } - - setPixelRatio(ratio) { - this._pixelRatio = ratio; - this.resize(this._width, this._height); - } - -} - - -export default Renderer; \ No newline at end of file diff --git a/src/globe/beam/SphereGeometryBuffer.js b/src/globe/beam/SphereGeometryBuffer.js deleted file mode 100755 index eef09d8..0000000 --- a/src/globe/beam/SphereGeometryBuffer.js +++ /dev/null @@ -1,112 +0,0 @@ -import GeometryBuffer from './GeometryBuffer'; -import * as vec3 from './glMatrix/vec3'; - - - - - -class SphereGeometryBuffer extends GeometryBuffer { - - constructor(gl, options) { - - super(gl, 0.); - - options = Object.assign({},{ - radius: 50, - widthSegments: 8, - heightSegments: 6, - phiStart: 0, - phiLength: Math.PI * 2, - thetaStart: 0, - thetaLength: Math.PI - }, options); - - - if (!gl) { - return; - } - - var radius = options.radius || 50; - var widthSegments = Math.max( 3, Math.floor( options.widthSegments ) || 8 ); - var heightSegments = Math.max( 2, Math.floor( options.heightSegments ) || 6 ); - var phiStart = phiStart !== undefined ? options.phiStart : 0; - var phiLength = phiLength !== undefined ? options.phiLength : Math.PI * 2; - var thetaStart = thetaStart !== undefined ? options.thetaStart : 0; - var thetaLength = thetaLength !== undefined ? options.thetaLength : Math.PI; - - var thetaEnd = thetaStart + thetaLength; - - var ix, iy; - - var index = 0; - var grid = []; - - var vertex = vec3.create(); - var normal = vec3.create(); - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - var colors = []; - - // generate vertices, normals and uvs - - for ( iy = 0; iy <= heightSegments; iy ++ ) { - - var verticesRow = []; - - var v = iy / heightSegments; - - for ( ix = 0; ix <= widthSegments; ix ++ ) { - - var u = ix / widthSegments; - - vertex[0] = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); - vertex[1] = radius * Math.cos( thetaStart + v * thetaLength ); - vertex[2] = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); - vertices.push( vertex[0], vertex[1], vertex[2] ); - - vec3.set(normal, vertex[0], vertex[1], vertex[2] ); - vec3.normalize(normal, normal); - normals.push( normal[0], normal[1], normal[2] ); - - uvs.push( u, 1 - v ); - verticesRow.push( index ++ ); - colors.push( 1,1,1 ) - - } - - grid.push( verticesRow ); - - } - - - // indices - for ( iy = 0; iy < heightSegments; iy ++ ) { - for ( ix = 0; ix < widthSegments; ix ++ ) { - var a = grid[ iy ][ ix + 1 ]; - var b = grid[ iy ][ ix ]; - var c = grid[ iy + 1 ][ ix ]; - var d = grid[ iy + 1 ][ ix + 1 ]; - if ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d ); - if ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d ); - } - } - - // build geometry - this.length = vertices.length/3; - - this.addAttribute( 'index', new Uint16Array( indices ), 1 ); - this.addAttribute( 'position', new Float32Array( vertices ), 3 ); - this.addAttribute( 'normal', new Float32Array( normals ), 3 ); - this.addAttribute( 'color', new Float32Array( colors ), 3 ); - this.addAttribute( 'uv', new Float32Array( uvs ), 2, 'Sphere' ); - - } - -} - -export default SphereGeometryBuffer; \ No newline at end of file diff --git a/src/globe/beam/Texture.js b/src/globe/beam/Texture.js deleted file mode 100755 index 46ac4bc..0000000 --- a/src/globe/beam/Texture.js +++ /dev/null @@ -1,245 +0,0 @@ -import uuid from './utils/uuid'; -import getFilter from './utils/getFilter'; -import isPowerOf2 from './utils/isPowerOf2'; - -var TEXTURE_CACHE = {}; - -class Texture { - - constructor(gl, options) { - - if (!gl) { - return; - } - - this.options = Object.assign({}, { - format: gl.RGBA, - type: gl.UNSIGNED_BYTE, - width: 1, - height: 1, - linear: true, - mipmap: false, - miplinear: false, - wrapS: gl.CLAMP_TO_EDGE, - wrapT: gl.CLAMP_TO_EDGE, - anisotropy: 0, - flipY: true, - repeat: [1,1] - }, options); - - - this._uid = uuid();//debug purpose - this.gl = gl; - this.width = this.options.width; - this.height = this.options.height; - this.format = this.options.format; - this.type = this.options.type; - this.flipY = this.options.flipY; - - this.repeat = this.options.repeat; - - this._anisotropy = this.options.anisotropy; - - if (this.type == gl.FLOAT) { - var floatTextures = gl.getExtension('OES_texture_float'); - var floatTextureLinearFiltering = gl.getExtension('OES_texture_float_linear'); - if (!floatTextures) { - console.warn('trying to create a FrameBuffer of with gl.FLOAT type but there\s no floating point texture support. trying HALF_FLOAT'); - this.type = "HALF_FLOAT" - } - } - - if (this.type == "HALF_FLOAT") { - var halfFloatTexturesExt = gl.getExtension('OES_texture_half_float'); - var halfFloatTextureLinearFiltering = gl.getExtension('OES_texture_half_float_linear'); - if (!halfFloatTexturesExt) { - console.warn('trying to create a texture of with gl.HALF_FLOAT type but there\s no half floating point texture support; falling bck to UNSIGNED_BYTE type'); - this.type = gl.UNSIGNED_BYTE; - } - else { - this.type = halfFloatTexturesExt.HALF_FLOAT_OES; - this.isHalfFloat = true; - } - } - - this._texture = this.gl.createTexture(); - gl.bindTexture( gl.TEXTURE_2D, this._texture ); - - //1x1 pixel default texture - gl.texImage2D(gl.TEXTURE_2D, 0, this.options.format, this.width, this.height, 0, this.options.format, gl.UNSIGNED_BYTE, new Uint8Array([0, 0, 0, 255])); - - /** - * add getter and setter to update texture_wrap when this.wrap changes - */ - Object.defineProperty(this, 'wrapS', { - set: (value) => { - this.gl.texParameteri( this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, value ); - } - }); - Object.defineProperty(this, 'wrapT', { - set: (value) => { - this.gl.texParameteri( this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, value ); - } - }); - //nPOT texture can't repeat - this.wrapS = this.options.wrapS; - this.wrapT = this.options.wrapT; - - - //nPOT texture cannot mipmap - this.setFilter( this.options.linear, this.options.mipmap, this.options.mipmapLinear ); - - //unbind texture - gl.bindTexture( gl.TEXTURE_2D, null); - - - - Object.defineProperty(this, 'anisotropy', { - set: (value) => { - this._anisotropy = value - this.updateAnisotropyFilter() - }, - get: () => { - return this._anisotropy - } - }); - - } - - updateAnisotropyFilter() { - let gl = this.gl; - - if (!gl) { - return; - } - var ext = ( - gl.getExtension('EXT_texture_filter_anisotropic') || - gl.getExtension('MOZ_EXT_texture_filter_anisotropic') || - gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') - ); - if (ext) { - if (this._anisotropy > 0) { - gl.bindTexture( gl.TEXTURE_2D, this._texture ); - var max = gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT); - gl.texParameterf(gl.TEXTURE_2D, ext.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(this._anisotropy, max) ); - } - } - } - - bindImage(img) { - - if (!this.gl) { - return; - } - - this.width = img.width; - this.height = img.height; - var isPOT = isPowerOf2(img.width) && isPowerOf2(img.height); - - this.gl.bindTexture( this.gl.TEXTURE_2D, this._texture); - - this.gl.pixelStorei( this.gl.UNPACK_FLIP_Y_WEBGL, this.flipY); - - // console.log('BIND2D', img) - this.gl.texImage2D( this.gl.TEXTURE_2D, 0, this.format, this.format, this.type, img); - - if (isPOT) { - //nPOT texture cannot mipmap - this.setFilter( this.options.linear, this.options.mipmap, this.options.mipmapLinear ); - this.gl.generateMipmap(this.gl.TEXTURE_2D); - } - else { - this.setFilter(this.options.linear, false, false); - this.wrapS = this.gl.CLAMP_TO_EDGE; - this.wrapT = this.gl.CLAMP_TO_EDGE; - } - - this.gl.bindTexture( this.gl.TEXTURE_2D, null); - - } - - bind(unit) { - if (!this.gl) { - return; - } - //unit is sent by the Program and defined by the unfirom order in the shaders; - if (unit !== void 0) { - this.gl.activeTexture( this.gl.TEXTURE0 + (0|unit) ); - } - this.gl.bindTexture(this.gl.TEXTURE_2D, this._texture); - } - - delete() { - if (this.gl) { - this.gl.deleteTexture( this._texture ); - } - this._texture = null; - this.gl = null; - } - - /** - * Change the filtering parameters - * @param {boolean} [smooth=false] if true, use LINEAR filtering - * @param {boolean} [mipmap=false] if true, enable mipmaping - * @param {boolean} [miplinear=false] if true, use linear Mipmapping - */ - setFilter(smooth, mipmap, miplinear) { - - - if (!this.gl) { - return; - } - var gl = this.gl; - var filter = getFilter( !!smooth, !!mipmap, !!miplinear); - gl.bindTexture( gl.TEXTURE_2D, this._texture ); - gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, getFilter( !!smooth, false, false ) ); - gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter ); - this.updateAnisotropyFilter() - } - -} - - -Texture.fromUrl = function(gl, url, options) { - - var texture = new Texture(gl, options); - - // if (TEXTURE_CACHE[url] !== void 0) { - // this.fromImage( gl, TEXTURE_CACHE[url] ); - // return; - // } - - var img = new Image(); - - img.onload = ()=>{ - img.onload = null; - img.onerror = null; - TEXTURE_CACHE[url] = img; - options && options.loaded && options.loaded() - texture.bindImage(img); - }; - - img.onerror = ()=>{ - img.onload = null; - img.onerror = null; - console.warn('Invalid url provided to Texture.fromUrl() : ' + url); - }; - - img.src = url; - - return texture; -}; - -Texture.fromImage = function(gl, img, options) { - if (!img.width || !img.height) { - console.warn('Cannot create texture with provided image\n Please make sure the image is loaded before calling Texture.fromImage() or use Texture.fromUrl()', img); - return; - } - var texture = new Texture(gl, options); - texture.bindImage(img); - return texture; -}; - - - -export default Texture; diff --git a/src/globe/beam/glMatrix/common.js b/src/globe/beam/glMatrix/common.js deleted file mode 100755 index a67bac7..0000000 --- a/src/globe/beam/glMatrix/common.js +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. */ - -/** - * Common utilities - * @module glMatrix - */ - -// Configuration Constants -export const EPSILON = 0.000001; -export let ARRAY_TYPE = (typeof Float32Array !== 'undefined') ? Float32Array : Array; -export const RANDOM = Math.random; - -/** - * Sets the type of array used when creating new vectors and matrices - * - * @param {Type} type Array type, such as Float32Array or Array - */ -export function setMatrixArrayType(type) { - ARRAY_TYPE = type; -} - -const degree = Math.PI / 180; - -/** - * Convert Degree To Radian - * - * @param {Number} a Angle in Degrees - */ -export function toRadian(a) { - return a * degree; -} - -/** - * Tests whether or not the arguments have approximately the same value, within an absolute - * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less - * than or equal to 1.0, and a relative tolerance is used for larger values) - * - * @param {Number} a The first number to test. - * @param {Number} b The second number to test. - * @returns {Boolean} True if the numbers are approximately equal, false otherwise. - */ -export function equals(a, b) { - return Math.abs(a - b) <= EPSILON*Math.max(1.0, Math.abs(a), Math.abs(b)); -} diff --git a/src/globe/beam/glMatrix/mat2.js b/src/globe/beam/glMatrix/mat2.js deleted file mode 100755 index 2c8d5b7..0000000 --- a/src/globe/beam/glMatrix/mat2.js +++ /dev/null @@ -1,433 +0,0 @@ -/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. */ - -import * as glMatrix from "./common" - -/** - * 2x2 Matrix - * @module mat2 - */ - -/** - * Creates a new identity mat2 - * - * @returns {mat2} a new 2x2 matrix - */ -export function create() { - let out = new glMatrix.ARRAY_TYPE(4); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -} - -/** - * Creates a new mat2 initialized with values from an existing matrix - * - * @param {mat2} a matrix to clone - * @returns {mat2} a new 2x2 matrix - */ -export function clone(a) { - let out = new glMatrix.ARRAY_TYPE(4); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -} - -/** - * Copy the values from one mat2 to another - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -export function copy(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -} - -/** - * Set a mat2 to the identity matrix - * - * @param {mat2} out the receiving matrix - * @returns {mat2} out - */ -export function identity(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -} - -/** - * Create a new mat2 with the given values - * - * @param {Number} m00 Component in column 0, row 0 position (index 0) - * @param {Number} m01 Component in column 0, row 1 position (index 1) - * @param {Number} m10 Component in column 1, row 0 position (index 2) - * @param {Number} m11 Component in column 1, row 1 position (index 3) - * @returns {mat2} out A new 2x2 matrix - */ -export function fromValues(m00, m01, m10, m11) { - let out = new glMatrix.ARRAY_TYPE(4); - out[0] = m00; - out[1] = m01; - out[2] = m10; - out[3] = m11; - return out; -} - -/** - * Set the components of a mat2 to the given values - * - * @param {mat2} out the receiving matrix - * @param {Number} m00 Component in column 0, row 0 position (index 0) - * @param {Number} m01 Component in column 0, row 1 position (index 1) - * @param {Number} m10 Component in column 1, row 0 position (index 2) - * @param {Number} m11 Component in column 1, row 1 position (index 3) - * @returns {mat2} out - */ -export function set(out, m00, m01, m10, m11) { - out[0] = m00; - out[1] = m01; - out[2] = m10; - out[3] = m11; - return out; -} - -/** - * Transpose the values of a mat2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -export function transpose(out, a) { - // If we are transposing ourselves we can skip a few steps but have to cache - // some values - if (out === a) { - let a1 = a[1]; - out[1] = a[2]; - out[2] = a1; - } else { - out[0] = a[0]; - out[1] = a[2]; - out[2] = a[1]; - out[3] = a[3]; - } - - return out; -} - -/** - * Inverts a mat2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -export function invert(out, a) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; - - // Calculate the determinant - let det = a0 * a3 - a2 * a1; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = a3 * det; - out[1] = -a1 * det; - out[2] = -a2 * det; - out[3] = a0 * det; - - return out; -} - -/** - * Calculates the adjugate of a mat2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -export function adjoint(out, a) { - // Caching this value is nessecary if out == a - let a0 = a[0]; - out[0] = a[3]; - out[1] = -a[1]; - out[2] = -a[2]; - out[3] = a0; - - return out; -} - -/** - * Calculates the determinant of a mat2 - * - * @param {mat2} a the source matrix - * @returns {Number} determinant of a - */ -export function determinant(a) { - return a[0] * a[3] - a[2] * a[1]; -} - -/** - * Multiplies two mat2's - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the first operand - * @param {mat2} b the second operand - * @returns {mat2} out - */ -export function multiply(out, a, b) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; - let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - out[0] = a0 * b0 + a2 * b1; - out[1] = a1 * b0 + a3 * b1; - out[2] = a0 * b2 + a2 * b3; - out[3] = a1 * b2 + a3 * b3; - return out; -} - -/** - * Rotates a mat2 by the given angle - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat2} out - */ -export function rotate(out, a, rad) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; - let s = Math.sin(rad); - let c = Math.cos(rad); - out[0] = a0 * c + a2 * s; - out[1] = a1 * c + a3 * s; - out[2] = a0 * -s + a2 * c; - out[3] = a1 * -s + a3 * c; - return out; -} - -/** - * Scales the mat2 by the dimensions in the given vec2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the matrix to rotate - * @param {vec2} v the vec2 to scale the matrix by - * @returns {mat2} out - **/ -export function scale(out, a, v) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; - let v0 = v[0], v1 = v[1]; - out[0] = a0 * v0; - out[1] = a1 * v0; - out[2] = a2 * v1; - out[3] = a3 * v1; - return out; -} - -/** - * Creates a matrix from a given angle - * This is equivalent to (but much faster than): - * - * mat2.identity(dest); - * mat2.rotate(dest, dest, rad); - * - * @param {mat2} out mat2 receiving operation result - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat2} out - */ -export function fromRotation(out, rad) { - let s = Math.sin(rad); - let c = Math.cos(rad); - out[0] = c; - out[1] = s; - out[2] = -s; - out[3] = c; - return out; -} - -/** - * Creates a matrix from a vector scaling - * This is equivalent to (but much faster than): - * - * mat2.identity(dest); - * mat2.scale(dest, dest, vec); - * - * @param {mat2} out mat2 receiving operation result - * @param {vec2} v Scaling vector - * @returns {mat2} out - */ -export function fromScaling(out, v) { - out[0] = v[0]; - out[1] = 0; - out[2] = 0; - out[3] = v[1]; - return out; -} - -/** - * Returns a string representation of a mat2 - * - * @param {mat2} a matrix to represent as a string - * @returns {String} string representation of the matrix - */ -export function str(a) { - return 'mat2(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; -} - -/** - * Returns Frobenius norm of a mat2 - * - * @param {mat2} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -export function frob(a) { - return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2))) -} - -/** - * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix - * @param {mat2} L the lower triangular matrix - * @param {mat2} D the diagonal matrix - * @param {mat2} U the upper triangular matrix - * @param {mat2} a the input matrix to factorize - */ - -export function LDU(L, D, U, a) { - L[2] = a[2]/a[0]; - U[0] = a[0]; - U[1] = a[1]; - U[3] = a[3] - L[2] * U[1]; - return [L, D, U]; -} - -/** - * Adds two mat2's - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the first operand - * @param {mat2} b the second operand - * @returns {mat2} out - */ -export function add(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - out[2] = a[2] + b[2]; - out[3] = a[3] + b[3]; - return out; -} - -/** - * Subtracts matrix b from matrix a - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the first operand - * @param {mat2} b the second operand - * @returns {mat2} out - */ -export function subtract(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - out[2] = a[2] - b[2]; - out[3] = a[3] - b[3]; - return out; -} - -/** - * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===) - * - * @param {mat2} a The first matrix. - * @param {mat2} b The second matrix. - * @returns {Boolean} True if the matrices are equal, false otherwise. - */ -export function exactEquals(a, b) { - return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]; -} - -/** - * Returns whether or not the matrices have approximately the same elements in the same position. - * - * @param {mat2} a The first matrix. - * @param {mat2} b The second matrix. - * @returns {Boolean} True if the matrices are equal, false otherwise. - */ -export function equals(a, b) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; - let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) && - Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) && - Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) && - Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3))); -} - -/** - * Multiply each element of the matrix by a scalar. - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the matrix to scale - * @param {Number} b amount to scale the matrix's elements by - * @returns {mat2} out - */ -export function multiplyScalar(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - out[2] = a[2] * b; - out[3] = a[3] * b; - return out; -} - -/** - * Adds two mat2's after multiplying each element of the second operand by a scalar value. - * - * @param {mat2} out the receiving vector - * @param {mat2} a the first operand - * @param {mat2} b the second operand - * @param {Number} scale the amount to scale b's elements by before adding - * @returns {mat2} out - */ -export function multiplyScalarAndAdd(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - out[2] = a[2] + (b[2] * scale); - out[3] = a[3] + (b[3] * scale); - return out; -} - -/** - * Alias for {@link mat2.multiply} - * @function - */ -export const mul = multiply; - -/** - * Alias for {@link mat2.subtract} - * @function - */ -export const sub = subtract; diff --git a/src/globe/beam/glMatrix/mat2d.js b/src/globe/beam/glMatrix/mat2d.js deleted file mode 100755 index 577783b..0000000 --- a/src/globe/beam/glMatrix/mat2d.js +++ /dev/null @@ -1,466 +0,0 @@ -/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. */ - -import * as glMatrix from "./common"; - -/** - * 2x3 Matrix - * @module mat2d - * - * @description - * A mat2d contains six elements defined as: - *
- * [a, c, tx,
- *  b, d, ty]
- * 
- * This is a short form for the 3x3 matrix: - *
- * [a, c, tx,
- *  b, d, ty,
- *  0, 0, 1]
- * 
- * The last row is ignored so the array is shorter and operations are faster. - */ - -/** - * Creates a new identity mat2d - * - * @returns {mat2d} a new 2x3 matrix - */ -export function create() { - let out = new glMatrix.ARRAY_TYPE(6); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - out[4] = 0; - out[5] = 0; - return out; -} - -/** - * Creates a new mat2d initialized with values from an existing matrix - * - * @param {mat2d} a matrix to clone - * @returns {mat2d} a new 2x3 matrix - */ -export function clone(a) { - let out = new glMatrix.ARRAY_TYPE(6); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - return out; -} - -/** - * Copy the values from one mat2d to another - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the source matrix - * @returns {mat2d} out - */ -export function copy(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - return out; -} - -/** - * Set a mat2d to the identity matrix - * - * @param {mat2d} out the receiving matrix - * @returns {mat2d} out - */ -export function identity(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - out[4] = 0; - out[5] = 0; - return out; -} - -/** - * Create a new mat2d with the given values - * - * @param {Number} a Component A (index 0) - * @param {Number} b Component B (index 1) - * @param {Number} c Component C (index 2) - * @param {Number} d Component D (index 3) - * @param {Number} tx Component TX (index 4) - * @param {Number} ty Component TY (index 5) - * @returns {mat2d} A new mat2d - */ -export function fromValues(a, b, c, d, tx, ty) { - let out = new glMatrix.ARRAY_TYPE(6); - out[0] = a; - out[1] = b; - out[2] = c; - out[3] = d; - out[4] = tx; - out[5] = ty; - return out; -} - -/** - * Set the components of a mat2d to the given values - * - * @param {mat2d} out the receiving matrix - * @param {Number} a Component A (index 0) - * @param {Number} b Component B (index 1) - * @param {Number} c Component C (index 2) - * @param {Number} d Component D (index 3) - * @param {Number} tx Component TX (index 4) - * @param {Number} ty Component TY (index 5) - * @returns {mat2d} out - */ -export function set(out, a, b, c, d, tx, ty) { - out[0] = a; - out[1] = b; - out[2] = c; - out[3] = d; - out[4] = tx; - out[5] = ty; - return out; -} - -/** - * Inverts a mat2d - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the source matrix - * @returns {mat2d} out - */ -export function invert(out, a) { - let aa = a[0], ab = a[1], ac = a[2], ad = a[3]; - let atx = a[4], aty = a[5]; - - let det = aa * ad - ab * ac; - if(!det){ - return null; - } - det = 1.0 / det; - - out[0] = ad * det; - out[1] = -ab * det; - out[2] = -ac * det; - out[3] = aa * det; - out[4] = (ac * aty - ad * atx) * det; - out[5] = (ab * atx - aa * aty) * det; - return out; -} - -/** - * Calculates the determinant of a mat2d - * - * @param {mat2d} a the source matrix - * @returns {Number} determinant of a - */ -export function determinant(a) { - return a[0] * a[3] - a[1] * a[2]; -} - -/** - * Multiplies two mat2d's - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the first operand - * @param {mat2d} b the second operand - * @returns {mat2d} out - */ -export function multiply(out, a, b) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5]; - let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5]; - out[0] = a0 * b0 + a2 * b1; - out[1] = a1 * b0 + a3 * b1; - out[2] = a0 * b2 + a2 * b3; - out[3] = a1 * b2 + a3 * b3; - out[4] = a0 * b4 + a2 * b5 + a4; - out[5] = a1 * b4 + a3 * b5 + a5; - return out; -} - -/** - * Rotates a mat2d by the given angle - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat2d} out - */ -export function rotate(out, a, rad) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5]; - let s = Math.sin(rad); - let c = Math.cos(rad); - out[0] = a0 * c + a2 * s; - out[1] = a1 * c + a3 * s; - out[2] = a0 * -s + a2 * c; - out[3] = a1 * -s + a3 * c; - out[4] = a4; - out[5] = a5; - return out; -} - -/** - * Scales the mat2d by the dimensions in the given vec2 - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the matrix to translate - * @param {vec2} v the vec2 to scale the matrix by - * @returns {mat2d} out - **/ -export function scale(out, a, v) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5]; - let v0 = v[0], v1 = v[1]; - out[0] = a0 * v0; - out[1] = a1 * v0; - out[2] = a2 * v1; - out[3] = a3 * v1; - out[4] = a4; - out[5] = a5; - return out; -} - -/** - * Translates the mat2d by the dimensions in the given vec2 - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the matrix to translate - * @param {vec2} v the vec2 to translate the matrix by - * @returns {mat2d} out - **/ -export function translate(out, a, v) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5]; - let v0 = v[0], v1 = v[1]; - out[0] = a0; - out[1] = a1; - out[2] = a2; - out[3] = a3; - out[4] = a0 * v0 + a2 * v1 + a4; - out[5] = a1 * v0 + a3 * v1 + a5; - return out; -} - -/** - * Creates a matrix from a given angle - * This is equivalent to (but much faster than): - * - * mat2d.identity(dest); - * mat2d.rotate(dest, dest, rad); - * - * @param {mat2d} out mat2d receiving operation result - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat2d} out - */ -export function fromRotation(out, rad) { - let s = Math.sin(rad), c = Math.cos(rad); - out[0] = c; - out[1] = s; - out[2] = -s; - out[3] = c; - out[4] = 0; - out[5] = 0; - return out; -} - -/** - * Creates a matrix from a vector scaling - * This is equivalent to (but much faster than): - * - * mat2d.identity(dest); - * mat2d.scale(dest, dest, vec); - * - * @param {mat2d} out mat2d receiving operation result - * @param {vec2} v Scaling vector - * @returns {mat2d} out - */ -export function fromScaling(out, v) { - out[0] = v[0]; - out[1] = 0; - out[2] = 0; - out[3] = v[1]; - out[4] = 0; - out[5] = 0; - return out; -} - -/** - * Creates a matrix from a vector translation - * This is equivalent to (but much faster than): - * - * mat2d.identity(dest); - * mat2d.translate(dest, dest, vec); - * - * @param {mat2d} out mat2d receiving operation result - * @param {vec2} v Translation vector - * @returns {mat2d} out - */ -export function fromTranslation(out, v) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - out[4] = v[0]; - out[5] = v[1]; - return out; -} - -/** - * Returns a string representation of a mat2d - * - * @param {mat2d} a matrix to represent as a string - * @returns {String} string representation of the matrix - */ -export function str(a) { - return 'mat2d(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + - a[3] + ', ' + a[4] + ', ' + a[5] + ')'; -} - -/** - * Returns Frobenius norm of a mat2d - * - * @param {mat2d} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -export function frob(a) { - return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + 1)) -} - -/** - * Adds two mat2d's - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the first operand - * @param {mat2d} b the second operand - * @returns {mat2d} out - */ -export function add(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - out[2] = a[2] + b[2]; - out[3] = a[3] + b[3]; - out[4] = a[4] + b[4]; - out[5] = a[5] + b[5]; - return out; -} - -/** - * Subtracts matrix b from matrix a - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the first operand - * @param {mat2d} b the second operand - * @returns {mat2d} out - */ -export function subtract(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - out[2] = a[2] - b[2]; - out[3] = a[3] - b[3]; - out[4] = a[4] - b[4]; - out[5] = a[5] - b[5]; - return out; -} - -/** - * Multiply each element of the matrix by a scalar. - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the matrix to scale - * @param {Number} b amount to scale the matrix's elements by - * @returns {mat2d} out - */ -export function multiplyScalar(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - out[2] = a[2] * b; - out[3] = a[3] * b; - out[4] = a[4] * b; - out[5] = a[5] * b; - return out; -} - -/** - * Adds two mat2d's after multiplying each element of the second operand by a scalar value. - * - * @param {mat2d} out the receiving vector - * @param {mat2d} a the first operand - * @param {mat2d} b the second operand - * @param {Number} scale the amount to scale b's elements by before adding - * @returns {mat2d} out - */ -export function multiplyScalarAndAdd(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - out[2] = a[2] + (b[2] * scale); - out[3] = a[3] + (b[3] * scale); - out[4] = a[4] + (b[4] * scale); - out[5] = a[5] + (b[5] * scale); - return out; -} - -/** - * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===) - * - * @param {mat2d} a The first matrix. - * @param {mat2d} b The second matrix. - * @returns {Boolean} True if the matrices are equal, false otherwise. - */ -export function exactEquals(a, b) { - return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5]; -} - -/** - * Returns whether or not the matrices have approximately the same elements in the same position. - * - * @param {mat2d} a The first matrix. - * @param {mat2d} b The second matrix. - * @returns {Boolean} True if the matrices are equal, false otherwise. - */ -export function equals(a, b) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5]; - let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5]; - return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) && - Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) && - Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) && - Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)) && - Math.abs(a4 - b4) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a4), Math.abs(b4)) && - Math.abs(a5 - b5) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a5), Math.abs(b5))); -} - -/** - * Alias for {@link mat2d.multiply} - * @function - */ -export const mul = multiply; - -/** - * Alias for {@link mat2d.subtract} - * @function - */ -export const sub = subtract; diff --git a/src/globe/beam/glMatrix/mat3.js b/src/globe/beam/glMatrix/mat3.js deleted file mode 100755 index ecccb02..0000000 --- a/src/globe/beam/glMatrix/mat3.js +++ /dev/null @@ -1,765 +0,0 @@ -/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. */ - -import * as glMatrix from "./common"; - -/** - * 3x3 Matrix - * @module mat3 - */ - -/** - * Creates a new identity mat3 - * - * @returns {mat3} a new 3x3 matrix - */ -export function create() { - let out = new glMatrix.ARRAY_TYPE(9); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 1; - out[5] = 0; - out[6] = 0; - out[7] = 0; - out[8] = 1; - return out; -} - -/** - * Copies the upper-left 3x3 values into the given mat3. - * - * @param {mat3} out the receiving 3x3 matrix - * @param {mat4} a the source 4x4 matrix - * @returns {mat3} out - */ -export function fromMat4(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[4]; - out[4] = a[5]; - out[5] = a[6]; - out[6] = a[8]; - out[7] = a[9]; - out[8] = a[10]; - return out; -} - -/** - * Creates a new mat3 initialized with values from an existing matrix - * - * @param {mat3} a matrix to clone - * @returns {mat3} a new 3x3 matrix - */ -export function clone(a) { - let out = new glMatrix.ARRAY_TYPE(9); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - return out; -} - -/** - * Copy the values from one mat3 to another - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -export function copy(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - return out; -} - -/** - * Create a new mat3 with the given values - * - * @param {Number} m00 Component in column 0, row 0 position (index 0) - * @param {Number} m01 Component in column 0, row 1 position (index 1) - * @param {Number} m02 Component in column 0, row 2 position (index 2) - * @param {Number} m10 Component in column 1, row 0 position (index 3) - * @param {Number} m11 Component in column 1, row 1 position (index 4) - * @param {Number} m12 Component in column 1, row 2 position (index 5) - * @param {Number} m20 Component in column 2, row 0 position (index 6) - * @param {Number} m21 Component in column 2, row 1 position (index 7) - * @param {Number} m22 Component in column 2, row 2 position (index 8) - * @returns {mat3} A new mat3 - */ -export function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) { - let out = new glMatrix.ARRAY_TYPE(9); - out[0] = m00; - out[1] = m01; - out[2] = m02; - out[3] = m10; - out[4] = m11; - out[5] = m12; - out[6] = m20; - out[7] = m21; - out[8] = m22; - return out; -} - -/** - * Set the components of a mat3 to the given values - * - * @param {mat3} out the receiving matrix - * @param {Number} m00 Component in column 0, row 0 position (index 0) - * @param {Number} m01 Component in column 0, row 1 position (index 1) - * @param {Number} m02 Component in column 0, row 2 position (index 2) - * @param {Number} m10 Component in column 1, row 0 position (index 3) - * @param {Number} m11 Component in column 1, row 1 position (index 4) - * @param {Number} m12 Component in column 1, row 2 position (index 5) - * @param {Number} m20 Component in column 2, row 0 position (index 6) - * @param {Number} m21 Component in column 2, row 1 position (index 7) - * @param {Number} m22 Component in column 2, row 2 position (index 8) - * @returns {mat3} out - */ -export function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) { - out[0] = m00; - out[1] = m01; - out[2] = m02; - out[3] = m10; - out[4] = m11; - out[5] = m12; - out[6] = m20; - out[7] = m21; - out[8] = m22; - return out; -} - -/** - * Set a mat3 to the identity matrix - * - * @param {mat3} out the receiving matrix - * @returns {mat3} out - */ -export function identity(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 1; - out[5] = 0; - out[6] = 0; - out[7] = 0; - out[8] = 1; - return out; -} - -/** - * Transpose the values of a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -export function transpose(out, a) { - // If we are transposing ourselves we can skip a few steps but have to cache some values - if (out === a) { - let a01 = a[1], a02 = a[2], a12 = a[5]; - out[1] = a[3]; - out[2] = a[6]; - out[3] = a01; - out[5] = a[7]; - out[6] = a02; - out[7] = a12; - } else { - out[0] = a[0]; - out[1] = a[3]; - out[2] = a[6]; - out[3] = a[1]; - out[4] = a[4]; - out[5] = a[7]; - out[6] = a[2]; - out[7] = a[5]; - out[8] = a[8]; - } - - return out; -} - -/** - * Inverts a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -export function invert(out, a) { - let a00 = a[0], a01 = a[1], a02 = a[2]; - let a10 = a[3], a11 = a[4], a12 = a[5]; - let a20 = a[6], a21 = a[7], a22 = a[8]; - - let b01 = a22 * a11 - a12 * a21; - let b11 = -a22 * a10 + a12 * a20; - let b21 = a21 * a10 - a11 * a20; - - // Calculate the determinant - let det = a00 * b01 + a01 * b11 + a02 * b21; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = b01 * det; - out[1] = (-a22 * a01 + a02 * a21) * det; - out[2] = (a12 * a01 - a02 * a11) * det; - out[3] = b11 * det; - out[4] = (a22 * a00 - a02 * a20) * det; - out[5] = (-a12 * a00 + a02 * a10) * det; - out[6] = b21 * det; - out[7] = (-a21 * a00 + a01 * a20) * det; - out[8] = (a11 * a00 - a01 * a10) * det; - return out; -} - -/** - * Calculates the adjugate of a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -export function adjoint(out, a) { - let a00 = a[0], a01 = a[1], a02 = a[2]; - let a10 = a[3], a11 = a[4], a12 = a[5]; - let a20 = a[6], a21 = a[7], a22 = a[8]; - - out[0] = (a11 * a22 - a12 * a21); - out[1] = (a02 * a21 - a01 * a22); - out[2] = (a01 * a12 - a02 * a11); - out[3] = (a12 * a20 - a10 * a22); - out[4] = (a00 * a22 - a02 * a20); - out[5] = (a02 * a10 - a00 * a12); - out[6] = (a10 * a21 - a11 * a20); - out[7] = (a01 * a20 - a00 * a21); - out[8] = (a00 * a11 - a01 * a10); - return out; -} - -/** - * Calculates the determinant of a mat3 - * - * @param {mat3} a the source matrix - * @returns {Number} determinant of a - */ -export function determinant(a) { - let a00 = a[0], a01 = a[1], a02 = a[2]; - let a10 = a[3], a11 = a[4], a12 = a[5]; - let a20 = a[6], a21 = a[7], a22 = a[8]; - - return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20); -} - -/** - * Multiplies two mat3's - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the first operand - * @param {mat3} b the second operand - * @returns {mat3} out - */ -export function multiply(out, a, b) { - let a00 = a[0], a01 = a[1], a02 = a[2]; - let a10 = a[3], a11 = a[4], a12 = a[5]; - let a20 = a[6], a21 = a[7], a22 = a[8]; - - let b00 = b[0], b01 = b[1], b02 = b[2]; - let b10 = b[3], b11 = b[4], b12 = b[5]; - let b20 = b[6], b21 = b[7], b22 = b[8]; - - out[0] = b00 * a00 + b01 * a10 + b02 * a20; - out[1] = b00 * a01 + b01 * a11 + b02 * a21; - out[2] = b00 * a02 + b01 * a12 + b02 * a22; - - out[3] = b10 * a00 + b11 * a10 + b12 * a20; - out[4] = b10 * a01 + b11 * a11 + b12 * a21; - out[5] = b10 * a02 + b11 * a12 + b12 * a22; - - out[6] = b20 * a00 + b21 * a10 + b22 * a20; - out[7] = b20 * a01 + b21 * a11 + b22 * a21; - out[8] = b20 * a02 + b21 * a12 + b22 * a22; - return out; -} - -/** - * Translate a mat3 by the given vector - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the matrix to translate - * @param {vec2} v vector to translate by - * @returns {mat3} out - */ -export function translate(out, a, v) { - let a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8], - x = v[0], y = v[1]; - - out[0] = a00; - out[1] = a01; - out[2] = a02; - - out[3] = a10; - out[4] = a11; - out[5] = a12; - - out[6] = x * a00 + y * a10 + a20; - out[7] = x * a01 + y * a11 + a21; - out[8] = x * a02 + y * a12 + a22; - return out; -} - -/** - * Rotates a mat3 by the given angle - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat3} out - */ -export function rotate(out, a, rad) { - let a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8], - - s = Math.sin(rad), - c = Math.cos(rad); - - out[0] = c * a00 + s * a10; - out[1] = c * a01 + s * a11; - out[2] = c * a02 + s * a12; - - out[3] = c * a10 - s * a00; - out[4] = c * a11 - s * a01; - out[5] = c * a12 - s * a02; - - out[6] = a20; - out[7] = a21; - out[8] = a22; - return out; -}; - -/** - * Scales the mat3 by the dimensions in the given vec2 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the matrix to rotate - * @param {vec2} v the vec2 to scale the matrix by - * @returns {mat3} out - **/ -export function scale(out, a, v) { - let x = v[0], y = v[1]; - - out[0] = x * a[0]; - out[1] = x * a[1]; - out[2] = x * a[2]; - - out[3] = y * a[3]; - out[4] = y * a[4]; - out[5] = y * a[5]; - - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - return out; -} - -/** - * Creates a matrix from a vector translation - * This is equivalent to (but much faster than): - * - * mat3.identity(dest); - * mat3.translate(dest, dest, vec); - * - * @param {mat3} out mat3 receiving operation result - * @param {vec2} v Translation vector - * @returns {mat3} out - */ -export function fromTranslation(out, v) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 1; - out[5] = 0; - out[6] = v[0]; - out[7] = v[1]; - out[8] = 1; - return out; -} - -/** - * Creates a matrix from a given angle - * This is equivalent to (but much faster than): - * - * mat3.identity(dest); - * mat3.rotate(dest, dest, rad); - * - * @param {mat3} out mat3 receiving operation result - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat3} out - */ -export function fromRotation(out, rad) { - let s = Math.sin(rad), c = Math.cos(rad); - - out[0] = c; - out[1] = s; - out[2] = 0; - - out[3] = -s; - out[4] = c; - out[5] = 0; - - out[6] = 0; - out[7] = 0; - out[8] = 1; - return out; -} - -/** - * Creates a matrix from a vector scaling - * This is equivalent to (but much faster than): - * - * mat3.identity(dest); - * mat3.scale(dest, dest, vec); - * - * @param {mat3} out mat3 receiving operation result - * @param {vec2} v Scaling vector - * @returns {mat3} out - */ -export function fromScaling(out, v) { - out[0] = v[0]; - out[1] = 0; - out[2] = 0; - - out[3] = 0; - out[4] = v[1]; - out[5] = 0; - - out[6] = 0; - out[7] = 0; - out[8] = 1; - return out; -} - -/** - * Copies the values from a mat2d into a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat2d} a the matrix to copy - * @returns {mat3} out - **/ -export function fromMat2d(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = 0; - - out[3] = a[2]; - out[4] = a[3]; - out[5] = 0; - - out[6] = a[4]; - out[7] = a[5]; - out[8] = 1; - return out; -} - -/** -* Calculates a 3x3 matrix from the given quaternion -* -* @param {mat3} out mat3 receiving operation result -* @param {quat} q Quaternion to create matrix from -* -* @returns {mat3} out -*/ -export function fromQuat(out, q) { - let x = q[0], y = q[1], z = q[2], w = q[3]; - let x2 = x + x; - let y2 = y + y; - let z2 = z + z; - - let xx = x * x2; - let yx = y * x2; - let yy = y * y2; - let zx = z * x2; - let zy = z * y2; - let zz = z * z2; - let wx = w * x2; - let wy = w * y2; - let wz = w * z2; - - out[0] = 1 - yy - zz; - out[3] = yx - wz; - out[6] = zx + wy; - - out[1] = yx + wz; - out[4] = 1 - xx - zz; - out[7] = zy - wx; - - out[2] = zx - wy; - out[5] = zy + wx; - out[8] = 1 - xx - yy; - - return out; -} - -/** -* Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix -* -* @param {mat3} out mat3 receiving operation result -* @param {mat4} a Mat4 to derive the normal matrix from -* -* @returns {mat3} out -*/ -export function normalFromMat4(out, a) { - let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; - let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; - let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; - let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - - let b00 = a00 * a11 - a01 * a10; - let b01 = a00 * a12 - a02 * a10; - let b02 = a00 * a13 - a03 * a10; - let b03 = a01 * a12 - a02 * a11; - let b04 = a01 * a13 - a03 * a11; - let b05 = a02 * a13 - a03 * a12; - let b06 = a20 * a31 - a21 * a30; - let b07 = a20 * a32 - a22 * a30; - let b08 = a20 * a33 - a23 * a30; - let b09 = a21 * a32 - a22 * a31; - let b10 = a21 * a33 - a23 * a31; - let b11 = a22 * a33 - a23 * a32; - - // Calculate the determinant - let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; - out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det; - out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det; - - out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det; - out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det; - out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det; - - out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det; - out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det; - out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det; - - return out; -} - -/** - * Generates a 2D projection matrix with the given bounds - * - * @param {mat3} out mat3 frustum matrix will be written into - * @param {number} width Width of your gl context - * @param {number} height Height of gl context - * @returns {mat3} out - */ -export function projection(out, width, height) { - out[0] = 2 / width; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = -2 / height; - out[5] = 0; - out[6] = -1; - out[7] = 1; - out[8] = 1; - return out; -} - -/** - * Returns a string representation of a mat3 - * - * @param {mat3} a matrix to represent as a string - * @returns {String} string representation of the matrix - */ -export function str(a) { - return 'mat3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + - a[3] + ', ' + a[4] + ', ' + a[5] + ', ' + - a[6] + ', ' + a[7] + ', ' + a[8] + ')'; -} - -/** - * Returns Frobenius norm of a mat3 - * - * @param {mat3} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -export function frob(a) { - return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + Math.pow(a[6], 2) + Math.pow(a[7], 2) + Math.pow(a[8], 2))) -} - -/** - * Adds two mat3's - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the first operand - * @param {mat3} b the second operand - * @returns {mat3} out - */ -export function add(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - out[2] = a[2] + b[2]; - out[3] = a[3] + b[3]; - out[4] = a[4] + b[4]; - out[5] = a[5] + b[5]; - out[6] = a[6] + b[6]; - out[7] = a[7] + b[7]; - out[8] = a[8] + b[8]; - return out; -} - -/** - * Subtracts matrix b from matrix a - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the first operand - * @param {mat3} b the second operand - * @returns {mat3} out - */ -export function subtract(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - out[2] = a[2] - b[2]; - out[3] = a[3] - b[3]; - out[4] = a[4] - b[4]; - out[5] = a[5] - b[5]; - out[6] = a[6] - b[6]; - out[7] = a[7] - b[7]; - out[8] = a[8] - b[8]; - return out; -} - - - -/** - * Multiply each element of the matrix by a scalar. - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the matrix to scale - * @param {Number} b amount to scale the matrix's elements by - * @returns {mat3} out - */ -export function multiplyScalar(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - out[2] = a[2] * b; - out[3] = a[3] * b; - out[4] = a[4] * b; - out[5] = a[5] * b; - out[6] = a[6] * b; - out[7] = a[7] * b; - out[8] = a[8] * b; - return out; -} - -/** - * Adds two mat3's after multiplying each element of the second operand by a scalar value. - * - * @param {mat3} out the receiving vector - * @param {mat3} a the first operand - * @param {mat3} b the second operand - * @param {Number} scale the amount to scale b's elements by before adding - * @returns {mat3} out - */ -export function multiplyScalarAndAdd(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - out[2] = a[2] + (b[2] * scale); - out[3] = a[3] + (b[3] * scale); - out[4] = a[4] + (b[4] * scale); - out[5] = a[5] + (b[5] * scale); - out[6] = a[6] + (b[6] * scale); - out[7] = a[7] + (b[7] * scale); - out[8] = a[8] + (b[8] * scale); - return out; -} - -/** - * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===) - * - * @param {mat3} a The first matrix. - * @param {mat3} b The second matrix. - * @returns {Boolean} True if the matrices are equal, false otherwise. - */ -export function exactEquals(a, b) { - return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && - a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && - a[6] === b[6] && a[7] === b[7] && a[8] === b[8]; -} - -/** - * Returns whether or not the matrices have approximately the same elements in the same position. - * - * @param {mat3} a The first matrix. - * @param {mat3} b The second matrix. - * @returns {Boolean} True if the matrices are equal, false otherwise. - */ -export function equals(a, b) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7], a8 = a[8]; - let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8]; - return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) && - Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) && - Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) && - Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)) && - Math.abs(a4 - b4) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a4), Math.abs(b4)) && - Math.abs(a5 - b5) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a5), Math.abs(b5)) && - Math.abs(a6 - b6) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a6), Math.abs(b6)) && - Math.abs(a7 - b7) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a7), Math.abs(b7)) && - Math.abs(a8 - b8) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a8), Math.abs(b8))); -} - -/** - * Alias for {@link mat3.multiply} - * @function - */ -export const mul = multiply; - -/** - * Alias for {@link mat3.subtract} - * @function - */ -export const sub = subtract; diff --git a/src/globe/beam/glMatrix/mat4.js b/src/globe/beam/glMatrix/mat4.js deleted file mode 100755 index ac79985..0000000 --- a/src/globe/beam/glMatrix/mat4.js +++ /dev/null @@ -1,1681 +0,0 @@ -/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. */ - -import * as glMatrix from "./common"; - -/** - * 4x4 Matrix - * @module mat4 - */ - -/** - * Creates a new identity mat4 - * - * @returns {mat4} a new 4x4 matrix - */ -export function create() { - let out = new glMatrix.ARRAY_TYPE(16); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = 1; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = 1; - out[11] = 0; - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - return out; -} - -/** - * Creates a new mat4 initialized with values from an existing matrix - * - * @param {mat4} a matrix to clone - * @returns {mat4} a new 4x4 matrix - */ -export function clone(a) { - let out = new glMatrix.ARRAY_TYPE(16); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - out[9] = a[9]; - out[10] = a[10]; - out[11] = a[11]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - return out; -} - -/** - * Copy the values from one mat4 to another - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -export function copy(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - out[9] = a[9]; - out[10] = a[10]; - out[11] = a[11]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - return out; -} - -/** - * Create a new mat4 with the given values - * - * @param {Number} m00 Component in column 0, row 0 position (index 0) - * @param {Number} m01 Component in column 0, row 1 position (index 1) - * @param {Number} m02 Component in column 0, row 2 position (index 2) - * @param {Number} m03 Component in column 0, row 3 position (index 3) - * @param {Number} m10 Component in column 1, row 0 position (index 4) - * @param {Number} m11 Component in column 1, row 1 position (index 5) - * @param {Number} m12 Component in column 1, row 2 position (index 6) - * @param {Number} m13 Component in column 1, row 3 position (index 7) - * @param {Number} m20 Component in column 2, row 0 position (index 8) - * @param {Number} m21 Component in column 2, row 1 position (index 9) - * @param {Number} m22 Component in column 2, row 2 position (index 10) - * @param {Number} m23 Component in column 2, row 3 position (index 11) - * @param {Number} m30 Component in column 3, row 0 position (index 12) - * @param {Number} m31 Component in column 3, row 1 position (index 13) - * @param {Number} m32 Component in column 3, row 2 position (index 14) - * @param {Number} m33 Component in column 3, row 3 position (index 15) - * @returns {mat4} A new mat4 - */ -export function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { - let out = new glMatrix.ARRAY_TYPE(16); - out[0] = m00; - out[1] = m01; - out[2] = m02; - out[3] = m03; - out[4] = m10; - out[5] = m11; - out[6] = m12; - out[7] = m13; - out[8] = m20; - out[9] = m21; - out[10] = m22; - out[11] = m23; - out[12] = m30; - out[13] = m31; - out[14] = m32; - out[15] = m33; - return out; -} - -/** - * Set the components of a mat4 to the given values - * - * @param {mat4} out the receiving matrix - * @param {Number} m00 Component in column 0, row 0 position (index 0) - * @param {Number} m01 Component in column 0, row 1 position (index 1) - * @param {Number} m02 Component in column 0, row 2 position (index 2) - * @param {Number} m03 Component in column 0, row 3 position (index 3) - * @param {Number} m10 Component in column 1, row 0 position (index 4) - * @param {Number} m11 Component in column 1, row 1 position (index 5) - * @param {Number} m12 Component in column 1, row 2 position (index 6) - * @param {Number} m13 Component in column 1, row 3 position (index 7) - * @param {Number} m20 Component in column 2, row 0 position (index 8) - * @param {Number} m21 Component in column 2, row 1 position (index 9) - * @param {Number} m22 Component in column 2, row 2 position (index 10) - * @param {Number} m23 Component in column 2, row 3 position (index 11) - * @param {Number} m30 Component in column 3, row 0 position (index 12) - * @param {Number} m31 Component in column 3, row 1 position (index 13) - * @param {Number} m32 Component in column 3, row 2 position (index 14) - * @param {Number} m33 Component in column 3, row 3 position (index 15) - * @returns {mat4} out - */ -export function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { - out[0] = m00; - out[1] = m01; - out[2] = m02; - out[3] = m03; - out[4] = m10; - out[5] = m11; - out[6] = m12; - out[7] = m13; - out[8] = m20; - out[9] = m21; - out[10] = m22; - out[11] = m23; - out[12] = m30; - out[13] = m31; - out[14] = m32; - out[15] = m33; - return out; -} - - -/** - * Set a mat4 to the identity matrix - * - * @param {mat4} out the receiving matrix - * @returns {mat4} out - */ -export function identity(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = 1; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = 1; - out[11] = 0; - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - return out; -} - -/** - * Transpose the values of a mat4 - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -export function transpose(out, a) { - // If we are transposing ourselves we can skip a few steps but have to cache some values - if (out === a) { - let a01 = a[1], a02 = a[2], a03 = a[3]; - let a12 = a[6], a13 = a[7]; - let a23 = a[11]; - - out[1] = a[4]; - out[2] = a[8]; - out[3] = a[12]; - out[4] = a01; - out[6] = a[9]; - out[7] = a[13]; - out[8] = a02; - out[9] = a12; - out[11] = a[14]; - out[12] = a03; - out[13] = a13; - out[14] = a23; - } else { - out[0] = a[0]; - out[1] = a[4]; - out[2] = a[8]; - out[3] = a[12]; - out[4] = a[1]; - out[5] = a[5]; - out[6] = a[9]; - out[7] = a[13]; - out[8] = a[2]; - out[9] = a[6]; - out[10] = a[10]; - out[11] = a[14]; - out[12] = a[3]; - out[13] = a[7]; - out[14] = a[11]; - out[15] = a[15]; - } - - return out; -} - -/** - * Inverts a mat4 - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -export function invert(out, a) { - let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; - let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; - let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; - let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - - let b00 = a00 * a11 - a01 * a10; - let b01 = a00 * a12 - a02 * a10; - let b02 = a00 * a13 - a03 * a10; - let b03 = a01 * a12 - a02 * a11; - let b04 = a01 * a13 - a03 * a11; - let b05 = a02 * a13 - a03 * a12; - let b06 = a20 * a31 - a21 * a30; - let b07 = a20 * a32 - a22 * a30; - let b08 = a20 * a33 - a23 * a30; - let b09 = a21 * a32 - a22 * a31; - let b10 = a21 * a33 - a23 * a31; - let b11 = a22 * a33 - a23 * a32; - - // Calculate the determinant - let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; - out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; - out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; - out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; - out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; - out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; - out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; - out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; - out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; - out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; - out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; - out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; - out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; - out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; - out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; - out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; - - return out; -} - -/** - * Calculates the adjugate of a mat4 - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -export function adjoint(out, a) { - let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; - let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; - let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; - let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - - out[0] = (a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22)); - out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22)); - out[2] = (a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12)); - out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12)); - out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22)); - out[5] = (a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22)); - out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12)); - out[7] = (a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12)); - out[8] = (a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21)); - out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21)); - out[10] = (a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11)); - out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11)); - out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21)); - out[13] = (a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21)); - out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11)); - out[15] = (a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11)); - return out; -} - -/** - * Calculates the determinant of a mat4 - * - * @param {mat4} a the source matrix - * @returns {Number} determinant of a - */ -export function determinant(a) { - let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; - let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; - let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; - let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - - let b00 = a00 * a11 - a01 * a10; - let b01 = a00 * a12 - a02 * a10; - let b02 = a00 * a13 - a03 * a10; - let b03 = a01 * a12 - a02 * a11; - let b04 = a01 * a13 - a03 * a11; - let b05 = a02 * a13 - a03 * a12; - let b06 = a20 * a31 - a21 * a30; - let b07 = a20 * a32 - a22 * a30; - let b08 = a20 * a33 - a23 * a30; - let b09 = a21 * a32 - a22 * a31; - let b10 = a21 * a33 - a23 * a31; - let b11 = a22 * a33 - a23 * a32; - - // Calculate the determinant - return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; -} - -/** - * Multiplies two mat4s - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the first operand - * @param {mat4} b the second operand - * @returns {mat4} out - */ -export function multiply(out, a, b) { - let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; - let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; - let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; - let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - - // Cache only the current line of the second matrix - let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - - b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7]; - out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - - b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11]; - out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - - b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15]; - out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - return out; -} - -/** - * Translate a mat4 by the given vector - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to translate - * @param {vec3} v vector to translate by - * @returns {mat4} out - */ -export function translate(out, a, v) { - let x = v[0], y = v[1], z = v[2]; - let a00, a01, a02, a03; - let a10, a11, a12, a13; - let a20, a21, a22, a23; - - if (a === out) { - out[12] = a[0] * x + a[4] * y + a[8] * z + a[12]; - out[13] = a[1] * x + a[5] * y + a[9] * z + a[13]; - out[14] = a[2] * x + a[6] * y + a[10] * z + a[14]; - out[15] = a[3] * x + a[7] * y + a[11] * z + a[15]; - } else { - a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3]; - a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7]; - a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11]; - - out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03; - out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13; - out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23; - - out[12] = a00 * x + a10 * y + a20 * z + a[12]; - out[13] = a01 * x + a11 * y + a21 * z + a[13]; - out[14] = a02 * x + a12 * y + a22 * z + a[14]; - out[15] = a03 * x + a13 * y + a23 * z + a[15]; - } - - return out; -} - -/** - * Scales the mat4 by the dimensions in the given vec3 not using vectorization - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to scale - * @param {vec3} v the vec3 to scale the matrix by - * @returns {mat4} out - **/ -export function scale(out, a, v) { - let x = v[0], y = v[1], z = v[2]; - - out[0] = a[0] * x; - out[1] = a[1] * x; - out[2] = a[2] * x; - out[3] = a[3] * x; - out[4] = a[4] * y; - out[5] = a[5] * y; - out[6] = a[6] * y; - out[7] = a[7] * y; - out[8] = a[8] * z; - out[9] = a[9] * z; - out[10] = a[10] * z; - out[11] = a[11] * z; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - return out; -} - -/** - * Rotates a mat4 by the given angle around the given axis - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @param {vec3} axis the axis to rotate around - * @returns {mat4} out - */ -export function rotate(out, a, rad, axis) { - let x = axis[0], y = axis[1], z = axis[2]; - let len = Math.sqrt(x * x + y * y + z * z); - let s, c, t; - let a00, a01, a02, a03; - let a10, a11, a12, a13; - let a20, a21, a22, a23; - let b00, b01, b02; - let b10, b11, b12; - let b20, b21, b22; - - if (Math.abs(len) < glMatrix.EPSILON) { return null; } - - len = 1 / len; - x *= len; - y *= len; - z *= len; - - s = Math.sin(rad); - c = Math.cos(rad); - t = 1 - c; - - a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3]; - a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7]; - a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11]; - - // Construct the elements of the rotation matrix - b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s; - b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s; - b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c; - - // Perform rotation-specific matrix multiplication - out[0] = a00 * b00 + a10 * b01 + a20 * b02; - out[1] = a01 * b00 + a11 * b01 + a21 * b02; - out[2] = a02 * b00 + a12 * b01 + a22 * b02; - out[3] = a03 * b00 + a13 * b01 + a23 * b02; - out[4] = a00 * b10 + a10 * b11 + a20 * b12; - out[5] = a01 * b10 + a11 * b11 + a21 * b12; - out[6] = a02 * b10 + a12 * b11 + a22 * b12; - out[7] = a03 * b10 + a13 * b11 + a23 * b12; - out[8] = a00 * b20 + a10 * b21 + a20 * b22; - out[9] = a01 * b20 + a11 * b21 + a21 * b22; - out[10] = a02 * b20 + a12 * b21 + a22 * b22; - out[11] = a03 * b20 + a13 * b21 + a23 * b22; - - if (a !== out) { // If the source and destination differ, copy the unchanged last row - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - return out; -} - -/** - * Rotates a matrix by the given angle around the X axis - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -export function rotateX(out, a, rad) { - let s = Math.sin(rad); - let c = Math.cos(rad); - let a10 = a[4]; - let a11 = a[5]; - let a12 = a[6]; - let a13 = a[7]; - let a20 = a[8]; - let a21 = a[9]; - let a22 = a[10]; - let a23 = a[11]; - - if (a !== out) { // If the source and destination differ, copy the unchanged rows - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - - // Perform axis-specific matrix multiplication - out[4] = a10 * c + a20 * s; - out[5] = a11 * c + a21 * s; - out[6] = a12 * c + a22 * s; - out[7] = a13 * c + a23 * s; - out[8] = a20 * c - a10 * s; - out[9] = a21 * c - a11 * s; - out[10] = a22 * c - a12 * s; - out[11] = a23 * c - a13 * s; - return out; -} - -/** - * Rotates a matrix by the given angle around the Y axis - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -export function rotateY(out, a, rad) { - let s = Math.sin(rad); - let c = Math.cos(rad); - let a00 = a[0]; - let a01 = a[1]; - let a02 = a[2]; - let a03 = a[3]; - let a20 = a[8]; - let a21 = a[9]; - let a22 = a[10]; - let a23 = a[11]; - - if (a !== out) { // If the source and destination differ, copy the unchanged rows - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - - // Perform axis-specific matrix multiplication - out[0] = a00 * c - a20 * s; - out[1] = a01 * c - a21 * s; - out[2] = a02 * c - a22 * s; - out[3] = a03 * c - a23 * s; - out[8] = a00 * s + a20 * c; - out[9] = a01 * s + a21 * c; - out[10] = a02 * s + a22 * c; - out[11] = a03 * s + a23 * c; - return out; -} - -/** - * Rotates a matrix by the given angle around the Z axis - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -export function rotateZ(out, a, rad) { - let s = Math.sin(rad); - let c = Math.cos(rad); - let a00 = a[0]; - let a01 = a[1]; - let a02 = a[2]; - let a03 = a[3]; - let a10 = a[4]; - let a11 = a[5]; - let a12 = a[6]; - let a13 = a[7]; - - if (a !== out) { // If the source and destination differ, copy the unchanged last row - out[8] = a[8]; - out[9] = a[9]; - out[10] = a[10]; - out[11] = a[11]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - - // Perform axis-specific matrix multiplication - out[0] = a00 * c + a10 * s; - out[1] = a01 * c + a11 * s; - out[2] = a02 * c + a12 * s; - out[3] = a03 * c + a13 * s; - out[4] = a10 * c - a00 * s; - out[5] = a11 * c - a01 * s; - out[6] = a12 * c - a02 * s; - out[7] = a13 * c - a03 * s; - return out; -} - -/** - * Creates a matrix from a vector translation - * This is equivalent to (but much faster than): - * - * mat4.identity(dest); - * mat4.translate(dest, dest, vec); - * - * @param {mat4} out mat4 receiving operation result - * @param {vec3} v Translation vector - * @returns {mat4} out - */ -export function fromTranslation(out, v) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = 1; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = 1; - out[11] = 0; - out[12] = v[0]; - out[13] = v[1]; - out[14] = v[2]; - out[15] = 1; - return out; -} - -/** - * Creates a matrix from a vector scaling - * This is equivalent to (but much faster than): - * - * mat4.identity(dest); - * mat4.scale(dest, dest, vec); - * - * @param {mat4} out mat4 receiving operation result - * @param {vec3} v Scaling vector - * @returns {mat4} out - */ -export function fromScaling(out, v) { - out[0] = v[0]; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = v[1]; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = v[2]; - out[11] = 0; - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - return out; -} - -/** - * Creates a matrix from a given angle around a given axis - * This is equivalent to (but much faster than): - * - * mat4.identity(dest); - * mat4.rotate(dest, dest, rad, axis); - * - * @param {mat4} out mat4 receiving operation result - * @param {Number} rad the angle to rotate the matrix by - * @param {vec3} axis the axis to rotate around - * @returns {mat4} out - */ -export function fromRotation(out, rad, axis) { - let x = axis[0], y = axis[1], z = axis[2]; - let len = Math.sqrt(x * x + y * y + z * z); - let s, c, t; - - if (Math.abs(len) < glMatrix.EPSILON) { return null; } - - len = 1 / len; - x *= len; - y *= len; - z *= len; - - s = Math.sin(rad); - c = Math.cos(rad); - t = 1 - c; - - // Perform rotation-specific matrix multiplication - out[0] = x * x * t + c; - out[1] = y * x * t + z * s; - out[2] = z * x * t - y * s; - out[3] = 0; - out[4] = x * y * t - z * s; - out[5] = y * y * t + c; - out[6] = z * y * t + x * s; - out[7] = 0; - out[8] = x * z * t + y * s; - out[9] = y * z * t - x * s; - out[10] = z * z * t + c; - out[11] = 0; - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - return out; -} - -/** - * Creates a matrix from the given angle around the X axis - * This is equivalent to (but much faster than): - * - * mat4.identity(dest); - * mat4.rotateX(dest, dest, rad); - * - * @param {mat4} out mat4 receiving operation result - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -export function fromXRotation(out, rad) { - let s = Math.sin(rad); - let c = Math.cos(rad); - - // Perform axis-specific matrix multiplication - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = c; - out[6] = s; - out[7] = 0; - out[8] = 0; - out[9] = -s; - out[10] = c; - out[11] = 0; - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - return out; -} - -/** - * Creates a matrix from the given angle around the Y axis - * This is equivalent to (but much faster than): - * - * mat4.identity(dest); - * mat4.rotateY(dest, dest, rad); - * - * @param {mat4} out mat4 receiving operation result - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -export function fromYRotation(out, rad) { - let s = Math.sin(rad); - let c = Math.cos(rad); - - // Perform axis-specific matrix multiplication - out[0] = c; - out[1] = 0; - out[2] = -s; - out[3] = 0; - out[4] = 0; - out[5] = 1; - out[6] = 0; - out[7] = 0; - out[8] = s; - out[9] = 0; - out[10] = c; - out[11] = 0; - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - return out; -} - -/** - * Creates a matrix from the given angle around the Z axis - * This is equivalent to (but much faster than): - * - * mat4.identity(dest); - * mat4.rotateZ(dest, dest, rad); - * - * @param {mat4} out mat4 receiving operation result - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -export function fromZRotation(out, rad) { - let s = Math.sin(rad); - let c = Math.cos(rad); - - // Perform axis-specific matrix multiplication - out[0] = c; - out[1] = s; - out[2] = 0; - out[3] = 0; - out[4] = -s; - out[5] = c; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = 1; - out[11] = 0; - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - return out; -} - -/** - * Creates a matrix from a quaternion rotation and vector translation - * This is equivalent to (but much faster than): - * - * mat4.identity(dest); - * mat4.translate(dest, vec); - * let quatMat = mat4.create(); - * quat4.toMat4(quat, quatMat); - * mat4.multiply(dest, quatMat); - * - * @param {mat4} out mat4 receiving operation result - * @param {quat4} q Rotation quaternion - * @param {vec3} v Translation vector - * @returns {mat4} out - */ -export function fromRotationTranslation(out, q, v) { - // Quaternion math - let x = q[0], y = q[1], z = q[2], w = q[3]; - let x2 = x + x; - let y2 = y + y; - let z2 = z + z; - - let xx = x * x2; - let xy = x * y2; - let xz = x * z2; - let yy = y * y2; - let yz = y * z2; - let zz = z * z2; - let wx = w * x2; - let wy = w * y2; - let wz = w * z2; - - out[0] = 1 - (yy + zz); - out[1] = xy + wz; - out[2] = xz - wy; - out[3] = 0; - out[4] = xy - wz; - out[5] = 1 - (xx + zz); - out[6] = yz + wx; - out[7] = 0; - out[8] = xz + wy; - out[9] = yz - wx; - out[10] = 1 - (xx + yy); - out[11] = 0; - out[12] = v[0]; - out[13] = v[1]; - out[14] = v[2]; - out[15] = 1; - - return out; -} - -/** - * Returns the translation vector component of a transformation - * matrix. If a matrix is built with fromRotationTranslation, - * the returned vector will be the same as the translation vector - * originally supplied. - * @param {vec3} out Vector to receive translation component - * @param {mat4} mat Matrix to be decomposed (input) - * @return {vec3} out - */ -export function getTranslation(out, mat) { - out[0] = mat[12]; - out[1] = mat[13]; - out[2] = mat[14]; - - return out; -} - -/** - * Returns the scaling factor component of a transformation - * matrix. If a matrix is built with fromRotationTranslationScale - * with a normalized Quaternion paramter, the returned vector will be - * the same as the scaling vector - * originally supplied. - * @param {vec3} out Vector to receive scaling factor component - * @param {mat4} mat Matrix to be decomposed (input) - * @return {vec3} out - */ -export function getScaling(out, mat) { - let m11 = mat[0]; - let m12 = mat[1]; - let m13 = mat[2]; - let m21 = mat[4]; - let m22 = mat[5]; - let m23 = mat[6]; - let m31 = mat[8]; - let m32 = mat[9]; - let m33 = mat[10]; - - out[0] = Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13); - out[1] = Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23); - out[2] = Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33); - - return out; -} - -/** - * Returns a quaternion representing the rotational component - * of a transformation matrix. If a matrix is built with - * fromRotationTranslation, the returned quaternion will be the - * same as the quaternion originally supplied. - * @param {quat} out Quaternion to receive the rotation component - * @param {mat4} mat Matrix to be decomposed (input) - * @return {quat} out - */ -export function getRotation(out, mat) { - // Algorithm taken from http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm - let trace = mat[0] + mat[5] + mat[10]; - let S = 0; - - if (trace > 0) { - S = Math.sqrt(trace + 1.0) * 2; - out[3] = 0.25 * S; - out[0] = (mat[6] - mat[9]) / S; - out[1] = (mat[8] - mat[2]) / S; - out[2] = (mat[1] - mat[4]) / S; - } else if ((mat[0] > mat[5])&(mat[0] > mat[10])) { - S = Math.sqrt(1.0 + mat[0] - mat[5] - mat[10]) * 2; - out[3] = (mat[6] - mat[9]) / S; - out[0] = 0.25 * S; - out[1] = (mat[1] + mat[4]) / S; - out[2] = (mat[8] + mat[2]) / S; - } else if (mat[5] > mat[10]) { - S = Math.sqrt(1.0 + mat[5] - mat[0] - mat[10]) * 2; - out[3] = (mat[8] - mat[2]) / S; - out[0] = (mat[1] + mat[4]) / S; - out[1] = 0.25 * S; - out[2] = (mat[6] + mat[9]) / S; - } else { - S = Math.sqrt(1.0 + mat[10] - mat[0] - mat[5]) * 2; - out[3] = (mat[1] - mat[4]) / S; - out[0] = (mat[8] + mat[2]) / S; - out[1] = (mat[6] + mat[9]) / S; - out[2] = 0.25 * S; - } - - return out; -} - -/** - * Creates a matrix from a quaternion rotation, vector translation and vector scale - * This is equivalent to (but much faster than): - * - * mat4.identity(dest); - * mat4.translate(dest, vec); - * let quatMat = mat4.create(); - * quat4.toMat4(quat, quatMat); - * mat4.multiply(dest, quatMat); - * mat4.scale(dest, scale) - * - * @param {mat4} out mat4 receiving operation result - * @param {quat4} q Rotation quaternion - * @param {vec3} v Translation vector - * @param {vec3} s Scaling vector - * @returns {mat4} out - */ -export function fromRotationTranslationScale(out, q, v, s) { - // Quaternion math - let x = q[0], y = q[1], z = q[2], w = q[3]; - let x2 = x + x; - let y2 = y + y; - let z2 = z + z; - - let xx = x * x2; - let xy = x * y2; - let xz = x * z2; - let yy = y * y2; - let yz = y * z2; - let zz = z * z2; - let wx = w * x2; - let wy = w * y2; - let wz = w * z2; - let sx = s[0]; - let sy = s[1]; - let sz = s[2]; - - out[0] = (1 - (yy + zz)) * sx; - out[1] = (xy + wz) * sx; - out[2] = (xz - wy) * sx; - out[3] = 0; - out[4] = (xy - wz) * sy; - out[5] = (1 - (xx + zz)) * sy; - out[6] = (yz + wx) * sy; - out[7] = 0; - out[8] = (xz + wy) * sz; - out[9] = (yz - wx) * sz; - out[10] = (1 - (xx + yy)) * sz; - out[11] = 0; - out[12] = v[0]; - out[13] = v[1]; - out[14] = v[2]; - out[15] = 1; - - return out; -} - -/** - * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin - * This is equivalent to (but much faster than): - * - * mat4.identity(dest); - * mat4.translate(dest, vec); - * mat4.translate(dest, origin); - * let quatMat = mat4.create(); - * quat4.toMat4(quat, quatMat); - * mat4.multiply(dest, quatMat); - * mat4.scale(dest, scale) - * mat4.translate(dest, negativeOrigin); - * - * @param {mat4} out mat4 receiving operation result - * @param {quat4} q Rotation quaternion - * @param {vec3} v Translation vector - * @param {vec3} s Scaling vector - * @param {vec3} o The origin vector around which to scale and rotate - * @returns {mat4} out - */ -export function fromRotationTranslationScaleOrigin(out, q, v, s, o) { - // Quaternion math - let x = q[0], y = q[1], z = q[2], w = q[3]; - let x2 = x + x; - let y2 = y + y; - let z2 = z + z; - - let xx = x * x2; - let xy = x * y2; - let xz = x * z2; - let yy = y * y2; - let yz = y * z2; - let zz = z * z2; - let wx = w * x2; - let wy = w * y2; - let wz = w * z2; - - let sx = s[0]; - let sy = s[1]; - let sz = s[2]; - - let ox = o[0]; - let oy = o[1]; - let oz = o[2]; - - out[0] = (1 - (yy + zz)) * sx; - out[1] = (xy + wz) * sx; - out[2] = (xz - wy) * sx; - out[3] = 0; - out[4] = (xy - wz) * sy; - out[5] = (1 - (xx + zz)) * sy; - out[6] = (yz + wx) * sy; - out[7] = 0; - out[8] = (xz + wy) * sz; - out[9] = (yz - wx) * sz; - out[10] = (1 - (xx + yy)) * sz; - out[11] = 0; - out[12] = v[0] + ox - (out[0] * ox + out[4] * oy + out[8] * oz); - out[13] = v[1] + oy - (out[1] * ox + out[5] * oy + out[9] * oz); - out[14] = v[2] + oz - (out[2] * ox + out[6] * oy + out[10] * oz); - out[15] = 1; - - return out; -} - -/** - * Calculates a 4x4 matrix from the given quaternion - * - * @param {mat4} out mat4 receiving operation result - * @param {quat} q Quaternion to create matrix from - * - * @returns {mat4} out - */ -export function fromQuat(out, q) { - let x = q[0], y = q[1], z = q[2], w = q[3]; - let x2 = x + x; - let y2 = y + y; - let z2 = z + z; - - let xx = x * x2; - let yx = y * x2; - let yy = y * y2; - let zx = z * x2; - let zy = z * y2; - let zz = z * z2; - let wx = w * x2; - let wy = w * y2; - let wz = w * z2; - - out[0] = 1 - yy - zz; - out[1] = yx + wz; - out[2] = zx - wy; - out[3] = 0; - - out[4] = yx - wz; - out[5] = 1 - xx - zz; - out[6] = zy + wx; - out[7] = 0; - - out[8] = zx + wy; - out[9] = zy - wx; - out[10] = 1 - xx - yy; - out[11] = 0; - - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - - return out; -} - -/** - * Generates a frustum matrix with the given bounds - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {Number} left Left bound of the frustum - * @param {Number} right Right bound of the frustum - * @param {Number} bottom Bottom bound of the frustum - * @param {Number} top Top bound of the frustum - * @param {Number} near Near bound of the frustum - * @param {Number} far Far bound of the frustum - * @returns {mat4} out - */ -export function frustum(out, left, right, bottom, top, near, far) { - let rl = 1 / (right - left); - let tb = 1 / (top - bottom); - let nf = 1 / (near - far); - out[0] = (near * 2) * rl; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = (near * 2) * tb; - out[6] = 0; - out[7] = 0; - out[8] = (right + left) * rl; - out[9] = (top + bottom) * tb; - out[10] = (far + near) * nf; - out[11] = -1; - out[12] = 0; - out[13] = 0; - out[14] = (far * near * 2) * nf; - out[15] = 0; - return out; -} - -/** - * Generates a perspective projection matrix with the given bounds - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {number} fovy Vertical field of view in radians - * @param {number} aspect Aspect ratio. typically viewport width/height - * @param {number} near Near bound of the frustum - * @param {number} far Far bound of the frustum - * @returns {mat4} out - */ -export function perspective(out, fovy, aspect, near, far) { - let f = 1.0 / Math.tan(fovy / 2); - let nf = 1 / (near - far); - out[0] = f / aspect; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = f; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = (far + near) * nf; - out[11] = -1; - out[12] = 0; - out[13] = 0; - out[14] = (2 * far * near) * nf; - out[15] = 0; - return out; -} - -/** - * Generates a perspective projection matrix with the given field of view. - * This is primarily useful for generating projection matrices to be used - * with the still experiemental WebVR API. - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees - * @param {number} near Near bound of the frustum - * @param {number} far Far bound of the frustum - * @returns {mat4} out - */ -export function perspectiveFromFieldOfView(out, fov, near, far) { - let upTan = Math.tan(fov.upDegrees * Math.PI/180.0); - let downTan = Math.tan(fov.downDegrees * Math.PI/180.0); - let leftTan = Math.tan(fov.leftDegrees * Math.PI/180.0); - let rightTan = Math.tan(fov.rightDegrees * Math.PI/180.0); - let xScale = 2.0 / (leftTan + rightTan); - let yScale = 2.0 / (upTan + downTan); - - out[0] = xScale; - out[1] = 0.0; - out[2] = 0.0; - out[3] = 0.0; - out[4] = 0.0; - out[5] = yScale; - out[6] = 0.0; - out[7] = 0.0; - out[8] = -((leftTan - rightTan) * xScale * 0.5); - out[9] = ((upTan - downTan) * yScale * 0.5); - out[10] = far / (near - far); - out[11] = -1.0; - out[12] = 0.0; - out[13] = 0.0; - out[14] = (far * near) / (near - far); - out[15] = 0.0; - return out; -} - -/** - * Generates a orthogonal projection matrix with the given bounds - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {number} left Left bound of the frustum - * @param {number} right Right bound of the frustum - * @param {number} bottom Bottom bound of the frustum - * @param {number} top Top bound of the frustum - * @param {number} near Near bound of the frustum - * @param {number} far Far bound of the frustum - * @returns {mat4} out - */ -export function ortho(out, left, right, bottom, top, near, far) { - let lr = 1 / (left - right); - let bt = 1 / (bottom - top); - let nf = 1 / (near - far); - out[0] = -2 * lr; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = -2 * bt; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = 2 * nf; - out[11] = 0; - out[12] = (left + right) * lr; - out[13] = (top + bottom) * bt; - out[14] = (far + near) * nf; - out[15] = 1; - return out; -} - -/** - * Generates a look-at matrix with the given eye position, focal point, and up axis - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {vec3} eye Position of the viewer - * @param {vec3} center Point the viewer is looking at - * @param {vec3} up vec3 pointing up - * @returns {mat4} out - */ -export function lookAt(out, eye, center, up) { - let x0, x1, x2, y0, y1, y2, z0, z1, z2, len; - let eyex = eye[0]; - let eyey = eye[1]; - let eyez = eye[2]; - let upx = up[0]; - let upy = up[1]; - let upz = up[2]; - let centerx = center[0]; - let centery = center[1]; - let centerz = center[2]; - - if (Math.abs(eyex - centerx) < glMatrix.EPSILON && - Math.abs(eyey - centery) < glMatrix.EPSILON && - Math.abs(eyez - centerz) < glMatrix.EPSILON) { - return identity(out); - } - - z0 = eyex - centerx; - z1 = eyey - centery; - z2 = eyez - centerz; - - len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2); - z0 *= len; - z1 *= len; - z2 *= len; - - x0 = upy * z2 - upz * z1; - x1 = upz * z0 - upx * z2; - x2 = upx * z1 - upy * z0; - len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2); - if (!len) { - x0 = 0; - x1 = 0; - x2 = 0; - } else { - len = 1 / len; - x0 *= len; - x1 *= len; - x2 *= len; - } - - y0 = z1 * x2 - z2 * x1; - y1 = z2 * x0 - z0 * x2; - y2 = z0 * x1 - z1 * x0; - - len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2); - if (!len) { - y0 = 0; - y1 = 0; - y2 = 0; - } else { - len = 1 / len; - y0 *= len; - y1 *= len; - y2 *= len; - } - - out[0] = x0; - out[1] = y0; - out[2] = z0; - out[3] = 0; - out[4] = x1; - out[5] = y1; - out[6] = z1; - out[7] = 0; - out[8] = x2; - out[9] = y2; - out[10] = z2; - out[11] = 0; - out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); - out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); - out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); - out[15] = 1; - - return out; -} - -/** - * Generates a matrix that makes something look at something else. - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {vec3} eye Position of the viewer - * @param {vec3} center Point the viewer is looking at - * @param {vec3} up vec3 pointing up - * @returns {mat4} out - */ -export function targetTo(out, eye, target, up) { - let eyex = eye[0], - eyey = eye[1], - eyez = eye[2], - upx = up[0], - upy = up[1], - upz = up[2]; - - let z0 = eyex - target[0], - z1 = eyey - target[1], - z2 = eyez - target[2]; - - let len = z0*z0 + z1*z1 + z2*z2; - if (len > 0) { - len = 1 / Math.sqrt(len); - z0 *= len; - z1 *= len; - z2 *= len; - } - - let x0 = upy * z2 - upz * z1, - x1 = upz * z0 - upx * z2, - x2 = upx * z1 - upy * z0; - - out[0] = x0; - out[1] = x1; - out[2] = x2; - out[3] = 0; - out[4] = z1 * x2 - z2 * x1; - out[5] = z2 * x0 - z0 * x2; - out[6] = z0 * x1 - z1 * x0; - out[7] = 0; - out[8] = z0; - out[9] = z1; - out[10] = z2; - out[11] = 0; - out[12] = eyex; - out[13] = eyey; - out[14] = eyez; - out[15] = 1; - return out; -}; - -/** - * Returns a string representation of a mat4 - * - * @param {mat4} a matrix to represent as a string - * @returns {String} string representation of the matrix - */ -export function str(a) { - return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' + - a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' + - a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + - a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')'; -} - -/** - * Returns Frobenius norm of a mat4 - * - * @param {mat4} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -export function frob(a) { - return(Math.sqrt(Math.pow(a[0], 2) + Math.pow(a[1], 2) + Math.pow(a[2], 2) + Math.pow(a[3], 2) + Math.pow(a[4], 2) + Math.pow(a[5], 2) + Math.pow(a[6], 2) + Math.pow(a[7], 2) + Math.pow(a[8], 2) + Math.pow(a[9], 2) + Math.pow(a[10], 2) + Math.pow(a[11], 2) + Math.pow(a[12], 2) + Math.pow(a[13], 2) + Math.pow(a[14], 2) + Math.pow(a[15], 2) )) -} - -/** - * Adds two mat4's - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the first operand - * @param {mat4} b the second operand - * @returns {mat4} out - */ -export function add(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - out[2] = a[2] + b[2]; - out[3] = a[3] + b[3]; - out[4] = a[4] + b[4]; - out[5] = a[5] + b[5]; - out[6] = a[6] + b[6]; - out[7] = a[7] + b[7]; - out[8] = a[8] + b[8]; - out[9] = a[9] + b[9]; - out[10] = a[10] + b[10]; - out[11] = a[11] + b[11]; - out[12] = a[12] + b[12]; - out[13] = a[13] + b[13]; - out[14] = a[14] + b[14]; - out[15] = a[15] + b[15]; - return out; -} - -/** - * Subtracts matrix b from matrix a - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the first operand - * @param {mat4} b the second operand - * @returns {mat4} out - */ -export function subtract(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - out[2] = a[2] - b[2]; - out[3] = a[3] - b[3]; - out[4] = a[4] - b[4]; - out[5] = a[5] - b[5]; - out[6] = a[6] - b[6]; - out[7] = a[7] - b[7]; - out[8] = a[8] - b[8]; - out[9] = a[9] - b[9]; - out[10] = a[10] - b[10]; - out[11] = a[11] - b[11]; - out[12] = a[12] - b[12]; - out[13] = a[13] - b[13]; - out[14] = a[14] - b[14]; - out[15] = a[15] - b[15]; - return out; -} - -/** - * Multiply each element of the matrix by a scalar. - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to scale - * @param {Number} b amount to scale the matrix's elements by - * @returns {mat4} out - */ -export function multiplyScalar(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - out[2] = a[2] * b; - out[3] = a[3] * b; - out[4] = a[4] * b; - out[5] = a[5] * b; - out[6] = a[6] * b; - out[7] = a[7] * b; - out[8] = a[8] * b; - out[9] = a[9] * b; - out[10] = a[10] * b; - out[11] = a[11] * b; - out[12] = a[12] * b; - out[13] = a[13] * b; - out[14] = a[14] * b; - out[15] = a[15] * b; - return out; -} - -/** - * Adds two mat4's after multiplying each element of the second operand by a scalar value. - * - * @param {mat4} out the receiving vector - * @param {mat4} a the first operand - * @param {mat4} b the second operand - * @param {Number} scale the amount to scale b's elements by before adding - * @returns {mat4} out - */ -export function multiplyScalarAndAdd(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - out[2] = a[2] + (b[2] * scale); - out[3] = a[3] + (b[3] * scale); - out[4] = a[4] + (b[4] * scale); - out[5] = a[5] + (b[5] * scale); - out[6] = a[6] + (b[6] * scale); - out[7] = a[7] + (b[7] * scale); - out[8] = a[8] + (b[8] * scale); - out[9] = a[9] + (b[9] * scale); - out[10] = a[10] + (b[10] * scale); - out[11] = a[11] + (b[11] * scale); - out[12] = a[12] + (b[12] * scale); - out[13] = a[13] + (b[13] * scale); - out[14] = a[14] + (b[14] * scale); - out[15] = a[15] + (b[15] * scale); - return out; -} - -/** - * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===) - * - * @param {mat4} a The first matrix. - * @param {mat4} b The second matrix. - * @returns {Boolean} True if the matrices are equal, false otherwise. - */ -export function exactEquals(a, b) { - return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && - a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && - a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && - a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15]; -} - -/** - * Returns whether or not the matrices have approximately the same elements in the same position. - * - * @param {mat4} a The first matrix. - * @param {mat4} b The second matrix. - * @returns {Boolean} True if the matrices are equal, false otherwise. - */ -export function equals(a, b) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; - let a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7]; - let a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11]; - let a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15]; - - let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - let b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7]; - let b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11]; - let b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15]; - - return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) && - Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) && - Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) && - Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3)) && - Math.abs(a4 - b4) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a4), Math.abs(b4)) && - Math.abs(a5 - b5) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a5), Math.abs(b5)) && - Math.abs(a6 - b6) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a6), Math.abs(b6)) && - Math.abs(a7 - b7) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a7), Math.abs(b7)) && - Math.abs(a8 - b8) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a8), Math.abs(b8)) && - Math.abs(a9 - b9) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a9), Math.abs(b9)) && - Math.abs(a10 - b10) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a10), Math.abs(b10)) && - Math.abs(a11 - b11) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a11), Math.abs(b11)) && - Math.abs(a12 - b12) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a12), Math.abs(b12)) && - Math.abs(a13 - b13) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a13), Math.abs(b13)) && - Math.abs(a14 - b14) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a14), Math.abs(b14)) && - Math.abs(a15 - b15) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a15), Math.abs(b15))); -} - -/** - * Alias for {@link mat4.multiply} - * @function - */ -export const mul = multiply; - -/** - * Alias for {@link mat4.subtract} - * @function - */ -export const sub = subtract; diff --git a/src/globe/beam/glMatrix/quat.js b/src/globe/beam/glMatrix/quat.js deleted file mode 100755 index 03eeae0..0000000 --- a/src/globe/beam/glMatrix/quat.js +++ /dev/null @@ -1,626 +0,0 @@ -/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. */ - -import * as glMatrix from "./common" -import * as mat3 from "./mat3" -import * as vec3 from "./vec3" -import * as vec4 from "./vec4" - -/** - * Quaternion - * @module quat - */ - -/** - * Creates a new identity quat - * - * @returns {quat} a new quaternion - */ -export function create() { - let out = new glMatrix.ARRAY_TYPE(4); - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -} - -/** - * Set a quat to the identity quaternion - * - * @param {quat} out the receiving quaternion - * @returns {quat} out - */ -export function identity(out) { - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -} - -/** - * Sets a quat from the given angle and rotation axis, - * then returns it. - * - * @param {quat} out the receiving quaternion - * @param {vec3} axis the axis around which to rotate - * @param {Number} rad the angle in radians - * @returns {quat} out - **/ -export function setAxisAngle(out, axis, rad) { - rad = rad * 0.5; - let s = Math.sin(rad); - out[0] = s * axis[0]; - out[1] = s * axis[1]; - out[2] = s * axis[2]; - out[3] = Math.cos(rad); - return out; -} - -/** - * Gets the rotation axis and angle for a given - * quaternion. If a quaternion is created with - * setAxisAngle, this method will return the same - * values as providied in the original parameter list - * OR functionally equivalent values. - * Example: The quaternion formed by axis [0, 0, 1] and - * angle -90 is the same as the quaternion formed by - * [0, 0, 1] and 270. This method favors the latter. - * @param {vec3} out_axis Vector receiving the axis of rotation - * @param {quat} q Quaternion to be decomposed - * @return {Number} Angle, in radians, of the rotation - */ -export function getAxisAngle(out_axis, q) { - let rad = Math.acos(q[3]) * 2.0; - let s = Math.sin(rad / 2.0); - if (s != 0.0) { - out_axis[0] = q[0] / s; - out_axis[1] = q[1] / s; - out_axis[2] = q[2] / s; - } else { - // If s is zero, return any axis (no rotation - axis does not matter) - out_axis[0] = 1; - out_axis[1] = 0; - out_axis[2] = 0; - } - return rad; -} - -/** - * Multiplies two quat's - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @returns {quat} out - */ -export function multiply(out, a, b) { - let ax = a[0], ay = a[1], az = a[2], aw = a[3]; - let bx = b[0], by = b[1], bz = b[2], bw = b[3]; - - out[0] = ax * bw + aw * bx + ay * bz - az * by; - out[1] = ay * bw + aw * by + az * bx - ax * bz; - out[2] = az * bw + aw * bz + ax * by - ay * bx; - out[3] = aw * bw - ax * bx - ay * by - az * bz; - return out; -} - -/** - * Rotates a quaternion by the given angle about the X axis - * - * @param {quat} out quat receiving operation result - * @param {quat} a quat to rotate - * @param {number} rad angle (in radians) to rotate - * @returns {quat} out - */ -export function rotateX(out, a, rad) { - rad *= 0.5; - - let ax = a[0], ay = a[1], az = a[2], aw = a[3]; - let bx = Math.sin(rad), bw = Math.cos(rad); - - out[0] = ax * bw + aw * bx; - out[1] = ay * bw + az * bx; - out[2] = az * bw - ay * bx; - out[3] = aw * bw - ax * bx; - return out; -} - -/** - * Rotates a quaternion by the given angle about the Y axis - * - * @param {quat} out quat receiving operation result - * @param {quat} a quat to rotate - * @param {number} rad angle (in radians) to rotate - * @returns {quat} out - */ -export function rotateY(out, a, rad) { - rad *= 0.5; - - let ax = a[0], ay = a[1], az = a[2], aw = a[3]; - let by = Math.sin(rad), bw = Math.cos(rad); - - out[0] = ax * bw - az * by; - out[1] = ay * bw + aw * by; - out[2] = az * bw + ax * by; - out[3] = aw * bw - ay * by; - return out; -} - -/** - * Rotates a quaternion by the given angle about the Z axis - * - * @param {quat} out quat receiving operation result - * @param {quat} a quat to rotate - * @param {number} rad angle (in radians) to rotate - * @returns {quat} out - */ -export function rotateZ(out, a, rad) { - rad *= 0.5; - - let ax = a[0], ay = a[1], az = a[2], aw = a[3]; - let bz = Math.sin(rad), bw = Math.cos(rad); - - out[0] = ax * bw + ay * bz; - out[1] = ay * bw - ax * bz; - out[2] = az * bw + aw * bz; - out[3] = aw * bw - az * bz; - return out; -} - -/** - * Calculates the W component of a quat from the X, Y, and Z components. - * Assumes that quaternion is 1 unit in length. - * Any existing W component will be ignored. - * - * @param {quat} out the receiving quaternion - * @param {quat} a quat to calculate W component of - * @returns {quat} out - */ -export function calculateW(out, a) { - let x = a[0], y = a[1], z = a[2]; - - out[0] = x; - out[1] = y; - out[2] = z; - out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z)); - return out; -} - -/** - * Performs a spherical linear interpolation between two quat - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {quat} out - */ -export function slerp(out, a, b, t) { - // benchmarks: - // http://jsperf.com/quaternion-slerp-implementations - let ax = a[0], ay = a[1], az = a[2], aw = a[3]; - let bx = b[0], by = b[1], bz = b[2], bw = b[3]; - - let omega, cosom, sinom, scale0, scale1; - - // calc cosine - cosom = ax * bx + ay * by + az * bz + aw * bw; - // adjust signs (if necessary) - if ( cosom < 0.0 ) { - cosom = -cosom; - bx = - bx; - by = - by; - bz = - bz; - bw = - bw; - } - // calculate coefficients - if ( (1.0 - cosom) > 0.000001 ) { - // standard case (slerp) - omega = Math.acos(cosom); - sinom = Math.sin(omega); - scale0 = Math.sin((1.0 - t) * omega) / sinom; - scale1 = Math.sin(t * omega) / sinom; - } else { - // "from" and "to" quaternions are very close - // ... so we can do a linear interpolation - scale0 = 1.0 - t; - scale1 = t; - } - // calculate final values - out[0] = scale0 * ax + scale1 * bx; - out[1] = scale0 * ay + scale1 * by; - out[2] = scale0 * az + scale1 * bz; - out[3] = scale0 * aw + scale1 * bw; - - return out; -} - -/** - * Calculates the inverse of a quat - * - * @param {quat} out the receiving quaternion - * @param {quat} a quat to calculate inverse of - * @returns {quat} out - */ -export function invert(out, a) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; - let dot = a0*a0 + a1*a1 + a2*a2 + a3*a3; - let invDot = dot ? 1.0/dot : 0; - - // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0 - - out[0] = -a0*invDot; - out[1] = -a1*invDot; - out[2] = -a2*invDot; - out[3] = a3*invDot; - return out; -} - -/** - * Calculates the conjugate of a quat - * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result. - * - * @param {quat} out the receiving quaternion - * @param {quat} a quat to calculate conjugate of - * @returns {quat} out - */ -export function conjugate(out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - out[2] = -a[2]; - out[3] = a[3]; - return out; -} - -/** - * Creates a quaternion from the given 3x3 rotation matrix. - * - * NOTE: The resultant quaternion is not normalized, so you should be sure - * to renormalize the quaternion yourself where necessary. - * - * @param {quat} out the receiving quaternion - * @param {mat3} m rotation matrix - * @returns {quat} out - * @function - */ -export function fromMat3(out, m) { - // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes - // article "Quaternion Calculus and Fast Animation". - let fTrace = m[0] + m[4] + m[8]; - let fRoot; - - if ( fTrace > 0.0 ) { - // |w| > 1/2, may as well choose w > 1/2 - fRoot = Math.sqrt(fTrace + 1.0); // 2w - out[3] = 0.5 * fRoot; - fRoot = 0.5/fRoot; // 1/(4w) - out[0] = (m[5]-m[7])*fRoot; - out[1] = (m[6]-m[2])*fRoot; - out[2] = (m[1]-m[3])*fRoot; - } else { - // |w| <= 1/2 - let i = 0; - if ( m[4] > m[0] ) - i = 1; - if ( m[8] > m[i*3+i] ) - i = 2; - let j = (i+1)%3; - let k = (i+2)%3; - - fRoot = Math.sqrt(m[i*3+i]-m[j*3+j]-m[k*3+k] + 1.0); - out[i] = 0.5 * fRoot; - fRoot = 0.5 / fRoot; - out[3] = (m[j*3+k] - m[k*3+j]) * fRoot; - out[j] = (m[j*3+i] + m[i*3+j]) * fRoot; - out[k] = (m[k*3+i] + m[i*3+k]) * fRoot; - } - - return out; -} - -/** - * Creates a quaternion from the given euler angle x, y, z. - * - * @param {quat} out the receiving quaternion - * @param {x} Angle to rotate around X axis in degrees. - * @param {y} Angle to rotate around Y axis in degrees. - * @param {z} Angle to rotate around Z axis in degrees. - * @returns {quat} out - * @function - */ -export function fromEuler(out, x, y, z) { - let halfToRad = 0.5 * Math.PI / 180.0; - x *= halfToRad; - y *= halfToRad; - z *= halfToRad; - - let sx = Math.sin(x); - let cx = Math.cos(x); - let sy = Math.sin(y); - let cy = Math.cos(y); - let sz = Math.sin(z); - let cz = Math.cos(z); - - out[0] = sx * cy * cz - cx * sy * sz; - out[1] = cx * sy * cz + sx * cy * sz; - out[2] = cx * cy * sz - sx * sy * cz; - out[3] = cx * cy * cz + sx * sy * sz; - - return out; -} - -/** - * Returns a string representation of a quatenion - * - * @param {quat} a vector to represent as a string - * @returns {String} string representation of the vector - */ -export function str(a) { - return 'quat(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; -} - -/** - * Creates a new quat initialized with values from an existing quaternion - * - * @param {quat} a quaternion to clone - * @returns {quat} a new quaternion - * @function - */ -export const clone = vec4.clone; - -/** - * Creates a new quat initialized with the given values - * - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {quat} a new quaternion - * @function - */ -export const fromValues = vec4.fromValues; - -/** - * Copy the values from one quat to another - * - * @param {quat} out the receiving quaternion - * @param {quat} a the source quaternion - * @returns {quat} out - * @function - */ -export const copy = vec4.copy; - -/** - * Set the components of a quat to the given values - * - * @param {quat} out the receiving quaternion - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {quat} out - * @function - */ -export const set = vec4.set; - -/** - * Adds two quat's - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @returns {quat} out - * @function - */ -export const add = vec4.add; - -/** - * Alias for {@link quat.multiply} - * @function - */ -export const mul = multiply; - -/** - * Scales a quat by a scalar number - * - * @param {quat} out the receiving vector - * @param {quat} a the vector to scale - * @param {Number} b amount to scale the vector by - * @returns {quat} out - * @function - */ -export const scale = vec4.scale; - -/** - * Calculates the dot product of two quat's - * - * @param {quat} a the first operand - * @param {quat} b the second operand - * @returns {Number} dot product of a and b - * @function - */ -export const dot = vec4.dot; - -/** - * Performs a linear interpolation between two quat's - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {quat} out - * @function - */ -export const lerp = vec4.lerp; - -/** - * Calculates the length of a quat - * - * @param {quat} a vector to calculate length of - * @returns {Number} length of a - */ -export const length = vec4.length; - -/** - * Alias for {@link quat.length} - * @function - */ -export const len = length; - -/** - * Calculates the squared length of a quat - * - * @param {quat} a vector to calculate squared length of - * @returns {Number} squared length of a - * @function - */ -export const squaredLength = vec4.squaredLength; - -/** - * Alias for {@link quat.squaredLength} - * @function - */ -export const sqrLen = squaredLength; - -/** - * Normalize a quat - * - * @param {quat} out the receiving quaternion - * @param {quat} a quaternion to normalize - * @returns {quat} out - * @function - */ -export const normalize = vec4.normalize; - -/** - * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===) - * - * @param {quat} a The first quaternion. - * @param {quat} b The second quaternion. - * @returns {Boolean} True if the vectors are equal, false otherwise. - */ -export const exactEquals = vec4.exactEquals; - -/** - * Returns whether or not the quaternions have approximately the same elements in the same position. - * - * @param {quat} a The first vector. - * @param {quat} b The second vector. - * @returns {Boolean} True if the vectors are equal, false otherwise. - */ -export const equals = vec4.equals; - -/** - * Sets a quaternion to represent the shortest rotation from one - * vector to another. - * - * Both vectors are assumed to be unit length. - * - * @param {quat} out the receiving quaternion. - * @param {vec3} a the initial vector - * @param {vec3} b the destination vector - * @returns {quat} out - */ -export const rotationTo = (function() { - let tmpvec3 = vec3.create(); - let xUnitVec3 = vec3.fromValues(1,0,0); - let yUnitVec3 = vec3.fromValues(0,1,0); - - return function(out, a, b) { - let dot = vec3.dot(a, b); - if (dot < -0.999999) { - vec3.cross(tmpvec3, xUnitVec3, a); - if (vec3.len(tmpvec3) < 0.000001) - vec3.cross(tmpvec3, yUnitVec3, a); - vec3.normalize(tmpvec3, tmpvec3); - setAxisAngle(out, tmpvec3, Math.PI); - return out; - } else if (dot > 0.999999) { - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; - } else { - vec3.cross(tmpvec3, a, b); - out[0] = tmpvec3[0]; - out[1] = tmpvec3[1]; - out[2] = tmpvec3[2]; - out[3] = 1 + dot; - return normalize(out, out); - } - }; -})(); - -/** - * Performs a spherical linear interpolation with two control points - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @param {quat} c the third operand - * @param {quat} d the fourth operand - * @param {Number} t interpolation amount - * @returns {quat} out - */ -export const sqlerp = (function () { - let temp1 = create(); - let temp2 = create(); - - return function (out, a, b, c, d, t) { - slerp(temp1, a, d, t); - slerp(temp2, b, c, t); - slerp(out, temp1, temp2, 2 * t * (1 - t)); - - return out; - }; -}()); - -/** - * Sets the specified quaternion with values corresponding to the given - * axes. Each axis is a vec3 and is expected to be unit length and - * perpendicular to all other specified axes. - * - * @param {vec3} view the vector representing the viewing direction - * @param {vec3} right the vector representing the local "right" direction - * @param {vec3} up the vector representing the local "up" direction - * @returns {quat} out - */ -export const setAxes = (function() { - let matr = mat3.create(); - - return function(out, view, right, up) { - matr[0] = right[0]; - matr[3] = right[1]; - matr[6] = right[2]; - - matr[1] = up[0]; - matr[4] = up[1]; - matr[7] = up[2]; - - matr[2] = -view[0]; - matr[5] = -view[1]; - matr[8] = -view[2]; - - return normalize(out, fromMat3(out, matr)); - }; -})(); diff --git a/src/globe/beam/glMatrix/vec2.js b/src/globe/beam/glMatrix/vec2.js deleted file mode 100755 index 79b978b..0000000 --- a/src/globe/beam/glMatrix/vec2.js +++ /dev/null @@ -1,584 +0,0 @@ -/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. */ - -import * as glMatrix from "./common"; - -/** - * 2 Dimensional Vector - * @module vec2 - */ - -/** - * Creates a new, empty vec2 - * - * @returns {vec2} a new 2D vector - */ -export function create() { - let out = new glMatrix.ARRAY_TYPE(2); - out[0] = 0; - out[1] = 0; - return out; -} - -/** - * Creates a new vec2 initialized with values from an existing vector - * - * @param {vec2} a vector to clone - * @returns {vec2} a new 2D vector - */ -export function clone(a) { - let out = new glMatrix.ARRAY_TYPE(2); - out[0] = a[0]; - out[1] = a[1]; - return out; -} - -/** - * Creates a new vec2 initialized with the given values - * - * @param {Number} x X component - * @param {Number} y Y component - * @returns {vec2} a new 2D vector - */ -export function fromValues(x, y) { - let out = new glMatrix.ARRAY_TYPE(2); - out[0] = x; - out[1] = y; - return out; -} - -/** - * Copy the values from one vec2 to another - * - * @param {vec2} out the receiving vector - * @param {vec2} a the source vector - * @returns {vec2} out - */ -export function copy(out, a) { - out[0] = a[0]; - out[1] = a[1]; - return out; -} - -/** - * Set the components of a vec2 to the given values - * - * @param {vec2} out the receiving vector - * @param {Number} x X component - * @param {Number} y Y component - * @returns {vec2} out - */ -export function set(out, x, y) { - out[0] = x; - out[1] = y; - return out; -} - -/** - * Adds two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -export function add(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - return out; -} - -/** - * Subtracts vector b from vector a - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -export function subtract(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - return out; -} - -/** - * Multiplies two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -export function multiply(out, a, b) { - out[0] = a[0] * b[0]; - out[1] = a[1] * b[1]; - return out; -}; - -/** - * Divides two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -export function divide(out, a, b) { - out[0] = a[0] / b[0]; - out[1] = a[1] / b[1]; - return out; -}; - -/** - * Math.ceil the components of a vec2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a vector to ceil - * @returns {vec2} out - */ -export function ceil(out, a) { - out[0] = Math.ceil(a[0]); - out[1] = Math.ceil(a[1]); - return out; -}; - -/** - * Math.floor the components of a vec2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a vector to floor - * @returns {vec2} out - */ -export function floor(out, a) { - out[0] = Math.floor(a[0]); - out[1] = Math.floor(a[1]); - return out; -}; - -/** - * Returns the minimum of two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -export function min(out, a, b) { - out[0] = Math.min(a[0], b[0]); - out[1] = Math.min(a[1], b[1]); - return out; -}; - -/** - * Returns the maximum of two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec2} out - */ -export function max(out, a, b) { - out[0] = Math.max(a[0], b[0]); - out[1] = Math.max(a[1], b[1]); - return out; -}; - -/** - * Math.round the components of a vec2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a vector to round - * @returns {vec2} out - */ -export function round (out, a) { - out[0] = Math.round(a[0]); - out[1] = Math.round(a[1]); - return out; -}; - -/** - * Scales a vec2 by a scalar number - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to scale - * @param {Number} b amount to scale the vector by - * @returns {vec2} out - */ -export function scale(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - return out; -}; - -/** - * Adds two vec2's after scaling the second operand by a scalar value - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @param {Number} scale the amount to scale b by before adding - * @returns {vec2} out - */ -export function scaleAndAdd(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - return out; -}; - -/** - * Calculates the euclidian distance between two vec2's - * - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {Number} distance between a and b - */ -export function distance(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1]; - return Math.sqrt(x*x + y*y); -}; - -/** - * Calculates the squared euclidian distance between two vec2's - * - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {Number} squared distance between a and b - */ -export function squaredDistance(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1]; - return x*x + y*y; -}; - -/** - * Calculates the length of a vec2 - * - * @param {vec2} a vector to calculate length of - * @returns {Number} length of a - */ -export function length(a) { - var x = a[0], - y = a[1]; - return Math.sqrt(x*x + y*y); -}; - -/** - * Calculates the squared length of a vec2 - * - * @param {vec2} a vector to calculate squared length of - * @returns {Number} squared length of a - */ -export function squaredLength (a) { - var x = a[0], - y = a[1]; - return x*x + y*y; -}; - -/** - * Negates the components of a vec2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a vector to negate - * @returns {vec2} out - */ -export function negate(out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - return out; -}; - -/** - * Returns the inverse of the components of a vec2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a vector to invert - * @returns {vec2} out - */ -export function inverse(out, a) { - out[0] = 1.0 / a[0]; - out[1] = 1.0 / a[1]; - return out; -}; - -/** - * Normalize a vec2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a vector to normalize - * @returns {vec2} out - */ -export function normalize(out, a) { - var x = a[0], - y = a[1]; - var len = x*x + y*y; - if (len > 0) { - //TODO: evaluate use of glm_invsqrt here? - len = 1 / Math.sqrt(len); - out[0] = a[0] * len; - out[1] = a[1] * len; - } - return out; -}; - -/** - * Calculates the dot product of two vec2's - * - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {Number} dot product of a and b - */ -export function dot(a, b) { - return a[0] * b[0] + a[1] * b[1]; -}; - -/** - * Computes the cross product of two vec2's - * Note that the cross product must by definition produce a 3D vector - * - * @param {vec3} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec3} out - */ -export function cross(out, a, b) { - var z = a[0] * b[1] - a[1] * b[0]; - out[0] = out[1] = 0; - out[2] = z; - return out; -}; - -/** - * Performs a linear interpolation between two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {vec2} out - */ -export function lerp(out, a, b, t) { - var ax = a[0], - ay = a[1]; - out[0] = ax + t * (b[0] - ax); - out[1] = ay + t * (b[1] - ay); - return out; -}; - -/** - * Generates a random vector with the given scale - * - * @param {vec2} out the receiving vector - * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned - * @returns {vec2} out - */ -export function random(out, scale) { - scale = scale || 1.0; - var r = glMatrix.RANDOM() * 2.0 * Math.PI; - out[0] = Math.cos(r) * scale; - out[1] = Math.sin(r) * scale; - return out; -}; - -/** - * Transforms the vec2 with a mat2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat2} m matrix to transform with - * @returns {vec2} out - */ -export function transformMat2(out, a, m) { - var x = a[0], - y = a[1]; - out[0] = m[0] * x + m[2] * y; - out[1] = m[1] * x + m[3] * y; - return out; -}; - -/** - * Transforms the vec2 with a mat2d - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat2d} m matrix to transform with - * @returns {vec2} out - */ -export function transformMat2d(out, a, m) { - var x = a[0], - y = a[1]; - out[0] = m[0] * x + m[2] * y + m[4]; - out[1] = m[1] * x + m[3] * y + m[5]; - return out; -}; - -/** - * Transforms the vec2 with a mat3 - * 3rd vector component is implicitly '1' - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat3} m matrix to transform with - * @returns {vec2} out - */ -export function transformMat3(out, a, m) { - var x = a[0], - y = a[1]; - out[0] = m[0] * x + m[3] * y + m[6]; - out[1] = m[1] * x + m[4] * y + m[7]; - return out; -}; - -/** - * Transforms the vec2 with a mat4 - * 3rd vector component is implicitly '0' - * 4th vector component is implicitly '1' - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat4} m matrix to transform with - * @returns {vec2} out - */ -export function transformMat4(out, a, m) { - let x = a[0]; - let y = a[1]; - out[0] = m[0] * x + m[4] * y + m[12]; - out[1] = m[1] * x + m[5] * y + m[13]; - return out; -} - -/** - * Returns a string representation of a vector - * - * @param {vec2} a vector to represent as a string - * @returns {String} string representation of the vector - */ -export function str(a) { - return 'vec2(' + a[0] + ', ' + a[1] + ')'; -} - -/** - * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===) - * - * @param {vec2} a The first vector. - * @param {vec2} b The second vector. - * @returns {Boolean} True if the vectors are equal, false otherwise. - */ -export function exactEquals(a, b) { - return a[0] === b[0] && a[1] === b[1]; -} - -/** - * Returns whether or not the vectors have approximately the same elements in the same position. - * - * @param {vec2} a The first vector. - * @param {vec2} b The second vector. - * @returns {Boolean} True if the vectors are equal, false otherwise. - */ -export function equals(a, b) { - let a0 = a[0], a1 = a[1]; - let b0 = b[0], b1 = b[1]; - return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) && - Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1))); -} - -/** - * Alias for {@link vec2.length} - * @function - */ -export const len = length; - -/** - * Alias for {@link vec2.subtract} - * @function - */ -export const sub = subtract; - -/** - * Alias for {@link vec2.multiply} - * @function - */ -export const mul = multiply; - -/** - * Alias for {@link vec2.divide} - * @function - */ -export const div = divide; - -/** - * Alias for {@link vec2.distance} - * @function - */ -export const dist = distance; - -/** - * Alias for {@link vec2.squaredDistance} - * @function - */ -export const sqrDist = squaredDistance; - -/** - * Alias for {@link vec2.squaredLength} - * @function - */ -export const sqrLen = squaredLength; - -/** - * Perform some operation over an array of vec2s. - * - * @param {Array} a the array of vectors to iterate over - * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed - * @param {Number} offset Number of elements to skip at the beginning of the array - * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array - * @param {Function} fn Function to call for each vector in the array - * @param {Object} [arg] additional argument to pass to fn - * @returns {Array} a - * @function - */ -export const forEach = (function() { - let vec = create(); - - return function(a, stride, offset, count, fn, arg) { - let i, l; - if(!stride) { - stride = 2; - } - - if(!offset) { - offset = 0; - } - - if(count) { - l = Math.min((count * stride) + offset, a.length); - } else { - l = a.length; - } - - for(i = offset; i < l; i += stride) { - vec[0] = a[i]; vec[1] = a[i+1]; - fn(vec, vec, arg); - a[i] = vec[0]; a[i+1] = vec[1]; - } - - return a; - }; -})(); diff --git a/src/globe/beam/glMatrix/vec3.js b/src/globe/beam/glMatrix/vec3.js deleted file mode 100755 index 9c5ff8f..0000000 --- a/src/globe/beam/glMatrix/vec3.js +++ /dev/null @@ -1,776 +0,0 @@ -/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. */ - -import * as glMatrix from "./common"; - -/** - * 3 Dimensional Vector - * @module vec3 - */ - -/** - * Creates a new, empty vec3 - * - * @returns {vec3} a new 3D vector - */ -export function create() { - let out = new glMatrix.ARRAY_TYPE(3); - out[0] = 0; - out[1] = 0; - out[2] = 0; - return out; -} - -/** - * Creates a new vec3 initialized with values from an existing vector - * - * @param {vec3} a vector to clone - * @returns {vec3} a new 3D vector - */ -export function clone(a) { - var out = new glMatrix.ARRAY_TYPE(3); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - return out; -} - -/** - * Calculates the length of a vec3 - * - * @param {vec3} a vector to calculate length of - * @returns {Number} length of a - */ -export function length(a) { - let x = a[0]; - let y = a[1]; - let z = a[2]; - return Math.sqrt(x*x + y*y + z*z); -} - -/** - * Creates a new vec3 initialized with the given values - * - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @returns {vec3} a new 3D vector - */ -export function fromValues(x, y, z) { - let out = new glMatrix.ARRAY_TYPE(3); - out[0] = x; - out[1] = y; - out[2] = z; - return out; -} - -/** - * Copy the values from one vec3 to another - * - * @param {vec3} out the receiving vector - * @param {vec3} a the source vector - * @returns {vec3} out - */ -export function copy(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - return out; -} - -/** - * Set the components of a vec3 to the given values - * - * @param {vec3} out the receiving vector - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @returns {vec3} out - */ -export function set(out, x, y, z) { - out[0] = x; - out[1] = y; - out[2] = z; - return out; -} - -/** - * Adds two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -export function add(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - out[2] = a[2] + b[2]; - return out; -} - -/** - * Subtracts vector b from vector a - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -export function subtract(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - out[2] = a[2] - b[2]; - return out; -} - -/** - * Multiplies two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -export function multiply(out, a, b) { - out[0] = a[0] * b[0]; - out[1] = a[1] * b[1]; - out[2] = a[2] * b[2]; - return out; -} - -/** - * Divides two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -export function divide(out, a, b) { - out[0] = a[0] / b[0]; - out[1] = a[1] / b[1]; - out[2] = a[2] / b[2]; - return out; -} - -/** - * Math.ceil the components of a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to ceil - * @returns {vec3} out - */ -export function ceil(out, a) { - out[0] = Math.ceil(a[0]); - out[1] = Math.ceil(a[1]); - out[2] = Math.ceil(a[2]); - return out; -} - -/** - * Math.floor the components of a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to floor - * @returns {vec3} out - */ -export function floor(out, a) { - out[0] = Math.floor(a[0]); - out[1] = Math.floor(a[1]); - out[2] = Math.floor(a[2]); - return out; -} - -/** - * Returns the minimum of two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -export function min(out, a, b) { - out[0] = Math.min(a[0], b[0]); - out[1] = Math.min(a[1], b[1]); - out[2] = Math.min(a[2], b[2]); - return out; -} - -/** - * Returns the maximum of two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -export function max(out, a, b) { - out[0] = Math.max(a[0], b[0]); - out[1] = Math.max(a[1], b[1]); - out[2] = Math.max(a[2], b[2]); - return out; -} - -/** - * Math.round the components of a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to round - * @returns {vec3} out - */ -export function round(out, a) { - out[0] = Math.round(a[0]); - out[1] = Math.round(a[1]); - out[2] = Math.round(a[2]); - return out; -} - -/** - * Scales a vec3 by a scalar number - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to scale - * @param {Number} b amount to scale the vector by - * @returns {vec3} out - */ -export function scale(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - out[2] = a[2] * b; - return out; -} - -/** - * Adds two vec3's after scaling the second operand by a scalar value - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @param {Number} scale the amount to scale b by before adding - * @returns {vec3} out - */ -export function scaleAndAdd(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - out[2] = a[2] + (b[2] * scale); - return out; -} - -/** - * Calculates the euclidian distance between two vec3's - * - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {Number} distance between a and b - */ -export function distance(a, b) { - let x = b[0] - a[0]; - let y = b[1] - a[1]; - let z = b[2] - a[2]; - return Math.sqrt(x*x + y*y + z*z); -} - -/** - * Calculates the squared euclidian distance between two vec3's - * - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {Number} squared distance between a and b - */ -export function squaredDistance(a, b) { - let x = b[0] - a[0]; - let y = b[1] - a[1]; - let z = b[2] - a[2]; - return x*x + y*y + z*z; -} - -/** - * Calculates the squared length of a vec3 - * - * @param {vec3} a vector to calculate squared length of - * @returns {Number} squared length of a - */ -export function squaredLength(a) { - let x = a[0]; - let y = a[1]; - let z = a[2]; - return x*x + y*y + z*z; -} - -/** - * Negates the components of a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to negate - * @returns {vec3} out - */ -export function negate(out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - out[2] = -a[2]; - return out; -} - -/** - * Returns the inverse of the components of a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to invert - * @returns {vec3} out - */ -export function inverse(out, a) { - out[0] = 1.0 / a[0]; - out[1] = 1.0 / a[1]; - out[2] = 1.0 / a[2]; - return out; -} - -/** - * Normalize a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to normalize - * @returns {vec3} out - */ -export function normalize(out, a) { - let x = a[0]; - let y = a[1]; - let z = a[2]; - let len = x*x + y*y + z*z; - if (len > 0) { - //TODO: evaluate use of glm_invsqrt here? - len = 1 / Math.sqrt(len); - out[0] = a[0] * len; - out[1] = a[1] * len; - out[2] = a[2] * len; - } - return out; -} - -/** - * Calculates the dot product of two vec3's - * - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {Number} dot product of a and b - */ -export function dot(a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; -} - -/** - * Computes the cross product of two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -export function cross(out, a, b) { - let ax = a[0], ay = a[1], az = a[2]; - let bx = b[0], by = b[1], bz = b[2]; - - out[0] = ay * bz - az * by; - out[1] = az * bx - ax * bz; - out[2] = ax * by - ay * bx; - return out; -} - -/** - * Performs a linear interpolation between two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {vec3} out - */ -export function lerp(out, a, b, t) { - let ax = a[0]; - let ay = a[1]; - let az = a[2]; - out[0] = ax + t * (b[0] - ax); - out[1] = ay + t * (b[1] - ay); - out[2] = az + t * (b[2] - az); - return out; -} - -/** - * Performs a hermite interpolation with two control points - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @param {vec3} c the third operand - * @param {vec3} d the fourth operand - * @param {Number} t interpolation amount between the two inputs - * @returns {vec3} out - */ -export function hermite(out, a, b, c, d, t) { - let factorTimes2 = t * t; - let factor1 = factorTimes2 * (2 * t - 3) + 1; - let factor2 = factorTimes2 * (t - 2) + t; - let factor3 = factorTimes2 * (t - 1); - let factor4 = factorTimes2 * (3 - 2 * t); - - out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4; - out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4; - out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4; - - return out; -} - -/** - * Performs a bezier interpolation with two control points - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @param {vec3} c the third operand - * @param {vec3} d the fourth operand - * @param {Number} t interpolation amount between the two inputs - * @returns {vec3} out - */ -export function bezier(out, a, b, c, d, t) { - let inverseFactor = 1 - t; - let inverseFactorTimesTwo = inverseFactor * inverseFactor; - let factorTimes2 = t * t; - let factor1 = inverseFactorTimesTwo * inverseFactor; - let factor2 = 3 * t * inverseFactorTimesTwo; - let factor3 = 3 * factorTimes2 * inverseFactor; - let factor4 = factorTimes2 * t; - - out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4; - out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4; - out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4; - - return out; -} - -/** - * Generates a random vector with the given scale - * - * @param {vec3} out the receiving vector - * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned - * @returns {vec3} out - */ -export function random(out, scale) { - scale = scale || 1.0; - - let r = glMatrix.RANDOM() * 2.0 * Math.PI; - let z = (glMatrix.RANDOM() * 2.0) - 1.0; - let zScale = Math.sqrt(1.0-z*z) * scale; - - out[0] = Math.cos(r) * zScale; - out[1] = Math.sin(r) * zScale; - out[2] = z * scale; - return out; -} - -/** - * Transforms the vec3 with a mat4. - * 4th vector component is implicitly '1' - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to transform - * @param {mat4} m matrix to transform with - * @returns {vec3} out - */ -export function transformMat4(out, a, m) { - let x = a[0], y = a[1], z = a[2]; - let w = m[3] * x + m[7] * y + m[11] * z + m[15]; - w = w || 1.0; - out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w; - out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w; - out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w; - return out; -} - -/** - * Transforms the vec3 with a mat3. - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to transform - * @param {mat3} m the 3x3 matrix to transform with - * @returns {vec3} out - */ -export function transformMat3(out, a, m) { - let x = a[0], y = a[1], z = a[2]; - out[0] = x * m[0] + y * m[3] + z * m[6]; - out[1] = x * m[1] + y * m[4] + z * m[7]; - out[2] = x * m[2] + y * m[5] + z * m[8]; - return out; -} - -/** - * Transforms the vec3 with a quat - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to transform - * @param {quat} q quaternion to transform with - * @returns {vec3} out - */ -export function transformQuat(out, a, q) { - // benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations - - let x = a[0], y = a[1], z = a[2]; - let qx = q[0], qy = q[1], qz = q[2], qw = q[3]; - - // calculate quat * vec - let ix = qw * x + qy * z - qz * y; - let iy = qw * y + qz * x - qx * z; - let iz = qw * z + qx * y - qy * x; - let iw = -qx * x - qy * y - qz * z; - - // calculate result * inverse quat - out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; - out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; - out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; - return out; -} - -/** - * Rotate a 3D vector around the x-axis - * @param {vec3} out The receiving vec3 - * @param {vec3} a The vec3 point to rotate - * @param {vec3} b The origin of the rotation - * @param {Number} c The angle of rotation - * @returns {vec3} out - */ -export function rotateX(out, a, b, c){ - let p = [], r=[]; - //Translate point to the origin - p[0] = a[0] - b[0]; - p[1] = a[1] - b[1]; - p[2] = a[2] - b[2]; - - //perform rotation - r[0] = p[0]; - r[1] = p[1]*Math.cos(c) - p[2]*Math.sin(c); - r[2] = p[1]*Math.sin(c) + p[2]*Math.cos(c); - - //translate to correct position - out[0] = r[0] + b[0]; - out[1] = r[1] + b[1]; - out[2] = r[2] + b[2]; - - return out; -} - -/** - * Rotate a 3D vector around the y-axis - * @param {vec3} out The receiving vec3 - * @param {vec3} a The vec3 point to rotate - * @param {vec3} b The origin of the rotation - * @param {Number} c The angle of rotation - * @returns {vec3} out - */ -export function rotateY(out, a, b, c){ - let p = [], r=[]; - //Translate point to the origin - p[0] = a[0] - b[0]; - p[1] = a[1] - b[1]; - p[2] = a[2] - b[2]; - - //perform rotation - r[0] = p[2]*Math.sin(c) + p[0]*Math.cos(c); - r[1] = p[1]; - r[2] = p[2]*Math.cos(c) - p[0]*Math.sin(c); - - //translate to correct position - out[0] = r[0] + b[0]; - out[1] = r[1] + b[1]; - out[2] = r[2] + b[2]; - - return out; -} - -/** - * Rotate a 3D vector around the z-axis - * @param {vec3} out The receiving vec3 - * @param {vec3} a The vec3 point to rotate - * @param {vec3} b The origin of the rotation - * @param {Number} c The angle of rotation - * @returns {vec3} out - */ -export function rotateZ(out, a, b, c){ - let p = [], r=[]; - //Translate point to the origin - p[0] = a[0] - b[0]; - p[1] = a[1] - b[1]; - p[2] = a[2] - b[2]; - - //perform rotation - r[0] = p[0]*Math.cos(c) - p[1]*Math.sin(c); - r[1] = p[0]*Math.sin(c) + p[1]*Math.cos(c); - r[2] = p[2]; - - //translate to correct position - out[0] = r[0] + b[0]; - out[1] = r[1] + b[1]; - out[2] = r[2] + b[2]; - - return out; -} - -/** - * Get the angle between two 3D vectors - * @param {vec3} a The first operand - * @param {vec3} b The second operand - * @returns {Number} The angle in radians - */ -export function angle(a, b) { - let tempA = fromValues(a[0], a[1], a[2]); - let tempB = fromValues(b[0], b[1], b[2]); - - normalize(tempA, tempA); - normalize(tempB, tempB); - - let cosine = dot(tempA, tempB); - - if(cosine > 1.0) { - return 0; - } - else if(cosine < -1.0) { - return Math.PI; - } else { - return Math.acos(cosine); - } -} - -/** - * Returns a string representation of a vector - * - * @param {vec3} a vector to represent as a string - * @returns {String} string representation of the vector - */ -export function str(a) { - return 'vec3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ')'; -} - -/** - * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===) - * - * @param {vec3} a The first vector. - * @param {vec3} b The second vector. - * @returns {Boolean} True if the vectors are equal, false otherwise. - */ -export function exactEquals(a, b) { - return a[0] === b[0] && a[1] === b[1] && a[2] === b[2]; -} - -/** - * Returns whether or not the vectors have approximately the same elements in the same position. - * - * @param {vec3} a The first vector. - * @param {vec3} b The second vector. - * @returns {Boolean} True if the vectors are equal, false otherwise. - */ -export function equals(a, b) { - let a0 = a[0], a1 = a[1], a2 = a[2]; - let b0 = b[0], b1 = b[1], b2 = b[2]; - return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) && - Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) && - Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2))); -} - -/** - * Alias for {@link vec3.subtract} - * @function - */ -export const sub = subtract; - -/** - * Alias for {@link vec3.multiply} - * @function - */ -export const mul = multiply; - -/** - * Alias for {@link vec3.divide} - * @function - */ -export const div = divide; - -/** - * Alias for {@link vec3.distance} - * @function - */ -export const dist = distance; - -/** - * Alias for {@link vec3.squaredDistance} - * @function - */ -export const sqrDist = squaredDistance; - -/** - * Alias for {@link vec3.length} - * @function - */ -export const len = length; - -/** - * Alias for {@link vec3.squaredLength} - * @function - */ -export const sqrLen = squaredLength; - -/** - * Perform some operation over an array of vec3s. - * - * @param {Array} a the array of vectors to iterate over - * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed - * @param {Number} offset Number of elements to skip at the beginning of the array - * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array - * @param {Function} fn Function to call for each vector in the array - * @param {Object} [arg] additional argument to pass to fn - * @returns {Array} a - * @function - */ -export const forEach = (function() { - let vec = create(); - - return function(a, stride, offset, count, fn, arg) { - let i, l; - if(!stride) { - stride = 3; - } - - if(!offset) { - offset = 0; - } - - if(count) { - l = Math.min((count * stride) + offset, a.length); - } else { - l = a.length; - } - - for(i = offset; i < l; i += stride) { - vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2]; - fn(vec, vec, arg); - a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2]; - } - - return a; - }; -})(); diff --git a/src/globe/beam/glMatrix/vec4.js b/src/globe/beam/glMatrix/vec4.js deleted file mode 100755 index b693682..0000000 --- a/src/globe/beam/glMatrix/vec4.js +++ /dev/null @@ -1,606 +0,0 @@ -/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. */ - -import * as glMatrix from "./common"; - -/** - * 4 Dimensional Vector - * @module vec4 - */ - -/** - * Creates a new, empty vec4 - * - * @returns {vec4} a new 4D vector - */ -export function create() { - let out = new glMatrix.ARRAY_TYPE(4); - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 0; - return out; -} - -/** - * Creates a new vec4 initialized with values from an existing vector - * - * @param {vec4} a vector to clone - * @returns {vec4} a new 4D vector - */ -export function clone(a) { - let out = new glMatrix.ARRAY_TYPE(4); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -} - -/** - * Creates a new vec4 initialized with the given values - * - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {vec4} a new 4D vector - */ -export function fromValues(x, y, z, w) { - let out = new glMatrix.ARRAY_TYPE(4); - out[0] = x; - out[1] = y; - out[2] = z; - out[3] = w; - return out; -} - -/** - * Copy the values from one vec4 to another - * - * @param {vec4} out the receiving vector - * @param {vec4} a the source vector - * @returns {vec4} out - */ -export function copy(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -} - -/** - * Set the components of a vec4 to the given values - * - * @param {vec4} out the receiving vector - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {vec4} out - */ -export function set(out, x, y, z, w) { - out[0] = x; - out[1] = y; - out[2] = z; - out[3] = w; - return out; -} - -/** - * Adds two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -export function add(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - out[2] = a[2] + b[2]; - out[3] = a[3] + b[3]; - return out; -} - -/** - * Subtracts vector b from vector a - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -export function subtract(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - out[2] = a[2] - b[2]; - out[3] = a[3] - b[3]; - return out; -} - -/** - * Multiplies two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -export function multiply(out, a, b) { - out[0] = a[0] * b[0]; - out[1] = a[1] * b[1]; - out[2] = a[2] * b[2]; - out[3] = a[3] * b[3]; - return out; -} - -/** - * Divides two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -export function divide(out, a, b) { - out[0] = a[0] / b[0]; - out[1] = a[1] / b[1]; - out[2] = a[2] / b[2]; - out[3] = a[3] / b[3]; - return out; -} - -/** - * Math.ceil the components of a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to ceil - * @returns {vec4} out - */ -export function ceil(out, a) { - out[0] = Math.ceil(a[0]); - out[1] = Math.ceil(a[1]); - out[2] = Math.ceil(a[2]); - out[3] = Math.ceil(a[3]); - return out; -} - -/** - * Math.floor the components of a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to floor - * @returns {vec4} out - */ -export function floor(out, a) { - out[0] = Math.floor(a[0]); - out[1] = Math.floor(a[1]); - out[2] = Math.floor(a[2]); - out[3] = Math.floor(a[3]); - return out; -} - -/** - * Returns the minimum of two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -export function min(out, a, b) { - out[0] = Math.min(a[0], b[0]); - out[1] = Math.min(a[1], b[1]); - out[2] = Math.min(a[2], b[2]); - out[3] = Math.min(a[3], b[3]); - return out; -} - -/** - * Returns the maximum of two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -export function max(out, a, b) { - out[0] = Math.max(a[0], b[0]); - out[1] = Math.max(a[1], b[1]); - out[2] = Math.max(a[2], b[2]); - out[3] = Math.max(a[3], b[3]); - return out; -} - -/** - * Math.round the components of a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to round - * @returns {vec4} out - */ -export function round(out, a) { - out[0] = Math.round(a[0]); - out[1] = Math.round(a[1]); - out[2] = Math.round(a[2]); - out[3] = Math.round(a[3]); - return out; -} - -/** - * Scales a vec4 by a scalar number - * - * @param {vec4} out the receiving vector - * @param {vec4} a the vector to scale - * @param {Number} b amount to scale the vector by - * @returns {vec4} out - */ -export function scale(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - out[2] = a[2] * b; - out[3] = a[3] * b; - return out; -} - -/** - * Adds two vec4's after scaling the second operand by a scalar value - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @param {Number} scale the amount to scale b by before adding - * @returns {vec4} out - */ -export function scaleAndAdd(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - out[2] = a[2] + (b[2] * scale); - out[3] = a[3] + (b[3] * scale); - return out; -} - -/** - * Calculates the euclidian distance between two vec4's - * - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {Number} distance between a and b - */ -export function distance(a, b) { - let x = b[0] - a[0]; - let y = b[1] - a[1]; - let z = b[2] - a[2]; - let w = b[3] - a[3]; - return Math.sqrt(x*x + y*y + z*z + w*w); -} - -/** - * Calculates the squared euclidian distance between two vec4's - * - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {Number} squared distance between a and b - */ -export function squaredDistance(a, b) { - let x = b[0] - a[0]; - let y = b[1] - a[1]; - let z = b[2] - a[2]; - let w = b[3] - a[3]; - return x*x + y*y + z*z + w*w; -} - -/** - * Calculates the length of a vec4 - * - * @param {vec4} a vector to calculate length of - * @returns {Number} length of a - */ -export function length(a) { - let x = a[0]; - let y = a[1]; - let z = a[2]; - let w = a[3]; - return Math.sqrt(x*x + y*y + z*z + w*w); -} - -/** - * Calculates the squared length of a vec4 - * - * @param {vec4} a vector to calculate squared length of - * @returns {Number} squared length of a - */ -export function squaredLength(a) { - let x = a[0]; - let y = a[1]; - let z = a[2]; - let w = a[3]; - return x*x + y*y + z*z + w*w; -} - -/** - * Negates the components of a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to negate - * @returns {vec4} out - */ -export function negate(out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - out[2] = -a[2]; - out[3] = -a[3]; - return out; -} - -/** - * Returns the inverse of the components of a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to invert - * @returns {vec4} out - */ -export function inverse(out, a) { - out[0] = 1.0 / a[0]; - out[1] = 1.0 / a[1]; - out[2] = 1.0 / a[2]; - out[3] = 1.0 / a[3]; - return out; -} - -/** - * Normalize a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to normalize - * @returns {vec4} out - */ -export function normalize(out, a) { - let x = a[0]; - let y = a[1]; - let z = a[2]; - let w = a[3]; - let len = x*x + y*y + z*z + w*w; - if (len > 0) { - len = 1 / Math.sqrt(len); - out[0] = x * len; - out[1] = y * len; - out[2] = z * len; - out[3] = w * len; - } - return out; -} - -/** - * Calculates the dot product of two vec4's - * - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {Number} dot product of a and b - */ -export function dot(a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; -} - -/** - * Performs a linear interpolation between two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {vec4} out - */ -export function lerp(out, a, b, t) { - let ax = a[0]; - let ay = a[1]; - let az = a[2]; - let aw = a[3]; - out[0] = ax + t * (b[0] - ax); - out[1] = ay + t * (b[1] - ay); - out[2] = az + t * (b[2] - az); - out[3] = aw + t * (b[3] - aw); - return out; -} - -/** - * Generates a random vector with the given scale - * - * @param {vec4} out the receiving vector - * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned - * @returns {vec4} out - */ -export function random(out, vectorScale) { - vectorScale = vectorScale || 1.0; - - //TODO: This is a pretty awful way of doing this. Find something better. - out[0] = glMatrix.RANDOM(); - out[1] = glMatrix.RANDOM(); - out[2] = glMatrix.RANDOM(); - out[3] = glMatrix.RANDOM(); - normalize(out, out); - scale(out, out, vectorScale); - return out; -} - -/** - * Transforms the vec4 with a mat4. - * - * @param {vec4} out the receiving vector - * @param {vec4} a the vector to transform - * @param {mat4} m matrix to transform with - * @returns {vec4} out - */ -export function transformMat4(out, a, m) { - let x = a[0], y = a[1], z = a[2], w = a[3]; - out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w; - out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w; - out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w; - out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w; - return out; -} - -/** - * Transforms the vec4 with a quat - * - * @param {vec4} out the receiving vector - * @param {vec4} a the vector to transform - * @param {quat} q quaternion to transform with - * @returns {vec4} out - */ -export function transformQuat(out, a, q) { - let x = a[0], y = a[1], z = a[2]; - let qx = q[0], qy = q[1], qz = q[2], qw = q[3]; - - // calculate quat * vec - let ix = qw * x + qy * z - qz * y; - let iy = qw * y + qz * x - qx * z; - let iz = qw * z + qx * y - qy * x; - let iw = -qx * x - qy * y - qz * z; - - // calculate result * inverse quat - out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; - out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; - out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; - out[3] = a[3]; - return out; -} - -/** - * Returns a string representation of a vector - * - * @param {vec4} a vector to represent as a string - * @returns {String} string representation of the vector - */ -export function str(a) { - return 'vec4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; -} - -/** - * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===) - * - * @param {vec4} a The first vector. - * @param {vec4} b The second vector. - * @returns {Boolean} True if the vectors are equal, false otherwise. - */ -export function exactEquals(a, b) { - return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]; -} - -/** - * Returns whether or not the vectors have approximately the same elements in the same position. - * - * @param {vec4} a The first vector. - * @param {vec4} b The second vector. - * @returns {Boolean} True if the vectors are equal, false otherwise. - */ -export function equals(a, b) { - let a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; - let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - return (Math.abs(a0 - b0) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a0), Math.abs(b0)) && - Math.abs(a1 - b1) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a1), Math.abs(b1)) && - Math.abs(a2 - b2) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a2), Math.abs(b2)) && - Math.abs(a3 - b3) <= glMatrix.EPSILON*Math.max(1.0, Math.abs(a3), Math.abs(b3))); -} - -/** - * Alias for {@link vec4.subtract} - * @function - */ -export const sub = subtract; - -/** - * Alias for {@link vec4.multiply} - * @function - */ -export const mul = multiply; - -/** - * Alias for {@link vec4.divide} - * @function - */ -export const div = divide; - -/** - * Alias for {@link vec4.distance} - * @function - */ -export const dist = distance; - -/** - * Alias for {@link vec4.squaredDistance} - * @function - */ -export const sqrDist = squaredDistance; - -/** - * Alias for {@link vec4.length} - * @function - */ -export const len = length; - -/** - * Alias for {@link vec4.squaredLength} - * @function - */ -export const sqrLen = squaredLength; - -/** - * Perform some operation over an array of vec4s. - * - * @param {Array} a the array of vectors to iterate over - * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed - * @param {Number} offset Number of elements to skip at the beginning of the array - * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array - * @param {Function} fn Function to call for each vector in the array - * @param {Object} [arg] additional argument to pass to fn - * @returns {Array} a - * @function - */ -export const forEach = (function() { - let vec = create(); - - return function(a, stride, offset, count, fn, arg) { - let i, l; - if(!stride) { - stride = 4; - } - - if(!offset) { - offset = 0; - } - - if(count) { - l = Math.min((count * stride) + offset, a.length); - } else { - l = a.length; - } - - for(i = offset; i < l; i += stride) { - vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2]; vec[3] = a[i+3]; - fn(vec, vec, arg); - a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2]; a[i+3] = vec[3]; - } - - return a; - }; -})(); diff --git a/src/globe/beam/index.js b/src/globe/beam/index.js deleted file mode 100755 index da8e376..0000000 --- a/src/globe/beam/index.js +++ /dev/null @@ -1,23 +0,0 @@ -import * as mat2 from "./glMatrix/mat2"; -import * as mat2d from "./glMatrix/mat2d"; -import * as mat3 from "./glMatrix/mat3"; -import * as mat4 from "./glMatrix/mat4"; -import * as quat from "./glMatrix/quat"; -import * as vec2 from "./glMatrix/vec2"; -import * as vec3 from "./glMatrix/vec3"; -import * as vec4 from "./glMatrix/vec4"; -export { mat2, mat2d, mat3, mat4, quat, vec2, vec3, vec4 }; - -export {default as ArrayBuffer} from './ArrayBuffer'; -export {default as Program} from './Program'; -export {default as Material} from './Material'; -export {default as Texture} from './Texture'; -export {default as Container} from './Container'; -export {default as Mesh} from './Mesh'; -export {default as Renderer} from './Renderer'; -export {default as Camera} from './Camera'; -export {default as Object3d} from './Object3d'; - -export {default as GeometryBuffer} from './GeometryBuffer'; -export {default as PlaneGeometryBuffer} from './PlaneGeometryBuffer'; -export {default as SphereGeometryBuffer} from './SphereGeometryBuffer'; \ No newline at end of file diff --git a/src/globe/beam/shaders/default-fs.glsl b/src/globe/beam/shaders/default-fs.glsl deleted file mode 100755 index 0644e4e..0000000 --- a/src/globe/beam/shaders/default-fs.glsl +++ /dev/null @@ -1,8 +0,0 @@ -precision highp float; - -uniform float alpha; -varying vec2 vUv; - -void main(void) { - gl_FragColor = vec4( vec3(1., 1., 1.), alpha); -} \ No newline at end of file diff --git a/src/globe/beam/shaders/default-vs.glsl b/src/globe/beam/shaders/default-vs.glsl deleted file mode 100755 index 2beb6fb..0000000 --- a/src/globe/beam/shaders/default-vs.glsl +++ /dev/null @@ -1,14 +0,0 @@ -precision highp float; - -attribute vec2 uv; -attribute vec3 position; - -uniform mat4 uMVMatrix; -uniform mat4 uPMatrix; - -varying vec2 vUv; - -void main(void) { - vUv = uv; - gl_Position = uPMatrix * uMVMatrix * vec4(position, 1.0); -} \ No newline at end of file diff --git a/src/globe/beam/shaders/mesh-fs.glsl b/src/globe/beam/shaders/mesh-fs.glsl deleted file mode 100755 index cbaeaba..0000000 --- a/src/globe/beam/shaders/mesh-fs.glsl +++ /dev/null @@ -1,33 +0,0 @@ -precision highp float; - -uniform float alpha; -varying vec3 vColor; -varying vec2 vUv; - -uniform vec2 offset; - -#ifdef USE_MAP - uniform sampler2D map; - uniform vec2 mapOffset; -#endif - -#ifdef USE_ALPHA_MAP - uniform sampler2D alphaMap; - uniform vec2 alphaMapOffset; -#endif - - -uniform vec3 color; - -void main(void) { - - vec4 color = vec4(color, alpha); - - #ifdef USE_MAP - color = texture2D(map, vUv + offset); - color.a *= alpha; - #endif - - gl_FragColor = color; - -} \ No newline at end of file diff --git a/src/globe/beam/uniformTypes.js b/src/globe/beam/uniformTypes.js deleted file mode 100755 index cb1bcfd..0000000 --- a/src/globe/beam/uniformTypes.js +++ /dev/null @@ -1,20 +0,0 @@ -const UNIFORM_TYPES = {} -UNIFORM_TYPES[ 5126 /*FLOAT */ ] = '1f'; -UNIFORM_TYPES[ 35664 /*FLOAT_VEC2 */ ] = '2f'; -UNIFORM_TYPES[ 35665 /*FLOAT_VEC3 */ ] = '3f'; -UNIFORM_TYPES[ 35666 /*FLOAT_VEC4 */ ] = '4f'; -UNIFORM_TYPES[ 35670 /*BOOL */ ] = -UNIFORM_TYPES[ 5124 /*INT */ ] = -UNIFORM_TYPES[ 35678 /*SAMPLER_2D */ ] = -UNIFORM_TYPES[ 35680 /*SAMPLER_CUBE*/ ] = '1i'; -UNIFORM_TYPES[ 35671 /*BOOL_VEC2 */ ] = -UNIFORM_TYPES[ 35667 /*INT_VEC2 */ ] = '2i'; -UNIFORM_TYPES[ 35672 /*BOOL_VEC3 */ ] = -UNIFORM_TYPES[ 35668 /*INT_VEC3 */ ] = '3i'; -UNIFORM_TYPES[ 35673 /*BOOL_VEC4 */ ] = -UNIFORM_TYPES[ 35669 /*INT_VEC4 */ ] = '4i'; -UNIFORM_TYPES[ 35674 /*FLOAT_MAT2 */ ] = 'Matrix2f'; -UNIFORM_TYPES[ 35675 /*FLOAT_MAT3 */ ] = 'Matrix3f'; -UNIFORM_TYPES[ 35676 /*FLOAT_MAT4 */ ] = 'Matrix4f'; - -export default UNIFORM_TYPES; \ No newline at end of file diff --git a/src/globe/beam/utils/getFilter.js b/src/globe/beam/utils/getFilter.js deleted file mode 100755 index 609b8bc..0000000 --- a/src/globe/beam/utils/getFilter.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * compute filtering enum, return one of the following : - * NEAREST - * LINEAR - * NEAREST_MIPMAP_NEAREST - * LINEAR_MIPMAP_NEAREST - * NEAREST_MIPMAP_LINEAR - * LINEAR_MIPMAP_LINEAR - */ -export default function getFilter( smooth, mipmap, miplinear ){ - return 0x2600 | (+smooth) | (+mipmap<<8) | ( +( mipmap && miplinear )<<1 ); -} \ No newline at end of file diff --git a/src/globe/beam/utils/isPowerOf2.js b/src/globe/beam/utils/isPowerOf2.js deleted file mode 100755 index 76c3d86..0000000 --- a/src/globe/beam/utils/isPowerOf2.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function isPowerOf2(value) { - return (value & (value - 1)) == 0; -} \ No newline at end of file diff --git a/src/globe/beam/utils/uuid.js b/src/globe/beam/utils/uuid.js deleted file mode 100755 index b3b50f3..0000000 --- a/src/globe/beam/utils/uuid.js +++ /dev/null @@ -1,20 +0,0 @@ -// http://www.broofa.com/Tools/Math.uuid.htm -var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split( '' ); -var uuid = new Array( 36 ); -var rnd = 0, r; - -export default function generateUUID() { - for ( var i = 0; i < 36; i ++ ) { - if ( i === 8 || i === 13 || i === 18 || i === 23 ) { - uuid[ i ] = '-'; - } else if ( i === 14 ) { - uuid[ i ] = '4'; - } else { - if ( rnd <= 0x02 ) rnd = 0x2000000 + ( Math.random() * 0x1000000 ) | 0; - r = rnd & 0xf; - rnd = rnd >> 4; - uuid[ i ] = chars[ ( i === 19 ) ? ( r & 0x3 ) | 0x8 : r ]; - } - } - return uuid.join( '' ); -} \ No newline at end of file diff --git a/src/globe/beam/utils/warn.js b/src/globe/beam/utils/warn.js deleted file mode 100755 index 1aa2716..0000000 --- a/src/globe/beam/utils/warn.js +++ /dev/null @@ -1,3 +0,0 @@ -export default function warn(msg, ctx){ - console.log("%c" + "[warn]: " + msg, "color:#ff0084", ctx ); -} \ No newline at end of file diff --git a/src/globe/globe-fs.js b/src/globe/globe-fs.js deleted file mode 100644 index afd894d..0000000 --- a/src/globe/globe-fs.js +++ /dev/null @@ -1,59 +0,0 @@ -export default ` -#define PI 3.34159265359 -#define RECIPROCAL_PI 0.31830988618 -#define saturate(a) clamp( a, 0.0, 1.0 ) - -precision highp float; - -varying vec3 vNormal; -varying vec2 vUv; -varying vec3 vPos; - -uniform sampler2D tInput; -uniform vec3 uCameraPosition; - - -vec3 F_Schlick_Frostbite (in vec3 f0 , in float f90 , in float u ) -{ - return f0 + ( f90 - f0 ) * pow (1. - u, 5.); -} - -void main(void) { - - vec3 N = vNormal; - vec3 outColor = vec3(0.); - vec3 diffuseColor = texture2D(tInput, vUv).rgb;//pow( texture2D(tInput, vUv).rgb, vec3(2.2) ); - - vec3 V = normalize(uCameraPosition - vPos); - vec3 L = normalize( vec3(20.,20.,20.) ); - vec3 Ldir = normalize( L - vPos ) ; - vec3 radiance = vec3(0.); - float NdotL = max(0., dot(N,L) ); - vec3 lColor = vec3(1.); - - - float attenuation = 1.;//calcLightAttenuation(length(L - worldPos), directLight.distance, directLight.decay); - - float roughness = clamp( 1., 0.04, 1.0 ); - vec3 H = normalize(L); - float LdotH = saturate ( dot (L , H )); - float NdotH = saturate ( dot (N , H )); - float energyBias = mix(0., 0.5, roughness ); - float energyFactor = mix(1.0, 1.0 / 1.51, roughness ); - float f90 = energyBias + 2.0 * LdotH * LdotH * roughness ; - vec3 f0 = vec3(1.0, 1.0, 1.0); - float lightScatter = F_Schlick_Frostbite ( f0 , f90 , NdotL ).r; - vec3 irradiance = NdotL * lColor; - outColor = diffuseColor * irradiance * lightScatter * energyFactor * attenuation; - - - vec3 ambient = vec3(192./255., 181./255., 215./255.); - // outColor.r = max(ambient.r, outColor.r); - // outColor.g = max(ambient.g, outColor.g); - // outColor.b = max(ambient.b, outColor.b); - outColor = diffuseColor * vec3(NdotL) + diffuseColor * ambient * (1.-NdotL); - - - gl_FragColor = vec4( outColor, 1. ); -} -` diff --git a/src/globe/globe-vs.js b/src/globe/globe-vs.js deleted file mode 100644 index 3bf1047..0000000 --- a/src/globe/globe-vs.js +++ /dev/null @@ -1,26 +0,0 @@ -export default ` -precision highp float; - -attribute vec3 normal; -attribute vec3 position; -attribute vec2 uv; - -uniform mat4 uMVMatrix; -uniform mat4 uMMatrix; -uniform mat4 uPMatrix; -uniform mat4 uNormalMatrix; -uniform float uCameraOffsetY; - -varying vec2 vUv; -varying vec3 vNormal; -varying vec3 vPos; - -void main(void) { - vUv = uv; - vNormal = (uNormalMatrix * vec4(normal, 1.)).rgb; - vPos = (uMMatrix * vec4(position, 1.)).rgb; - gl_Position = uPMatrix * uMVMatrix * vec4( position, 1.0 ); - - gl_Position[1] += uCameraOffsetY * gl_Position.w; -} -` \ No newline at end of file diff --git a/src/globe/index.js b/src/globe/index.js deleted file mode 100644 index 3bfba70..0000000 --- a/src/globe/index.js +++ /dev/null @@ -1,391 +0,0 @@ -import { Renderer } from './beam' -import { Camera } from './beam' -import { vec2, vec3, mat4 } from './beam' -import { Container, Mesh, Material, Texture, SphereGeometryBuffer, PlaneGeometryBuffer } from './beam' - -// GLSL shaders as strings -import GlobeVS from './globe-vs' -import GlobeFS from './globe-fs' - -const FOV = 1 // Camera Field of view; we use 1 to prevent strong perspective effect on the globe - -/** get 3D position on a sphere from longitute lattitude */ -const lonLatToVector3 = (lng, lat) => { - const phi = (90 - lat) * (Math.PI / 180) - const theta = (lng + 180) * (Math.PI / 180) - const x = -(Math.sin(phi) * Math.cos(theta)) - const z = Math.sin(phi) * Math.sin(theta) - const y = Math.cos(phi) - return [x,y,z] -} - -// Convert degrees to radians -const degToRad = deg => deg * Math.PI / 180 - - -class WebglGlobe { - - // Constructor - constructor (options) { - this.$el = options.el // The DOM reference node - this.options = options - this.options.autoRotationSpeed = this.options.autoRotationSpeed || 0 - this.options.scrollSmoothing = this.options.scrollSmoothing || 0.5 // Smooth the globe position to avoid janks on scroll (lower == smoother) - this.options.cameraDistance = 1 // this.options.cameraDistance || 1 // A multiplier to move camera backward or forward - this.options.opacity = this.options.opacity || 1 - - this.cities = options.markers // List of cities with their options - this._canUpdate = false - this.hasUpdateCameraPos = false - this.referenceHeight = 1 // Used to set camera distance from globe where referenceHeight == window height - this.currMarkerScrollOffset = 0 - this.markersScrollOffset = 0 - this.globeScrollOffset = 0 - this.globeAutoRotation = degToRad(this.options.rotationStart * -1) || 0 - this._isHoverMarker = false - - let gl - let canvas = document.createElement('canvas') - try { gl = canvas.getContext('webgl') } - catch (x) { - try { gl = canvas.getContext('experimental-webgl') } - catch (x) { gl = null } - } - this.supportWebgl = gl !== null - if (this.supportWebgl) { - this.buildWebglScene() - this.resize() - } - } - - // Build - buildWebglScene () { - // Renderer - this.renderer = new Renderer({ - // To allow transparent background on webgl canvas - alpha: true, - // Enable antialiasing only if screen is small with no retina (for performances reasons) - antialias: window.innerWidth < 768 || window.devicePixelRatio == 1 ? true : false, - }) - - const elParent = document.body - - // we put the canvas at the end of body tag as 'position:fixed' - // this is to avoid having a too big canvas if the globe needs to be very large: - // so instead we move the globe as we scroll - this.renderer.canvas.style.position = 'fixed' - this.renderer.canvas.style.top = 0 - this.renderer.canvas.style.left = 0 - this.renderer.canvas.style.pointerEvents = 'none' - this.renderer.canvas.style.zIndex = 100 - elParent.appendChild(this.renderer.canvas) - - // The markers DOM nodes wrapper - // this wrapper is added just next to the canvas, at the end of body tag - this.$markerWrapper = document.createElement('div') - this.$markerWrapper.classList.add('globe__markers') - this.$markerWrapper.style.position = 'fixed' - this.$markerWrapper.style.top = 0 - this.$markerWrapper.style.left = 0 - this.$markerWrapper.style.pointerEvents = 'none' - elParent.appendChild(this.$markerWrapper) - - // Load worldmap texture - this.texture = Texture.fromUrl(this.renderer.gl, this.options.texture, { - loaded: () => { - //TODO: use only one RAF if possible - requestAnimationFrame(() => { - requestAnimationFrame(() => { - this.imageLoaded = true - }) - }) - } - }) - - this.scene = new Container() - - // Setup camera - this.camera = new Camera({ - fov: 1, - near: 0.1, - far: 1000, - type: 'perspective', - orbitControl: true, - firstPerson: false, - lookAt: [0,0,0], - position: [0,0,0], - pointerParent: this.$el - }) - this.camera.lookAt = vec3.create() - - /** - * used to compute screen position of markers, - * to move the corresponding DOM nodes - */ - this.viewProjectionMatrix = mat4.create() - this.cameraPosition = vec3.create() - - this.globeMesh = new Mesh() - this.globeMesh.material = new Material(this.renderer.gl, { - uniforms: { - tInput: this.texture, - uCameraOffsetY: 0, - }, - vertexShader: GlobeVS, - fragmentShader: GlobeFS, - }) - this.globeMesh.geometry = new SphereGeometryBuffer(this.renderer.gl, { - radius: this.referenceHeight/2, - widthSegments: 100, heightSegments: 100 - }) - this.scene.add(this.globeMesh) - - - // this.refPlane = new Mesh() - // this.refPlane.material = new Material(this.renderer.gl, { - // uniforms: { - // color: [0,1,0] - // } - // }) - // this.refPlane.geometry = new PlaneGeometryBuffer(this.renderer.gl, { - // width: this.referenceHeight, height: this.referenceHeight - // }) - // this.scene.add(this.refPlane) - - - /** - * Create DOM nodes for markers and 3D positions - */ - this.markers = [] - let markers = this.cities - - // Instance all markers - for (let i = 0; i < markers.length; i++) { - // Position marker - let p = lonLatToVector3(markers[i].lng, markers[i].lat) - - // Scale marker position to fit globe size - p[0] *= this.referenceHeight / 2 - p[1] *= this.referenceHeight / 2 - p[2] *= this.referenceHeight / 2 - - // Wrap marker in link - let el = document.createElement('a') - el.style.pointerEvents = 'auto' - el.setAttribute('href', '/location/' + markers[i].countrySlug + '/' + markers[i].slug) - el.setAttribute('sapper-noscroll', '') - if (markers[i].className) el.classList.add(markers[i].className) - - // Add label - let span = document.createElement('span') - span.classList.add('marker__label') - el.appendChild(span) - - // Add city label - let spanCity = document.createElement('span') - spanCity.classList.add('marker__city') - spanCity.innerHTML = markers[i].name - span.appendChild(spanCity) - - // Add country label - let spanCountry = document.createElement('span') - spanCountry.classList.add('marker__country') - spanCountry.innerHTML = markers[i].countryName - span.appendChild(spanCountry) - - // Add class - el.classList.add('marker') - - // Add a class if opacity is below 1 - if (this.options.opacity < 1) { - el.classList.add('is-light') - } - - // Callback on click - el.addEventListener('click', () => { - this.options.onLinkClicked && this.options.onLinkClicked() - }) - - // Add class on hover - el.addEventListener('mouseenter', () => { - el.classList.add('hover') - // Stop globe rotation - this._isHoverMarker = true - // Clear timeout to be sure - clearTimeout(this.hoverTimeout) - }) - el.addEventListener('mouseleave', () => { - // Restart rotation after a little delay - this.hoverTimeout = setTimeout(() => this._isHoverMarker = false, 400) - }) - el.addEventListener('animationend', () => { - el.classList.remove('hover') - }) - - // Append marker to HTML - this.$markerWrapper.appendChild(el) - - this.markers.push({ - el: el, - position: p, - screenPosition: [0,0] - }) - } - } - - // Resize method - resize () { - if (!this.supportWebgl) { - return - } - - this.width = window ? window.innerWidth : 0 - this.height = window ? window.innerHeight : 0 - - //fit globe to container height - this.options.cameraDistance = this.height / this.$el.clientHeight; - - // Remove retina on small screen (aka mobile) to boost perfs - this.renderer.setPixelRatio(window.innerWidth < 768 ? 1 : window.devicePixelRatio) - this.renderer.resize(this.width , this.height) - - // Update camera aspect ratio - this.camera.aspect = this.width / this.height - this.camera.updateProjectionMatrix() - - // Distance to put the camera when rotating around the globe - this.camera._cameraDistance = (this.referenceHeight * this.options.cameraDistance) / 2 / Math.tan(Math.PI * FOV / 360) - this.camera.update(true) - - /** - * When markers are behind the globe, clamp their position - * to this size to make them move along the circle edge - */ - this.circleScreenSize = (this.height / 2) * (1 / this.options.cameraDistance) - } - - /** - * As the camera rotates arount the globe, we cant simply move the Y position of the camera or the globe - * Instead, we move the globe vertex inside the vertex shadder after compute the project on screen, so we pass the 'scroll' position to a uniform - */ - updateCameraPos (y, scrollDiff) { - this.globeScrollOffset = y - this.markersScrollOffset = scrollDiff - - // Avoid jump due to smoothing when setting it for first time as the inital values are 0 - if (!this.hasUpdateCameraPos) { - this.hasUpdateCameraPos = true - if (this.globeMesh.material.uniforms.uCameraOffsetY) { - this.globeMesh.material.uniforms.uCameraOffsetY.value = this.globeScrollOffset - } - this.currMarkerScrollOffset = this.markersScrollOffset - } - } - - // Destroy - destroy () { - this.disable() // Stop render loop - document.body.removeChild(this.$markerWrapper) - document.body.removeChild(this.renderer.canvas) - this.camera.delete() // To remove event listeners - } - - /** - * Flag to stop rendering the webgl if the globe isnt visible - * This helps saving perfs and battery - */ - enable () { - this.renderer.canvas.style.opacity = this.options.opacity - this.$markerWrapper.style.opacity = 1 - this._canUpdate = true - } - - disable () { - this.renderer.canvas.style.opacity = 0 - this.$markerWrapper.style.opacity = 0 - this._canUpdate = false - } - - // Update - update () { - if (!this.supportWebgl || !this._canUpdate || !this.imageLoaded || !this.hasUpdateCameraPos) { - return - } - - if (this.globeMesh.material.uniforms.uCameraOffsetY) { - this.globeMesh.material.uniforms.uCameraOffsetY.value += (this.globeScrollOffset - this.globeMesh.material.uniforms.uCameraOffsetY.value) * this.options.scrollSmoothing - } - - this.currMarkerScrollOffset += (this.markersScrollOffset - this.currMarkerScrollOffset) * this.options.scrollSmoothing - - // Compute the camera view-projection matrix to use it on the markers - this.camera.update() - vec3.set(this.cameraPosition, this.camera.worldMatrix[12], this.camera.worldMatrix[13], this.camera.worldMatrix[14]) - mat4.copy(this.viewProjectionMatrix, this.camera.projectionMatrix) - mat4.multiply(this.viewProjectionMatrix, this.viewProjectionMatrix, this.camera.inverseWorldMatrix) - - // Auto rotate the globe if not hover a marker - if (!this._isHoverMarker) { - this.globeAutoRotation += this.options.autoRotationSpeed - this.globeMesh.rotation[1] = this.globeAutoRotation - } - - this.globeMesh.updateMatrix() - this.globeMesh.updateWorldMatrix() - - let screenPos = vec3.create() - this.markers.forEach((marker, i) => { - // Get marker 3D position and project it on screen to get 2D position - vec3.set(screenPos, marker.position[0], marker.position[1], marker.position[2]) - vec3.transformMat4(screenPos, screenPos, this.globeMesh.worldMatrix) - vec3.transformMat4(screenPos, screenPos, this.viewProjectionMatrix) - - // Marker 2D screen position (starting from top left corner of screen) - let x = ((screenPos[0] + 1) / 2) * this.width - let y = (1. - (screenPos[1] + 1) / 2) * this.height - - // Compute marker Normal - let N = vec3.create() - vec3.set(N, marker.position[0], marker.position[1], marker.position[2]) - vec3.transformMat4(N, N, this.globeMesh.worldMatrix) - vec3.normalize(N, N) - - // Compute view vector (camera direction) - let V = vec3.create() - vec3.set(V, marker.position[0], marker.position[1], marker.position[2]) - vec3.subtract(V, V, this.cameraPosition) - vec3.normalize(V, V) - - // Marker is behind the globe: clamp it to the globe edge - if (vec3.dot(V, N) * -1 < 0) { - let dir = vec2.create() - vec2.set(dir, x, y) - let center = vec2.create() - vec2.set(center, this.width/2, this.height/2) - let dir2d = vec2.clone(dir, dir) - vec2.subtract(dir2d, dir2d, center) - vec2.normalize(dir2d, dir2d) - vec2.scale(dir2d, dir2d, this.circleScreenSize) - vec2.add(dir2d, dir2d, center) - - dir2d[1] += this.currMarkerScrollOffset - marker.el.style.transform = `translate(${dir2d[0]}px, ${dir2d[1]}px) translateZ(0)` - marker.el.classList.remove('is-active') - } - // Marker is in front of the globe; update 2D position - else { - y += this.currMarkerScrollOffset - marker.el.style.transform = `translate(${x}px, ${y}px) translateZ(0)` - marker.el.classList.add('is-active') - } - }) - - // Render WebGL frame - this.renderer.clearColor(0,0,0,0) //[RGBA] alpha is set to 0 to have a transparent background on the webgl - this.renderer.clear() - this.renderer.render(this.scene, this.camera) - } -} - -// window.WebglGlobe = WebglGlobe -export default WebglGlobe \ No newline at end of file diff --git a/src/modules/globe/frag.glsl b/src/modules/globe/frag.glsl new file mode 100644 index 0000000..1b59fa1 --- /dev/null +++ b/src/modules/globe/frag.glsl @@ -0,0 +1,20 @@ +precision highp float; + +varying vec3 vNormal; +uniform sampler2D map; +uniform sampler2D mapDark; +varying vec2 vUv; +varying vec3 vSunDir; + + +void main() { + float cosineAngleSunToNormal = dot(normalize(vNormal), normalize(vSunDir)); + cosineAngleSunToNormal = clamp(cosineAngleSunToNormal * 1.0, -1.0, 1.0); + + float mixAmount = cosineAngleSunToNormal * 0.666 + 0.333; + vec3 dayColor = texture2D(map, vUv).rgb; + vec3 nightColor = texture2D(mapDark, vUv).rgb; + vec3 color = mix(nightColor, dayColor, mixAmount); + + gl_FragColor = vec4(color, 1.0); +} \ No newline at end of file diff --git a/src/modules/globe/index.ts b/src/modules/globe/index.ts new file mode 100644 index 0000000..db813c2 --- /dev/null +++ b/src/modules/globe/index.ts @@ -0,0 +1,410 @@ +// @ts-nocheck +import { Renderer, Camera, Vec3, Orbit, Sphere, Transform, Program, Mesh, Texture } from 'ogl' +import { map } from '$utils/functions' +// Shaders +import VERTEX_SHADER from '$modules/globe/vertex.glsl?raw' +import FRAGMENT_SHADER from '$modules/globe/frag.glsl?raw' + + +export class Globe { + constructor (options: Options) { + // Options + this.options = options + this.el = options.el + this.parent = options.parent + this.width = this.el.offsetWidth + this.height = this.el.offsetHeight + this.markers = options.markers || [] + this.zoom = 1.3075 + + // Calculate the current sun position from a given location + const locations = [ + { + lat: -37.840935, + lng: 144.946457, + tz: 'Australia/Melbourne', + }, + { + lat: 48.856614, + lng: 2.3522219, + tz: 'Europe/Paris', + } + ] + const location = locations[1] + const localDate = new Date(new Date().toLocaleString('en-US', { timeZone: location.tz })) + + // Parameters + this.params = { + autoRotate: options.autoRotate, + speed: options.speed, + enableMarkers: options.enableMarkers, + enableMarkersLinks: options.enableMarkersLinks, + sunAngle: options.sunAngle || 0, + sunAngleDelta: 1.8, + } + + // Misc + this.isDev = import.meta.env.DEV + this.hoveringMarker = false + this.hoveringMarkerTimeout = 0 + this.lastFrame = now() + this.dragging = false + this.webgl = WebGLSupport() !== null + this.pane = undefined + + // Run globe after check for WebGL support + if (this.webgl) { + this.build() + this.resize() + } + + // Add GUI panel if activated + if (this.options.pane) { + import('./pane').then(({ createPane }) => { + createPane(this) + }) + } + } + + + /** + * Build scene + */ + build () { + // Create renderer + this.renderer = new Renderer({ + dpr: this.options.dpr || 1, + alpha: true, + premultiplyAlpha: false, + antialias: this.options.antialias || true, + }) + this.gl = this.renderer.gl + + // Create camera + this.camera = new Camera(this.gl) + this.camera.position.set(setFromSphericalCoords( + this.zoom, + degToRad(this.options.rotationStart.y || 40), // phi: y + degToRad(this.options.rotationStart.x || 0), // theta: x + )) + this.camera.lookAt(0,0,0) + + // Create controls + this.controls = new Orbit(this.camera, { + element: this.el, + enableZoom: false, + enablePan: false, + ease: 0.2, + minPolarAngle: Math.PI / 4, + maxPolarAngle: Math.PI / 1.85, + }) + + // Append canvas to scene + this.el.appendChild(this.gl.canvas) + + // Create scene and geometry + this.scene = new Transform() + this.geometry = new Sphere(this.gl, { + widthSegments: 75, + heightSegments: 75, + }) + + // Add map texture + const mapWorld = new Texture(this.gl) + const img = new Image() + img.onload = () => (mapWorld.image = img) + img.src = this.options.mapFile + + // Dark map texture + const mapDark = new Texture(this.gl) + const imgDark = new Image() + imgDark.onload = () => (mapDark.image = imgDark) + imgDark.src = this.options.mapFileDark + + // Create light + const dayTime = map(5, 0, 24, 0, 1, true) + const lightD = degToRad(360 / dayTime) + const sunPosition = new Vec3( + Math.cos(lightD), + Math.sin(lightD) * Math.sin(0), + Math.sin(lightD) * Math.cos(0) + ) + + // Create program + const program = new Program(this.gl, { + vertex: VERTEX_SHADER, + fragment: FRAGMENT_SHADER, + uniforms: { + u_dt: { value: 0 }, + map: { value: mapWorld }, // Map Texture + mapDark: { value: mapDark }, // Map Dark Texture + sunPosition: { value: sunPosition }, + }, + cullFace: null, + }) + + // Create globe mesh + this.globe = new Mesh(this.gl, { + geometry: this.geometry, + program, + }) + this.globe.setParent(this.scene) + + // Add events + this.addEvents() + + // Setup markers + if (this.markers) { + this.setupMarkers() + } + } + + + /** + * Add events + */ + addEvents () { + // When clicking on globe + this.gl.canvas.addEventListener('mousedown', () => { + this.dragging = true + this.gl.canvas.classList.add('is-grabbing') + }, false) + + // When releasing globe click + this.gl.canvas.addEventListener('mouseup', () => { + this.dragging = false + this.gl.canvas.classList.remove('is-grabbing') + }, false) + } + + + /** + * Markers + */ + // Get marker from DOM element + getMarker (id: string) { + const marker = this.parent.querySelector(`[data-location="${id}"]`) + if (marker) { + return marker + } + } + + // Setup markers + setupMarkers () { + this.markers.forEach((marker: Marker) => { + const markerEl = this.getMarker(marker.slug) + + // Update marker position + this.updateMarkerPosition(marker, markerEl) + + // Entering marker + markerEl.addEventListener('mouseenter', () => { + this.hoveringMarker = true + clearTimeout(this.hoveringMarkerTimeout) + }, false) + + // Leaving marker + markerEl.addEventListener('mouseleave', () => { + this.hoveringMarkerTimeout = setTimeout(() => { + this.hoveringMarker = false + }, 300) + }, false) + + return marker + }) + } + + // Update marker position + updateMarkerPosition (marker: Marker, markerEl: HTMLElement) { + // Get vec3 position from lat/long + const position = latLonToVec3(marker.lat, marker.lng) + const screenVector = new Vec3(position.x, position.y, position.z) + // Apply transformation to marker from globe world matrix + screenVector.applyMatrix4(this.globe.worldMatrix) + // Then project marker on camera + this.camera.project(screenVector) + + // Position marker + const posX = ((screenVector[0] + 1) / 2) * this.width + const posY = (1. - (screenVector[1] + 1) / 2) * this.height + markerEl.style.transform = `translate3d(${posX}px, ${posY}px, 0)` + + // Hide marker if behind globe + markerEl.classList.toggle('is-hidden', screenVector[2] > 0.82) + } + + // Update markers + updateMarkers () { + this.markers.forEach((marker: Marker) => { + const markerEl = this.getMarker(marker.slug) + // Update marker position + this.updateMarkerPosition(marker, markerEl) + }) + } + + // Enable or disable markers + enableMarkers (state: boolean) { + this.markers.forEach((marker: Marker) => { + const markerEl = this.getMarker(marker.slug) + markerEl.classList.toggle('is-disabled', !state) + }) + } + + // Hide markers + hideMarkers () { + this.markers.forEach((marker: Marker) => { + const markerEl = this.getMarker(marker.slug) + markerEl.classList.add('is-hidden') + }) + } + + + /** + * Resize method + */ + resize () { + this.width = this.el.offsetWidth + this.height = this.el.offsetHeight + this.renderer.setSize(this.width, this.height) + this.camera.perspective({ + aspect: this.gl.canvas.width / this.gl.canvas.height + }) + } + + + /** + * Update method + */ + render () { + const delta = (now() - this.lastFrame) / 1000 + this.lastFrame = now() + + // Rotate globe if not dragging neither hovering marker + if (this.params.autoRotate && !this.hoveringMarker) { + this.globe.rotation.y += this.params.speed * delta + } + + // Update controls and renderer + this.controls.update() + this.renderer.render({ + scene: this.scene, + camera: this.camera, + }) + + // Update markers + if (this.params.enableMarkers) { + this.updateMarkers() + // Enable or disable interactivity + this.enableMarkers(this.params.enableMarkersLinks) + } else { + this.hideMarkers() + } + } + + + /** + * Destroy + */ + destroy () { + this.gl = null + this.scene = null + this.camera = null + this.globe = null + this.renderer = null + this.controls.remove() + + if (this.pane) { + this.pane.dispose() + } + if (this.isDev) { + console.log('globe: destroy') + } + } +} + + +/** + * Types + */ +type Options = { + el: HTMLElement + parent: HTMLElement + mapFile: string + mapFileDark: string + dpr: number + autoRotate: boolean + speed: number + sunAngle: number + rotationStart?: { x: number, y: number } + enableMarkers?: boolean + enableMarkersLinks?: boolean + markers?: any[] + pane?: boolean +} +export type Marker = { + name: string + slug: string + country: { + name: string + slug: string + flag: { + id: string + } + } + lat: number + lng: number +} + + +/* ========================================================================== + HELPERS +========================================================================== */ +/** + * Detect WebGL support + */ +function WebGLSupport () { + try { + var canvas = document.createElement('canvas') + return !!window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')) + } catch(e) { + return false + } +} + +/** + * Convert lat/lng to Vec3 + */ +const latLonToVec3 = (lat: number, lng: number) => { + const phi = (90 - lat) * (Math.PI / 180) + const theta = (lng + 180) * (Math.PI / 180) + + const x = -((0.5) * Math.sin(phi) * Math.cos(theta)) + const z = ((0.5) * Math.sin(phi) * Math.sin(theta)) + const y = ((0.5) * Math.cos(phi)) + + return new Vec3(x,y,z) +} + + +/** + * Get position from spherical coordinates + */ +const setFromSphericalCoords = (radius: number, phi: number, theta: number) => { + const sinPhiRadius = Math.sin(phi) * radius + const x = sinPhiRadius * Math.sin(theta) + const y = Math.cos(phi) * radius + const z = sinPhiRadius * Math.cos(theta) + + return new Vec3(x,y,z) +} + +/** + * Convert Degrees to Radians + */ +const degToRad = (deg: number) => deg * Math.PI / 180 + + +/** + * Get current timestamp (performance or Date) + */ +const now = () => (typeof performance === 'undefined' ? Date : performance).now() \ No newline at end of file diff --git a/src/modules/globe/pane.ts b/src/modules/globe/pane.ts new file mode 100644 index 0000000..8a43af9 --- /dev/null +++ b/src/modules/globe/pane.ts @@ -0,0 +1,55 @@ +import { Pane } from 'tweakpane' + +export const createPane = (ctx: any) => { + ctx.pane = new Pane({ + container: ctx.parent, + title: 'Globe Settings', + }) + + + /** + * Rotation + */ + const rotation = ctx.pane.addFolder({ + title: 'Rotation', + }) + rotation.addInput(ctx.params, 'autoRotate', { + label: 'Auto-rotate', + }) + rotation.addInput(ctx.params, 'speed', { + label: 'Rotation speed', + min: 0.01, + max: 2, + step: 0.05, + }) + + + /** + * Markers + */ + if (ctx.markers && ctx.markers.length > 0) { + const markers = ctx.pane.addFolder({ + title: 'Markers', + }) + markers.addInput(ctx.params, 'enableMarkers', { + label: 'Enable markers', + }) + markers.addInput(ctx.params, 'enableMarkersLinks', { + label: 'Interactive', + }) + } + + + /** + * Others + */ + const misc = ctx.pane.addFolder({ + title: 'Misc', + }) + // Sun position + misc.addInput(ctx.params, 'sunAngleDelta', { + label: 'Sun angle delta', + min: 0, + max: 2 * Math.PI, + }) +} \ No newline at end of file diff --git a/src/modules/globe/vertex.glsl b/src/modules/globe/vertex.glsl new file mode 100644 index 0000000..fa2e9ab --- /dev/null +++ b/src/modules/globe/vertex.glsl @@ -0,0 +1,27 @@ +varying vec3 vNormal; + +attribute vec2 uv; +attribute vec3 position; +attribute vec3 normal; +uniform mat4 modelViewMatrix; +uniform mat4 projectionMatrix; +uniform mat3 normalMatrix; +uniform vec3 sunPosition; +varying vec2 vUv; +varying vec3 vSunDir; + + +void main() { + vUv = uv; + float px = sunPosition.x; + float py = sunPosition.y; + float pz = sunPosition.z; + vec3 uLightPos = vec3(px, py, pz); + + vec4 mvPosition = modelViewMatrix * vec4(position, 1.0); + + vNormal = normalMatrix * normal; + vSunDir = mat3(normalMatrix) * uLightPos; + + gl_Position = projectionMatrix * mvPosition; +} diff --git a/src/molecules/InteractiveGlobe.svelte b/src/molecules/InteractiveGlobe.svelte deleted file mode 100644 index 6d793c5..0000000 --- a/src/molecules/InteractiveGlobe.svelte +++ /dev/null @@ -1,112 +0,0 @@ - - - - -{#if type === 'part'} -
-
-
-{:else} -
-{/if} \ No newline at end of file diff --git a/src/molecules/Location.svelte b/src/molecules/Location.svelte deleted file mode 100644 index c2b295d..0000000 --- a/src/molecules/Location.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - - diff --git a/src/molecules/NewsletterForm.svelte b/src/molecules/NewsletterForm.svelte deleted file mode 100644 index 849e75d..0000000 --- a/src/molecules/NewsletterForm.svelte +++ /dev/null @@ -1,41 +0,0 @@ - - -
- {#if title} -

- -

- {/if} - - - - - - - - -
\ No newline at end of file diff --git a/src/molecules/PaginationDots.svelte b/src/molecules/PaginationDots.svelte deleted file mode 100644 index bc47ce4..0000000 --- a/src/molecules/PaginationDots.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - -
    - {#each photos as dot, index} -
  1. currentIndex + 2} - class:hidden={index < currentIndex - 3 || index > currentIndex + 3} - on:click={() => dispatch('goToIndex', index)} - > - -
  2. - {/each} -
diff --git a/src/molecules/Photo.svelte b/src/molecules/Photo.svelte deleted file mode 100644 index b014625..0000000 --- a/src/molecules/Photo.svelte +++ /dev/null @@ -1,75 +0,0 @@ - - -
-
-
-

- {#each nameSplit as _, i} - - - {nameSplit[i]}{#if i < nameSplit.length - 1},{/if} - - - {/each} -

-

{city ? city : location.region}, {location.country.name}

-
-
- -
-
- - - - - - - {imgAlt} - - - -
- {photoIndex} -
-
-
-
diff --git a/src/molecules/Switcher.svelte b/src/molecules/Switcher.svelte deleted file mode 100644 index 7d7beaa..0000000 --- a/src/molecules/Switcher.svelte +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/src/organisms/Carousel.svelte b/src/organisms/Carousel.svelte deleted file mode 100644 index 5e76fb7..0000000 --- a/src/organisms/Carousel.svelte +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - -{#if viewer} - currentIndex = event.detail} -/> -{/if} diff --git a/src/organisms/Footer.svelte b/src/organisms/Footer.svelte deleted file mode 100644 index 65a8658..0000000 --- a/src/organisms/Footer.svelte +++ /dev/null @@ -1,47 +0,0 @@ - - -
-
- - - -
-
diff --git a/src/organisms/Fullscreen.svelte b/src/organisms/Fullscreen.svelte deleted file mode 100644 index 8a06037..0000000 --- a/src/organisms/Fullscreen.svelte +++ /dev/null @@ -1,80 +0,0 @@ - - -
-
- -
- -
- -
- -
-
diff --git a/src/organisms/Locations.svelte b/src/organisms/Locations.svelte deleted file mode 100644 index fada5d6..0000000 --- a/src/organisms/Locations.svelte +++ /dev/null @@ -1,72 +0,0 @@ - - -
-
-

Browse all the cities and countries

-
- -
    - {#if continentsToDisplay.length > 1} -
  • toggleContinents(e)}> -
  • - {/if} - {#each continentsToDisplay as continent} -
  • toggleContinents(e, continent)}> -
  • - {/each} -
- -
- {#each filteredLocations as location (location.id)} -
- -
- {/each} -
-
- - \ No newline at end of file diff --git a/src/organisms/Newsletter.svelte b/src/organisms/Newsletter.svelte deleted file mode 100644 index bf25df1..0000000 --- a/src/organisms/Newsletter.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - - \ No newline at end of file diff --git a/src/organisms/Pagination.svelte b/src/organisms/Pagination.svelte deleted file mode 100644 index 7667bcf..0000000 --- a/src/organisms/Pagination.svelte +++ /dev/null @@ -1,67 +0,0 @@ - - -
- {#if photos.length && currentIndex < photos.length} -
pageTranslate = pageTranslate - (100 / pagesTotal) * 0.666} - on:mouseleave={() => pageTranslate = pageTranslate + (100 / pagesTotal) * 0.666} - rel="next" - > -
page
-
-
- {#each pagesArray as page} - {page} - {/each} -
-
- /{pagesTotal} -
-

See more photos

- - {:else if $currentLocation} -
- -
- {/if} -
diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte new file mode 100644 index 0000000..e6a3043 --- /dev/null +++ b/src/routes/+error.svelte @@ -0,0 +1,82 @@ + + + + + + + +
+ + + +
  • + +
  • +
  • + +
  • +
  • + +
  • +
    +
    + + + + +
    +
    +
    + + +
    +
    +
    +
    \ No newline at end of file diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts new file mode 100644 index 0000000..0701f1c --- /dev/null +++ b/src/routes/+layout.server.ts @@ -0,0 +1,105 @@ +import { error } from '@sveltejs/kit' +import type { PageServerLoad } from './$types' +import { fetchAPI } from '$utils/api' +import { PUBLIC_PREVIEW_COUNT } from '$env/static/public' + + +export const load: PageServerLoad = async () => { + try { + const res = await fetchAPI(`query { + locations: location (filter: { status: { _eq: "published" }}) { + id + name + slug + coordinates + country { + name + slug + flag { id } + continent { slug } + } + date_updated + photos ( + sort: "-date_created", + limit: ${PUBLIC_PREVIEW_COUNT} + ) { + image { + id + title + } + date_created + } + has_poster + globe_close + } + + countries: country (filter: { status: { _eq: "published" }}) { + id + name + slug + flag { id } + locations { id slug } + } + + continents: continent (filter: { countries: { slug: { _neq: "_empty" }}}) { + name + slug + rotation_x + rotation_y + } + + settings { + seo_name + seo_title + seo_description + seo_image { id } + description + explore_list + limit_new + instagram + footer_links + switcher_links + newsletter_subtitle + newsletter_text + } + + shop { + enabled + module_title + module_text + module_images { + directus_files_id { + id + title + } + } + } + + # Count + countPhotos: photo_aggregated (filter: { status: { _eq: "published" }}) { + count { id } + } + countLocations: location_aggregated (filter: { status: { _eq: "published" }}) { + count { id } + } + countCountries: country_aggregated (filter: { status: { _eq: "published" }}) { + count { id } + } + }`) + + if (res) { + const { data: { countPhotos, countLocations, countCountries, ...rest }} = res + + return { + ...rest, + count: { + photos: countPhotos[0].count.id, + locations: countLocations[0].count.id, + countries: countCountries[0].count.id, + }, + } + } + } catch (err) { + throw error(500, err || 'Failed to fetch data') + } +} \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..578e6b9 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,94 @@ + + + + + + {#each fonts as font} + + {/each} + + + + + + + +{#if !$page.params.photo} +